(не мое, взял отсюда - https://mindfactor.livejournal.com/241376.html)
Жил-был Человек, и сделал он себе в первый день Программку - чтобы в 3D чертежи рисовать. Простенькую, понятную, быструю и безглючную. Запустил на своём компьютере - и рисуй себе. Всё на экране, ничего никуда не запрятано, настроек минимум - а чего там в Программе настраивать, когда всё и так нормально ?
На второй день Человек понял, некоторые элементы у него постоянно повторяются, и чем копипастить их из прошлых чертежей (а там ещё надо помнить, где именно нужная штука была нарисована !), лучше создать единый Шаблон простых элементов. Сказано - сделано, вот появился файлик "шаблоны основные.3d", куда человек скопировал всё, чем часто пользуется, и файлик "шаблоны редкие.3d", куда пошло всё то, что сделал один раз и пока больше оно ни разу больше не понадобилось.
На третий день Человек понял, что у него в основных Шаблонах накопилось очень много одинаковых элементов, отличающихся одним или двумя параметрами. Ну там "труба 4мм" и "труба 2,5мм", например. И сделал он в списке шаблонов иерархию - внутри общего списка разбил на папочки "трубы", "швеллер" и "двутавр", а внутри каждой - уже лежали все возможные варианты этих элементов.
В четвертый день Человек дал удобную программку своему другу, чтобы тот тоже пользовался, и друг заметил, что у него марок стали используется несколько разных, и если разбивать элементы внутри "папок" ещё и по сортам стали, то их, элементов, получается очень много, а если создавать внутри этих папок ещё подпапки по сортам стали, то надо проделать очень много работы по копированию и изменению всего одного параметра. И придумал Человек идею наследования - когда есть базовые шаблоны, а есть ещё дополнительно производные шаблоны, которые привязаны к базовым, но у них изменены какие-то отдельные параметры. Так появилась в программе Библиотека Шаблонов, весьма хитро внутри устроенная.
В пятый день Человек взял себе помощника, и захотелось ему, чтобы эти шаблоны были общими для них обоих, и сделал он так, чтобы можно было положить Библиотеку Шаблонов в общую расшаренную папку. Правда, помощник оказался неопытен, так что права доступа на изменение шаблонов Человек ему не дал.
На шестой день пришла к человеку Компания, прознавшая про клевую Программку, и возжелала её купить - сразу 500 копий. Отдельно оплатила консультации Человека по работе с его Библиотекой Шаблонов. А купив и начав пользоваться - пожаловалась на проблему: библиотека шаблонов у них очень большая, программа при загрузке данных из неё скачивает её всю себе в память, это нагружает сеть, когда 500 человек разом работают. Кивнул человек, и написал к своей Программе ещё дополнительный Сервер Хранения Библиотек Шаблонов. Очень понравилась эта идея Компании, немедленно она внедрила её у себя. Но пришёл из той компании сисадмин и поделился бедой - часть людей работают из дома, и они хотят выставить Сервер Хранения Библиотек Шаблонов наружу в интернет, и потому связь с ним должна идти шифрованная, с помощью сертификата. Добавил человек и обязательную шифрацию сертификатом для своего Сервера Хранения Библиотек Шаблонов, и отключение этой обязательной шифрации - в дальнем уголке настроек.
В седьмой день пришла к человек Другая Компания, сказал, что слава об его программе идёт по всему миру и возжелала купить 5000 копий Программы, и 5 Серверов Хранения Библиотек Шаблонов (при условии, что они смогут работать в гео-распределённом кластере) и консультации по работе с Библиотекой Шаблонов, и помощь в настройке кластера. Но сказала Другая Компания, что Библиотек Шаблонов у них будет много и попросила, чтобы в Сервер добавить возможность установки прав доступа - кому что можно брать, кому изменять, кому удалять, кому добавлять. Сделал Человек и кластер для своего сервера и развесистые права доступа, как просили. Пришёл к нему начотдела инженеров и сказал, что права доступа сделал он неправильные. Неудобны ими управлять для такой большой компании, надо сделать иначе. И сделал Человек Ролевую Модель Доступа.
На восьмой день помощник, взятый в пятый день, запорол серьёзный проект, причём выяснилось это уже в самом конце работы. И задумался Человек об сохранении рабочих версий чертежей и сделал он к своей Программе ещё Сервер Управления Версиями по git-протоколу, а сделавши - отправил этот сервер Компании и Другой Компании, потому что купили они в своё время у него ещё и поддержку на Программу. Очень те обрадовались, немедленно внедрили у себя и стали счастливы ещё более.
В девятый день пришёл главный архитектор из Компании и предложил ещё одну доработку к Серверу Управления Версиями - возможность согласовывать и утверждать чертежи нач.проектами прямо в программе. Человек пообщался по этому вопросу ещё с главным архитектором ещё из Другой Компании, понял, что workflow в разных компаниях разные и сделал сразу Универсальный Модуль Согласования Чертежей, умеющий синхронизироваться с LDAP и GoogleID.
На десятый день Человек внедрял поддержку форматов для разных станков ЧПУ, об чем его попросил Третья Компания, купившая и много копий Программы, и Кластерный Сервера Хранения Библиотек, Управления Версиями и Универсальный Модуль Согласования Чертежей, и поддержку ко всему этому. Кроме того, пришлось переписать куски самой Программы, дабы соответствовать новым подходам в управлении пользовательскими данным, который появился в очередной версии популярной операционной системы.
К этому моменту простая маленькая и быстрая Программка превратилась в огромного монстра, обвешанного, как ёлка игрушками, дополнительными модулями, конвертерами, редакторами, коннектерами и настройками, тоннами настроек всего этого. Всё это, разумеется, появилось не просто так от делать нечего - а потому что всё оно было кому-то нужно, причём нужно настолько, что работа по добавлению была оплачена.
А в одиннадцатый день некий Графъ, прослышавший об мега-популярности Программы, скачал с торрентов её версию "Full Mega Enterprize AllInclude", поставил себе и возопил
"Пачиму тут фсё так сложна, хачу проще ! Почему я не вижу простой удобной программы, которую все хвалят ? Почему тут нет кнопки 'сделать зашибись' ? Я простой пользователь, у меня лапки, я не хочу разбираться в 'не найден или просрочен сертификат Сервера Хранения Библиотек', 'отсутствует план по умолчанию по согласованию чертежей', 'нет доступа с Серверу Управления Версиями' ! Почему Человек, которому я не заплатил ни копейки, не сделал так, чтоб мне было удобно ?"
Ценители могут насладиться этими воплями в его, Графъа, записях https://bougaev.livejournal.com/1310138.html и https://bougaev.livejournal.com/1310344.html и в комментариях к ним.