Как работать с программистами?

Кен Нортон

Я работаю в cфере IT 20 лет, последние 13 ­- в качестве руководителя проектов. Так получилось, что за это время я заслужил репутацию менеджера, эффективно работающего с программистами. Благодаря этому навыку я вошел в историю как один из трех величайших руководителей проектов и направлений – наряду с Николо Маккиавели и Стивом Джобсом.

Долгие годы я держал свои профессиональные секреты при себе. Но время пришло: сегодня я поделюсь с вами «Десятишаговой инструкцией по работе с программистами». Или, если ближе к сути, назовем ее так: «Как заставить программистов делать то, что вы хотите».

Собственно, с какой стати вам вообще меня слушать? Просто взгляните на цифры. За свою карьеру одного из трех величайших руководителей проектов всех времен и народов мне довелось поработать примерно с 3 875 000 программистов. Из них все мои поручения в точности выполняло более 95% – т.е. целый 1 000 000 программистов (оценка приблизительная – руководителям проектов, честно говоря, не до математики). Это гигантское количество и гигантский опыт, который, безусловно, стоит принять во внимание.

1. Приписывайте все заслуги себе

Как руководитель проекта вы должны рассчитывать на признание своих успехов. Учтите, что топ-менеджеры будут не раз пытаться распределить почести на всю вашу команду. Поэтому нужно проявлять бдительность: хвалят вас и никого иного, только вы имеете право на награду. Успешно завершенный проект  ­ это главный движущий элемент карьеры, и зачем вам наводить блеск на чей-то профиль в LinkedIn, кроме собственного? Так что сбросьте, наконец, костюм ниндзя, взойдите на сцену, купайтесь в лучах славы и всеобщего внимания.

2. Не берите вину на себя

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

3. Не заморачивайтесь насчет деталей

Мелкие технические детали – это удел программистов, у вас есть занятия и получше. Например, генерировать идеи. Доскональное понимание не приносит ничего, кроме разочарования, и формирует так называемый «рациональный» взгляд на пределы возможного. Если знаешь, что легко, а что трудно, не совершишь ничего великого. Избегайте мелочей и подробностей любой ценой. Все, что вы только можете себе представить, легко осуществимо десятком строчек кода. Каким именно десятком – вообще не важно.

4. Привлекайте их в конце

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

5. Упорядочьте их работу как следует

Лучший способ показать свой профессионализм ­- это по-настоящему упорядочить работу команды. Правила служат смазкой для колес прогресса. При любой возможности назначайте совещания, планерки, собрания с подробным разбором полетов. Поддерживайте производительность программистов, требуя от них заполнять таблицы в системах контроля проекта, писать отчеты, извещать по электронке начальство обо всех обновлениях. Кроме вас, это не сделает никто. Начинайте с места в карьер: одними сообщениями на автоответчик вы ничего не добьетесь!

6. Никогда не говорите о причинах своих решений

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

7. Берите обязательства, ни с кем не советуясь

Одна из ваших функций в качестве руководителя проекта – брать на себя обязательства от имени команды. Быть лидером – это значит задрать планку в космос и поставить перед всеми цель через нее телепортироваться. Утверждайте сроки проекта, не советуясь с вашей командой – тем самым вы проявите здоровое честолюбие. Ситуация, в которой человек вынужден отвечать за чужие обещания, закаляет характер и раскрывает его лучшие черты. Вспомните президента Кеннеди. Он назначил дату высадки на Луну «от фонаря» и НАСА прекрасно справилось, в итоге закрепив лунные минеральные ресурсы за компанией «Стандарт Ойл».

8. Не стесняйтесь отвлекать их от работы

Вы занятой управленец, и у вас просто нет времени ждать, пока программист выполнит текущую задачу. Над чем бы он ни работал, ваша потребность в данный момент все равно важнее. Так что спокойно отвлекайте программистов когда угодно. «Аська», «скайп» и телефон дают неплохой результат, однако все это куда менее эффективно, чем старый дедовский способ: подойти и похлопать по плечу. Вы спросите, а что если программист работает над задачей, которую вы сами же поставили перед ним час назад? Ничего страшного! Зато он в итоге научится самостоятельно расставлять приоритеты.

9. Будьте неоднозначны

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

10. Не верьте им

Бывает, программисты говорят, что то или иное «невозможно». Это вранье. В программировании нет ничего невозможного, если только хорошенько пораскинуть мозгами. Братьям Райт даже в голову не приходило, что невозможно перелететь через Антлантику! Всегда исходите из предположения, что программист хочет обвести вас вокруг пальца, и  поступайте соответственно. Скажем, впредь, когда вы услышите фразы вроде «технический долг» (*) или «работаю дома», будьте готовы тут же уличить его во лжи.

Ну, вот и все. Теперь моя «Десятишаговая инструкция по работе с программистами» есть и у вас. Распечатайте ее и повесьте на рабочем месте (лучше подальше от посторонних глаз). Следуя ей,   вы тоже можете стать одним из величайших руководителем проектов (ну или хотя бы просто великим). Ничего сложного.

Послесловие

Думаю, это вопиюще очевидно для всех, но если вдруг нет: не поступайте так, как  описано в этой «Инструкции». Бывает, что даже самые сознательные руководители проектов допускают небольшие прегрешения касательно того или иного пункта. Я-то уж точно. Стремитесь к обратному и, возможно, вы преуспеете в качестве руководителя проекта. Или, по крайней мере,  приобретете коллег из числа программистов, которые будут заинтересованы в вашем успехе.

  1. Не приписывайте себе все заслуги
  2. Принимайте вину на себя
  3. Прорабатывайте детали
  4. Привлекайте программистов на ранней стадии
  5. Упростите их работу
  6. Всегда говорите о причинах решений
  7. Никогда не берите обязательства, не посоветовавшись с программистами.
  8. Уважайте их время.
  9. Будьте точны и однозначны.
  10. Доверяйте им.

И наконец...

Всегда приносите печеньки =)

*Технический долг – отсроченная дополнительная работа, необходимость в которой возникает, когда изначально вместо оптимального решения выбирается компромиссное: менее верное, но быстрее осуществимое. Понятие введено в оборот в 1992 году Уордом Каннингемом.


«Как работать с программистами»
Перевод: Денис Бородкин, «Сумма технологий» (с) 2013
Оригинал статьи.