L_G>2) Не нужно ничего изобретать/исследовать, нужно лишь использовать методы/библиотеки/фреймворки/паттерны, давно уже придуманные/написанные или разрабатываемые и поддерживаемые в актуальном состоянии, но другими людьми.
L_G>3) Система давно написана и работает, так что доля поддержки/мелких доработок/багфиксинга сильно велика, а крупных новых задач мало.
L_G>4) Система ОЧЕНЬ давно написана и работает, так что приходится разгребать наслоения копролитов, оставленных поколениями программистов, давно нас покинувших. Пытаясь понять, как и куда нужно пристраивать новую часть, можно обнаружить, что никакой "единой архитектуры" нет, а есть черте-что и куча бантиков сбоку.
L_G>7) Даже минимальная проверка работоспособности своего кода или воспроизведение бага по описанному сценарию (о тестировании как таковом не говорю) часто требует побыть в роли пользователя разрабатываемой системы, а это бывает крайне скучно и муторно. И вряд ли программист сможет получить удовлетворение от своего труда, сам убедившись, что то, что он сделал — реально хорошо. Работает, тесты прошло — и ладно.
Это без ентерпрайза вполне бывает.
Вот просто в точности, что ты описал — я столкнулся...
Пункт 2. Когда-то в мезозойскую эру программирования (до появления интернета) мы все писали сами, так как не было возможности найти чужую библиотеку и ее использовать. Например, в одном договоре мы придумали язык для разработки, скрестили PL-1 и Lisp, на этом написали интерпретатор нашего языка и на нем уже написали сам договор. От подписания договора до подписания акта приемки прошло 3 года.
Сейчас в инете по любой теме дофигища фремворков. Берут просто готовое. Это сокращает время на непосредственно разработку, но требует освоения сторонних библиотек, документация для которых частенько отсутствует. И о подводных камнях в чужих водах забывать никак не следует.
В этом плане мне очень нравится Go — у него в стандартной библиотеке есть почти все. А чего вдруг нет — легко написать и подключить свой пакет.
Пункт 3. Абсолютно так и есть.
Пункт 4. Все так, как ты описал. Я столкнулся с С++java+Go+Python+bash. И еще есть C#. Само собой и json, и xml, и yaml и т.д.
И еще есть части, куда я вообще не смотрел — не входит в обязанности.
И все это как-то собирается кучей разных инструментов и работает вместе.
Пункт 7. И вот это — самое неприятное.
Так как для проверки даже небольшого рефакторинга нужно пересобрать новую версию измененной части и подключить ее к работающей системе.
Но мне все равно интересно, поскольку я давно не был в реальном промышленном программировании и многие вещи пришлось осваивать буквально с нуля.