Всем привет! Меня зовут Андрей, я фронтенд-разработчик в RAMBLER&Co, ранее в Иннове. Программированием я занимаюсь около года, до этого около двух лет занимался HTML-вёрсткой. Расскажу о том, какие ошибки я совершил за эти три года, чтобы вы (если вы новичок) их не повторяли.
- Ошибка №1: изучение основ языка вместо основ программирования
- Ошибка №2: неправильные ожидания от ВУЗа
- Ошибка №3: распыление вместо концентрации
- Ошибка №4: знания языков и фреймворков недостаточно
Ошибка №1: изучение основ языка вместо основ программирования
Свой путь в веб-разработке я начинал с книги по HTML/CSS, которую мне дал
почитать знакомый программист. В конце книги был дополнительный раздел
с основами языка JavaScript. Разумеется, я начал его читать и ничего не понял.
Помню как увидел пример простого цикла for (var i = 0; i < 10; i++)
и долго
недоумевал, как это вообще работает. В итоге у меня сложилось неправильное
впечатление о языке: я решил, что JS ужасный язык и его нельзя изучать.
Впоследствии я пробовал PHP, Python и даже С#, разобрался с циклами и другими базовыми вещами, но плохое впечатление от JS так и осталось, пока я не решил снова попробовать его изучить.
Не следует начинать с изучения конкретного языка. В первую очередь нужно изучить базовые вещи вроде переменных, условий и циклов. Хекслет в этом плане молодцы, в курсе «Основы программирования» как раз объясняются все необходимые базовые концепции, причём кроме условий, циклов и прочих подобных вещей в курсе рассказывается о модульном тестировании, чистых функциях и отладке, что меня приятно удивило. Я изучал основы самостоятельно и о тестировании или чистых функциях узнал примерно спустя год после начала обучения, а на Хекслете эти темы даются в первом же курсе.
Ошибка №2: неправильные ожидания от ВУЗа
Закончив школу, я, как и подавляющее большинство сверстников, поступил в местный (омский) ВУЗ. Специальность называлась «Математическое обеспечение и администрирование информационных систем». Почему я выбрал её? Я прочёл на Хабре статью о том, какие специальности лучше всего подходят для обучения программированию, и МОиАИС была в этой статье на первом месте.
Спустя три месяца обучения я перестал ходить на занятия. Я шёл в ВУЗ с мыслью о том, что меня там научат промышленному программированию. Увы, занятия по программированию вела далёкая от мира разработки преподавательница, а математика занимала большую часть программы (это не плохо, просто у меня со школы неприязнь к математике).
После опроса своих знакомых я понял, что в ВУЗ стоит идти за фундаментальными знаниями вроде математики. Промышленному программированию ВУЗы не научат, потому что ВУЗовские программы просто не могут успевать за столь бурным развитием технологий. Поступайте в ВУЗ только если вы чётко понимаете, что вы хотите получить от него и что он вам действительно может дать это.
Ошибка №3: распыление вместо концентрации
«О, дайджест последних новостей... ого, туториал по вёрстке табов на css! А тут ещё и статья о реакте для новичков... А здесь пишут, что нужно использовать ангуляр вместо реакта...» — и у вас уже открыто 50 вкладок в браузере и вы лихорадочно читаете всё, что попадётся. А потом обнаруживаете, что уже час ночи и в общем-то надо бы пойти спать, но в очередь на чтение ещё 20 статей... Наверняка многие из вас сталкивались с такой ситуацией.
Проблема в том, что распыляясь на кучу разных тем, вы получаете мало профита. Намного эффективнее не пытаться охватить всё и сразу, а ставить какие-то небольшие цели и добиваться их. Например, вместо того, чтобы следующим вечером снова пытаться прочесть и запомнить 20 статей на разные темы, поставьте себе цель «разобраться с принципами работы промисов» и прочитайте те же 20 статей, но о промисах. Так вы гарантированно разберётесь в теме и не потратите время зря.
Ошибка №4: знания языков и фреймворков недостаточно
Когда я освоил вёрстку на достаточно хорошем уровне, я решил двигаться дальше — во фронтенд и программирование. «Изучу JavaScript и какой-нибудь фреймворк — и дело в шляпе, буду крутым программистом». Сейчас я пишу приложения на JS, Реакте и Редаксе, но этого недостаточно для «крутого программиста».
Языки и фреймворки — это лишь инструменты, помогающие в решении задач. Работа программиста заключается в проектировании достаточно простого и гибкого решения какой-либо проблемы. Чтобы спроектировать хорошее решение, недостаточно знать язык программирования. Нужно обладать инженерным мышлением. Я понял это отчасти благодаря курсам Хекслета, которые я сейчас с удовольствием прохожу. Эти курсы действительно учат не каким-то отдельным инструментам, они учат подходам и правильному мышлению.