- BrainTools - https://www.braintools.ru -
Очень часто, когда обсуждают подходы к проектированию и проектному управлению проводят аналогии со строительством или машиностроением. Не стала исключением и моя статья про аджайл https://habr.com/ru/articles/972230/ [1]
Конечно всякие аналогии имеют свои границы применимости, но в случае сравнения строительства и разработки ПО об этой границе забывают [2]. Между тем она есть и даже люди далекие и от первого и от второго быстро поймут эту разницу, если просто о ней написать.
Основная разница заключается в сравнении стоимости проектирования и создания итогового продукта. Для сравнения я также решил привести пример из машиностроения с созданием серийного продукта. Имеются фундаментальные различия экономических моделей этих отраслей в аспекте тиражирования решений и распределения стоимости по этапам жизненного цикла.
Для подкрепления [3] мнения некими данными я попросил нейросеть Qwen набросать примерные оценки по стоимости.
В строительстве классическое распределение затрат выглядит так:
Проектирование: 5-10% от общей стоимости
Материалы: 50-60%
Строительно-монтажные работы: 30-40%
Пуско-наладка и сдача: 5-10%
Физическая реальность создает “точку невозврата”. После заливки фундамента изменить его параметры практически невозможно без полного демонтажа. Каждый этап жестко зависит от предыдущего, и ошибка [4] на ранней стадии многократно усиливается на последующих. Тиражирование в строительстве означает создание типовых проектов, но даже при этом каждый объект уникален из-за особенностей грунта, климатических условий и инфраструктуры.
Машиностроение занимает промежуточное положение:
НИОКР и проектирование: 20-30%
Создание прототипов и испытания: 15-25%
Освоение производства (оснастка, станки, линии): 30-40%
Серийное производство: 10-20% на единицу продукции
Здесь ключевой момент — амортизация разработки на количество единиц продукции. Чем больше тираж, тем ниже себестоимость единицы. Но первоначальные затраты на разработку и освоение производства огромны. Изменения после запуска серийного производства чрезвычайно затратны — часто проще разработать новую модель, чем модифицировать существующую линию.
В IT-разработке принципиально иное распределение:
Проектирование и анализ: 30-40%
Разработка: 40-50%
Тестирование и внедрение: 20-30%
Поддержка и развитие: 15-25% годовых от стоимости разработки
Самая революционная особенность IT — практически нулевая стоимость тиражирования. Разработка программного продукта может стоить миллион долларов, но выпуск миллиона копий обойдется в несколько рублей за штуку. Это создает уникальную экономическую модель, где можно позволить себе эксперименты и итерации.
|
Критерий |
Строительство (Промышленный объект) |
Машиностроение (Сложный агрегат) |
Разработка ПО (Корпоративная система) |
|---|---|---|---|
|
Суть продукта |
Уникальный материальный объект, привязанный к местности |
Материальное изделие, которое может быть воспроизведено серийно |
Виртуальный продукт (код, данные, логика [5]), не привязанный к физическому носителю |
|
Доля стоимости проектирования |
Относительно низкая (5-15%), основная стоимость — материалы и работы |
Значительная (7-20% и более от стоимости изделия), определяет успех всего проекта |
Доминирующая. Стоимость первой копии близка к стоимости всего проекта |
|
Экономика изменений |
Экспоненциальный рост. Изменение проекта после заливки фундамента или постройке стен ведёт к убыткам и необходимости сносить и начинать заново |
Высокая стоимость на этапе НИОКР, снижается с началом серии. Изменения в серийной модели требуют перепроектирования |
Линейная и управляемая. Стоимость правки зависит от архитектуры: изменение модуля умеренно, смена ядра — дорого, но возможно |
|
Процесс тиражирования |
Фактически отсутствует. Каждый новый объект — новый проект с полным циклом изысканий, проектирования и строительства |
Является целью. После дорогой стадии проектирования идут относительно дешёвые серийное производство и сборка |
Развёртывание копий ПО на новых площадках (инсталляция, настройка) составляет малую долю бюджета |
|
Пример масштабирования |
Для строительства второго здания по тому же проекту потребуется ~95% тех же затрат, что и для первого |
Себестоимость 100-го серийного насоса будет на порядок ниже, чем первого опытного образца |
Затраты на подключение 10-го или 10000-го пользователя к системе ничтожны по сравнению с затратами на её разработку |
|
Ключевой парадокс [6] для заказчика |
Дешевле семь раз отмерить (спроектировать), чем один раз перестроить |
Инновационный проект (без аналогов) сложно оценить, так как не с чем сравнивать |
Бесполезно требовать полное и неизменное ТЗ в начале, так как продукт должен адаптироваться к рынку |
В машиностроении нельзя создать мотоцикл, а потом превратить его в автомобиль. Для этого потребуется полностью перепроектировать платформу, перенастроить производственные линии, переобучить персонал. Стоимость такой “эволюции” будет сравнима со стоимостью разработки нового автомобиля с нуля.
В строительстве аналогичная ситуация. Фундамент гаража не выдержит нагрузки от многоэтажного дома. Стены сарая не станут несущими для башни. Физические законы не обойти.
Но в IT физических ограничений нет. Вы можете начать с простого веб-сайта-одностраничника, добавить базу данных и админку (MVP), интегрировать платежные системы и мобильное приложение (первая версия приложения), а затем создать распределенную облачную платформу с искусственным интеллектом [7]. Каждый этап строится на предыдущем, но при необходимости можно переписывать отдельные компоненты полностью без полного перезапуска проекта.
Это возможно благодаря:
Нулевой стоимости копирования — можно создать сотню экспериментальных версий без финансовых потерь
Модульной архитектуре — компоненты можно заменять независимо друг от друга
Быстрому циклу обратной связи — пользователи тестируют изменения в реальном времени
В строительстве основной риск — физическая невозможность или чрезвычайная стоимость исправления ошибок. Поэтому:
80-90% рисков управляются на этапе проектирования
Используются детальные 3D-модели и BIM-технологии
Предусматриваются запасы прочности в конструкциях
Стоимость изменений после начала строительства кратно превышает стоимость проектирования
Кстати этап проектирования в строительстве сильно перекликается с разработкой ПО. На этом этапе можно всё менять и переделывать, при этом мы всё еще будем нести финансовые затраты гораздо меньше, чем сама стоимость строительства и стоимость отдельных изменений на этапе строительства.
Конечно в строительстве есть примеры возведения серийных домов (хрущевки, панельки) с удешевлением производства, но в данном случае удешевление было не за счет единого проекта, а за счет использования типовых решений, которые можно изготавливать серийно, как и продукцию машиностроения.
В машиностроении риски распределены между разработкой и производством:
Создаются физические прототипы для проверки концепций
Проводятся ресурсные испытания в экстремальных условиях
Используются CAD/CAM системы для виртуального моделирования
Освоение производства идет поэтапно с постоянной доработкой
Стоимость ошибки, которая выявится после запуска серийного производства может достигать миллионов за простой и переналадку линии, поэтому инвестиции в тестирование и прототипирование оправданы. И бывает очень сложно вносить изменения в готовый продукт серийного производства, потому что изменения могут привести к необходимости полной переделке производственных циклов, а это уже затраты, сопоставимые с разработкой продукта с нуля.
В программировании и разработке ПО риски управляются иначе:
Риск несоответствия требованиям минимизируется через постоянную обратную связь
Технические риски снижаются через рефакторинг и технический долг
Рыночные риски управляются через A/B тестирование и постепенный rollout
Безопасность обеспечивается через непрерывное тестирование и обновления
Стоимость ошибки в IT относительно невысока — можно быстро выпустить горячий фикс или откатиться к предыдущей версии. Это позволяет брать на себя больше рыночных рисков в обмен на возможность быстрого тестирования идей. При этом стоимость подробного проектирования будет не ниже, чем сама разработка, а в некоторых случаях без какого-то прототипа очень сложно определиться с треком дальнейшего развития.
Строительство: Burj Khalifa
Стоимость проектирования составила около $100 млн из общего бюджета $1.5 млрд. Изменения в процессе строительства были минимальны — любое отклонение от проекта могло привести к катастрофе. Тиражирование невозможно — это уникальный объект.
Машиностроение: Tesla Model 3
Разработка и освоение производства обошлись в $2+ млрд. Но при производстве 500,000 автомобилей в год себестоимость единицы становится конкурентоспособной. Изменения в процессе производства требуют остановки линий и перенастройки оборудования.
IT разработка: Facebook
Начинался как простой сайт для студентов Гарварда. Стоимость тиражирования для миллиарда пользователей — доли цента на пользователя в месяц. Изменения вносятся ежедневно без остановки сервиса. Первоначальная разработка стоила тысяч долларов, текущая стоимость компании — сотни миллиардов.
Следовательно сравнение разработки ПО со строительством некорректно именно из-за разного распределения затрат. Поэтому проектное управление в разработке ПО просто обязано опираться прежде всего на итерации и сбор обратной связи, а не на исходное ТЗ и проектные документы.
Золотая середина для IT-проектов:
Архитектурный фундамент – закладывайте понятную архитектуру с возможностью масштабирования, но не надо сразу ударяться в создание микросервисов и прочие архитектурные излишества https://t.me/limsaccreditation/1857 [8]
Итеративное наполнение – добавляйте функции постепенно, получая обратную связь на каждом этапе. Первоначальный план при этом будет постоянно меняться, адаптироваться. Концентрируйтесь на важных и востребованных функциях.
Управление техническим долгом – регулярный рефакторинг – это инвестиция в будущую гибкость. При этом надо пересматривать не только код, но и документацию продукта.
Бесплатное тиражирование — используйте преимущество нулевой стоимости копирования для быстрого тестирования гипотез и масштабирования успешных решений.
Итерации и необходимость обратной связи в it сфере обусловлены фундаментальными причинами, связанными со стоимостью этапов проектирования и разработки. Без итеративного подхода можно впустую прожигать бюджет на никому не нужное проектирование и дальнейшую разработку продукта, которым никто не будет пользоваться.
Как написали в комментариях к мой предыдущей статье, сам Уинстон Ройс — автор термина Waterfall — в той самой статье 1970 года описывал недостатки каскадной модели, предлагая заменить их итеративной моделью. Таким образом дело не в Agile и настроениях разработчиков, итерации – это самая эффективная модель разработки с экономической точки зрения [9].
Автор: Cordekk
Источник [10]
Сайт-источник BrainTools: https://www.braintools.ru
Путь до страницы источника: https://www.braintools.ru/article/23768
URLs in this post:
[1] https://habr.com/ru/articles/972230/: https://habr.com/ru/articles/972230/
[2] забывают: http://www.braintools.ru/article/333
[3] подкрепления: http://www.braintools.ru/article/5528
[4] ошибка: http://www.braintools.ru/article/4192
[5] логика: http://www.braintools.ru/article/7640
[6] парадокс: http://www.braintools.ru/article/8221
[7] интеллектом: http://www.braintools.ru/article/7605
[8] https://t.me/limsaccreditation/1857: https://t.me/limsaccreditation/1857
[9] зрения: http://www.braintools.ru/article/6238
[10] Источник: https://habr.com/ru/articles/981022/?utm_source=habrahabr&utm_medium=rss&utm_campaign=981022
Нажмите здесь для печати.