Есть мнение, что нужно изучать другие языки.
Например, я неоднократно слышал, что те js разработчики, которые попробовали Haskell или ClojureScript, начинают мыслить по-другому.
Посмотрите доклад Александра Соловьёва, там он немного об этом говорит (да и сам доклад просто прелесть).
Важно понимать, что у одной задачи может быть несколько решений. Какое из них лучше вы сможете понять только с опытом. Но когда вы учите другие языки, проникаетесь их духом, когда смотрите, как кодят другие люди, когда участвуете в OpenSource проектах, вы становитесь лучше, вы знаете больше способов решений.
Гениальные решения приходят либо спонтанно, либо путём трудов. Но в любом случае и то и другое доступно для вас.