Почему я ненавижу фреймворки

:

Я собираюсь сделать Java-веб-приложение (да, это будет Java, по некоторым причинам, которые сейчас озвучивать не хочу). В процессе работы, я оцениваю кучу J2EE portlet-enabled JSR-compliant MVC role-based CMS web service application container фреймворков.

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

Давайте представим, что я решил сделать шкафчик для специй.

Я уже делал небольшие поделки из дерева и думаю, что знаю, что мне нужно: немного дощечек и несколько базовых инструментов: рулетка, пила, уровень и молоток.

Если бы я строил целый дом, а не просто шкафчик для специй, то мне все также требовались бы рулетка, пила, уровень и молоток (не считая остального).

Итак, я иду в магазин за инструментами и спрашиваю продавца, где я могу найти молоток.

— Молоток? — спросил он. — Никто уже давно не покупает молотки. Это старомодно.

Я был очень удивлен и спросил почему.

— Ну, проблема молотков в том, что их очень много видов. Кувалды, столярные молотки, с круглым бойком и т.д. Что если Вы купите один тип молотка, а потом поймете, что Вам нужен другой? Вам придется покупать отдельный молоток для следующей задачи. Как выяснилось, большинство людей хотят иметь один молоток, который бы справлялся со всеми типами задач, с которыми можно столкнуться.

— Хммммм. Ну, звучит разумно. Можете показать мне такой Универсальный Молоток?

— Нет. Мы их больше не продаем. Они устарели.

— Серьезно? С Ваших слов я понял, что Универсальный Молоток – это технология будущего.

— Как выяснилось, если сделать только один тип молотка, способный выполнять те же задачи, что и все виды молотков, тогда он будет не очень хорош для каждой из них. Забивать гвозди кувалдой не очень эффективно. И если Вы хотите убить свою бывшую девушку, то ничто не заменит молотка с круглым бойком.

— Верно. Но если никто больше не покупает Универсальные Молотки и если Вы больше не продаете все старомодные типы молотков, то какие же молотки Вы продаете?

— Вообще-то, мы не продаем никакие молотки.

— Но…

— Наши исследования показали, что людям совсем не нужен Универсальный Молоток. Всегда лучше использовать нужный тип молотка для работы. Поэтому, мы начали продавать фабрики молотков, способные создать любой молоток, какой Вам нужен. Все что Вам нужно — это укомплектовать фабрику рабочими, запустить механизм, купить сырье, оплатить расходы и — БАЦ — у Вас есть именно такой молоток, какой Вам нужен.

— Но мне как-то не хочется покупать фабрику молотков…

— Это хорошо. Потому что мы их больше не продаем.

— Но Вы же только что сказали…

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

— Да, похоже на то.

— Вместо этого мы начали продавать чертежи фабрик молотков, позволяющие нашим клиентам построить их собственные фабрики молотков, специально разработанные для производства только тех типов молотков, которые им нужны.

— Дайте угадаю. Вы их больше не продаете.

— Нет. Конечно же нет. Как выяснилось, люди не хотят строить целую фабрику, только ради того, чтоб произвести пару молотков. Оставьте строительство профессионалам, вот что я всегда говорю.

— И здесь я с вами соглашусь.

— Ага. Поэтому мы прекратили продавать эти чертежи и начали продавать фабрики фабрик молотков. Каждая фабрика фабрик молотков строится для Вас экспертами своего дела, и вам не нужно волноваться о деталях постройки фабрики. Вы получаете все преимущества обладания собственной фабрикой молотков, производящей молотки для ваших потребностей.

— Ну, это как-бы, не совсем…

— Я знаю что Вы скажете! Мы их уже больше не продаем. По каким-то причинам, довольно мало людей покупали фабрики фабрик молотков, поэтому мы придумали новое решение проблемы.

— Угу.

— Когда мы сделали шаг назад и посмотрели глобально на инфраструктуру инструментов, мы обнаружили что люди разочарованы, т.к. им нужно управлять фабрикой фабрик молотков и произведенной фабрикой молотков. Это довольно обременительно, в случае если вам еще нужно управлять фабрикой фабрик рулеток, фабрикой фабрик пил, фабрикой фабрик уровней, не говоря уже о производстве пиломатериалов. Взглянув на ситуацию, мы поняли, что это слишком сложно для тех, кто просто хочет сделать шкафчик для специй.

— Да. Это уж точно.

— Поэтому, на этой неделе мы представим единую фабрику фабрик фабрик инструментов, чтобы каждую фабрику фабрик инструментов Вы могли произвести с помощью одной, объединенной фабрики. Фабрика фабрик фабрик будет производить только те фабрики фабрик инструментов, какие Вам нужны, и каждая из этих фабрик фабрик будет производить фабрику, основанную на Ваших требованиях к инструменту. Окончательный набор инструментов, полученных в результате этого процесса, будет идеален для вашего конкретного проекта. У Вас будет именно тот молоток, который вам нужен, и рулетка, подходящая именно под эту задачу, и все это по нажатию одной кнопки (конечно вам придется немного поработать с конфигурацией, чтобы заставить все это работать именно так как вам надо).

— Так у вас нет никаких молотков? Совсем никаких?

— Нет. Если Вы по-настоящему хотите высококачественный, промышленно разработанный шкафчик для специй, вам нужно нечто более продвинутое, нежели обычный молоток из магазина.

— И что, все сейчас так делают? Все используют единую фабрику фабрик фабрик инструментов, всякий раз, когда им нужен молоток?

— Да.

— Ладно… Я кажется понял, что мне нужно делать. Если сейчас это делается таким образом, будет, наверное, лучше и мне научиться так делать.

— Очень хорошо!

— Эта вещь идет с документацией, верно?