Почему же построить процесс проектирования самолетов, исключив человеческий фактор, так, что после принципиального проектирования новый самолет можно контрактовать Бингу удалось, а вот решить аналогичную задачу в IT – не получается? Причина заключается в природе IT-разработки. Это тоже было выяснено давно, этому посвящена статья Джека Ривза (Jack W. Reeves) «What is software design» (1992, перевод). Дело в том, что при сопоставлении разработки софта с НИОКР в других отраслях, например, проектирование самолетов, мы должны отнести написание кода не к производству, а к низкоуровневому проектированию. То же, что делают заводы на опытном производстве в IT делает среда разработки, собирая проект, делает быстро и дешево и потому ошибки проектирования не критичны, их исправляют не тщательной предварительной проработкой, а тестированием и отладкой. Это сильно дешевле статистически, но делает выполнение конкретной задачи слабо предсказуемым, вернее, получается распределение с жирным хвостом, так, что для срок для 90% уверенности в три раза превышает мат.ожидание. Об этом был интересный доклад Андрея Бибичева «Пуассоново горение сроков» (кстати, по ссылке – уникальный ресурс Стаса Фомина, где собрано 2500+ докладов с почти 70 IT-конференций, доступных бесплатно, смотрите). Схематично это изображено на рисунке. А я отмечу, что задачу IT-разработка оказалась как раз той областью, где Боинг тоже постигла неудача: множество скандалов вокруг его самолетов связаны как раз с бортовым софтом.
Перечитал 2 раза, орал в голосину, спасибо большое, мой дорогой!
Спасибо, очень приятно!
Такая серия статей уже на книгу начинают тянуть. Я бы купил. Спасибо за труд.
Я эту серию статей в 2022 году издал как книгу на ridero, так что можно купить https://ridero.ru/books/menedzhment_cifrovogo_mira/
и ее разомкнутая линеаризация в виде водопадной модели (Ройс, 1970).
Если обратитесь к работам Ройса, там о "водопадной" модели говорится, как о вымышленной, антиподу инкрементальной модели, которую как раз-таки пестовали инженерные менеджеры тех лет.
Да, я знаю, что Ройс в своих работах как раз приводил линейный водопад как пример нереалистичного способа разработки. Однако, как это часто бывает, простая схема зажила собственной жизнью и стала популярной.
Кроме того, если мы посмотрим работу Ройса 1970, на которую я ссылаюсь https://leadinganswers.typepad.com/leading_answers/files/original_waterfall_paper_winston_royce.pdf то увидим, что Ройс всего лишь вводит обратную связь между последовательными процессами, а также пару связей "через один" - проверку, что дизайн соответствует требованиям и верификацию. Помимо них в работе достаточно много параллельных процессов, но о быстром итеративном цикле разработки, проходящем этап валидации (а Agile через поставку инкремента обеспечивает именно это) речь не идет.
Впрочем, возможно, вы дадите ссылки на другие работы Ройса.