Обязательно ли использовать какой-либо фреймворк?
Если проект будет активно развиваться, то без фреймворка не обойтись. Но давайте попробуем рассмотреть поближе разные варианты.1. Использование готового фрейморка, с которым вы уже работали
Если фреймворк достаточно популярный и вы хорошо с ним знакомы, то есть работали несколько лет, знаете его возможности, сильные и слабые стороны, то такой фрейморк позволит существенно ускорить разработку проекта, особенно на начальной стадии. Под такой фрейморк уже наверняка написаны готовые модули, которые позволят ещё сильнее упростить разработку. С хорошим фреймворком первую версию готового проекта можно написать меньше, чем за неделю.
Но будьте готовы к тому, что выбранный фреймворк станет самой большой зависимостью в вашем проекте. Если через несколько лет вы решите сменить фреймворк, по трудозатратам это будет примерно равносильно смене языка программирования для проекта. Причины сменить фреймворк бывают самые разные: фреймворк устарел, не удается найти специалистов с опытом работы на данном фреймворке; фреймворк прекратил развиваться; фреймворк сильно замедляет работу приложения; возможностей фреймворка перестало хватать, а написание собственных модулей требует больших временных затрат.2. Использование готового фрейморка, с которым вы никогда не работали
Готовьтесь потратить массу времени на его изучение. Порой даже на решение тривиальных задач в некоторых фреймворках придется потратить несколько дней, если вы с этим никогда не работали. По собственному опыту могу сказать, что если сравнивать варианты (2) и (4), то готовьтесь потратить в 3 — 4 раза больше времени. Однако у этого варианта есть и плюсы: вы освоите ещё один фреймворк и в следующих проекта сможете выбирать вариант (1), другим разработчикам знакомым с данным фреймворком будет гораздо проще разобраться в коде, последующая разработка и развитие проекта существенно ускорятся.3. Использование собственного фреймворка
Рекомендуется только строго после того, как вы несколько лет поработали с разными фреймворками, точно знаете их недостатки, четко можете сформулировать, почему в данном проекте не подходит ни одно из готовых решений. Плюсов у такого решения масса, но основной — ваш фреймворк будет оптимальным образом решать именно ваши задачи, он не будет «комбайном», пытающимся угодить всем вокруг. Но и минусов хватает, крупные фреймворки как правило развиваются огромным сообществом, сотни и тысячи разработчиков ежедневно находят и исправляют в нем ошибки, расширяют функциональные возможности, улучшают производительность, заменяют устаревшие решения на новые.4. Вообще без фреймворка
Такой проект сильно рискует превратиться в спагетти-код. Но абсолютное большинство новичков начинает именно с этого. В этом нет ничего страшного, если это ваш первый проект, вы освоитесь с языком и его возможностями, набьете кучу шишек, и неизбежно рано или поздно перейдете к вариантами (1), (2) или (3).
Тиражные решения легче в поддержке.