Фредерик Брукс, Мифический человеко-месяц или как создаются программные системы

Джоэл о программировании

Мартин Фаулер, Рефакторинг



 

Приоритеты эффективной разработки

Яков Сироткин
yasha@telamon.ru
май-июнь 2011 года
версия 1.0

Механизмы современной экономики достаточно причудливы и продажа результатов своего труда на свободном рынке вовсе не является обязательным условием финансового благополучия. Индустрия разработки программного обеспечения изобилует примерами, когда очень значительные финансовые ресурсы вкладывались в проекты, которые завершились полным провалом. А если в отрасли есть провальные проекты, то значит есть и люди, которые ими профессионально занимаются.

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

В этой статье я остановлюсь на вопросах, которым нужно уделять особое внимание, если вы хотите пойти по трудному пути. Мой опыт связан в первую очередь с разработкой программного обеспечения, но я старался не использовать узкоспециальных формулировок, поэтому надеюсь, что статья будет интересна широкому кругу читателей.

1. Куда вы едете?

В современном мире нет особого смысла изобретать ещё один велосипед или даже вертолёт, поэтому ответ должен быть достаточно подробным и на его получение может уйти очень много сил. Когда я был маленьким и занимался в математическом кружке, то у нас была поговорка, что правильная постановка задачи — половина её решения. Теперь я могу сказать, что если половина усилий не ушла на постановку задачи — вы гоните брак.

Пожалуй, нет смысла подробно объяснять важность ясно сформулированных целей, но почему они так редко встречаются в природе? По моим наблюдениям, обычно это происходит от прокрастинации, свойственной высокопоставленным менеджерам. Добротно сформулировать задачи для подчинённых — это вполне конкретная работа, но начальник всегда может принять решение, что он её уже сделал и пусть другие разбираются, какой глубокий смысл был заложен в его словах.

2. Нашли ли вы дорогу?

Большой проект разбивается на много разных задач и от выполнения некоторых из них очень многое зависит. Однако, часто люди начинают заниматься совсем другими вопросами, например, наиболее понятными или теми, которые позволят им меньше напрягаться на работе прямо сейчас. В конце отведённого срока остаются задачи малопонятные, очень трудные и, по закону подлости, критически важные, поэтому начинается аврал. И проблема здесь не в том, что кому-то придётся поработать, а в том, что сделанные в последний момент решения не пройдут проверку временем и в итоге получится некачественный продукт.

При эффективной разработке аврал должен быть вначале проекта — когда есть ещё возможность что-то поменять и справиться с рисками на ранней стадии. Нужно всё время искать наиболее опасные задачи и стремиться сделать их как можно раньше. В некоторый момент вы можете понять, что ситуация находится под контролем и можно спокойно довести дело до конца - тогда есть смысл начать работать более консервативно, не делая резких движений. Но не раньше.

3. Куда едет водитель?

Представьте, что у работника есть 100500 потенциальных задач, 10 из которых уже ему поручены. И каждый день руководство проверяет, сколько задач ещё «висит» на человеке и добавляет до десяти. Вопрос: есть ли для сотрудника смысл напрягаться, если для него лично ничего не изменится? А теперь допустим, что человек видит результаты своего труда и чувствует сопричастность общему делу. Разумеется, он будет работать с большей самоотдачей.

Команда может добиться гораздо больше, чем одиночка, но с командой нужно разделять успехи и неудачи, нельзя относиться к коллегам как к станкам.

4. Что это за красные лампочки горят?

Для большинства качественных продуктов не составляет труда сделать клон вдвое дешевле, но с огромным количеством недостатков. Например, АвтоВАЗ выпускает автомобили. Однако, низкокачественные изделия сразу же отходят в маргинальный сегмент рынка и доходы их производителей оставляют желать лучшего.

Часто разработчики надеются, что сначала они всё сделают, а ошибки будут исправлять потом, может быть даже в авральном режиме. Это не работает по двум причинам: во-первых, если ошибок много, то их появление не случайно, а вызвано недостатками процесса в целом и это нельзя исправить одним махом — проблемы всё равно будут возникать снова и снова. Во-вторых, когда сроки подходят к концу, любые изменения становятся очень рискованными.

Таким образом, чем раньше исправляются ошибки — тем лучше. Во-первых, если вы найдёте причину, то не будете снова наступать на те же грабли. Во-вторых, у вас будут появляться проверенные временем технологии, в которых вы сможете быть уверенными.

5. Исправны ли тормоза?

В современном мире всё часто меняется, в том числе цели проекта и требования к его реализации. И когда вы принимаете какие-то решения, то рано или поздно вам придётся столкнуться с их последствиями.

Тем не менее, всегда есть соблазн оптимизировать текущие показатели, потихоньку наращивая неявные обязательства. Продавать, не думая о производстве и поддержке, нанимать, закладываясь на будущий рост. Разумеется, такая активность бодрит и первые результаты скорее всего будут позитивными. Но довольно скоро окажется, что вы уже не можете придумать ничего нового, а вынуждены тратить все силы на борьбу с проблемами, которые вы раньше просто игнорировали.

Если вы хотите пробежать марафон, то вы не можете просто рвануть со старта на максимальной скорости. Более того, реальная жизнь гораздо сложнее и наверняка вы будете время от времени пропускать повороты. Вы должны быть готовы остановиться и начать искать верное направление.

6. Зачем вы едете по этому деревянному мостику?

Часто бывает, что внутри команды возникает какая-нибудь экзотическая идея с мутным обоснованием. И, особенно если инициатором было начальство, люди могут внезапно на полном серьёзе начать над ней работать. При этом часто все думают, что времени много, а денег хватит. Это крайне опасная точка зрения, потому что занимаясь ерундой вы деформируете всё вокруг. Убрать ненужное потом может оказаться дороже, чем стоило его вставить.

7. Не припарковались ли вы на проезде?

Часто люди делают большой проект, но совершенно не заботятся об интересах партнёров. Разумеется, недовольные партнёры никогда не приведут к ним армию счастливых клиентов.



Хостится на .masterhost Яндекс цитирования   SpyLOG   Рейтинг@Mail.ru  Rambler's Top100