Pull to refresh

Путь инженера-программиста: от джуна до сеньора

Level of difficultyEasy
Reading time9 min
Views10K

За всю свою работу инженером-программистом в области разработки встраиваемых систем, а это более 15 лет, мне ни разу не приходила в голову идея спросить у своего руководителя о том, что мне нужно сделать для того, чтобы перейти с одной категории на другую. Всё что я делал, это решал поставленные перед мной задачи разного характера. Интерес был именно в решении задач, а не в получении категорий. Категории как-то сами по себе назначались…

А как собственно они назначаются? По каким критериям? Что ожидается от инженера-программиста на каждом этапе его становления — от джуна до сеньора? Тема весьма дискуссионная, и не тривиальная. В этой статье не будет количественных критериев, но мы постараемся описать все этапы становления инженера-программиста, как некий ориентир для подрастающего поколения специалистов.

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

Хочу выразить благодарность Саликовой Ксении, руководителю группы по работе с образовательными проектами Компании Eltex, за продуктивные дискуссии, в ходе которых родилась идея этой статьи и за помощь в её написании.

О понятии инженер и его образовании

Согласно Большой Советской Энциклопедии, инженер — это специалист с высшим техническим образованием. Если поизучать происхождение этого слова, то мы придём к латинскому слову Ingenium, что означает — способность, изобретательность. Весьма важные характеристики инженера наряду с другими, о которых мы расскажем чуть ниже.

Подготовка инженера осуществляется в различного рода высших технических учебных заведениях. Учебный план для инженера-программиста рассчитан на 4-5-6 лет, если мы говорим про бакалавриат, специалитет и магистратуру, соответственно, и состоит из трёх циклов учебных дисциплин:

  • общенаучных — высшая математика, физика, химия, экономика, философия и пр.;

  • общеинженерных — начертательная геометрия и черчение, материаловедение, электротехника, вычислительная техника и пр.;

  • специальных — дискретная математика, алгоритмы и структуры данных, системное программирование, сетевые технологии, схемотехника и пр.

Закончив высшее техническое учебное заведение человек приобретает комплекс знаний и умений, позволяющий ему в будущем решать нестандартные задачи. А главное, человек приобретает способность и навык к самообучению, что является неотъемлемой характеристикой, без которой невозможна работа инженером-программистом. Дополнительно, в процессе обучения, студент прокачивает много качеств, таких как: умение работать в команде, умение работать в заданных сроках, навыки переговоров и презентаций – что тоже очень помогает в работе.

Молодой специалист (Джун)

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

Опыт нарабатывается повседневным трудом и решением сложных задач. Что такое «сложная задача»? Всё сугубо индивидуально, для кого-то сложной задачей будет поморгать светодиодом, подключенным к выводу микроконтроллера, а для кого-то реализовать управление интенсивностью свечения того же светодиода, используя для этого ШИМ.

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

Если вдруг, вам стало скучно, не интересно, начала снижаться скорость решения задач или вы не можете решить задачу долгое время, не видите перспектив своего развития, то можно сказать, что вы «топчетесь на одном месте». В таком случае можно и нужно поговорить со своим руководителем и совместно с ним наметить путь своего развития, а затем следовать ему. Мидлы и сеньоры тоже этому подвержены, но в меньшей степени, а рецепт решения такой же — говорите со своим руководителем.

Помните, работа должна вам нравиться. В противном случае её нужно менять или менять направление своей деятельности. Всю жизнь по восемь часов в день уделять нелюбимой работе, то ещё испытание.

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

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

В процессе работы будет много общения с коллегами. Вы будете обсуждать, согласовывать, договариваться со своими коллегами по множеству вопросов. Будьте вежливы, тактичны, конкретны и ставьте интересы дела превыше своих — находите компромиссы, они есть всегда.

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

Как правило, молодые специалисты начинают свою деятельность с решения довольно простых задач: исправление известных и простых ошибок в коде, решение задач на расширение функционала продукта и рефакторинг исходного кода с четко описанными техническими требованиями. На таких задачах инженер-программист учится писать исходный код, который соответствует стилю программирования, утвержденному в команде. Он глубже погружается в проект и нарабатывает практический опыт. А со времен, уже переходит к решению более сложных задач — где решение не так очевидно.

В завершении этого раздела коснёмся немного вопроса о самообразовании. В высших технических учебных заведениях даются, как правило, обобщенные знания, покрывающие широкий спектр вопросов с которыми вы будете сталкиваться в своей повседневной, инженерной деятельности. Но прогресс не стоит на месте, появляются новые технологии, новые инструментарии, новые микросхемы и инженер обязан использовать лучшее в своей деятельности. В связи с этим, инженера можно охарактеризовать как человека, учащегося всю свою жизнь: сначала школа, потом университет, а затем сам, путём самообразования. Без самообразования трудно представить себе сколько-нибудь удачное развитие своих навыков и способностей. Если не уделять своему развитию должного внимания, то можно очень быстро потерять свою ценность. Уделяйте своему образованию достаточно времени. Читайте книги, статьи, участвуйте в специализированных конференциях, обсуждайте новшества в вашей области деятельности со своими коллегами — это позволит держать в тонусе ваш ум (главный инструмент инженера) и создавать продукты на переднем крае науки и технологий.

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

Итак, вы проработали несколько лет молодым специалистом. Многие сходятся во мнении, что это период от года до трёх лет. У вас уже неплохая скорость и неплохое качество решения задач. Вы более-менее ориентируетесь в проекте, знаете «на зубок» внутренние регламенты компании, хорошо взаимодействуете с коллегами, а уровень ваших компетенций позволяет вам быть более ответственным за свои решения и действия. Поздравляю вас, вы переходите на уровень специалиста среднего уровня. Так держать!

Специалист среднего уровня (Middle)

В конце прошлого раздела мы упомянули такое понятие как ответственность, и как это важно при переходе от молодого специалиста к специалисту среднего уровня. Что же такое ответственность и как определить ответственного человека?

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

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

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

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

В отличие от молодого специалиста, теперь вы ответственны за то, чтобы ваши решения были согласованы с архитектурой проекта и не противоречили ей. Паллиативные решения, или в простонародье «костыли», уже не допустимы — вы ответственны за качество ваших решений, из которых формируется коммерческий продукт. Другими словами, если в коде молодого специалиста будут замечены «костыли», то его пожурят и объяснят почему так делать не нужно. В случае со специалистом среднего уровня — это вызовет недоумение, а систематическое повторение этого, может стать поводом к пересмотру его категории.

Поработав несколько лет (в среднем от трёх до пяти) специалистом среднего уровня вы будете способны сами разработать техническое задание на новый функционал продукта. Ваши решения будут лаконичны и масштабируемы, будут гармонично вписываться в архитектуру проекта и будут понятны вашим коллегам. Написание документации превратится из каторги в занятное времяпрепровождение. Технически вы будете очень подкованы, а ваши инициативы будут находить позитивный отклик со стороны команды и будут воплощаться в реализациях.

Ура! Вы готовы стать специалистом высокого уровня!

Специалист высокого уровня (Senior)

Кто он специалист высокого уровня? Это титан, опора, якорь, в хорошем смысле этого слова, который держит «корабль» с командой в моменты волнения. Он последний оплот, который решит любую «нерешаемую» задачу. Он объективно оценивает свои возможности и возможности команды. Прям такой супермен, который при минимуме усилий достигает максимального результата.

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

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

В целом, он всё тот же программист, как цать лет назад, только мудрее, реже смеётся (или наоборот чаще) и есть немного седины в волосах =)

Заключение

Работа инженера-программиста многогранная, всегда есть определенная специфика, обусловленная областью деятельности компании. Требования к категориям и уровню знаний у каждой компании свои. В одной компании вы можете быть мидлом, и при том же уровне своих компетенций, в другой компании вы будете оценены как сеньор. Всё это условно, поэтому больше внимания уделяйте своему развитию — развитию технических компетенций и компетенций в области человеческих коммуникаций. Повышайте уровень своей ответственности. Хороший инженер-программист всегда будет в цене, ибо найти его сегодня, порой бывает очень сложно.

Tags:
Hubs:
If this publication inspired you and you want to support the author, do not hesitate to click on the button
Total votes 12: ↑9 and ↓3+6
Comments11

Articles