Self Promo
March 5

Больше всего ценность разработчика увеличивают не навыки программирования

Автор книги о построении карьеры Роман Жихарев беседует с техническим директором G-Core Labs, Василием Михаленей о том, чего современные it-компании ждут от своих сотрудников.

— Как в твоем понимании выглядит концепция ценности разработчика?

Чтобы увеличивать свою стоимость, надо делать три вещи:

  1. Изучать технологии востребованные на рынке сегодня и завтра.
  2. Развивать универсальные навыки (soft skills).
  3. Брать на себя больше ответственности.

— Давай начнем с самого простого. Какие технологии осваивать?

Тренды сегодня меняются невероятно быстро. Поэтому я бы хотел озвучить какие-то общие принципы, а не описывать тренды или заниматься предсказаниями. Идеальной конфигурацией опыта и умений я считаю человека с Т-образной экспертизой (T-shape people). Суть термина в том, что являясь экспертом в конкретной технической области, он должен иметь представление о том, что происходит в соседних.

Например, backend разработчику кроме глубокого знания особенностей языка (например Python) и распространенных фреймворков, обязательно нужно знать и, желательно, уметь построить процесс тестирования, сборки и деплоймента (CI/CD pipeline, например в Jenkins). Он должен знать особенности среды, в которой будет работать код, и как в ней обеспечить отказоустойчивость. Например, совладать с AWS/Azure/GCE или on-premise инсталяцией k8s, уметь поправить ошибку в инструментах развертывания, написанных на golang.

В некоторых областях ценность повышает наличие сертификатов. При приеме на работу значение имеет ваше портфолио, проще всего продемонстрировать ваши навыки и код через участие в open-source проектах или размещении своих pet-projects на github.

— Ты упомянул несколько популярных технологических решений. Получается, надо учиться тому что в тренде?

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

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

Но есть более консервативные отрасли: международные банки, промышленные и энергетические гиганты, оборонка. Им очень тяжело найти специалистов под свой стек и они готовы платить хорошие деньги. Хороший пример — использование «умирающего» Perl в booking.com и mail.ru. Или COBOL, разработанный в 60-х, и до сих пор используемый в некоторых финансовых учреждениях США.

— А что тогда подразумевается под универсальными навыками?

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

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

— Что значит брать больше ответственности?

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

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

— Это чем-то напоминает мне ценности Agile. Тут есть связь?

Да. Есть такой набор практик под названием DevOps, развивающий ценности Agile. Он помогает компании сместить фокус с формализации процессов на взаимодействие внутри для создания ценности. Но это невозможно без принятия ответственности за итоговый результат всеми членами команды.

Хороший разработчик понимает культуру DevOps и умеет её применять в своей команде и, в идеале, компании. Или даже насаждать. Например, одной из практик DevOps является CI/CD (наиболее частые релизы). И если вы действительно захотите делать частые релизы (хотя бы один в день), вы не сможете делать это в отсутствие автоматизации интеграции и тестирования, автоматизации и стабилизации процесса деплоймента, отделения релиза от деплоймента (feature toggling), работающего и понятно разработчикам мониторинга, сохранения обратной совместимости, механизма отката изменений и т.д. Вам станет очевидно, что ответственность хорошего разработчика не заканчивается при передаче задачи в отдел QA.

Ценность частых релизов вроде бы всем очевидна.

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

Общий смысл в том, что команда должна принять на себя ответственность за качество выпускаемого продукта, ценность фичей для клиента, сроки, и в гораздо меньшей степени формальное соответствие требованиям в описании задачи. У разработчика не должно быть предубеждения в сторону ограничения своей ответственности: «Я уже передал задачу в тестирование. Больше ничем не могу помочь».

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

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

— Везде так?

В большой компании с уже поставленными зрелыми процессами, принятие ответственности будет означать делать что-то сверх работы на своем проекте: организация митапов, tech talks, хакатонов; участие в presale или обучении интернов.

— Выводы?

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

-8
6.2k 20
Comments 13
Top of the day