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