Советов вайтишнику пост

Для того, чтобы войти в айти, мне потребовалось, кроме знаний, умений и всемерной поддержки супруги, очень изрядное количество везения. Кажется, можно было обойтись куда меньшим везением, если бы, начиная этот путь, я прочёл этот вот пост, но тогда этого поста не было. Теперь он есть; мне уже не так нужно, но не исключено, что кому-то поможет.

Путь у каждого свой, и то, что сработало для меня, для других может не сработать.1 Опять таки, моя история — про бэкенд-разработку, где-нибудь в ML или QA всё может быть совсем иначе.

1. Не ищи работу, ищи стажировку

Все жалуются на катастрофический дефицит разработчиков и низкую квалификацию кандидатов, но без опыта работы по профилю в приличное место тебя всё равно не возьмут (разве что по знакомству). А вот на стажировку попасть вполне можно; за это место придётся конкурировать со студентами, у них молодые гибкие мозги и профильное образование, зато у тебя — мотивация и софт-скиллы. Денег стажёрам платят, конечно, поменьше, чем сотрудникам в штате, зато и ждут от тебя не столько готовых результатов, сколько освоения инструментов и процессов. Осваивать их всё равно придётся, так хоть прессинга не будет — на стажировке научиться всему и разобраться во всём — и есть твоя работа.

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

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

2. Изучи алгоритмы и структуры данных

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

Мне очень помог курс из двух частей на Coursera, бесплатный и очень толковый. Кому-то лучше зайдут Тренировки по алгоритмам от Яндекса, кому-то — книжка Бхаргавы, но в любом случае эти вещи надо знать, уметь и практиковать. Leetcode — твой друг, Advent of Code вот-вот начнётся, на это стоит тратить время.

3. Занимайся Open Source

Скорее всего, ты и так это делаешь — это самый простой способ серьёзно заниматься программированием, не работая где-то программистом за деньги. Пользы от этого (помимо очевидной возможности добавить что-нибудь в резюме) столько, что всё и не упомнить. Тут и работа в команде, и практика код-ревью и работы над ошибками, и понимание места собственно написания кода в разработке программного продукта как такового, и много-много всего ещё. Надо сказать, у коммерческой разработки с разработкой в Open Source гораздо больше общего, чем принято считать. Как опыт при трудоустройстве это не зачтут, но освоиться это поможет гораздо быстрее.

4. Не трать ресурсы на платные курсы

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

Если уж хочется поучиться с толком, лучше постараться поступить на курсы от крупной компании («Школа 21» у Сбера, Route256 у Озона, «Тинькофф Образование», «Академия Яндекса», далее везде). Оно и бесплатно, и максимально приближено к реальной жизни, а если там выделиться, шансы на оффер повысятся весьма заметно.

5. Общайся с себе подобными

Я проучился на одном из тех самых курсов переподготовки с господдержкой; курс был абсолютно бесполезен (см. выше), но денег и времени не жаль: к курсу прилагался чатик для обучающихся, и польза от этого чатика оправдывает всё остальное. Объясняя там нетривиальные моменты товарищам по несчастью, я заметно подтянул собственное этих моментов понимание (известное дело: лучший способ в чём-то хорошо разобраться — попытаться объяснить это кому-то другому). Полезные ссылки на ресурсы и литературу, обмен опытом в смысле собеседований и подходов к трудоустройству, да и просто ощущение, что ты не одинок в своей попытке поменять жизнь — всё это дорогого стоит.

И не сдавайся!

Даже если ты, как я, и так всю жизнь с компьютерами, вход в IT как профессию может оказаться непростым и получиться не сразу — миф о «непробиваемой стене из HR» возник не на пустом месте. Чтобы не пасть духом, важно не терять мотивацию: ты идёшь в IT не за зарплатой, не за гибким графиком или удалённой работой, не за ДМС, не за кофе и печеньками в офисе; ты идёшь заниматься любимым делом и быть на своём месте.3 Значит, всё получится, а каждая неудача — только причина что-то ещё узнать и чему-то ещё научиться.

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


  1. И да, такой поддержки от моей жены, как у меня, у тебя точно не будет; на что ты в таких условиях рассчитываешь вообще — ума не приложу. Это же едва ли не главный фактор! ↩︎

  2. Есть и другие причины, по которым крупным компаниям нравятся алгоритмические собеседования. ↩︎

  3. Если это не так, самое время передумать; выгоришь либо ещё в процессе входа, либо сразу после, и ещё неизвестно, что неприятнее. ↩︎