Sebastian Schlein on why you should stick to the default Laravel architecture:
Projects which are built by teams of developers and that take months to build, need to be easily maintainable. They should be easy to understand and follow as much default conventions as possible. Why? Teams change.
How do you prepare a project for changing teams? Stick to the most common standards and use boring technologies. So if you use Laravel, do not introduce an additional architecture on top of it. It takes more time to build this architecture, and every time a new developer joins the team, you need to teach your way of doing things. It takes time until they become productive, and if a deadline is near, you miss the opportunity of outsourcing a feature to a freelancer to get everything done in time. The custom architecture requires time to learn, and this is exactly the resource you don’t have at this moment. Goal failed.
I am of the same mind as Sebastian. When I started with PHP, no frameworks existed, and as soon as I tried one, I was immediately hooked because of the advantage that any developer anywhere in the world, with knowledge of the framework, could jump in on day one and know what is going on. As soon as you start changing the defaults it adds even more overhead to the whole codebase.
It’s like going to your regular grocery store. It’s comfortable, you know where things are and can be in and out without much fuss. Then compare that with being on vacation where you have to visit a new grocery store. You can’t find anything, what typically takes ten minutes now takes thirty, and it’s super frustrating.
Sticking to the defaults also pays dividends on projects that are not long-lived. I have apps that are many years old that still work and only require the occasional bug fix. Because I stuck to the defaults I can quickly jump in, make the fix, and go on with my day. In apps where I’ve changed them, it feels like it takes half the day to relearn how it works and why it works.
I prefer simplicity, and the defaults are simple.