Если пишите в образовательных целях, то возьмите какой-нибудь мэйнстрим фреймворк (Symfony2 или Zend2 для php например). Главным критерием фреймворка берите сложность. Не берите фреймворки где слоган гласит "начните писать крутые приложения уже через неделю ковыряния", ибо в итоге вам придется обжечься на базовых вещах по 10 раз прежде чем придет какое-то понимание о проектировании web-приложений. Лучше уж брать что-то, что заставляет писать правильно, или хотя бы дает направление верное для развития. Можно так же взять какой микрофреймворк, аля Silex, Slim и что там еще популярно нынче. Это я описал по ситуации в php, для других языков (типа руби к примеру), чуть менее остро стоит проблема выбора инструментов, ибо большая часть инструментов проектировалось нормально. В php много такого (это относится и к встроенным функциям, и к инструментам и к фреймворкам), что потворствует говнокоду.
Используйте TDD (PHPSpec)/BDD (Behat, PHPUnit) сразу, заодно прокачаетесь.