This is the best response I’ve seen so far, and it is so true. I’ve used Laravel, and I’ve built several full MVC bespoke frameworks myself. Very often, I find myself spending more time trying to understand the mind that built Laravel (or Symfony) than I do writing code, as sometimes Laravel, and most frameworks, don’t follow the path of least surprise. My WTFPM for most frameworks is very high.
I feel that one point that’s really not being covered here is that the framework is really just an interface to I/O, either the database or the web (web is a display I/O Device). People hook way too much code into the framework, and the framework encourages and teaches this practice, and it always bites you in the butt, because then you become trapped with the framework, and often the specific version, and rewriting for the unending updates is very costly. I don’t think companies realize how much cost is involved with being trapped by a framework and version that they can’t afford to update and now must maintain ad-infinitum.
In my opinion, you should be able to swap your entire application, no matter the size, between one framework or another in two weeks to a month or else you’re doing it wrong.
I’m also very against things like ActiveRecord (as it’s done now) and ORMs in general. I just don’t feel they actually solve any real problem anyone ever had. I mean, writing an ORM generator for a project only takes a few hours.
Another thing I dislike are Query Builders. They are useless, because the kinds of SQL queries you can use them for aren’t difficult to write, and the kinds of SQL queries that you actually need to be writing are almost impossible, or really convoluted, with Query Builders.
I’ve been on so many projects where just writing the Query in SQL and doing the processing in the SQL layer where the info is already in memory, and SQL is already designed to do it, gave 10, 20 and even 100x speed increases.
So many things…but you can’t talk to the current generation of new programmers, they really think they’ve got it all figured out.