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

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

Эта ситуация хорошо знакома Руди Маттеру, сооснователю, техническому директору и наставнику младших разработчиков компании Yeti. «Мне неоднократно приходилось сталкиваться с ситуацией, когда программисты неохотно принимают возложенные на них функции менеджмента и не могут смириться с тем, что вместо любимого ремесла они занимаются административной рутиной», — приводит его слова портал InformationWeek.

Он добавил, что этот карьерный путь знаком многим разработчикам ПО: «Изначально их повышают до уровня руководства разработкой проекта (как правило, на должность старшего разработчика), но вместо совершенствования своих навыков написания кода они вынуждены постоянно контролировать работу своих подчиненных и докладывать руководству о проделанной работе. Таким образом, если ранее мерилом успеха для них выступала собственная мотивация, то теперь им приходится полагаться на опыт и мотивацию своих коллег».

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

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

Архитектор ПО. По сути, эта специализация является «конечной остановкой» для программистов, которые желают сфокусироваться на чистой разработке. Архитектор ПО (software architect) — это скорее собирательное название должности, поскольку многие фирмы подбирают для неё другие имена, но суть от этого не меняется: такой специалист отвечает за правильный подбор критически важной архитектуры для команды.

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

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

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

Маттер рекомендует директорам устроить среди соискателей отбор на эту должность, отведя под их руководство небольшие проекты. Затем следует определить, кто из участников отбора сумел выдержать сроки сдачи проекта. Ещё одним испытанием может стать распределение техзаданий — оно поможет определить качество коммуникаций между претендентом на должность главного разработчика и подчиненными. Необходимый для должности навык: нужно четко отслеживать уровень производительности находящихся в подчинении коллег — от этого зависит общий результат. Итоги тестирования должны выявить самых коммуникабельных, но в то же время требовательных соискателей.

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

Старший технический руководитель проекта. Эта должность может подойти разработчикам, обладающим навыками планирования ресурсов и бюджетирования. Как правило, старшие технические руководители проектов (senior technical project manager) осуществляют координацию между несколькими разрозненными группами разработчиков, отвечая за расходование средств проекта и соблюдение его сроков. Кандидаты на эту должность должны быть энергичными, организованными, целеустремленными и обладать способностью действовать под давлением.

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