Иногда проблема кроется в том, кто стоит у власти. Любой недоумок, облеченный полномочиями, может придумать совершенно идиотскую систему организации труда и попытаться заставить следовать ей всю команду. А затем, когда вдруг окажется, что команда смогла не только пережить этот процесс, но и что-нибудь выдать в качестве результата, вождь может даже выставить сам процесс как ключ к успеху (не замечая того факта, что команда добилась успеха вопреки бездарной организации процесса). Сосредоточив в своих руках достаточно власти, такие руководители способны подавить любые мятежи, продолжая мучить команду постоянными нововведениями.
Иногда проблема кроется в следующем философском подходе: «Этот процесс срабатывал раньше, сработает и теперь». В такой ситуации руководитель команды, добившийся в прошлом неких результатов определенным способом, настаивает на применении испробованного метода или процесса в работе каждой новой возглавляемой им команды (об этой пагубной привычке в руководстве я уже упоминал в главе 8). Вред здесь в том, что повторить предыдущий успех можно лишь при полном совпадении текущей ситуации с предыдущей. При реальной оценке пригодности процесса с оглядкой на прошлое нужно придавать особое значение потребностям настоящего.
Однако в большинстве случаев проблема кроется в сложности, сопутствующей организации производственных процессов. Производственный процесс является попыткой организовать работу людей и установить порядок их взаимодействия, то есть касается двух наиболее важных и тесно связанных элементов. У людей разный стиль работы. У них разные предпочтения и степень терпимости к формальному контролю. Если организатор процесса не проявит должной осмотрительности, сам процесс легко может стать камнем преткновения, мешающим людям и ущемляющим их свободу и полномочия.
Секрет организации хорошего технологического процесса состоит в понимании сочетания двух вещей: что вообще приносит успех проекту и команде и в чем уникальность данного проекта и команды (рис. 10.1). Здесь недостаточно знать как, скажем, вообще принимаются верные командные решения: нужно учесть производственную культуру, индивидуальные особенности и привычки той команды, с которой вы работаете. Иногда культура или проект требуют различных подходов (например, процессы тестирования встроенных систем антиблокировки тормозов по сравнению с процессами тестирования, посвященного панк-рок-бэнду веб-сайта для Стива). Вместо того чтобы регламентировать все сверху, зачастую лучше позволить команде самой устанавливать правила. Вместо многократного использования избитого шаблона, дайте им возможность внести нужные изменения и создать собственный вариант. В организации производственного процесса много общего с ведением любого вида переговоров (см. главу 11) – нужно ясно представлять себе преследуемые цели, а не отстаивать определенную позицию.
Рис. 10.1. Хорошо организованному процессу требуется не только ориентация на проекты вообще, но и учет уникальных особенностей текущего проекта
Чтобы помочь вам найти и распознать хорошо организованные производственные процессы, я предлагаю перечень их признаков и эффектов, оказываемых ими на проект. Этот список можно использовать в качестве контрольного, когда вы усядетесь за создание или совершенствование положений производственного процесса.
Ускорение продвижения проекта. Вопреки интуитивному предубеждению, хорошо организованный порядок действий не снижает, а повышает производительность труда. Например, вспомним белые разделительные полосы на автострадах. Благодаря тому, что они устанавливают одни и те же ограничения для всех участников движения, отдельные водители могут ездить очень быстро. Хорошо организованный процесс предоставляет систему, от которой люди могут зависеть и строить на ее основе свои решения. В некоторых случаях процесс распределяет исполняемые роли, Стиву становится проще получить то, что нам нужно, от Молли (например, найти кого-то для просмотра программного кода). Каноническим примером могут послужить автоматизированные инструментальные средства, позволяющие людям реализовывать проекты несколькими нажатиями клавиш, если они следуют необходимым определенным в инструментальной системе соглашениям по созданию программного кода.
Предотвращение проблем. Наиболее распространенной мотивацией внедрения производственного процесса является предотвращение проявлений (или повторений) некоторых разновидностей глупости. Трудность в том, что это нужно сделать без усложнения процесса и без создания благоприятных условий для какой-нибудь новой глупости. Для этого нужно понимать причины возникновения проблем и наиболее важные факторы, обеспечивающие прогресс. Задайте вопрос: «Каков наименее навязчивый, наименее раздражающий и наименее затратный способ никогда не повторять больше ошибок X, Y и Z?» Или подойдите с другой стороны: «Какую проблему процесс может предотвратить? Насколько серьезна или реальна эта проблема?» Если процесс не препятствует возникновению проблем или не способствует прогрессу, то от него лучше отказаться (см. следующий раздел).
Наглядность и возможность оценки важных действий. Процессы выявления ошибок или выпуска технических условий облегчают отслеживание частоты подобных действий. Можно отслеживать их состояние, результаты и тенденции в работе всей команды. Что касается ошибок, технических условий и тестов, хорошо продуманный процесс упростит определение состояния проекта. Это играет важную роль для выработки стратегии в промежуточной и авершающей стадиях проекта (см. главы 14 и 15).
Наличие встроенного процесса для изменения или упразднения главного процесса. Поскольку в проектах все время что-то меняется, процесс, который был полезен или необходим в этом месяце, может утратить свое значение в следующем. В самом процессе должен быть встроенный механизм, позволяющий решать, когда его нужно обновить или прекратить. Никогда не нужно брать в расчет, что процесс будет идти всегда, поэтому избегайте определять чьи-либо задачи на его основе. Кто-нибудь, кто определяет свою работу как «я тот самый парень, который гоняет пятый тест», будет стремиться грудью стать на защиту теста номер пять и бояться любых касающихся его изменений. А это плохо. Лучше назначьте людей ответственными за те последствия и результаты, которые процесс приносит проекту.
Польза для людей, вовлекаемых в процесс. Людям нравятся полезные процессы. Хорошо организованный процесс станет желанным для всех, кто в нем нуждается. Если вы предлагаете внедрить новый процесс, затрагивающий работу программистов, и этот процесс будет полезным для проекта, то уговорить их попробовать его в деле окажется совсем не трудно. Люди естественным образом должны быть вовлечены в придумывание новых процессов. Ну а если вовлекаемые в предлагаемый процесс люди смогут привести массу доводов против него, то, возможно, они правы.
Формула хорошего процесса
При продумывании процесса нужно сопоставить ценность от привносимых им положительных эффектов и стоимость его внедрения и выполнения. Существует и формула, которая поможет это сделать. Чтобы извлечь пользу из этой формулы, вам не понадобятся реальные числа. Я предлагаю ее лишь в качестве упражнения, помогающего задуматься о соотношении достоинств и недостатков дополнительных технологических процессов. Если вам не нравятся упражнения или формулы, перейдите к следующему разделу – канву повествования вы не потеряете.
Сначала рассмотрим стоимость процесса: время на выработку замысла процесса (DT), время на его освоение командой (LT), фактическое время выполнения работы при применении процесса, помноженное на частоту его применения (AT × N). Полная стоимость любого процесса равна:
DT + LT + (AT × N).
Теперь рассмотрим суммарную выгоду, получаемую от процесса: стоимость провалов, которых процесс позволит избежать (FC), помноженную на показатель вероятности возникновения этих провалов (FP) без внедрения процесса в пределах определенных временных единиц, и все это помноженное на количество таких временных единиц в проекте (T). Полная суммарная выгода равна
(FC × FP) × T.
Таким образом, ценность процесса приблизительно равна:
((FC × FP) × T) – (DT + LT + (AT × N)).
Я полностью согласен с тем, что в этой формуле имеются грубые допущения, но сам ее смысл не может вас не заинтересовать. Чем больше полученное в результате число, тем ценнее процесс. Отрицательное число будет означать, что суммарные выгоды от процесса перевешены затратами на него.