Привет!
Фраза "я не могу в яваскрипт" очень общая. Хоть многие поливают говном этот волшебный язык, я считаю его одним из самых красивых и выразительных. Расскажу, как у меня было, начал на нём писать в явовской системе J2SE, где js был внутренним скриптовым языком (тогда же прочитал книгу с носорогом, самую популярную у начинающих, ну и не дочитал, мне нужен был только синтаксис). В работе были прям основные вещи: объявление переменных, циклы, условия, работа со списками. В принципе, задачи не сложные, всё решалось и ладно.
Затем была веб-разработка. Имея некие основные навыки включиться было не сложно. Возникаемые задачи решались гугл + стак оверфлоу. Но на выходе получалось, прям вот как вы говорите, некрасивый код. Поддержка его была, в основном, так называемым кастыльным программированием. Затем я прочитал книгу jQuery (o'really с Петром I на обложке), ну как прочитал, пролистал, можно сказать. И дело в том, что я узнал всего лишь больше jQuery-функций, вроде бы ничего, но для меня это было нечто новое. Я просто узнал, что можно делать не одним топорным способом, а есть еще и другие варианты. У меня даже запросы в гугл стали более изящными, более чёткими что ли. Затем я прочитал книгу "Графика на JavaScript" (всё тот же O'Really). Там интересные вначале оптимизации, но сама организация кода, я так никогда не делал и мне понравилось. Хотя я не занимался графикой, я просто хотел посмотреть на яваскрипт с другой стороны. И не прогадал. Тогда же наткнулся на статейку с хабра, ООП в яваскрипт. Таких статеек много, не знаю, какую читал именно я. Но объеденил что было в книге и пользуюсь по сей день. Повторюсь, я просто не знал, что так можно было.
После этого я решил посмотреть в сторону node.js, купил какую-то маленькую книжку, поигрался, понял, что всё сырое, что-то не понравилось, для себя поковырялся, ну и забросил. Но я опять не пожалел, что уделил этому своё какое-то свободное время :) после этого я стал разбираться в callback'ах, я до этого примерно знал, что это такое, но не работал с этим, никак не использовал. А тут узнал, что можно и так, и это вполне законно и это работает не только в ноде, но и в клиенте.
Теперь иногда только попадаются статейки с хабра или гт, в одной был продвинутый node.js, там рассказывалось, к примеру, про асинхронный код, promise и прочее. Сейчас я не пользуюсь этим, но хотя бы узнал, что так можно. И если мне что-то понадобится, я полезу в гугл, но теперь я хотя бы смогу сформулировать то, что хочу.
Еще недавно наткнулся на статью (приведу хоть одну ссылку)
https://habrahabr.ru/post/154105/ - функциональное программирование в js. Раньше я из-за интереса смотрел что это такое, опять же, просто для себя, не очень понравилось, решил не тратить на это много времени. А тут вполне понятным языком, для чайников, да еще и на примерах яваскрипта. Я ни в коем случае не призываю становиться функциональщиком, я лишь говорю, что есть разные подходы и их нужно посмотреть хотя бы для ознакомления.
Подводя итог: практика необходима, она у меня была всегда, хотя js никогда не был моим основным языком. Книги нужны и книги важны, тут уже сказали, и мне очень нравится эта фраза "хотите быть писателем, много читайте". Посмотрите на язык с другой стороны. То есть, если вы занимаетесь клиентским js+jQuery, попробуйте написать игру на html5 (space invaders или др.), ну или другие варианты, примеры я привёл. Тематические рассылочки с хабра и gt позволяют держаться в тонусе. И самое последнее - упорство и время