Вспоминаю, что в середине двухтысячных довелось столкнуться с поистине индустриальным подходом к разработке. А конкретно, с серьезным разделением труда. Вот как это было устроено.



Проектом являлось огромное мультикомпонентное и мультисистемное десктопное приложение, над которым работали несколько сотен программистов. Разработка велась на с++, при этом была использована его особенность разделения на заголовочный файл и файл реализации.



Архитекторы и лидеры подсистем проектировали классы и компоненты, зачастую визуально на UML и достаточно подробно, вплоть до всех полей, методов, и спецификаторов доступа.



Из этих диаграмм генерировались заголовочные файлы, которые описывали классы: данные и протоколы. После генерации заголовочные файлы сотнями и тысячами поступали к разработчикам, где code monkey писали имплементации и компонентные и сценарные тесты.



Написанные компоненты и подсистемы попадали в команду интеграции (буквально 10-20 человек), которые собирали их в приложение, приложение проходило сценарные тесты, зафиксированные ошибки потом сортировались и возвращались либо в команду интеграции, либо к имплементорам.



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



К чему это я? Да вот увидел рекламу курсов "стань экспертом-разработчиком за полгода", и внезапно понял, где эти эксперты могли бы идеально вписаться.