Я завершил курсы по программированию, что дальше? Пять советов от ментора.

Ya zavershil kurs po programmirovaniyu chto dalshe

Много раз после завершения курсов — как онлайновых, так и оффлайновых — мне приходилось отвечать на вопросы студентов, которые в сумме можно назвать: «Что дальше?»

Разные люди формулируют этот вопрос по-разному, в зависимости от характера и настроения: «чему дальше научиться», «можно ли уже рассылать резюме», «как искать работу», «чем теперь заниматься» — но, так или иначе, многие пытаются нащупать следующие шаги на пути к профессионализму.

Поскольку я ленив, то, чтобы не повторяться, решил обобщить свои обычные ответы на эти вопросы в короткой статье. (А поскольку ленив невероятно — писал её полгода.)

Итак, вопрос:

Я прошёл курс (прочитал самоучитель/написал первую программу/посмотрел 10 обучающих видео) — что дальше?

1. Не останавливаться

Самый главный пункт. Учёба не должна и не может прекращаться после получения какого-нибудь сертификата, прочтения книжки (и даже получения ВУЗовского диплома). В нашей области учиться надо всё время, не переставая. Это совсем не значит, что нужно выучить «все языки программирования» (или даже топ-5), как и «все базы данных» или там все «фронтенд-фреймворки».

Зато «не останавливаться» — значит всё время стараться стать лучше.

Считаешь что круто изучил Ruby и все его тайные особенности? А как это всё работает изнутри? А как это всё работает в других языках? А какие есть способы писать код короче и понятнее? Или строить разумную архитектуру для больших проектов? А как оценивать эффективность кода и повышать её?

Сделал приложение с использованием баз данных? А, если что, на голом SQL напишешь запрос? И как насчёт нормализации и денормализации, планов запросов и их оптимизации? А общее представление о различиях популярных БД, и о том что такое NoSQL и зачем оно нужено?

Нарисовал и заставил шевелиться крутой современный UI? Что с твоим представлением о веб-фреймворках, ES6, HTML5, CSS3, общих принципах UX и дизайна?.. Ну, в общем, идея понятна.

2. Не ограничиваться

Занимаясь дальнейшим самообразованием, очень важно не сосредотачиваться на одном, слишком узком направлении. В 2017-м году «веб-программист на Ruby, который может что угодно» это примерно как «рабочий с лопатой, который может что угодно» — по сути, чернорабочий. И даже если вы Ruby-эксперт — зачастую это выглядит как «рабочий с ОЧЕНЬ хорошей лопатой».

Знание каких-то современных областей применения своих программистских способностей (и даже важнее — любопытство к ним) — вот о чём стоит задуматься.

Что там у нас в топе технологических новостей?

Игры (всегда!), мобильные технологии, виртуальная реальность, big data, картография, социальные структуры, робототехника — что-то из этого щекочет нейроны? Купи книжку, скачай курс, попробуй сделать демку. Даже если кажется «я ещё и программировать-то не умею» — джуниором, который может сказать между делом «да, кстати, кое-что знаю о нейронных сетях... просто книжки читал, но <список ключевых слов> представляю себе» — зачастую быть полезнее, чем джуниором, который изучал только Ruby on Rails + PostgreSQL + Angular.JS, к примеру.

Своим студентам Виктор рассказывает намного больше, чем пишет в статьях. Нанять Виктора

3. Не увлекаться

...самообразованием.

(Слышен негромкий стук: это падают в обморок студенты и коллеги.)

Да-да, как это ни парадоксально слышать от препода. Дело в том, что программирование — очень практическая профессия, на начальных уровнях — в общем, ремесло. Программист, который прошёл 184 курса и знает наизусть все классические книжки по правильной архитектуре, но никогда не возился с реальным проектом — вроде плотника, который пять лет учился в Университете Плотнического Мастерства, но никогда не держал в руках рубанка.

Очень многие навыки и подходы оттачиваются только «в бою», и специально отобранный ментором «образовательный проект» не очень для этого подходит. Более того: подмастерье плотника, которому самому неинтересно попробовать, как же ж в руке лежит рубанок, и как делается эта табуретка — почти безнадёжный случай.

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

4. Не жадничать

По моему опыту, после рекомендации из предыдущего пункта у многих возникает привычное «да, но...» — «да, я бы поучаствовал в реальном проекте, но где ж его взять?.. джуниоров без опыта никто не хочет брать даже на стажировку...»

Так вот: хочешь набраться опыта — не экономь себя!

  • Есть гениальная идея, которую ты собираешься однажды реализовать в виде платного сервиса, продать Гуглу и всю жизнь жить на проценты? Сделай какое-нибудь подобие её в виде опенсорсной библиотеки. Скорее всего, гениальных идей придёт ещё тысяча, а эта — безнадёжно устареет. Ну а если нет — ты-то её и застолбил, круто же.
  • Мелькнула мысль «а вот интересно...» — если это проверяется программированием, возьми да проверь. Ловить редкие ж/д билеты в далёкий город? Вычислить, насколько соседние супермаркеты отличаются по ценам? Сравнить и разобраться как средняя скорость «формулы-1» растёт за последние 20 лет? Сохранить всю домашнюю библиотеку в базу данных и рассортировать по жанрам? Поймал мысль — делай! Скорее всего, никакого супер-интересного результата не получится, а вот опыт «разобраться в каких-то данных» — да.
  • Зовут на бесплатную стажировку? Убедись, что компания крутая/проект интересный и бегом. Писать в рассылках «профессионалы бесплатно не работают» много ума не надо. А влиться в промышленный проект с нулевым опытом — бесценно.
  • Ищут программистов-волонтёров — соглашайся. Социальные проекты, сайт для школы, хакатон по городским открытым данным. Будь готов, что твоя работа окажется никому не нужна — кроме тебя. Но вполне может оказаться и по-другому.
  • Наконец (а на самом деле — в первую очередь) есть огромное количество невероятно клёвых опенсорс проектов — и многие из них готовы принимать новичков, рассматривать их код, вежливо его комментировать и давать ту самую возможность рости в бою. Как их найти?
    • попробуй сделать что-нибудь, и подумать — чего не хватило в используемых библиотеках? вполне возможно, что никто раньше не подумал, или не имел времени это сделать;
    • есть много разных инициатив, набирающих студентов в популярные проекты; например — Google Summer of Code. В рамках этого проекта студентам ВУЗов Гугл даже даёт стипендию, но суть даже не в этом — а в том, что все заявившиеся туда проекты и довольно популярны, и готовы принимать новичков и обучать их.

Главное: участвуя в своём или чужом проекте, ты неоднократно почувствуешь, что «тратишь время зря» или (если повезёт, но так часто бывает) «развлекаешься», вместо того чтобы самосовершенствоваться или искать работу. Не верь. Если ты пишешь код, который — хотя бы предположительно — зачем-то нужен, ты делаешь правильную вещь. Даже если это скрипт учёта 20 горшков для ближайшего детсада или каталог твоих порнороликов.

5. Не отчаиваться

Поначалу, всё будет плохо. Почти наверняка.

Если ты не великий гений-спаситель-человечества (отлично, если так!), то скорее всего:

  • на собеседованиях будут смеяться над опытом «два курса, три книжки, один репозтиорий»;
  • в опенсорсных проектах будут режектить твои пулл-реквесты с хамскими комментариями;
  • твои собственные проекты будут в лучшем случае игнорировать, в худшем — издевательски и злобно комментировать в духе «кому это надо и почему это так хреново написано».

Худшее, что может в этот момент случиться с программистом — досрочное превращение в дедушку-на-лавочке, который пишет на Хабрахабр злые посты «почему технология X — говно», или «как сообщество языка Y унижает новичков». Это путь в профессию «знаменитые публицисты, которые никому не нужны», уважаемую, но бессмысленную.

А лучшее, что может случиться после первых раундов отказов, критики и игнорирования: конструктивное учесть, остальное забыть.

Но так, между делом, запомнить. И вспомнить потом, через несколько лет, когда твои библиотеки будут собирать сотни звёздочек на гитхабе, рекрутеры выстраиваться в очередь, а новые технологии покоряться по щелчку пальцев — вспомни об этом периоде, и будь добр к новичкам.



А какими были твои первые шаги после заверешения очередного курса? Расскажи в комментариях, поделись своим опытом с читателями.


Наконец-то решил заняться самообразованием?

Тогда начни с нашего бесплатного путеводителя по миру веб-разработки. Внутри куча полезных советов и материалов для самостоятельного изучения.

Заполучить книгу Cover huge ru