Десять лет назад я учился в Техническом университете Молдовы в Кишиневе, где изучал C++ и Matlab. Знания преподавались на фундаментальном уровне, но не в такой степени, чтобы их можно было сразу использовать в реальных проектах. Этим я хочу сказать, что нужно было заблаговременно изучать программирование в свободное от учебы время. Однако несмотря на устаревшую программу, занятия в вузе были тяжелыми. Вместе со мной поступило 35 человек, а на диплом сдавали только шестеро. Несмотря на устаревшие учебники, полученная база сильно упростила дальнейшее самостоятельное обучение. В то время практически не было частных обучающих курсов и вузовская программа безусловна оказалась полезной.

Наблюдая за офферами местных компаний, я понимал, что полученных в университете знаний недостаточно даже для позиции джуна. Приходилось самостоятельно искать информацию в Интернете, параллельно занимаясь фрилансом. В 2012 году на работу пускали только разработчиков с уже имеющимися кейсами. Поэтому подкреплять теорию практикой было не просто полезно, но и необходимо. Причиной такой требовательности была высокая конкуренция на мировом рынке. Digital-компании неразвитых стран предлагали свои услуги на аутсорс по доступным ценам. Поэтому даже к джуну требования были эквивалентными требованиям к мидлам.

В общей сложности я тратил до 12 часов в день на программирование. Сегодня вам не потребуется так много усердствовать благодаря богатому выбору информации. В 2012-м почти не было специализированных каналов на Youtube, доступных учебников и сайта stackoverflow.

Усилия не прошли даром и спустя год теории и практики я смог получить оффер от digital-компании в родном городе. Спустя еще три года работы в Кишиневе я перебрался в США, а затем в Лондон. Сейчас рынок более богат на внетерриториальные предложения, а количество информации для обучения драматически велико. Стать сегодня востребованным программистом можно и без изнурительных занятий, но не без упорства.

План занятий

Прежде всего определитесь в каком направлении хотите работать. Фронтенд или бэкенд, разработка приложений или игр, создание сайтов или сервисов с ИИ. Сегодня рынок пестрит десятками ответвлений в программировании. Обучаясь, важно не «перепрыгивать» от одного направления к другому, одного языка к следующему. Я фронтенд-разработчик, поэтому в материале опишу программу для изучения известной мне области.

Первые 2-3 месяца

Изучение HTML и CSS. Это еще не программирование, но необходимый фундамент для понимания структуры работы. Сегодня в открытом доступе размещено море информации для обучения основам. Также существуют учебники, например, издательства Packt или O’Reilly. Заранее скажу, что вы навряд ли встретите откровенно плохой обучающий материал по HTML и CSS, поэтому смело смотрите на отзывы и беритесь за штудирование. Главное, ищите учебники не старее 2016-17 годов.

На этом этапе вы ответите на вопрос: «Подходит ли вам программирование?». Именно в первые месяцы большинство занимающихся прекращают занятия. Если преодолели HTML и CSS, то, считайте, полдела сделано.

Период с 3-го по 6-й месяцы

После приступайте к изучению Javascript. Вместе с Typescript сегодня на рынке фронтенда это, пожалуй, самые популярные языки программирования. Еще недавно они делили первенство с PHP, который постепенно перестал быть востребованным. Последний все еще приветствуется в ряде зарубежных компаний, так как часть их старых проектов может быть написана на PHP.

Для изучения Javascript я рекомендую учебники компаний Apress, Packt Publishing, O’Reilly, Dummies, Manning Publications. Вы также можете поискать открытые лекции в Интернете или оплатить онлайн-занятия. Например, отличные платные уроки можно найти у команды Packt или посмотреть бесплатные видео для ознакомления в Youtube. Определите удобный для вас формат изучения. Важно учитывать год выпуска курса и роликов. Я рекомендую не тратить свое время на занятия трехлетней давности, так как многие методики уже обновились.

Ни один платный курс не сделает вас сразу программистом, но сильно ускорит обучение благодаря менторской поддержке. Если среди ваших друзей найдется практикующий специалист, то спрашивайте его почаще и просите делать ревью кода.

Дополнительные 2-3 месяца

После изучения языка программирования беритесь за второй основной инструмент — фреймворки. Это готовые решения для заметного упрощения и ускорения работы. Конечно, можно обходиться без них, но вы не встретите ни одного программиста или команду, игнорирующих фреймворки. Наиболее популярные сегодня — ReactJS и Angular, но также часто используются VueJS и Svelte. Также как и в случае с Javascript, знания по первым двум вы найдете в открытых источниках, а также учебниках от вышеперечисленной подборки издательств.

Часть программистов уверяют, что изучение ReactJS и Angular не отнимет больше двух недель. Я считаю иначе. Не торопитесь поглотить знания на скорость. Учитесь в удобном для вас режиме. Обучение — это не гонка. Я часто встречался с новичками, потратившими слишком мало времени на фреймворки, и их код мне снился в кошмарах.

Последующий год

После изучения фреймворков беритесь за практику. В идеале — найдите ментора для помощи в подготовке pet-проекта. Затем переходите к реальным задачам — фрилансу. Ищите простые и дешевые заказы на площадках типа Upwork. Работа в таком режиме поможет не только закрепить теорию, но и собрать первое портфолио. Моими первыми заказами на фрилансе были исправления багов в готовых проектах. После я самостоятельно создавал сайты на популярных тогда CMS.

С большими усилиями вы найдете постоянную работу джуном через год со старта обучения. Расслабляться не стоит — первые 2-3 года будут самыми тяжелыми. Вам предстоит столкнуться с пробелами в знаниях, неудачами, отказами на собеседованиях и тяжелыми задачами. Это нормально. Я сам провалил четыре интервью, прежде чем меня впервые приняли на работу программистом. Главное — не опускайте руки.

Следующие 3-5 лет

В последующие годы вы непременно будете расти как профессионал и через 3 года со старта обучения вполне сможете прокачаться до «левелапа». Джуна от мидла отличает прежде всего опыт. Первые чаще ошибаются, и их умения неустойчивы. Одну задачу новички могут решить быстро, а над второй корпеть неделями. Хорошие мидлы уже превращают работу в конвейер, редко спрашивая совета у коллег. Они уже способны зарабатывать внушительные суммы от 200 тыс. руб., не отягощая себя ответственностью лида или сеньора. Поэтому многие намеренно «застревают» в статусе мидла.

Обычно собеседования проваливаются из-за отсутствия опыта кандидата. Компаниям не нравится портфолио с pet-проектами. Пополняйте ваши кейсы реальными проектами и не рассчитывайте, что удастся обмануть интервьюера. Зачастую на собеседованиях присутствуют сеньоры, которые запросто вычислят ваш реальный опыт. Особенно это критично, если вы джун и хотите устроиться на позицию мидла. Если попросить вас описать решение самой сложной задачи в вашей практике, то можно запросто вычислить ваш уровень как программиста.

Если вы все же решились докачаться до позиций Senior или Lead, то стоит выделить себе в сумме 5-6 лет с момента начала обучения. Помимо хорошего знания программирования, эти специальности подразумевают опыт управления командой. На собеседованиях в США и Англии интервьюеры оценивают скорость принятия решений, понимание архитектуры проекта, коммуникационные и стратегические навыки. Программисту без большого опыта работы в команде это сделать невозможно. Поэтому не старайтесь прыгнуть выше головы — «дорастите» до нужного вам уровня постепенно. Все получится благодаря постоянной практике.

Евгений Козак, фронтенд-разработчик, экс-Senior Software Engineer в Samsung Pay, экс-Software Engineer в Kaiser Permanente