Веб-разработчики сегодня пользуются огромным спросом — большой выбор вакансий, высокая оплата, тысячи возможностей творческой реализации. Стать успешным программистом можно, даже если пока что вы не из числа компьютерных гениев и с математикой «на вы».
И как же подступиться к программированию — с чего начать, на что обращать внимание, а на чем не зацикливаться, по какому алгоритму обучаться и строить карьеру? Обо всем этом вы узнаете в нашей статье.
Содержание
- Итак, каков план действий? Давайте по порядку.
- Выбор направления программирования, к которому лежит душа
- Выбор и изучение языка программирования
- Правильное обучение языку
- Создайте первое портфолио
- Составьте хорошее резюме
- Подача заявки на работу
- Прохождение собеседования
- Пробуйте новое и экспериментируйте
- Наметьте пути, куда двигаться дальше
- Верьте в себя
Итак, каков план действий? Давайте по порядку.
Выбор направления программирования, к которому лежит душа
Потому что «программист» — довольно общее понятие, у которого множество подвидов: специалисты по обработке данных, backend-, frontend- и fullstack-разработчики JavaScript и не только, DevOps инженеры, специалисты по безопасности.
А еще аналитики, тестировщики, системные инженеры, инженеры-программисты, разработчики ПО и прочая, прочая. И это еще не дошло до деления на ниши создания мобильных и десктопных, сетевых, веб-приложений, компьютерных игр, работы с разными операционными системами (iOS developers, разработчики сервисов на Android, Linux).
А еще можно попробовать свои силы в моделировании, робототехнике, Big Data, Data Science, машинном обучении, искусственном интеллекте — список направлений и подвидов веб-программирования можно продолжать долго. Хотите вы заниматься научными изысканиями, дизайном сайтов, «общаться» с железом или заниматься прикладным программированием (проектированием, разработкой, оптимизацией и отладкой ПО для пользователей). Вы должны найти четкий ответ на этот большой вопрос.
Подробнее о направлениях программирования и их выборе мы писали здесь.
Чаще всего новички начинают с frontend-разработки — области, которая считается одной из самых простых.
До выбора языка ознакомьтесь с азами программирования
Это обязательный вводный этап самообразования. Языки программирования во многом схожи, перед основательным изучением любого из них вам пригодится общая база — «азбука». Начните с терминологии и основ — что такое вёрстка и т.д.
Что изучить для начала:
- переменные;
- типы и массивы данных;
- классы и объекты;
- строки и символы;
- циклы и операторы if;
- петли;
- функции, методы и т.д.
Если вас интересует серверная часть, разберитесь еще с базами данных и объектно-ориентированным программированием (ООП).
Потому что независимо от инструмента, которым вы в будущем будете пользоваться, каждый раз при решении задач вас ждут несколько неизменных этапов:
- Постановка задачи.
- Формализация.
- Алгоритмизация.
- Непосредственно программирование.
- Тестирование.
И чтобы пройти этот путь до 4 пункта, нужно уметь:
- читать и понимать уже имеющийся код, то есть ориентироваться в нем;
- «видеть» заранее, как написанный текст программы будет работать и к каким результатам приведут ваши действия;
- знать, где искать ошибки и как они могут выглядеть — тестировать и т.д. и т.п.
Как видите, без введения в основы программирования и хотя бы минимальных навыков перед погружением не обойтись. Все это можно получить с помощью бесплатных онлайн-курсов, видео- и текстовых уроков, тренажеров, книг и блогов, которых в Интернете в избытке. Например, у Code Basics в свободном доступе есть подборка бесплатных уроков для новичков по нескольким языкам, включая PHP, Ruby и др. Там вы получите и теоретические знания, и сможете выполнять интерактивные задания. Похожие бесплатные учебные программы, как и всевозможные тесты и интенсивы, есть у многих онлайн-школ.
Начинать желательно именно с видеокурсов, затем штудируйте мультимедийные учебники и только потом переходите к книгам. Так информация лучше усвоится и вам будет проще. Например, есть отличное издание «Язык программирования Си» (The C Programming Language) Брайана Кернигана и Денниса Ритчи, которые этот язык и создали. Или еще один бестселлер «Практика программирования» Брайана Кернигана и Роба Пайка. Но без введения в курс дела, знания основ программирования и мало-мальской компьютерной грамотности эти книги с миллионными тиражами ничем вам не помогут.
? Не торопитесь, не перескакивайте через незначительные, на ваш взгляд, главы и термины — это аукнется, программирование не терпит суеты и требует усидчивости. Не ленитесь разбираться, даже если избрали для себя дистанционное обучение, отдайте предпочтение интерактивным курсам, на которых дают не только теорию, но и возможность попрактиковаться, пусть и по записям, а не в режиме живых вебинаров.
Как выбрать: ориентируйтесь на свои предпочтения, востребованность языка на рынке труда и простоту синтаксиса/скорость освоения. Самый логичный подход — остановиться на самых популярных языках, о них мы тоже писали в предыдущей части — Python, Java, C, C++, Javascript, R, Arduino, Go, Swift, Matlab.
И, конечно, ориентируйтесь на то, что, как и на какой платформе в итоге хотите создавать. Например, Scratch — язык программирования для детей, 1С — для хранения справочных данных, Unity — для создания игр и т.д. и т.п.: если у вас любовь с каким-то языком программирования, вряд ли вам есть дело до всяких ТОПов.
Начинать проще всего с HTML — языка разметки. Далее по популярности и целесообразности у новичков идет универсальный JavaScript, CSS и SQL, которые, скорее всего, тоже понадобятся в будущем большинству программистов. К изучению С, Python, Haskell и остальных рекомендуем приступать уже после освоения HTML и JavaScript, это необходимая база. Но выбор, конечно, за вами — статические, динамические, низко-, средне-, высокоуровневые…
После изучения языка займитесь освоением его фреймворков и библиотек. Например, фреймворк Django после освоения основ Python, JavaScript-библиотеку React с открытым исходником для разработки пользовательских интерфейсов и т.д. Чем больше вы знаете в своей сфере, тем большую цену за свои услуги можете называть. Практикуйтесь столько, сколько сможете, это окупится.
Кроме самого языка и его библиотек, вам понадобятся дополнительные знания:
- Английский язык.
- SQL хотя бы на уровне создания таблиц, джойнов и юнионов (это язык запросов для управления СУБД (системами управления реляционными базами данных, например, MySQL).
- Метод слепой печати десятью пальцами.
- Системы контроля версий — старый добрый Git.
Все это поможет вам ускорить темп учебы и упростить сам процесс.
Настройка вашей «среды разработки»
«Среда разработки» — это набор инструментов и ПО, с помощью которых вы будете программировать: писать, запускать и тестировать ваш код. А именно:
- Репозиторий — хранилище для кода, по сути, набор файлов и папок по вашему проекту.
- Текстовый редактор и/или IDE — инструмент для написания кода. Выбрать вариант для себя можно здесь.
- Система контроля версий для управления процессом разработки, верификации и т.д.
Что пригодится на этом этапе: Git, GitHub, Stackblitz.com и аналоги. Выберите, на чем и где будете программировать, разберитесь с функционалом и приступайте к оттачиванию ваших навыков в изучаемом языке.
Git и GitHub сейчас популярны, имеет смысл разобраться в их работе. В этом поможет переведенная книга «Про Git» Скотта Шакона на русском языке, материалы (на английском) и другие.
? Составьте свой набор актуальных инструментов, который вам удобен. Не ленитесь разобраться с компиляторами, интерпретаторами — упростят вам жизнь.
Правильное обучение языку
Если вкратце, ваш карьерный путь с нуля будет таким:
- Проба пера — знакомство с возможностями и особенностями языка.
- Изучение (бесплатные, платные курсы и материалы в Сети, вузы, самообучение).
- Стажировка.
- Работа.
Проба пера. На это уйдет от пары недель до пары месяцев. Важно понять, по силам вам выбранная стезя или нет, стоит ли тратить на изучение конкретного языка время и деньги, окупятся ли эти вложения.
Изучение. Времязатраты — от пары месяцев до 1-1,5 лет, зависит от исходных знаний и сложности осваиваемой технологии. Независимо от того, учитесь вы по найденным/купленным в Интернете материалам или на курсах, чем больше упражнений вы выполняете на этом этапе, тем лучше.
Стажировка и работа. На этом этапе вам предстоит найти подходящую вакансию, пройти собеседование и получить работу. На заметку: по окончании многих платных курсов от онлайн-школ ученики получают гарантированную помощь с трудоустройством. И почти в 100% любых курсов в процессе обучения под руководством преподавателей вы сформируете портфолио, которое можно показать в отклике на вакансию или уже на собеседовании.
Большинство из них предлагает как вводные базовые курсы, чтобы познакомиться с программированием, так и PRO программы, включая курсы переподготовки для профессионалов. Формат подачи материала, количество модулей, стоимость и продолжительность разная, как и перечень дополнительных опций, которые доступны слушателям лекций: диплом/сертификат, проверка ДЗ экспертами, персональная помощь менторов, трудоустройство и т.д.
Где учиться
Вузы — скорее, небольшой плюс, чем основное преимущество в карьере большинства программистов. Техническое образование для освоения этой профессии в 21 веке необязательно. Плюс университетская программа быстро устаревает, в большинстве случаев онлайн-курсы и даже самостоятельное обучение эффективнее и быстрее. Но многое зависит от выбранной вами IT-ниши, в некоторых из них без корочки никуда.
О том, учиться платно или бесплатно, в оффлайне или на онлайн-курсах, уже рассказывали здесь, решать вам.
Еще как вариант — можно пойти на курсы, которые проводят большие компании для своих потенциальных сотрудников. Например, «Школа анализа данных» от Яндекс и аналоги.
Стратегия обучения
Главное — получить в итоге цельные, структурированные знания и опыт, а не то, за сколько вы это сделали. Просто будьте к этому готовы. Если есть вопросы с самодисциплиной, ваш вариант — курсы, хоть платные, хоть бесплатные. Но всего можно добиться и своими силами.
Перед тем как приступать к написанию кода, разделите задачу на этапы. Убедитесь, что каждый из них вам понятен — что и как должно произойти и как этого достичь. Если вы можете расписать решение задачи по шагам и знаете, к какому результату какой ее этап приведет, вы готовы писать код.
Принцип прост: меньше задача — меньше кода — меньше вероятности ошибки и больше возможностей ее обнаружить сразу. Плюс вы лучше будете понимать, что происходит на более низких уровнях кода. Это важно в работе программиста в целом, а на этапе обучения — тем более.
Есть и обратная сторона — нужно учиться видеть общий план задачи, как все технологии и этапы сочетаются между собой, что сработает лучше на каком этапе и в какой последовательности. Для этого нужно изучить альтернативы и выбирать самые действенные, а не простые.
Не увлекайтесь, но и не брезгуйте шаблонами
Держитесь золотой середины.
Если вам нравится какой-то шаблон проектирования или он подошел в прошлый раз в похожей ситуации, это не значит, что этот шаблон нужен вам в текущей задаче. Не усложняйте техническую сторону кодовой базы шаблонами.
Обратная сторона медали — это желание изобретать все с нуля , когда есть рабочие готовые решения. Это не всегда обосновано, но такой подход помогает пройти задачу от и до, поняв природу работы каждого элемента лучше.
? Пишите к коммитам максимально краткие, но информативные комментарии, это упростит вам жизнь в будущем — упростит использование любого языка и поможет проследить логическую историю изменений при необходимости.
Найдите наставника, своего гуру
Найти успешного специалиста по интересующей вас теме — хорошая идея, потому что он:
- будет мотивировать и вдохновлять вас;
- поделится опытом, связанным с карьерой и кодом;
- ознакомит с проверенными практиками и технологиями.
И для этого необязательно знать ведущих программистов лично — достаточно подписки на гуру-блоги, подкасты, ютуб- или телеграмм-каналы.
А еще вокруг крутых специалистов часто формируются сообщества единомышленников, в которых можно задавать вопросы и делиться материалами.
Если же вы общаетесь со своим наставником лично (это может быть и коллега с работы, и более опытный однокашник по онлайн-сообществу), придерживайтесь простых правил:
- Перед тем как спросить, проанализируйте и обобщите суть проблемы.
- Попытайтесь найти ответ самостоятельно.
- Спрашивайте только о том, чего не нашли в Интернете, книгах, видео, документации. Если оно там есть, именно туда вас и пошлют, не сомневайтесь.
- Задавать вопросы лучше «оптом» — структурируйте свой список уточнений, чтобы получить ответы сразу на всё.
- Если вам дают какие-то ссылки или сбрасывают файлы, изучайте их от и до, чтобы потом не переспрашивать.
Исследуйте свое ремесло вглубь и вширь
Найдите каждый блог, подкаст, видео, статью и учебник по вашей теме и штудируйте. Со временем вы научитесь отделять качественные материалы от второсортных или устаревших.
Если знаете английский, ваш ассортимент материалов в разы шире. Прокачивайте инглиш, пригодится.
Следите за трендами и обновлениями, программирование — динамичная индустрия, знания устаревают быстро — держите руку на пульсе: по необходимости изучайте смежные технологии, новые инструменты.
И еще несколько напутствий по учебе
Вы не обязаны знать все обо всем, Google поможет решить мелкие моменты и восполнить пробелы. Основы вы, конечно, должны знать, но постичь сразу всю теорию и практику программирования невозможно, обучение будет постепенным и непрекращающимся процессом, просто смиритесь и дерзайте.
Учиться эффективнее не в сольном режиме, а общаясь и сотрудничая с такими же начинающими разработчиками на курсах или форумах. Особенно полезно парное программирование.
Вопреки бытующим стереотипам для начала карьеры программиста вам не потребуются супермощные компьютеры и десяток мониторов. Скорее всего, того аппарата, что есть у вас сейчас, на первых порах вполне достаточно.
Создайте первое портфолио
Во многих платных курсах, как мы писали выше, уже в ходе обучения ученики пополняют свое портфолио несколькими полноценными проектами. Но вы можете сделать это и самостоятельно.
Совет:
- показывайте работодателю софт с понятным ему функционалом и назначением. Это повысит ваши шансы на успешное прохождение собеседования (иногда рекрутерам нужна креативность, но чаще — просто добротные знания и умения);
- блок кода, который вы демонстрируете, должен быть структурированным и отформатированным, в идеале дайте ему отлежаться перед показом, чтобы предварительно подкорректировать, что нужно;
- вы должны понимать и мочь объяснить каждую строчку и каждый элемент кода в своем портфолио — не сомневайтесь, вам будут задавать вопросы по ним.
Фриланс — палка о двух концах
Можно для начала попробовать себя на фрилансе, получить первые деньги за новые знания. Вы можете ознакомиться с самыми популярными биржами фриланса.
Но помните: свободное плаванье, в отличие от работы в компаниях, часто не дает расти вглубь профессии — разовые заказчики с бирж не будут вкладываться в ваше обучение, им нужны готовые специалисты. Поэтому учиться придется самостоятельно, параллельно с работой. Но на фрилансе можно получить стартовый опыт и наработать какое-никакое первое портфолио, получая за это деньги.
Составьте хорошее резюме
Основной закон здесь: лучше правдивое резюме пусть и со скромным послужным списком, за каждое слово из которого вы сможете ответить. Потому что сделать это, скорее всего, придется прямо на собеседовании. В конце приложите портфолио, если оно есть.
Важно:
- Даже если вы человек-оркестр, указывайте в названии резюме один ваш основной язык программирования (из востребованных), а не все технологии, с которыми приходилось сталкиваться со школьной скамьи. Все дополнительные навыки можно будет указать в соответствующем блоке резюме. Но пишите только те, что имеют прямое или косвенное отношение к искомой должности. И будьте готовы к вопросам по каждой из перечисленных вами технологий — дважды подумайте, добавлять ли то, в чем вы «плаваете» (не добавляйте).
- Описывайте свой путь в веб-разработке спокойно и уверенно.
- Обязательно указывайте в резюме, готовы ли к переезду и командировкам.
- Если есть опыт работы, пусть и минимальный, указывайте это.
Рекомендуем вам: Идеальное резюме, которому будут рады рекрутер и работодатель
Подача заявки на работу
Когда начинать искать работу, зависит от должности, на которую вы претендуете, и того, достаточно ли у вас знаний и практических навыков. Проверить это легко: просто пройдитесь по требованиям в вакансиях и оцените, насколько им соответствуете.
Рассылайте резюме по всем вакансиям, которые подходят под ваш профиль, даже если требуемый в них стаж немного превышает имеющийся у вас. Можно отправлять предложения и в компании, потенциально заинтересованные в специалистах вашего направления — вы ничего не теряете, но и такие заявки иногда выстреливают.
Поиск работы в среднем занимает месяц-два. Отвечают, как правило, в течение 2-4 дней, затем собеседование и/или тестовое задание, потом работодатель может размышлять около месяца. В идеале весь процесс займет от месяца до трех с момента подачи заявки.
? Не пренебрегайте тестовыми заданиями. По статистике, чуть ли не 90% кандидатов на должность программиста отваливаются именно на этом этапе.
Прохождение собеседования
Позаботьтесь о хорошей связи, интернет-соединении, гарнитуре. Имейте в запасе 1,5-2 часа, когда вам никто не помешает.
Видеосвязь чаще всего не требуется, как и тяжелые среды разработки, обычно достаточно простого редактора кода в стиле Notepad++ или Sublime. Уточните заранее, что понадобится на собеседовании, у работодателя.
И о зарплате. Даже если вам как стажеру-программисту предлагают минималку по региону, а то и меньше вашей ЗП на текущем месте работы, имеет смысл согласиться. Вы получите бесценный опыт в отрасли, в коллективной разработке на практике и тот самый стаж, который пригодится вам в будущем, особенно если решите сменить место работы.
Испытательный срок
Просто делайте свою работу. Не стесняйтесь задавать вопросы, но и не частите с этим — если есть возможность разобраться самому, делайте это. На первых порах, если в течение часа не можете понять, как решить проблему, обратитесь к старшему, вам подскажут.
? Учитесь работать в команде, в больших компаниях айтишники, по статистике, получают больше, чем фрилансеры.
Пробуйте новое и экспериментируйте
Старайтесь каждую следующую задачу выполнить лучше, выше, сильнее. От вашего мастерства зависит уровень зарплат, на который вы можете претендовать. Читайте профильную онлайн- и офлайн-литературу, учитесь новому, изучайте документацию, блоги, туториалы. Учитесь у коллег, совершенствуйте владение уже освоенными инструментами, изучайте смежные технологии — расти всегда есть куда.
Да-да, раньше вы уже читали, как программировать. А теперь для повышения квалификации почитайте, как это делать хорошо.
Делайте шабашки, пет-проекты, экспериментируйте — например, уложите структуру данных в документы вместо реляционной модели, пробуйте новые инструменты, подходите к хобби-задачам под новым углом, не думая о том, как бы побыстрее выйти в продакшн. Без практики ваш профессиональный рост невозможен, и именно пет-проекты — ваше поле для экспериментов.
Выучите другой язык
Будет это что-то смежное по вашей теме или инструмент с принципиально противоположной парадигмой (например, Scheme vc Java или Java vc Perl или Python) — решать вам. Можно опять же пробежаться по требованиям в вакансиях и посмотреть, чего вам не хватает для продвижения вверх по карьерной лестнице.
Вы должны идти в ногу с тенденциями своей ниши и развиваться как программист. Смотрите на проблемы в работе как на потенциал для самообучения, и станете хорошим разработчиком.
Кроме того, языки устаревают — Objective-C, Cobol и другие… Знать больше одного практичнее. Да и главное — не язык, который вы знаете, а объем задач, который способны решить эффективно.
Участвуйте в open Source
Open Source — тернистый путь к прокачке скиллов. Едкие подчас комментарии других разработчиков могут и будут ранить ваше эго, но критика без прикрас ускорит ваш профессиональный рост и поможет прокачать и soft skills, и hard skills.
Займитесь для начала несложной библиотекой или инструментом. В разделе issues найдите, над чем в них можно поработать — небольшой баг исправить, дописать какой-нибудь функционал, что-то автоматизировать, увеличить быстродействие программного обеспечения и т.д. Общение с единомышленниками, более опытными коллегами, конструктивная критика, годный фидбек — все это полезно, и опенсорс даст вам это и еще сверху немножко досыплет. 🙂
Наметьте пути, куда двигаться дальше
Это может быть вертикальный рост к более высоким должностям с повышением оклада и расширением зоны ответственности или горизонтальный, проявляющийся в новых навыках и знаниях и, соответственно, повышающейся зарплате, но на той же должности.
Вам нужно решить, хотите вы развиваться в этой компании, в текущем проекте или пора менять работодателя и/или браться за новые задачи, открывать свои стартапы. Рост возможен во всех трех случаях.
Меняйте компанию, если нет развития
Если чувствуете, что как программист уперлись в свой потолок в конкретной компании, меняйте ее. Ситуации, когда специалист по уровню перерастает организацию, в которой работает, — частое явление. Не засиживайтесь в таких местах. Для роста необходим постоянный вызов, выход из зоны комфорта.
Верьте в себя
Сложно сказать, сколько раз вам будет хотеться все бросить к чертям на пути к успеху в профессии программиста. Что-то не получается, достали коллеги, не можете договориться с заказчиком из-за языкового барьера и еще сотня причин…
Просто знайте: вы в итоге справитесь с этим, если постараетесь. И справитесь еще не один раз — кто, если не вы?
Пара полезных ссылок:
- Codeforces — образовательный рейтинговый турнир для программистов;
- Topcoder — биржа для программистов;
- Hacker Rank — биржа для программистов;
- Code Chef — ресурс со всяким полезным.
Надеемся, наши рекомендации помогут вам на пути к познанию таинства программирования и упростят ваше восхождение на карьерный олимп. Успехов!