Hi guys, I believe this topic can be a little controversial for some.
I'm a web developer for more than 10 years now. I do both frontend and backend. My relationship with this profession is a love-hate relationship. Whenever I'm about to work on medium to large project, I'm leaning towards the latter one.
In my opinion, we still lack a good set of tools for web development. Everything can be done, just like any kind of desktop application could be done in Assembler years ago. The problem is, web development of complex application is no fun. At all.
When I work on relatively small projects, I love Laravel. But as the scale (and number of beings) goes up, Laravel just makes it a little bit less terrible. Here's the list of the troublemakers:
The separation on Models-Views-Controllers is not at all modular in web development world. Controllers are the worst. As classes, they are too limited in flexibility and when we consider binding them to routes, it becomes a nightmare. MVC makes simple things hard.
I love PHP, especially PHP 7. But this language is not dynamic enough for many needs.
Likewise, too limited and painful to work with. Something as common and simple as dependency injection, must be done through trickery. Same for testing. Repository pattern to make our model testable in some reasonable level. WTF? So much work to do such a simple thing.
The ancient protocol of request-response and URLs. We need to name every single "page". Before HTTP/2 becomes a main standard, we even need to be sad about the number of assets on our product.
Too limited. Preprocessors help, but it's still struggling with tons of names. I would rather want to describe entire layout by CSS and not using separate elements for each "wrapper" etc. :before and :after help a little.
Ajax is a fancy name for the most basic operation that, if we want to make it good, we need to treat as something "extra" (to make our JS unobtrusive).
We need to count every kb and every single request, because Internet connections are still unreliable.
Not at all suitable for programmed products, in my humble opinion. Not too many good alternatives though, because discs are still too slow and SQL makes it "fast" (relatively) to search for data. But we should avoid selecting all columns etc. Yeah, that's so "great" for our flexibility. Especially if we use columns in our model's methods. If we didn't select them before, then oops!
This is what I have for now, but there are more painful aspects of web development. I didn't include "difficult" aspects, like the need of protection or very strict validation, because those will always be needed in shared data world. What I mentioned, are technology limitations that we are having have today. I think web development should not be done in general purpose languages.
I am very curious of your opinions! :)