Что Такое Хорошо И Что Такое Плохо. Карьера Разработчика Глазами Его Менеджера



Чем отличаются карьерные перспективы разработчика и его руководителя? Жизнь полна противоречий.

Даже свет не может решить, частица ли он или волна.

В мире разработки программного обеспечения существуют противоречия между действующими лицами: повозкой и маленькой тележкой.

Давайте рассмотрим пару — разработчик и менеджер по разработке (это может быть менеджер проекта, технический менеджер, тимлид).

Как оказывается, эти двое часто смотрят на вещи по-разному и вообще стремятся в разных направлениях.



Что такое хорошо и что такое плохо.
</p><p>
 Карьера разработчика глазами его менеджера



Чего хочет разработчик?

Каждый хочет разного.

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

Он в меру ленив, в меру любопытен и в целом любит свою профессию.

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

Как он хочет развиваться? А вот так:

  • Исследуйте новые технологии
  • Решайте больше интересных задач
  • Участвуйте в новых проектах
  • Занимайтесь меньше деятельностью, не связанной с развитием
  • Принимайте решения самостоятельно


В то же время его руководитель хочет:

  • Чтобы разработчик хорошо знал используемые технологии
  • Чтобы разработчик хорошо справился с поставленными задачами: с должным качеством и в срок.

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

  • Чтобы разработчик давал адекватные оценки задачам
  • Чтобы у разработчика было понимание потребностей бизнеса и продукта в целом.

  • Обеспечить своевременное сообщение разработчиком о проблемах.

Хотите знать, как прийти к компромиссу? Добро пожаловать в кот. Итак, что мы имеем? Налицо полное противоречие интересов.

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

Разработчик хочет решать интересные задачи, а у менеджера есть мешок обычных задач, которые кому-то нужно делать.

Разработчик хочет участвовать в новых проектах, но менеджеру нужен кто-то, кто будет поддерживать существующие.

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

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

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

Причины

Причина, на мой взгляд, очень проста.

У разработчика и его менеджера разные цели.

Цель девелопера — быть более востребованным на рынке труда.

Цель менеджера – сдать проект вовремя.

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

Попробуем разобраться подробнее.



Разработчик



Исследуйте новые технологии

Это действительно интересно и вдохновляюще.

На начальном этапе становления специалиста полезно иметь широкое представление об отрасли и понимать, какие есть возможности для развития.

Однако со временем количество должно перейти в качество.

Не знаю, как вы, а я часто настороженно отношусь к резюме разработчика (с опытом работы 2-4 года), в котором перечислены десятки языков, фреймворков и библиотек.

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

Предпочтительнее встретить человека, который мало что знает, но знает это наверняка.

А это требует значительного практического опыта использования технологии.

Тогда будет понимание его тонкостей и пределов применения, а это крайне важно.

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

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



Решайте больше интересных задач

Думаю, каждому знакомо понятие «рутина».

Никто не хочет делать одно и то же снова и снова.

Однако здесь есть очень важная деталь.

Несправедливо хотеть новых интересных задач, если с трудом справляешься со старыми неинтересными.

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

В общем, все как в компьютерной игре.

Чтобы перейти на новый уровень, нужно хорошо пройти предыдущие.

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



Участвуйте в новых проектах

Очевидно.

Многие люди с энтузиазмом поддерживают проект на регулярной основе.

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

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

Разработчик учится смотреть на свое программное обеспечение глазами пользователя – и это один из самых ценных навыков для программиста.

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

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

Не отказывайтесь от поддержки разработанных вами проектов – это бесценный опыт, способный существенно ускорить вашу карьеру.



Занимайтесь меньше деятельностью, не связанной с развитием

Многие разработчики считают написание документации, планирование встреч, ретроспектив и общение с заказчиком пустой тратой времени.

Главное — написать код, да? Чтобы все было аккуратно, красиво и в соответствии с рекомендациями.

Нет. Главное, чтобы программное обеспечение делало то, что от него требуется – решало бизнес-задачи.

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

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

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

Это еще один полезный опыт, который должен получить каждый.



Руководитель



Хорошее знание используемых технологий Справляемся с поставленными задачами: качественно и в срок.

Лидеру нужны люди, на которых он может положиться.

Если задача поставлена, ее необходимо решить.

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

Вот что происходит, если «решать проблемы по мере их возникновения» и «жить сегодняшним днем».

Но чтобы разрешить противоречие, нам нужно действовать иначе.

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

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

Подобные изменения, инициированные «снизу», ценны не только своими непосредственными результатами, но и чудесно мотивируют разработчиков искать и предлагать что-то новое.

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



Будьте ответственны и всегда доводите до конца то, что беретесь

Думаю, все согласятся, что профессиональное программирование – это, прежде всего, достижение результата.

Для достижения успеха все участники проекта должны выполнить поставленные перед ними задачи.

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

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

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

Усложнить легко, упростить сложно.

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

И руководитель, и товарищи по проекту знают, что можно рассчитывать на человека, который не подведет. Воспитание в людях именно таких профессиональных установок – одна из важных задач руководителя.

Важнейшим механизмом в этом вопросе является поощрение достижения результата.

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



Давать адекватные оценки заданиям

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

Оценки кажутся унизительным механизмом контроля.

Однако давайте посмотрим на это глазами лидера.

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

Бывают счастливые исключения, но в целом без плана развитие превращается в хаос.

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

Для создания плана менеджеру нужны оценки.

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

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

Но как мы знаем, успешный проект – это не только развитие.

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

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

Именно менеджер должен дать разработчикам понимание всех процессов, происходящих вне разработки.

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

Осведомленность – ключ к успеху.



Понимание потребностей бизнеса и продукта в целом.

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

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

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

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

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

Только так разработчик может достичь настоящего мастерства.

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

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

Своевременно сообщайте о проблемах

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

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

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

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

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

Своевременное сообщение о проблеме является важной частью коммуникации.

При этом руководитель не должен сразу бросаться решать проблему.

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



Подведем итог.

Как совместить интересы разработчика и его менеджера?



Разработчику

  • Успех проекта – это успех каждого его участника.

    Каждый успешный проект – это шаг вперед в вашей карьере.

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

  • Решение бизнес-задач – основная цель развития.

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

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

  • Проекты выполняются не в одиночку, это коллективная работа.

    Для эффективной работы команды необходима постоянная координация между ее участниками.

    Без актуального плана такое общение невозможно.

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

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



Менеджер по развитию

  • Думайте не только об успехе проекта, но и о развитии своих людей.

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

    Занимайтесь регулярным обучением своих людей.

  • Объясняйте разработчикам потребности бизнеса и значение задач, требований и процессов.

  • Объясните важность процессов и убедитесь, что они соблюдаются.

  • Прислушайтесь к мнению разработчиков об улучшении процессов.

  • Поощряйте ответственность и организованность.

  • Позвольте разработчикам решать проблемы самостоятельно.

Теги: #Карьера в IT-индустрии #программирование #Управление проектами #карьера #управление персоналом #развитие программиста
Вместе с данным постом часто просматривают: