25 February 2019

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

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

Зачем я все это пишу


  • Благодарность. Сказать «спасибо» сообществу Хабра.
  • Поддержка и мотивация. Морально поддержать инженеров, которые тоже решили менять свое призвание на новое, но не могут решиться.
  • Самомотивация. Для движения вперед очень полезны маленький отчет и немного планов, высказанных публично.
  • Поделиться опытом. Возможно, кому-то мой путь покажет его собственную дорожку.

Благодарность


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


Большое спасибо всему сообществу Хабра! Именно поддержка сообщества дала вдохновляющий пинок, вперед, к моей цели, и привела меня в программисты.


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


Спасибо, Хабр! Ты крутой!


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


Проработав 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 в полный рост. И мне это чертовски нравится!


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


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


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


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


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


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


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


Заключение


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


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


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


Еще раз всем огромное спасибо!

Tags:карьера программистаобучение программированиюмотивация
Hubs: Programming microcontrollers Personnel Management IT career
+48
35.8k 168
Comments 109
Popular right now
IT–рекрутер
from 60,000 to 120,000 ₽HighTeamМоскваRemote job
IT-recruiter / HR
from 50,000 to 70,000 ₽БастионМоскваRemote job
HR-менеджер (IT, B2B, высокий ценовой сегмент)
from 50,000 to 100,000 ₽Progressive MediaМоскваRemote job
IT редактор
to 90,000 ₽SkyengRemote job
IT-редактор
from 60,000 to 160,000 ₽БастионМоскваRemote job