- А как насчет моей храбрости? - обеспокоено спросил Лев.
- У вас ее хоть отбавляй, я в этом не сомневаюсь ни минуты, - сказал Оз. - Нужна лишь уверенность в себе. Все живые существа испытывают страх в минуту опасности. Храбрость - это умение побеждать свой страх, а такое умение у вас есть.
«Волшебник страны Оз»
Разработка программного обеспечения – дело рискованное. Люди, которые этим занимаются, постоянно боятся, что что-то пойдет не так, как надо. Если вы хотите, чтобы команда работала эффективно, обязательно принимайте во внимание такие страхи.
Интересно, а зачем при разработке ПО вообще нужен процесс? Наверное, затем же, зачем существуют правительства, законы и налоги: из-за страхов.
В «Декларации Независимости» говорится:
Все люди созданы равными и наделены их Творцом определенными неотчуждаемыми правами, к числу которых относятся жизнь, свобода и стремление к счастью. Для обеспечения этих прав людьми учреждаются правительства, черпающие свои законные полномочия из согласия управляемых[1].
Конечно, глубина и всеобъемлемость этого документа кого угодно собьет с толку, но обратите внимание на слово «обеспечения». Мы учреждаем правительства, потому что опасаемся потерять свои права.
По той же причине мы разрабатываем процесс для создания ПО: мы боимся. Заказчики боятся, что:
l Не получат того, о чем просили.
l Попросят не то, что им нужно.
l Заплатят много, а получат мало.
l Отдадут свою судьбу и карьеру в руки технарей, которым на это наплевать.
l Им даже не предоставят никакого разумного плана работ.
l Тот план, который им предоставят, не будет иметь ничего общего с действительностью.
l Их заставят придерживаться изначальных соглашений, и поэтому они не смогут своевременно отреагировать на возможные изменения в бизнесе.
l Никто и никогда не скажет им правду.
Разработчики тоже боятся. Прежде всего, они опасаются, что:
l Их попросят сделать то, что они делать не умеют.
l Их попросят сделать совершенно бессмысленные вещи.
l Они вконец отупели.
l Они не поспевают за последними техническими разработками.
l Их наделят только обязанностями, а о правах забудут.
l Им не объяснят четко и ясно, что именно нужно сделать.
l Им придется пожертвовать качеством работы из-за сжатых сроков.
l Им придется решать трудные вопросы самостоятельно, без помощи со стороны.
l На успешное завершение проекта просто не хватит времени.
Если не рассказать открыто о своих страхах, и не постараться сразу же с ними разобраться, то и разработчики, и заказчики начнут строить стены, чтобы защитить себя и свои интересы. При этом ни те, ни другие не захотят делиться друг с другом необходимой информацией:
«Если я скажу обо всем программистам, они будут несколько месяцев в этом разбираться, вместо того, чтобы сразу сделать то, что мне нужно».
«Если я скажу заказчику, как быстро мне удалось сделать эту задачу, он еще чего доброго подумает, что я все буду делать с такой скоростью».
Таким вот образом, обе стороны начинают подтасовывать факты, говорить друг другу полуправду, лгать, хитрить и, по сути, работать в противоположных направлениях. Результатом такой деятельности будут огромные и бесполезные политические и процессуальные структуры, единственная цель которых – самозащита, а не успех общего дела.
Чтобы проект увенчался успехом, процесс разработки должен гарантировать заказчикам и программистам определенные неотчуждаемые права.
«Билль о правах» заказчика
l У вас есть право получить общий план работ и узнать, что может быть сделано, когда и за какие деньги.
l У вас есть право получить максимум выгоды из каждой недели работы программистов.
l У вас есть право наблюдать развитие проекта на работающей версии системы, которая регулярно проходит определяемые вами тесты.
l У вас есть право менять свои решения, заменять одну функциональное свойство системы другим и менять приоритеты, не платя за это чрезмерные суммы разработчикам.
l У вас есть право получать информацию о любых неожиданных изменениях в ходе работ, что позволит вам вовремя уменьшить общий объем задач и сохранить первоначальные сроки поставки системы. Вы также можете прекратить проект в любое время и получить при этом работающую версию системы, разработка функциональности которой была оплачена вами на текущий день.
«Билль о правах» программиста
l У вас есть право знать, что именно нужно сделать, и какова приоритетность каждой задачи.
l У вас есть право в любое время производить качественный программный продукт.
l У вас есть право просить и получать помощь от коллег, начальства и заказчиков.
l У вас есть право самостоятельно оценивать объем трудозатрат по задачам, а потом вносить в них изменения.
l У вас есть право взять на себя ответственность и не ждать, пока ее на вас возложат.
Если мы собираемся хорошо поработать, давайте сначала позаботимся о такой среде, которая позволила бы и программистам, и заказчикам осознать взаимные страхи и сознательно признать свои права и обязанности. Если этого не будет, мы не сможем действовать смело. Мы будем прятаться за высокими крепостными стенами, подкатывать к ним новые камни и бревна, добавлять лишний вес в процесс разработок, который и так-то не отличался особой легкостью. Будем устанавливать новые пушки и сторожевые башни, вводить новые виды документации и процессуальные процедуры, запускать в оборонительный ров крокодилов, строить пыточные камеры и делать большие запасы кипящего масла.
Однако если осознать все свои страхи и права, то можно действовать смело. Можно ставить перед собой трудновыполнимые цели и плечом к плечу бороться за их достижение. Можно отказаться от всех лишних структур, которые были выстроены нашими страхами, и теперь только обременяют нас. Мы настолько осмелеем, что займемся только по-настоящему нужными вещами, будем тратить время на действительно важные задачи, а не на то, чтобы защищаться друг от друга.
[1] по изданию: «Соединенные Штаты Америки: Конституция и законодательство» Под ред. О.А.Жидкова. Перевод О.А.Жидкова. М.: Прогресс, Универс, 1993.