Первые шаги к изучению программирования: поиск источников, выбор подхода, на чем сфокусироваться
В этой заметке коснусь темы, как выстроить процесс получения знаний по программированию и в разумные сроки набрать достаточное количество опыта для начала работы разработчиком. В качестве примера специализации я возьму frontend-девелопера. Я не буду уходить в нюансы, иначе данный текст может превратиться в книгу, но пройду по основным трем пунктам.
Поиск источников информации и обучение
Один из краеугольных камней процесса учебы – это использование правильных источников. Если вы только начинаете разбираться в программировании, то я бы крайне рекомендовал не идти сразу в онлайн-школы и выкладывать деньги за обучение, а попробовать изучить бесплатные уроки и статьи в интересующей вас области. Например, вам кажется, что самое интересное – машинное обучение или backend-разработка. Но только попробовав, вы сможете понять, действительно ли вы хотите это изучить. Невозможно исключить вероятность того, что вам не зайдет специализация или написание кода вообще, а деньги уже будут потрачены.
В начале пути можно начать с видеоматериалов. На YouTube существует огромное количество обучающих роликов. Если говорить о frontend-программировании, то источников более чем достаточно. Можно рассмотреть ролики Владилена Минина – блогера, известного под ником Sorax, а также канал IT-Камасутра, Ulbi TV и многие другие. Я бы советовал изучить и проработать несколько видеокурсов и попробовать выжать эссенцию из той информации, которую они содержат. Под выжимкой я подразумеваю те факты, в которых авторы не противоречат друг другу. Некоторые создатели видеороликов продают дополнительные материалы и курсы. Нести деньги нужно лишь тогда, когда вы уверены, что получили или получите дополнительные знания, и считаете необходимым поддержать авторов.
Помимо видеоматериалов, стоит обратить внимание и на сайты со справочной информацией. В случае frontend-программирования это htmlbook.ru, learn.javascript.ru, metanit.com, developer.mozilla.org/ru/docs/Web и многие другие. Отдельно стоит отметить сайт stackoverflow.com, на котором миллионы пользователей задают вопросы о том, как написать тот или иной алгоритм, или просят помочь им найти ошибки в коде. Из этого источника также можно почерпнуть огромное количество полезной информации.
Когда вы определились с тем, нравится ли вам написание кода или нет, можно подумать о прохождении платных курсов на различных площадках. Но стоит убедиться, что они выдают сертификат, подтверждающий усвоение материала, и что он котируется среди работодателей, иначе это пустая трата денег и времени. Я не буду советовать ни один из курсов, так как у всех площадок есть плохие отзывы и нехорошие истории с учениками. Я рассматриваю такой тип обучения, как лотерею, где может повезти и будет польза, или же вы просто выбросите деньги. Если необходимо получить подтверждение знаний для собственной уверенности, то лучше обратиться к бесплатному сайту freecodecamp.org. На нем можно пройти тестирование, сделать несколько практических работ и получить сертификат специалиста.
Подход к обучению
То, какими принципами вы руководствуетесь во время получения знаний, определяет степень успеха в их усвоении. Заучивание синтаксиса языка, алгоритмов, паттернов проектирования не сделают из вас специалиста. Без подкрепления теории практическими занятиями это будет бесполезно. Для того, чтобы закрепить навыки программиста, есть множество путей. Я бы обратил внимание на два из них.
Первый и самый простой подход – придумывание проблемы и решение её через код. Плюс в том, что этот способ можно применять параллельно с обучением. По сути это создание персонального домашнего проекта. Когда я был начинающим разработчиком, я поставил перед собой цель сделать клон ВКонтакте. Это был примерно 2006 год, и, кроме системы регистрации пользователей, у меня ничего не получилось, но потраченные усилия спровоцировали невероятный рост моих знаний, а также понимания, как устроены сайты изнутри. Затем я попробовал скопировать реализацию галереи изображений Fancybox, что дало мне дополнительное понимание, как работать с JavaSript, HTML и CSS. Подумайте, какую проблему вы хотели бы решить, придумайте проект и поступательно реализуйте его.
Второй подход – устроиться стажером в какую-либо компанию. Если вышеописанный способ подойдет тем, кто, например, не хочет увольняться с работы, то этот поможет на первом этапе карьеры программиста. Но есть трудности. Первая из возможных – очень желательно иметь законченное обучение, например среднее специальное/высшее образование или курсы. И вторая – хорошенько проработать ответы на вопросы перед собеседованием. К счастью, материалов для подготовки к техническому интервью очень много в сети и они находятся в открытом доступе. Многие создатели курсов часто делают подборки вопросов, задаваемых на собеседованиях, с подробным разбором ответов. На мой взгляд, данный подход является более сложным для новичка и ограничивает развитие творческого мышления, потому что на работе вам будут говорить, что делать, и самостоятельности практически не будет. Но при этом минусе вы гораздо быстрее получите опыт коммерческой разработки и при должном рвении лет через 5 будете зарабатывать больше, чем депутат Государственной думы России.
Фокус на технологиях
Мир программирования невероятно большой. Каждый год появляются новые технологии, а уже существующие выходят из моды или видоизменяются. Для того чтобы стать хорошим начинающим разработчиком, нужно определиться со своей областью с первых дней обучения. Как я упомянул выше, в этой статье я беру как пример frontend-разработку. Так как данный тип программиста работает над созданием сайтов, веб-интерфейсов и прочего, что мы видим в браузере, то выбор технологий должен быть соответствующим. Да, можно одновременно изучать Haskell и JavaScript, но первый не поможет вам верстать или делать анимации на веб-странице, а второй предназначен для решения именно данных типов задач. Конечно, знание Haskell будет в плюс, но в начале вашего пути это может запутать, особенно если учесть, что в этих языках используются разные парадигмы программирования, но об этом в другой раз. Итак, для того чтобы делать классные интерфейсы, нужно сконцентрироваться на следующих вещах:
Я бы рекомендовал новичку сделать упор на эти темы, а потом уже перейти на уровень выше и начать изучение библиотек, таких как ReactJS или Vue.js. После этого уже можно сказать, что вы являетесь junior-программистом, и готовиться к собеседованию. Еще раз: фокусирование на технологиях, предназначенных для решения проблем в той области разработки, которую вы выбрали, – одна из ключевых вещей для быстрого и эффективного входа в профессию. Бейте в одну точку.
Вывод
Для того чтобы овладеть специальностью разработчика программных продуктов, нужно подходить системно к процессу обучения. Фокус на технологиях, подкрепление теории практикой и много часов вдумчивого изучения сделают из вас великолепного специалиста. Самое важное – не бояться учится. Написание кода, проектирование систем – это непростые занятия, но терпение, усидчивость и осознанность могут дать очень неплохие плоды, в том числе финансовую стабильность. А если вы живете на просторах бывшего СССР, данная деятельность является одним из немногих оставшихся социальных лифтов.