Po 20 letech praxe bych to viděl takhle - framework je nástroj.
Pokud chceš udělat jednoúčelovou appku bez nějaké vize dalšího vývoje, nepoužívej framework.
Pokud chceš udělat appku, na které bude dělat více lidí a bude vize rozšíření do budoucna, použij framework.
Dobrý framework se pozná tak, že staví na návrhových vzorech. Pokud na něm musíš něco ohýbat, je to buď špatný framework nebo jsi špatný programátor. Čím víc kódu jsem viděl, tím víc zastávám, že nejlepší přístup je Convention over configuration a čím míň framework umožňuje programátorovi prasit, tím lépe.
Programátor, který ti řekne ze používat framework je špatně, bude dost špatný programátor a po takových je pak radost to „dílo“ přebírat. V one-man-show aplikacích to může fungovat, ale tam to taky končí.
Typická aplikace, která je v něčem důležitá řeší logování, zachytávání výjimek, performance monitoring, session handling, background joby, routing, ORM a spoustu dalších věcí, které ve finále umí být dost komplikované a nechtěl bych je psát od nuly, protože tím způsobím hodně chyb, na které už někdy někdo narazil a jsou vyřešené, tak proč znovuvynalézat kolo.