На этом уровне мягкие навыки часто важнее жестких.

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

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

Итак, без лишних слов, вот на что я обращаю внимание при приеме на работу старших инженеров-программистов.

1. Способность четко общаться с техническими и нетехническими людьми.

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

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

2. Внимание к деталям

Это качество проявляется во многих формах. Вы часто увидите это в собственном коде инженеров, а также в их обзорах кода, когда смотрите на код других людей.

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

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

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

3. Эмоциональный интеллект и зрелость.

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

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

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

4. Смирение

Старшие инженеры-программисты знают не все. И они не должны! Область инженерии слишком велика, чтобы один человек мог во всем ее освоить.

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

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

5. Высокие стандарты инженерного мастерства

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

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

6. Эксперт в своей области

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

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

Старшие инженеры-программисты пользуются богатым опытом, доступным им, читая классические книги по программированию, такие как Чистый код, Рефакторинг, Прагматичный программист или Шаблоны проектирования. При этом они косвенно извлекают уроки из экспертов в предметной области, которые десятилетиями совершенствовали свое мастерство.

7. Страсть к учебе

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

Короче говоря, в их карьере нет застоя, и это видно.

Заключение

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

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

В общем, вот список качеств, которые я ищу и ценю в других старших программистах:

  1. Умение четко общаться с техническими и нетехническими людьми
  2. Внимание к детали
  3. Эмоциональный интеллект и зрелость
  4. Смирение
  5. Высокие стандарты инженерного мастерства
  6. Эксперт в своей области
  7. Страсть к обучению

Надеюсь, это поможет, и спасибо за чтение!