Автор — Денис Петелин
Почему так трудно планировать? Почему фактическое время, потраченное на задачи, всегда выше запланированного? Даже когда мы доверяем оценки непосредственно тем людям, которые должны выполнять задачу, они все равно ошибаются. При этом они всегда находят тысячи оправданий превышению сроков — «дернули» на другой проект, кто-то помешал, отвлекли в бухгалтерию по поводу ИНН и так далее. Эта ситуация типична. В этой статье немного о проблемах планирования и их источнике — «идеальном часе».
«Во множестве компаний есть статистика об использовании рабочего времени. Но ни в одной я не видел статистики о качестве этого времени…» Том де Марко, Тим Листер. Peopleware, 2-nd Edition.
Хочу нарисовать гипотетическую ситуацию, которую, думаю, узнают многие менеджеры разработчиков.
Итак, предположим, что сегодня вечером было совещание по статусу на вашем текущем проекте. У вас работает разработчик Федя. Федя — вполне способный программист с солидным тажем. Вы ставите ему задачу Х. Выдав ему хорошо сформулированную постановку задачи, вы спрашиваете — Федя, сколько времени тебе надо, чтобы закодировать задачу Х?
Федя немного думает и говорит — четыре часа, максимум — шесть. Вы резюмируете — окей, исходя из того, что завтра ты начнешь в 9 часов утра, в 6 вечера мы уже включим твое творчество в завтрашний дневной билд? Федя отвечает — Никаких проблем, все будет в лучшем виде.
Наступает завтра, 6 часов вечера. Федя не готов. Ему надо еще 2-3 часа. Почему не готов, объяснить толком не может. Вопрос «чем ты занимался весь день?!!» повергает его в ярость. Вы глубоко разочарованы в Феде. Оказывается, он разгильдяй — а ведь выглядит вполне способным программистом… Так трудно в наше время найти хорошие ресурсы…
Не грешите поспешными суждениями. Вы лучше меня знаете, что у каждого следствия есть причина. Давайте ее поищем. Понаблюдаем за Федей во время его работы, поищем эту причину.
Итак, хроника рабочего дня Феди.
Реализация USE CASE-01 Login (4 часа)
10:00. Пришел на работу. Был уведен на совещание по соседскому проекту в качестве консультанта.
11:00. Выпил кофе. Встретил Ивана, вышли покурить.
11:15. Сел писать UC-01.
12:30. Пришли чинить кондиционер. Согнали с места, пью кофе, сходил покурил.
13:00. Позвали в бухгалтерию. Долго распрашивали о каких-то бумажках со сложными аббревиатурами.
13:30. Ушел обедать.
14:30. Пришел с обеда, начал работать. Дописал почти все, осталась самая малость.
16:00. Снова совещание. Сижу рисую в блокноте. Деваться некуда – меня сюда загнал заместитель директора.
17:00. Через час выпуск дневного билда, а у меня еще ничего не готово!
18:15. Получил от DTL нагоняй: «задача на полдня, а ты весь день с ней провозился, да еще и опоздал!»
Итак, причина прорисовывается, верно?
Сколько времени Федя потратил на непосредственно на написание кода? 15 минут + 1 час 30 минут + 1 час 15 минут. Итого — 3 часа! На осуществление его прямых обязанностей в вашем проекте у него было всего три часа вместо четырех, которые были ему нужны! И он справился гораздо раньше — он потратил меньше чем четыре часа! Его хвалить надо было, а не ругать! Надеюсь, теперь вы понимаете, почему его взбесил вопрос «чем ты занимался весь день?»
Он занимался работой. Просто КПД его деятельности был вынужденно низким. Не потому, что плох Федя. А потому, что продуктивность любого разработчика влияет то, что я называю «коэффициентом мусорного времени». Грубо говоря — это соотношение непроизводительных часов к производительным. В случае Феди — 5:3, что означает что для выполнения 4х часовой задачи ему был необходим весь день и еще немного следующего. Если посмотреть на его результат, то мы увидим, что это вполне справедливо — Федя лихорадочно заканчивал дописывать свой код после того, как рабочий день кончился.
Сразу хочется предостеречь тех, кто считает, что в их организации «мусорного времени» нет. «Мусорное время» есть всегда. У одних его больше, у других меньше. Пронаблюдав порядка двух десятков компаний, я вывел следующие значения «коэффициента мусорного времени»:
Лучшие компании (две из 19):
- 1\7
- 1\6,5
Средние значения:
- 2\6
- 3\5
Худшая:
- 4\4
Итак, лучше вам, как менеджеру, сразу избавиться от иллюзии того, что «мусорное время» на ваш проект не влияет. А теперь самое интересное — как учесть влияние «мусорного времени» на ваш проект?
Действовать в данном случае стоит в двух направлениях:
- учитывать «коэффициент мусорного времени» при планировании (обязательно);
- снижать «коэффициент мусорного времени» путем устранения источников мусора (тема, заслуживающая отдельной статьи).
Давайте по порядку
Прежде всего — как учитывать коэффициент при планировании. Прежде чем учитывать, его надо определить. Определяется он элементарно просто — назначаете своим разработчикам несколько коротких и безрисковых, но осмысленных задач (при длинных или рискованных задачах начинают действовать факторы громоздкости или рисков, что нежелательно для «чистоты эксперимента»). Лучше всего на роль таких задач подходят типовые задачи по имплементации стандартных функций (отображение данных, создание элементов и т.д.). При этом просите их сформулировать оценки в «идеальных часах» (сколько надо времени, если сесть и писать задачу от начала и до конца, и никто при этом не будет мешать, без включения просадки, и если не надо будет есть, курить и т.д.) После этого нажмите кнопку секундомера и пусть все начинают. Сравните полученные фактические значения продолжительности с продолжительностью в идеальных часах. Поздравляем, вы получили «коэффициент мусорного времени». Идеально это будет что-то вроде 1:7 .
Итак, коэффициент есть. Теперь надо учесть при планировании. Самый простой способ сделать это — перейти от коэффициента к множителю, т.е. получить значение, на которое нужно умножить запланированную длительность проекта.
Предположим, у вас есть проект, чистая продолжительность которого (без учета влияния «мусорного времени») равна 10 дням. При этом в рабочем дне 8 часов. «Коэффициент мусорного времени» равен 1:7, то есть один час в день «мусорный».
Уверен, что практика покажет, что эта оценка была правильной. Важно другое — без учета этого фактора вы каждые 10 дней «теряете» один день. А если проект был длиной полгода, то по милости «коэффициента мусорного времени» вы потеряете 12 дней — отстанете более чем на две недели… Знакомо, не правда ли?
Этот метод вполне точен и годится для оценок. Еще более точным методом может стать использование статистического моделирования — например, с помощью инструмента Riskology, разработанного Томом де Марко и Тимом Листером для моделирования влияния рисков на проекты. Получить его можно по адресу SystemsGuild.Com, и там же находится инструкция по применению. Согласно этой инструкции надо задать параметры проекта, внести новый риск непрерывного типа «Влияние мусорного времени», и задать коэффициент его влияния согласно инструкции.
Но учет влияния мусорного времени — это, собственно, только половина дела. Мусорное время есть не что иное, как непроизводительные издержки, а с издержками в любой индустрии принято бороться.
Что можно порекомендовать для борьбы с издержками? Мусорное время можно искать в четырех возможных областях рабочей деятельности:
- Административная деятельность поддерживающих служб компании. Однажды с ужасом наблюдал, как строгая тетенька в очках несколько раз заставляла Ведущего разработчика проекта переделывать авансовый отчет, в то время как в переговорной томились представители заказчика. Стоит ли говорить, что такая ситуация недопустима. Не стоит забывать, что задачи Административно-хозяйственной службы — обеспечивать производственную деятельность, а не мешать ей. В своей компании, например, я установил такой порядок — бухгалтер готовит для сотрудника весь набор документов, и ему остается лишь поставить свою подпись.
- Бюрократическая деятельность, связанная с проектным делопроизводством. Другая бездонная пропасть, поедающая время. Зачем заполнять журнал учета рабочего времени с пятнадцатиминутной детализацией, если заказчик этого не требует? Зачем снабжать документ из одной страницы тремя страницами шапок, обязательных к заполнению? Примеров такого бездарного использования рабочего времени можно привести много. Мой совет — обходитесь минимумом бумаги, и даже при этом автоматизируйте эту область деятельности по максимуму.
- Рабочая обстановка самого офиса. Если люди начинают приходить на работу к восьми часам или уходить в час ночи — это верный признак того, что в офисе лучше всего работается когда никого нет. При этом может мешать множество факторов — скученность, телефонные разговоры, громкие обсуждения, духота.
- Личные интересы сотрудников. Возможно, я кого-то удивлю, но достаточно много людей рассматривает работу как способ заниматься любыми делами за чужой счет. Чаты, форумы, поиск фильмов и музыки, онлайновые знакомства — вот далеко не полный перечень развлечений в рабочее время. Конечно, не надо путать теплое с мягким — форумы могут способствовать профессиональному росту, коммуникаторы можно использовать для общения с коллегами из других городов — но во всем хороша мера.
Если вы ищете способов сокращения влияния мусорного времени, обратитесь прежде всего к этим четырем областям. Из собственного опыта могу указать несколько вещей, которые при внешней незатейливости очень часто помогают сократить мусорное время в разы.
- Разрешите своим разработчикам отвечать на все письма, не связанные напрямую с рабочей деятельностью, в конце рабочего дня. Данная рекомендация особенно актуальна для больших компаний. Каждый день сотрудники получают как минимум два-три письма типа «сообщите», «проголосуйте», «представьте данные». Все это мешает сосредоточиться и отнимает время, при этом не является критичным. В конце концов, если я проголосую по поводу качества обедов три часа спустя — неужели небо упадет в Дунай?
- Требуйте использовать голосовую почту на рабочих и персональных рабочих телефонах. Во-первых, это существенно сократит уровень шума в комнате, а во-вторых, позволит людям сохранять концентрацию, так как они не будут отвлекаться на звонки. Голосовую почту можно проверять на перекурах или кофе-брейках, убивая двух зайцев.
- Сядьте так, чтобы видеть мониторы членов вашей рабочей группы. После этого удивительным образом возрастет количество времени, которое люди уделяют работе и соответственно снизится время, уделяемое auto.ru. Обычно лучше всего расставить рабочие столы по периметру комнаты вплотную к стенам — это, во-первых, обеспечит достаточное количество рабочего пространства, во-вторых обеспечит свободу передвижения что важного для парного программирования, например, и в-третьих поможет вам занять стратегический наблюдательный пункт, с которого все видно. Тем не менее, лучше объявить, что все хобби в интернете остаются на вечер — в конце концов, должна же быть у людей личная жизнь?
- Станьте брандмауэрами перед вашими людьми. Защищайте их от бюрократов, попыток вовлечь их в бесконечные совещания, начать менять им мебель в середине рабочего дня — одним словом, от любых действий, которые могут помешать им работать.
Вот, вкратце, и все. Надеюсь, эти несложные рекомендации помогут читателям бороться с коварством «мусорного времени».