Не начинайте изучать JavaScript с фреймворков
Рубрика: Программирование -> JavaScript
Метки: spider_net | программирование | размышления | советы
Просмотров: 5420
Сегодня получил письмо от читателя блога с просьбой [strong]посоветовать «хороший» фреймворк для изучения JavaScript[/strong]. Письмо было достаточно длинным, но суть такая: парень не пытался изучать ванильный JavaScript, имеет базовые знания по применению библиотеки jQuery и хочет «прокачать» свои скиллы, изучив один из «крутых» фреймворков. Я начал набивать текст ответа - с подобными вопросами обращались уже неоднократно, но потом решил, что проще ответить сразу всем.
Начну с главного – нельзя стать хорошим разработчиком, начав изучать язык с фреймворка/библиотеки. Первым делом надо изучить сам язык: синтаксис, преимущества, недостатки, проблемы и т.д. Чтобы прочувствовать все выше перечисленное, недостаточно просто прочитать чью-то умную статью. Желательно познакомиться со всем на практике, т.е. выполняя реальные проекты. Пусть это будут маленькие, но все же проекты, решающую реальную задачу. Таким образом, вы сразу сможете понять, какие проблемы решаются выбранным языком программирования наиболее комфортно, а какие нет.
Вот здесь хочется кинуть камень в огород jQuery. Нет, не подумайте, это отличная библиотека, сумевшая решить кучу разных проблем элегантным способом, но многие разработчики ее поняли неправильно. Они зачем-то стали превращаться в интеграторов плагинов и использовать jQuery везде, где только можно. Слышали фразу «лапша из jQuery?», в этом виновата не сама библиотека, а неправильное ее применение. Ее просто подключали, и решали все в контексте библиотеки, а не языка.
Сегодня jQuery применять не модно, ее место заняли другие, более продвинутые инструменты. Вот только бежать сломя голову и браться за их изучение, не имея прочного фундамента в виде знания самого языка, по меньшей мере, глупо. Да, приложив усилия, вы сможете применять определенный фреймворк, невзирая на его внутренности. Возможно, вы даже сможете написать таким способом реальное приложение. Многочисленные демки приложений, основанных на популярных фреймворках, существенно уменьшают порог входа. Но без знания платформы (в данном случае языка программирования), вы рискуете быстро растерять полученные знания.
Переход на очередной фреймворк будет таким же сложным, как и в первый раз. Ощущения будут такими же как при изучении полноценного языка программирования. Вывод: не гонитесь за всеми новинками, и не пытайтесь делать резкий старт, в надежде догнать за несколько месяцев ребят, которые работают с новинкой не первый год и творят настоящие чудеса.
Новые фреймворки появляются почти каждый день. Примерно раз в полгода (год, два) создаются самородки – фреймворки вокруг которых поднимается хайп и создаются мощные сообщества фанатов. Этот процесс будет длиться еще долго и не нужно кидаться в пучину хаоса.
Если вы новичок, изучите и получите практику применения языка программирования. Начните просто программировать и решать задачи. Совершенствуйте свой код и архитектуру постепенно, не пытайтесь разрешить несуществующие проблемы. Во-первых, у вас это вряд ли получится (вы же новичок), а во-вторых, всех проблем заранее не предвидишь. Требования к программам постоянно меняются и рано или поздно куски кода придется выбрасывать. Это нормально ©.
Владея крепкими базовыми знаниями, вы без проблем сможете переключаться на новые инструменты и подходы. Помните, каждый фреймворк это просто:
- Элегантное решение нескольких проблем. Возможно, из этого перечня у вас только одна проблема;
- Дополнительные ограничения при написании кода. Выбирая фреймворк, вы должны играть по «его правилам»;
Понимание языка программирования, знание шаблонов проектирования и наблюдение за развитием всего перечисленного, упростят многочисленные переходы и позволят всегда оставаться на коне. Фреймворки меняются часто (даже от версии к версии могут быть существенные различия), а базовые технологии актуальны значительно дольше.
Резюмируя все выше сказанное: не начинайте с сложного. Изучайте основы и базовую технологию (язык программирования). Только после изучения базы, беритесь за вспомогательные инструменты (фреймворки, библиотеки, системы сборки и т.д.). Помните, все эти штуки создавались с целью решения проблем/недостатков исходной технологии. Используйте их и вы по этому назначению.