Посмотрев серию MegaStructures от National Geographic , я был удивлен, насколько быстро завершаются крупные проекты. После того, как предварительные работы (дизайн, спецификации и т. Д.) Выполнены на бумаге, сама реализация огромных проектов занимает всего несколько лет, а иногда и несколько месяцев .
Например, Airbus A380 «официально запущен 19 декабря 2000 года», а «в начале марта 2005 года» самолет уже был испытан. То же самое касается огромных нефтяных танкеров, небоскребов и т. Д.
Сравнивая это с задержками в индустрии программного обеспечения, я не могу не задаться вопросом, почему большинство ИТ-проектов настолько медленные, или, точнее, почему они не могут быть такими же быстрыми и безошибочными, в одном и том же масштабе, учитывая достаточное количество людей?
Такие проекты, как Airbus A380, представляют оба:
Основные непредвиденные риски: хотя это не первый построенный самолет, он все же раздвигает пределы технологии, и вещи, которые хорошо работали для небольших авиалайнеров, могут не работать для более крупных из-за физических ограничений; таким же образом используются новые технологии, которые еще не использовались, потому что, например, они не были доступны в 1969 году, когда был сделан Боинг 747.
Риски, связанные с человеческими ресурсами и управлением в целом: люди уходят в середине проекта, неспособность связаться с человеком, потому что он в отпуске, обычные человеческие ошибки и т. Д.
С такими рисками люди все еще достигают таких проектов, как эти большие авиалайнеры, за очень короткий период времени , и, несмотря на задержки с доставкой, эти проекты по-прежнему чрезвычайно успешны и отличаются высоким качеством.
Когда дело доходит до разработки программного обеспечения, проекты едва ли такие большие и сложные, как авиалайнер (как с технической точки зрения, так и с точки зрения управления), и имеют немного меньше непредвиденных рисков из реального мира.
Тем не менее, большинство ИТ-проектов являются медленными и запоздалыми , и добавление в проект большего количества разработчиков не является решением (переход из команды из десяти разработчиков в две тысячи иногда позволит быстрее выполнить проект, иногда нет, а иногда только навредит проект и увеличить риск, не заканчивая это вообще).
Те, которые все еще поставляются, могут часто содержать много ошибок, требующих последовательных пакетов обновлений и регулярных обновлений (представьте себе «установку обновлений» на каждом Airbus A380 два раза в неделю, чтобы исправлять ошибки в исходном продукте и предотвращать сбои самолета).
Как объяснить такие различия? Это связано исключительно с тем фактом, что индустрия разработки программного обеспечения слишком молода, чтобы иметь возможность управлять тысячами людей в рамках одного проекта, чтобы очень быстро выпускать крупномасштабные, почти безошибочные продукты?