Почти правым быть лучше, чем абсолютно ошибаться.
Джон Тьюки
Мы будем использовать метрики, чтобы установить более грамотный режим ожидания для наших клиентов. Они всегда жалуются, что работа тянется слишком долго и не видно никакого прогресса по их запросам. Помните, что визуализация проектов — секрет обличения расхитителей времени и вреда, который они причиняют вам и вашей организации. Если собрать данные для метрик, вы станете голосом разума и стимулируете изменения в своей компании. Метрики привлекают внимание.
Поскольку многие команды назначают произвольные, ничем не оправданные сроки, которые все равно не удается соблюдать, пора попробовать более эффективный подход. А именно — вероятностный.
Для тех, кого слово «дедлайн» приводит в ужас: помните, что в некоторых ситуациях крайний срок все-таки вполне уместен. Характеристики, которые указывают, насколько обоснован дедлайн, зависят от восприятия ситуации.
Чемпионат мира по футболу 2018 года, который начался 14 июня, — один из примеров реальных сроков. Как и запланированный аудит безопасности.
А вот день, когда финансовый директор решает запустить новую CRM-систему, чтобы уволить примерно половину бухгалтеров, можно рассматривать как весьма сомнительную дату. Совершенствование пользовательского интерфейса? Почти всегда произвольный срок. Скорее всего, неважно, в какой день это произойдет — во вторник, четверг или даже в следующий понедельник.
Если режим ожидания установлен корректно, не каждой задаче нужен крайний срок. Главное — прогнозируемость. Она экономит время.
Прогнозируемость означает, что нужно поговорить о вероятности и о том, как выстроить более грамотный режим ожидания. Все сводится к ожиданиям. Оправданные ожидания нравятся начальству и, как ни странно, превращают все эти досадные стендапы и ретроспективы в приятный опыт.
Грамотные метрики помогают отслеживать прогресс и понимать, сколько времени на самом деле нужно для выполнения задач. Это важно, потому что клиенты технологических компаний больше всего жалуются на то, что приходится слишком долго ждать. С четкими метриками можно показать, сколько времени действительно нужно для работы, а затем объяснить почему.
И вновь проблемы начинаются с произвольных дедлайнов. Эти крайние сроки (часто основанные на ошибочных расчетах) ведут к неоправданным ожиданиям, и, несмотря на усилия, все идет наперекосяк из-за конфликтующих приоритетов, неизвестных зависимостей и незапланированной работы, которая всегда появляется из ниоткуда и наносит предательский удар в спину.
Работа отнимает больше времени, чем предполагалось, особенно если она сложная. Закон Хофштадтера («Всегда потребуется больше времени, чем вы ожидаете, даже если вы знаете закон Хофштадтера») высмеивает точность прогноза по задачам с высокой степенью сложности . Мы по опыту знаем, что это так. Когда вы ставите задачу, как часто получаете результат раньше ожидаемого срока? Если часто, позвоните мне — пойду работать к вам.
На протяжении всей моей карьеры, независимо от должности и компании, обратная связь от клиентов всегда показывала, что выполнение проектов занимает слишком много времени, разработка новых функций требует слишком много времени, запуск новых облачных платформ занимает слишком много времени. Все хотят получить результат быстрее, и все жалуются на задержки. Да, расхитители времени хихикают в свое удовольствие, радуясь вашим мучениям.
Стоит определить итоговую дату (обычно это делает директор по продажам или маркетингу), и начинается каскад задержек, причем обычно с команды разработки. Им кажется, что для разработки и доставки функции времени хватит, но слишком часто они отстают от графика, поскольку работа идет не по плану. Возможно, они не знали о зависимостях от другой веб-команды, или не ожидали, что их система управления реляционной базой данных настолько ограничена, или не планировали, что их ведущий разработчик API заболеет... Какими бы ни были причины, команда не укладывается ни в какие сроки, когда все эти непредвиденные препятствия мешают соблюдать график.
Дальнейшие задержки происходят на этапе эксплуатации, например, когда изменения, которые не должны были повлиять на продакшен, на самом деле порождают катастрофические последствия, или когда апгрейд базы данных узурпирует важную межкомандную встречу по планированию, или когда инженер по автоматизации берет отпуск, чтобы заняться докторской диссертацией по физике.
Сложно ставить временные рамки и дедлайны без четких фактов. Отсутствие данных часто ведет к тому, что люди принимают решения, опираясь на собственное мнение, а это всегда создает больше проблем, чем решения, основанные на достоверных данных (например, на видимой работе). К чьему совету при постройке здания вы бы прислушались — дипломированного инженера-конструктора с десятилетним опытом работы по сейсмическому усилению сооружений или своего шурина-бухгалтера, который клянется, что нет ничего лучше, чем укрепить дом собственными руками? Вот почему метрики так важны — они помогают принимать обоснованные решения.
Представьте, что вы летите на самолете без датчика топлива, компаса и указателя воздушной скорости. Насколько это рискованно? Ведь все эти датчики выведены в кабину пилота не просто так. Без них невозможно узнать информацию об уровне топлива, скорости воздушного потока и направлении, что, в свою очередь, повлияет на работу диспетчеров, когда нужно посадить несколько самолетов. Точно так же отсутствие визуальных данных в IT мешает разглядеть проблемы, потому что ничто не демонстрирует реальный ход работы. Когда мы не видим проблем, их сложно анализировать и, следовательно, понимать, в каком направлении двигаться. Вот что делают грамотные метрики: они указывают верное направление.
Когда нужно прогнозировать время, необходимое для выполнения задачи (вспомним закон Хофштадтера), полезно взглянуть на метрики, оценивающие прогресс, а не саму работу. Одни из наиболее подходящих, показывающих реальный прогресс (или его отсутствие), — время выполнения, время цикла, WIP и отчет по задолженности. В этом параграфе мы уделим внимание именно таким инструментам.
Босс (или клиент, супруг, преподаватель, коуч) хочет знать, когда будет сделано Х. Чтобы ответить на этот вопрос, многие пытаются определить, сколько будет длиться каждый шаг процесса, а потом суммируют результаты. Обычно закладывается время на непредвиденные обстоятельства (буферное), потому что работа всегда выполняется дольше, чем ожидалось. Люди потрясающе безграмотно рассчитывают время работы даже в собственной профессиональной области, и я не исключение.
Сейсмическое усиление, которое мы с мужем делали в подвале, по нашим расчетам, должно было занять четыре недели — но растянулось на шесть. Мы не учли, сколько времени нужно, чтобы заменить газопровод и водопровод, поставить гибкие шланги вместо металлических, хотя не раз занимались подобными проблемами.
Оптимизм присущ практически всем, если нужно ответить на вопрос: «Когда это будет сделано?» Программное обеспечение ничем не отличается. Разработчики представляют оптимистичные расчеты, которые менеджеры рады одобрить, потому что ожидается значительная бизнес-ценность. Более того, мы берем на себя больше работы, потому что сами оптимисты — это одна из пяти причин согласия, о которых мы говорили в первой части.
Проблема традиционного расчета (когда суммируется время, необходимое для каждой части процесса, а потом добавляется буфер) в том, что каждый шаг на пути к выполнению задачи полон неопределенности. Каждый этап уязвим и подвержен воздействию неизвестных зависимостей, незапланированной работы, конфликтующих приоритетов, а также праздников, снегопада и примерно миллиона других факторов. В расчетах преобладает неопределенность.
При этом расчет времени важен, потому что кому-то придется нести ответственность за чудовищный график работы, когда все сроки сорваны, а такое бывает очень часто. Движение No Estimates ежедневно набирает обороты, по мере того как все больше проектов отстает от графика и все больше задач не оправдывает ожиданий. Что же делать? Обратить внимание на время потока (рис. 38).
Рис. 38. Метрика времени потока
Время потока показывает, сколько времени заняло выполнение задачи от начала до конца. Вы скажете: это же время цикла. И будете абсолютно правы. Хотя определение зависит от контекста. В зависимости от того, кого вы спрашиваете, время цикла имеет разное значение, и вскоре мы это обсудим. Просто запомните, что время цикла — неоднозначный термин, и поэтому я предпочитаю время потока, когда мы обсуждаем метрики скорости в целом, потому что это перекликается с принципами бережливого производства. На самом деле это основной столп бережливого производства. Термин «время потока» уже давно в ходу, не я его придумала.
Время потока имеет начало и завершение. И все. Часы не останавливаются, когда приходят выходные, и не продолжают свой ход, когда вы садитесь за рабочий стол. Время потока показывает вероятность завершения х% работы за определенное количество дней.
Если собрать статистику по времени потока, где 90% определенной работы выполняется за десять дней, это позволит сказать, что в девяти из десяти случаев мы выполняем подобные задачи в течение десяти дней. То есть существует 10%-ная вероятность, что часть работы займет больше времени. Это важно, потому что позволяет лучше прогнозировать результат для клиентов.
Время выполнения и время цикла (рис. 39) — это метрики времени потока. Они указывают на продолжительность. Возьмем, к примеру, заказ и доставку пиццы: время выполнения начинает отсчет, когда клиент заказывает еду, а время цикла включается, только когда повар приступает к ее изготовлению. Людей, которые выбрали это блюдо, интересует время выполнения. Они хотят, чтобы их пиццу привезли побыстрее. Внутренним командам интересно время цикла. Они стараются сократить время ожидания доставки, чтобы повысить эффективность. Бережливое производство оптимизирует скорость и результативность.
Рис. 39. Время выполнения и время цикла
Традиционно, в производственном смысле, время цикла представляет собой среднее время выполнения рабочих единиц. Для наших целей назовем это промежутком времени между началом работы и доставкой продукта клиенту. Именно это определение используют многие софтверные производители. Как и время выполнения заказа, время цикла дает прогноз сроков выполнения работы. Просто часы включаются позже. Время цикла важно, потому что показывает, как долго будет решаться задача после начала работы. Сразу видно, как ожидания, связанные с зависимостями от других команд, влияют на график.
Вероятность прогнозируемости сокращается, когда WIP неумолимо растет, а вместе с ним и время потока. Помните, что объем WIP показывает, сколько разных задач находится в работе одновременно. В отличие от большинства других метрик, WIP — важнейший индикатор. Чем больше WIP, тем больше времени нужно для выполнения, и точка. Можно взглянуть на закон Литтла, чтобы понять математическое обоснование того, что WIP увеличивает время выполнения задачи. Помните, что время выполнения равно количеству задач, делённому на пропускную способность. Поскольку в этом уравнении количество задач — делимое, мы знаем: когда оно растет, увеличивается и время выполнения. Даже если не принимать в расчет алгебру и теорию, доказательства можно найти в повседневной работе.
Закон Литтла, однако, не лишен некоторых допущений. Даниэль Ваканти говорит об этом в своей книге Actionable Agile Metrics for Predictability: An Introduction («Практичные аgile-метрики для прогнозируемости: введение»). Он объясняет, что истинная польза закона Литтла лежит в понимании допущений, необходимых, чтобы этот закон работал . Все метрики опираются на допущения, и закон Литтла не исключение. Все, что нужно сделать, чтобы дискредитировать метрику, — усомниться в ее допущениях. Чтобы метрику воспринимали всерьез, тщательно обдумайте и сформулируйте все допущения.
Команда, которая сосредоточенно трудится над материалами для тренинга, работает быстрее в те недели, когда не приходится ездить к клиентам или выступать на конференциях. Группа маркетологов быстрее выполняет поставленные задачи, если работает над семью проектами одновременно, а не над тринадцатью. Студенты колледжа делают домашнее задание быстрее, если берут два предмета вместо трех. Можно поспорить, что это зависит от сложности работы. Домашние упражнения по трем предметам для первокурсника могут занять меньше времени, чем работа по двум предметам для студента последнего курса, и именно поэтому важно распределять задачи по категориям. Далее можно проявить изобретательность и составить WIP-отчеты (рис. 40) по каждой категории, что, в свою очередь, способно улучшить распределение незавершенных задач.
Рис. 40. Отчет по WIP
Почему в приемной некоторых врачей всегда приходится долго ждать? Неужели потому, что у хороших специалистов больше пациентов и они всегда жутко заняты? Судя по моим наблюдениям, дело не в этом. Приема у плохих докторов приходилось ждать не меньше, чем у замечательных. Однажды я целый час не могла попасть к хирургу, а потом услышала его вердикт: с моей атрофированной четырехглавой мышцей бедра после смещения коленного сустава ничего нельзя сделать.
Теперь я убеждена: если в приемной врача нет длинных очередей, то там понимают, почему 100%-ная загрузка «производственных мощностей» не работает.
Есть прямая связь между объемом WIP и загрузкой производственных мощностей (capacity utilization) — то есть процентом общей мощности, который используется реально. Если доктор проводит в офисе десять часов и все это время у него идет прием, можно сказать, что он загружен на 100%. Если же он уделяет профессии десять часов, но собственно пациентам — семь часов, он загружен на 70%.
Что происходит, когда пациент с язвой желудка звонит и просит принять его в тот же день? Многие через такое проходили. Я точно. Мы сидим в приемной 30 минут и ждем осмотра, который был назначен два дня назад, и тут входит другой пациент и присаживается рядом с вами. Проходит еще 10 минут, и секретарь вызывает его, а не вас. Те, кто ждет уже минут сорок, переглядываются с удивлением, вздыхают и ворчат про себя о том, что эти минуты жизни уже никто не вернет.
Пытаясь загрузить людей и ресурсы на 100%, мы создаем время ожидания. Чем выше загрузка, тем дольше ожидание, особенно в отраслях с высокой изменчивостью, как IT.
Обратите внимание: когда я говорю «изменчивость», имею в виду отсутствие стабильности и фактор неожиданности. Например, когда незапланированная работа нарушает процесс развертывания или сетевой коммутатор рухнул, отключив 200 или 2000 серверов. Или когда кто-то взламывает наши ненадежные базы данных. Или когда Брент звонит и говорит, что заболел, — и проходит без очереди к врачу!
Непредсказуемость порождает изменчивость, и чем выше последняя, тем больше проблем вызывает перегрузка производственной мощности. Чем больше людей и ресурсов используется, тем круче цена и риск. Компьютеры перестают отвечать, когда приближаются к стопроцентной загрузке производственной мощности. На автострадах появляются пробки и движение замедляется, когда они полностью загружены. Мне хочется думать, что в офисах у хороших врачей понимают теорию очередей и учитывают фактор изменчивости — то есть незапланированных пациентов. Чем больше используется человек или ресурс, тем длиннее период ожидания (очередь). И хотя в определенном смысле это интуитивное предположение, оно все же опирается на научные факты.
Это называется теорией очередей. С помощью математических расчетов можно увидеть, почему единственным важнейшим фактором, который влияет на длину очереди, становится загрузка производственной мощности. А длина очереди волнует нас по той причине, что она прямо пропорциональна затраченному на нее времени. Я нарисовала кривую из формулы Кингмэна (примерный расчет среднего времени ожидания в очереди). Она показывает соотношение между производственной мощностью и временем ожидания (рис. 41).
Рис. 41. Теория очередей
Теория очередей — область прикладной статистики, которая изучает время ожидания. Она позволяет рассчитать соотношение времени ожидания и производственной мощности даже при высокой изменчивости входящего потока и времени обслуживания. Если задачи поступают быстрее, чем система способна их обработать, они выстраиваются в очередь.
Если загрузка примерно 60–80%, очередь удваивается. Если в пределах 80–90%, снова удваивается. И еще раз при 90–95% . Когда мы превышаем 80% загрузки, размер очереди начинает расти почти экспоненциально, работа замедляется и, в конце концов, полностью останавливается, когда загрузка достигает 100%.
Вам доводилось работать в компании с политикой 20% «креативного» времени? Я читала, что основная причина этой политики не инновации (это лишь бонус), а стремление удержать загрузку на 80% вместо 100% . В 1948 году 3M предоставила персоналу 15% резервного времени, которое годы спустя трансформировалось в стикеры .
Мы не позволяем нашим серверам достичь 100%-ной загрузки, так что давайте бережно относиться не только к ним, но и к себе.
Отчеты по задолженности показывают, как долго работа находится в очереди и бездействует (рис. 42). Если отслеживать задачи, которые зависают в системе дольше 60 дней (или 90, или 120), вы сразу увидите, сколько мусора скопилось.
Рис. 42. Отчет по задолженностям
Когда люди описывают ситуации, не опираясь на реальные факты, чтобы убедить других согласиться с ними или предпринять те или иные действия, решающим фактором будет личный авторитет. В зависимости от динамики команды подобные неподтвержденные сведения приводят к сомнениям, скептицизму или даже подозрениям. Вот почему нужны количественные параметры оценки — как правило, они достовернее личного восприятия и опыта. Грамотные метрики помогают принимать грамотные решения.
Если слишком много внимания уделяется эффективности ресурсов, а не рабочего потока, время растрачивается впустую (рис. 43).
Рис. 43. Эффективность потока
Грамотные метрики помогают увидеть четкую картину происходящего и установить более точные сроки ожидания, если нужно ответить на вопрос: «Когда будет выполнена работа?» Сроки не учитывают времени ожидания. И проблема обычно связана не с делом, а именно с ожиданием. Обратите внимание на время ожидания, а не процесса. Каким должен быть размер партии задач для поставки? Что считать оптимальным сроком поставки?
В связи с этим нужно учесть два фактора:
Оптимальный размер партии (рис. 44) задач для поставки зависит от сочетания эффекта масштаба и расходов отсроченной реакции (расходы на хранение и транзакционные издержки).
Рис. 44. Оптимальный размер партии
Некоторые предпочитают большой размер партии из-за эффекта масштаба, то есть выгоды, которую приносит рост производства. Ее можно наблюдать в некоторых областях. Boeing на своих конвейерах производит большие объемы одного продукта. Транзакционные издержки по сборке двигателей для одного самолета за раз слишком высоки, поэтому компания однократно выпускает более объемную партию двигателей, чтобы сократить накладные расходы.
Если сделать акцент на эффективности, то расходы будут ниже по более крупным партиям проектов, например в производстве двигателей для самолетов или издании книг. Однако в интеллектуальной работе проблемы с координационными расходами растут не линейно вместе с размером партии. Предположения старой школы менеджмента относительно эффекта масштаба неприменимы к проблемам интеллектуального труда, такого как разработка программного обеспечения.
Маленькая дровяная печка кажется мне теперь намного эффективнее, хотя я и не сменила ее на новую, большую печь. Я изменила свои привычки: работаю по Pomodoro, по 30–45 минут, и ни на что не отвлекаюсь, пока не зазвенит звонок. В печке еще тлеют угольки, и мне нужно всего лишь подбросить немного дров, чтобы огонь не погас. Потом я снова с головой ухожу в работу — еще на 30–45 минут. Этот небольшой перерыв в три-пять минут приносит мне гораздо больше пользы, чем кажется на первый взгляд.
Я встаю, разминаю руки-ноги, смотрю, сколько успела сделать (или не сделать), и стараюсь в следующий отведенный отрезок выполнить больше. Раньше, трудясь по полтора-два часа, я слишком много времени тратила на не самые важные задачи. Чем меньше окно, тем острее ощущение срочности, и появляется стремление сделать все быстро, а это поощряет меня разбивать проект на небольшие задачи. В итоге я работаю намного плодотворнее.
Представьте, что вы отправились в продуктовый магазин за бананами. Если сразу купите запас бананов на шесть месяцев, транзакционные расходы будут меньше, но большая часть бананов просто сгниет через десять дней — и получится, что вы выкинули деньги на ветер. Если будете покупать всего на один день, бананы не сгниют, но транзакционные расходы окажутся выше, потому что придется ежедневно ездить в магазин. Где-то посередине — как раз нужное количество бананов.
Сокращение размеров партии — критически важный принцип бережливого производства. Небольшие партии позволяют производителям разбивать работу на подзадачи и быстрее получать обратную связь, что, в свою очередь, сокращает время цикла, улучшая качество и эффективность. Такой формат имеет еще одно преимущество в разработке программного обеспечения: если не интегрировать код в продукт, его сложно увидеть и он быстро «портится».
Один из лучших показателей короткого времени выполнения задачи — небольшой размер партии. Ему прямо пропорционален средний объем WIP. Небольшой размер партии — полезное лимитирование, как и ограничение WIP. Работа, сгруппированная в небольшие задачи, очерчивает объем дел, которые необходимо выполнить, чтобы получить обратную связь. А чем быстрее вы ее получите, тем лучше результат.
Небольшой размер партии делает время выполнения коротким и эффективным в большинстве потоков ценности, именно поэтому мы стремимся создать гладкий и равномерный поток работы.
Когда вы внедрите практики, перечисленные выше, в рабочий процесс и жизнь и покажете, как они экономят ваши время, деньги и нервы благодаря метрикам, сможете предпринять упреждающие меры и изгнать расхитителей времени из вашей жизни раз и навсегда.