На этом уровне мягкие навыки часто важнее жестких.
Как старший инженер-программист в крупной растущей технологической компании, я имею честь помогать проводить собеседования со многими другими инженерами-программистами, которые подали заявку, чтобы работать со мной. В течение прошлого года я принял участие примерно в 50 собеседованиях на разные должности - от инженера-программиста среднего звена до старшего инженера-программиста и менеджера по разработке.
Этот опыт дал мне время подумать о качествах и навыках, которые я ценю в других старших программистах, и в результате я стараюсь составить вопросы для собеседования таким образом, чтобы я мог, надеюсь, получить представление об этих атрибутах во время то короткое время, которое у меня есть с каждым кандидатом.
Итак, без лишних слов, вот на что я обращаю внимание при приеме на работу старших инженеров-программистов.
1. Способность четко общаться с техническими и нетехническими людьми.
Это важно по двум причинам. Во-первых, как старший инженер-программист вы будете наставником младших и средних инженеров. Другие инженеры часто будут обращаться к вам с вопросами, и вам нужно будет объяснить им технические концепции простым языком. Когда вы даете отзыв о проверке кода, вам нужно будет четко объяснить, почему фрагмент кода не идеален в том виде, в котором он написан сейчас, и как его можно улучшить.
Во-вторых, будучи старшим инженером-программистом, вы часто будете руководствоваться косвенным влиянием. Вы никем напрямую не управляете, но вам нужно иметь возможность распространять свои идеи по всей организации и сплотить людей, чтобы они присоединились к вам в вашем деле за чистый код, более высокие инженерные стандарты или что-то еще. Если вы не можете эффективно донести свои идеи, вам будет сложно убедить других в том, что ваши идеи стоят их времени.
2. Внимание к деталям
Это качество проявляется во многих формах. Вы часто увидите это в собственном коде инженеров, а также в их обзорах кода, когда смотрите на код других людей.
Инженеры, уделяющие особое внимание деталям, обязательно проверят и перепроверит свою работу, прежде чем отправлять ее другим на рассмотрение. Они пишут содержательные сообщения о фиксации. Они четко называют свои переменные и функции. Они любители чистого кода.
Важно отметить, что старшие инженеры-программисты не безупречны. Они все еще ошибаются. Ключевым моментом является то, что в большинстве случаев они ловят эти простые ошибки самостоятельно, чтобы другим не приходилось делать это за них.
Эти методы и привычки распространяются на их взаимодействие с другими инженерами во время проверки кода, поскольку старший инженер-программист стремится помочь своим коллегам писать более чистый код.
3. Эмоциональный интеллект и зрелость.
Старший инженер-программист должен понимать, что это не их код. Вы должны убрать свое эго из любого спора или обсуждения. Поймите, что критика кода - это не критика человека.
Старшие инженеры-программисты должны иметь возможность вести жесткие беседы с другими людьми, будь то качество кода, производительность работы или управление ожиданиями в отношении сроков проекта.
В то же время старшие инженеры-программисты должны понимать, как их слова и действия влияют на других людей. Эмоциональный интеллект включает не только самосознание, но и осознание окружающих. Старшие инженеры-программисты должны знать, как конструктивно предоставлять обратную связь таким образом, чтобы она воодушевляла и вдохновляла, а не унижала и деморализовала.
4. Смирение
Старшие инженеры-программисты знают не все. И они не должны! Область инженерии слишком велика, чтобы один человек мог во всем ее освоить.
Хороший старший инженер-программист понимает этот факт и чувствует себя комфортно. Вам не нужно знать все, но вы должны уметь распознавать, когда вы чего-то не знаете, когда просить о помощи и как найти ответы на вопросы самостоятельно.
Это понимание ведет к смирению. В мире программной инженерии нет места эго. Вы никогда не должны чувствовать, что вы незаменимы или что вы единственный, кто может адекватно выполнять свои должностные обязанности. Команда и компания будут жить без вас, если и когда вы пойдете дальше.
5. Высокие стандарты инженерного мастерства
Старшие инженеры-программисты устанавливают высокую планку как для себя, так и для тех, с кем они работают. Они используют эффективные инструменты, такие как средства форматирования кода и средства анализа кода, для обеспечения соблюдения стандартов и стилей кодирования. Они понимают важность тестов и не позволяют объединять непроверенный код в основную ветку. Они настраивают конвейеры CI / CD для автоматизации утомительной части проверки кода и для обеспечения того, чтобы главная ветвь всегда оставалась в рабочем состоянии.
Старшие инженеры-программисты рассматривают программирование как ремесло, а не просто работу. Они гордятся своей работой.
6. Эксперт в своей области
Старшие инженеры-программисты достигли этого уровня не просто так: они хорошо справляются со своей работой. Это означает знание своего технологического стека или предпочитаемого языка не только на поверхностном уровне. Их опыт имеет Т-образную форму - глубокие знания в нескольких областях и обширный опыт во многих других областях.
Они приобретают этот опыт в течение многих лет, решая сложные проблемы, работая волонтерами в сложных проектах, принимая сложные задания и обучаясь у окружающих.
Старшие инженеры-программисты пользуются богатым опытом, доступным им, читая классические книги по программированию, такие как Чистый код, Рефакторинг, Прагматичный программист или Шаблоны проектирования. При этом они косвенно извлекают уроки из экспертов в предметной области, которые десятилетиями совершенствовали свое мастерство.
7. Страсть к учебе
Старшие инженеры-программисты рады своей работе. Им интересно новое. Они всегда исследуют новые идеи, читая статьи, просматривая видео, создавая доказательства концептуальных приложений или, может быть, даже сочиняя и создавая контент.
Короче говоря, в их карьере нет застоя, и это видно.
Заключение
Высокие навыки важны, и старший инженер-программист должен знать свое дело. Ожидается, что они будут экспертами в своей области или, по крайней мере, в нескольких ключевых областях.
Однако, как бы важны ни были твердые навыки, я часто обнаруживал, что мягкие навыки в конечном итоге столь же важны, если не больше.
В общем, вот список качеств, которые я ищу и ценю в других старших программистах:
- Умение четко общаться с техническими и нетехническими людьми
- Внимание к детали
- Эмоциональный интеллект и зрелость
- Смирение
- Высокие стандарты инженерного мастерства
- Эксперт в своей области
- Страсть к обучению
Надеюсь, это поможет, и спасибо за чтение!