пятница, 19 июля 2013 г.

[management] Про оптимизм разработчиков (с отсылкой к Манхэттенскому проекту)

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

Есть даже вполне универсальный коэффициент -- значение Пи. C частично юмористическим обоснованием: движение из точки A в точку B при разработке происходит не по прямой, а по дуге, при вычислении же длины дуги требуется умножение на Пи :) Мастерство настоящих эффективруководителей разработки ПО состоит в том, чтобы уметь со временем вычислять коэффициенты для оценок своих ведущих экспертов. Эти индивидуальные коэффициенты будут отличаться друг от друга из-за степени новизны задачи, личностных особенностей экспертов, их предыдущего опыта, состояния их психикиздоровья и фазы луны ;) *

Однако, если смотреть на мир шире, проблема слишком оптимистичных оценок и надежд присуща не только разработчикам ПО. Но и разработчикам ВООБЩЕ. Действительно, когда предстоит сделать то, чего еще нет, то откуда брать оценки? Даже в случае, когда что-то подобное уже делали в прошлом, но сейчас требуется пришить перламутровые пуго что-то как-то поменять. Но что и как до конца не понятно. Вот мы и озвучиваем свои ожидания. А уже человеческая природа обуславливает то, что наши ожидания оптимистичны. Или ну очень оптимистичны :)

Приятно было увидеть примеры зашкаливающей оптимистичности в воспоминаниях руководителя Манхэттенского проекта Лесли Гровса.

Среди сотрудников лаборатории имелась также группа ученых в основном европейского происхождения и, следовательно, ближе знакомых с промышленностью, чем их американские коллеги, которые считали, что всеми инженерно-проектными работами должны руководить они. Причем некоторые из них считали себя подготовленными даже для руководства строительством. Во время моих посещений лаборатории Комптона я неоднократно выслушивал предложения о выделении 50--100 инженеров и проектантов для обеспечения быстрого строительства плутониевого завода. (Абсурдность этих предложений особенно очевидна, если вспомнить, что впоследствии на строительстве такого завода было занято до 45 тысяч человек и даже ресурсы такой компании, как "Дюпон", были на грани истощения, несмотря на громадную поддержку и помощь правительства США.)

И если здесь Гровс говорит о чрезмерном оптимизме ученых, то чуть позже он признается и в чрезмерном собственном оптимизме (речь идет о найме персонала для завода по обогащению урана в Ок-Ридж):

Тогда же начался набор эксплуатационного персонала для заводов. Сначала мы считали, что обойдемся штатом в 2500 человек. Но это предположение оказалось грустным свидетельством нашей неспособности предвидеть масштаб и сложность предприятия. На самом деле впоследствии штат завода составил 24 тысячи человек.

Так что оптимизм в оценках -- это нормально и естественно. Особенно когда речь идет о новых областях.

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

PS. У первой цитаты на счет ученых, которые хотели приступать к проектированию заводов, есть продолжение. По мнению Гровса, они обладали не только чрезмерным оптимизмом, но и упрямством. Процитированный мной фрагмент имеет следующее продолжение:

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

Но, честно говоря, у меня нет уверенности в том, что в своей оценке чужой твердолобости Гровс прав. Если вспомнить некоторые уточняющие детали про безопасность производства на тех самых заводах в Ок-Рижд, которые раскрыл Ричард Фейман, то лично у меня закрадывается совсем другая мысль: а ведь может быть ученые были правы, когда предлагали начать проектирование завода небольшой группой инженеров и проектантов?


* Действительно успешные менеджеры программистов крайне подозрительно относятся к точным оценкам. Если разработчик начинает точно предсказывать и, более того, еще и точно укладываться в называемые им сроки, значит он занимается надувательством. Он заранее применяет уточняющий коэффициент, обеспечивает себе требуемый запас по времени, и работает не слишком напрягаясь. К таким умникам нужно относиться крайне осторожно :)))

Комментариев нет: