Мой путь из инженера в программисты


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

Краткое содержание прошлого поста

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

Мой путь

Благодаря фидбеку от Хабра, я смог четко сформулировать два пути развития дальше.
Первый - еще раз попытаться найти себя как инженера-разработчика, как в России, так и за ее пределами. Благо, прямо из комментариев пришло несколько личных контактов, которые позволили сделать несколько попыток.

Второй путь, который тоже прорисовался достаточно четко – качать навыки программиста микроконтроллеров и встроенных систем и искать начальные позиции (джун-мидл) в этой сфере.
Как «умная и красивая обезьяна», у которой было время, я попытался идти одновременно по двум направлениям. Активно занялся поиском работы, в том числе за рубежом, и стал качать свои навыки в контроллерах.

Через полгода стало понятно, что первый путь все же тупиковый. Надо идти в программисты. Стечение обстоятельств (и Голос) подтолкнуло меня к увольнению. Я сосредоточился на контроллерах и поиске работы, но уже в качестве программиста.

Неожиданно для себя я получил предложение поработать в качестве фрилансера на проекте, который одновременно использовал меня и как программиста контроллеров, и как инженера-разработчика. Моя жизнь фрилансера продлилась 8 месяцев и закончилась вместе с платежами по заказам. Но мои навыки программирования за это время сильно подросли, поэтому я вернулся к рынку труда и поиску вакансии инженера-программиста.

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

Но давайте чуть подробнее о каждом из этапов.

Стартовая позиция

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

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

Кроме того были интересные, но бесполезные курсы от HTML Академии ИТМО (HTML/CSS/JS),
«Управления проектами» от ВШЭ и «Теория графов» от ИТМО. А также половина пройденного курса на JavaRush, который был заброшен после решения идти в embedded.
На практике у меня был опыт моделирования и обработки сигналов, связанных с моими устройствами. Опыт написания прошивок для контроллеров серии C8051 от SiliconLabs, младших контроллеров Atmel и немного опыта разработки для FPGA от Altera.

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

В поисках вакансии

Тема собеседований достойна отдельного поста. Их было много, они проходили волнами.
На собеседованиях был много странностей. Когда я приходил собеседоваться на позицию программиста, меня спрашивали, почему с таким опытом я не хочу работать инженером. На собеседованиях на позицию инженера меня пытали на предмет опыта программирования.
Были короткие встречи, на которых я говорил «Стоп, вам нужен не я». В противовес этому на одну из позиций был марафон собеседований из пяти двухчасовых собеседований на английском по скайпу. Были замаскированные военные, идти к которым я не хотел принципиально. Была фирма, которая по сути представляла собой кооператив фрилансеров во главе с менеджером.
Главным же итогом большинства моих собеседований было отсутствие предложений о работе там, где я хотел, и наличие предложений там, где мне не хотелось бы работать.

Жизнь во фрилансе

Здесь я с головой окунулся во все плюсы и минусы фриланса, которые многократно обсуждались на Хабре. Для меня огромным плюсом стало время. Я жил в своем таунхаусе на природе и не тратил время на дорогу. Зато я легко отдавал проекту по 12 часов в день, имея возможности учиться и закрывать те пробелы в знаниях, которые у меня были в программировании. Я окунулся в мир STM32 и, в том числе, FreeRTOS. Сначала смакетировал на Дискавери нужный мне проект, потом сделал плату и повторил его на 10х серии. Параллельно разобрался в Git и проектировании на UML в рамках нужных задач. К сожалению, уезжать далеко от дома я не мог, потому что осциллограф, паяльник, блок питания пришлось бы таскать с собой.

Одновременно пробегали проекты, связанные с антеннами и радарами. Но основной доход приносил один заказчик. К слову, этот доход был в полтора раза выше мой зарплаты инженера-разработчика.

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

Испытание боем

В эту фирму я попал со второго раза. Первая попытка решить тестовое задание (небольшая задачка для микроконтроллера) не привела к собеседованию. Отзвонился, узнал чем именно не понравилось мое решение (мало комментариев, предложен всего один вариант решения). Вторая попытка спустя полгода была более удачной.

Собеседование с представителем HR, с небольшими тестами. Разговор с будущим коллегой, долгий и обстоятельный. Суммарно более 2 часов. Предложение об оплачиваемой «стажировке» на несколько дней.

За время «стажировки» закрыл пару-тройку багов. Деньги получил на руки вместе с предложением испытательного срока на три месяца.

Можно сказать, что с этого времени началось настоящее погружение, длиной в полгода. Вкратце за это время:

  • погрузился с головой в целое озеро легаси кода, борясь с багами;
  • нахлебался встроенного Линукса, от драйверов до баш скриптов;
  • быстренько пробежался по SVN;
  • научился юнит-тестированию GTestом;
  • освоил методологию CI, настроил свои задачи связкой Hudson/Ant/Python -> компиляция + юнит-тесты;
  • разобрался с Qt и его виджетами;
  • прокачал практическое применение FreeRTOS на STM;
  • написал скрипты выходного тестирования для нового девайса;
  • почти перестал чувствовать синдром самозванца.

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

Очень сильно помогали коллеги. Где практическими советами, где просто идеями.

Когда работаешь в режиме: есть задача - нужно срочно решать, то обучение движется существенно быстрее. Главное не забывать смотреть чуть шире, и успевать понимать, что именно ты делаешь.

Сейчас я чуть снизил обороты, тем более что зимой я впадаю в состояние, близкое к спячке, но я уже не только работаю программистом, но и ощущаю себя им. Легаси код, спринты, проектирование, тесты, CI/CD в полный рост. И мне это чертовски нравится!

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

Что дальше...

Не останавливаться. Это не сложно, потому что программирование имеет свойство затягивать в процесс. Начав, очень сложно остановиться.

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

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

Записался на пару курсов. Алгоритмы и базы данных.

Хочу дойти в той же сфере до сеньора, а там посмотрим.

Заключение

Самый главный посыл этого текста – я смог стать из инженера-разработчика программистом встроенных систем за два года. Если бы не терял время в тщетных надеждах и топтании на месте – в полтора года точно бы уложился.

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

Уверенность в том, что все получится. У меня были вдохновляющие комментарии на Хабре и «крепкий тыл», который в меня верил.

P.S. Это копия. оригинал поста на Хабре


Comments 9


Спасибо! Любопытно и полезно. Люблю такие посты)

26.02.2019 10:46
0

Спасибо! Я слишком ленив чтобы писать такое часто, но иногда сам с удовольствием пишу

26.02.2019 15:05
0

Бывают же вот такие умные люди..! Для меня программисты - еще круче чем ученые)))

26.02.2019 13:15
0

Настоящие ученые круче)) Но им слишком мало платят или они должны быть бизнесменами. Поэтому я в программисты

26.02.2019 15:06
0

@gapel Успехов вам..!)
Хорошая статья, мотивирующая. Хотя мне до программистов, как до Луны:)

26.02.2019 15:10
0

@gribo4ek (шепотом) это вам так кажется, на самом деле все не так сложно))
(громко) Большое спасибо!

26.02.2019 17:53
0
26.02.2019 20:26
0