Сравнивая две системы на предыдущем месте работы и на текущем, можно сказать, что первая была архитектурно красива. Но в ней не было ни одного фреймворка, только стандартная ява.
Вторая, которую я сейчас переделываю -- включает их три:
спринг
хибер
рич фейсес
И она архитектурно уродлива.
Беда.
Даже со скидкой на огромную разницу в уровне разработчиков, очевидно, что фреймворки не панацея.
Нужно четко разделять понятия:
1) что полезно для резюме
2) что полезно для маркетинга
3) что полезно для дела
Фреймворки полезны, для резюме. Все хотят, чтобы у разработчика было много фреймворков в резюме.
Фреймворки полезны, для маркетинга. Можно убедить заказчика, что использования фреймворков уменьшит риски по поддрежке кода в случае смены подрядчика. (Это не так, но все верят что так, на самом деле решает только стиль программирования, уровень разработчиков и наличие документации).
Но, для дела они очень часто не нужны. Их "необходимость" и "выгодность" не обосновывается ничем, кроме больной фантазии старших разработчиков или самодеятельностью программиста (см. п. 1). Нельзя подменить культуру делать что-то хорошо, например, программировать, "умением" использовать модные и мощные инструменты. Подмена умения и понимания того, как правильно класть кирпичи, на покупку супер мастерка от Юдашкина, не принесет каменщику дополнительного дохода.
В случае с нашей системой, хибернейт дает (и это уже проверено) ощутимые минусы к скорости разработки по сравнению с jdbc. И речь не о том, что разработчики слабые, а о том, что для фиксированных разработчиков, которые далеко не первый раз используют хибернейт, время на разработку больше, чем в случае с jdbc.
Спринг (quarz) используется только что бы запускать job по расписанию, причем через Томкат. Хотя с этим бы прекрасно справился бы Крон.
Рич фейсес дают небольшой профит, но возможностей JSP и стандартной библиотеки тегов хватило бы с избытком, к тому же JSP проще сверстать.
С другой стороны, умение думать, делать такие системы, которые со временем не требуют усилий на рефакторинг, и применение на практике таких вещей как code reuse, например, ни одним фреймворком не заменяется.