Язык программирования, это инструмент, по типу молотка или кухонного комбайна.
Любым инструментом можно причинять добро и наносить пользу, а можно и вред. Но чаще всего инструмент просто пылится на полке. Одним и тем же инструментом разные мастера наделают по разному. Т.е. все сводится к мастеру, его навыкам, характеру, усидчивости, упорству, перфекционизму, в конец то концов.
Понятно что инструментом желательно владеть виртуозно. Но одного инструмента категорически недостаточно. Глупо считать, что выучил JS и все, можно покорять вершины. Для начала имеется немалое количество сопричастных технологий, да хоть те же HTML+CSS, DOM, браузеры с их нюансами и API, HTTP, Ajax, Rest, алгоритмы и структуры данных, хранилища, и еще миллион всего.
Любой проект складывается из огромного множества всего, чтобы познакомиться с основными ингридиентами хотя бы по верхам потребуются тысячи человекочасов достаточно самоотверженного труда.
В общем совет тут такой уже давали, выше, но не объяснили почему. Так вот, надо тупо делать. Набивать руку, так сказать. По мере деланья придется со всем этим зоопарком, так или иначе, познакомиться. Через, примерно, тысячу часов уже в голое сложатся базовые паттерны, что там к чему, как, зачем и почему. Сначала будет "Ну ваще ничего нипаняятнааа", и это нормально. Декомпозируешь большое и сложное на более мелкое и не такое страшное, и делаешь что можешь. Остальное снова декомпозируешь и так далее. И гуглишь, гулишь, гуглишь, гуглишь, гуглишь... Ну ты понял.
В отдельные дни, когда я знакомлюсь с очередной новой технологией, из 8 часов 7.5 я гуглю, читаю доки, смотрю скринкасты и прочие туториалы. За определенное время у меня складывается первичный образ и модель, а там дальше уже ручками.
ЗЫ: Если не владеешь инглишем в достаточной степени, чтобы свободно понимать устную речь и тексты, то я тебе, в общем то, не завидую...