What do you mean by "running on flat tires that are painful to change or inflate" ?
I mean the few components of a framework that I built were poorly built, too tightly coupled, hard to test, hard to make changes to without breaking something else unexpectedly. You speak like you have both the skill and time to make everything from scratch properly. That is great if you can. For the rest of us, a framework is a very good and necessary thing.
That's a fair point if you can't but you shouldn't detract from those who can. Nor from yourself. Your first attempt maybe meh but then I find idiot moves in the Symfony framework almost daily. Only you can save your codebase, try try again. Frameworks are good to have a bit of a fiddle with to get a leg up and learn from the mistakes of others but none are suited to production use or enterprise. They're just toys to play with and learn but there's a time for play and a time for work.
Most frameworks out their suffer the problems you report. Case in point, symfony doesn't even use their own stuff like DI. Most of their libs cannot be injected into and most use bad practices.
If you can't write a framework yourself after a bit of trial and error or iterative development then that raises questions. You still need to code and be it the framework or what you add on top it's one and the same. It's more like saying you can't code. A framework wont save you.
What will save you is realising you struggle with coding and the solution to that is simple. Practice makes perfect, not frameworks which try to steal the practice from you. Ignore their claims to best practices and aspire to perfect practices. So practice like the wind. Don't leave the nest and then freak out to the point you end up opting for wires. Liberate yourself from frameworks or petty put armbands, stabilisers, straitjackets and padded rooms. Frameworks are more like jails today so plan a break out. It wont be easy but in the long run it'll be worth it. Don't ground yourself.
I think i program like you.
My code is designed to be fast, terse, mostly procedural, highly readable, with as little abstractions as possible. ( this is PHP code )
The framework i use is one i wrote and is 1000 lines long and fits in one file.
My way of developing is fast for me. Maintainable for me. I've been doing this for 10 years. Yes, it looks like php code from 2009, but it looks like DAMN good php code from 2009.
It was never a problem until i started looking for jobs and laravel and symfony terminology kept coming up in interviews. I have not been able to get another job because i am not familiar with how these jails work.
I've tried to get into symfony and laravel multiple times. It just seems like a ton more code to write and way too many layers of abstraction. It's like you're not writing php anymore.
What i don't get is how you can work in the PHP world today without putting yourself in framework jail like everyone else.
I've considered chucking my entire php skillset out the window and learning another language that isn't ran by architecture astronauts yet.
What say you?
I got fed up with it, left two jobs in a row, took a few months off. It can have a serious psychological impact that lingers. I just wanted to go work on the farm and shovel pig... while obnoxious developers wallow in their own php... Even in a much better environment I feel tense all the time. It's not so much the conscious impact but the unconscious impact after some time leaves a stain on your subsystems. You're anticipating attack at every moment and consciously have to expend effort to put that to rest.
The 1000 line framework is definitely a thing that's been working for me.
I'm not sure if I posted my litany of complaints about Symfony here or not but that might be eye opening because they're liars, they're horrible people...
I found an old forgotten codebase on the side not needing to be changed for a long time but that now needed changing.
Symfony has this BC promise so I should have been able to update. They have a page on this promise. I update, oops, they broke BC, very obviously.
They broke this promise because as far as I can tell they don't have real world understanding of how their own framework is used or is meant to be used. Sometimes the framework is fully responsible for HTTP, sometimes not. They changed it to always include the date header in responses rather than making it configurable based on circumstances. No doubt due to growing cases of PHP handling HTTP itself. They seem to have forgot that your webserver can happily manage HTTP for you. What next, setting all the response headers? They just have a comment, the RFC says, which means psychological they're making an obnoxious appeal to authority.
They also broke the cookie handling. It always allowed invalid cookies on input because you can't always control that but would then try to validate them when you set them from the framework so at least you don't make that mistake. The way they did this was poor without very good explicit methods but it worked. They then decided things had to be consistent and input would also be validated. They should have from the start made that an option in any case and again this is the lets blindly appeal to best practices or authority stuff.
I try to downgrade to the version of the module without these changes. They broke BC again, for their own code! After tolerating the CPU and RAM composers ultra accurate dependency resolver used their version dependency settings allows me to install a module version not compatible with the rest of their framework.
Best practices? Injecting anything is a nightmare, extending things, nope not really all that easy, configurating, forget it. I was almost tempted to just pull the module into the repo, exclude it from gitignore and fix it myself. I'm left with horrible hacks and surprise surprise, after implementing my hacks I found the same hacks in their source code fixing BC breakages and letting tests pass. As in I grepped for something I added and noticed they had something of the same name in the same type of helper class, curious, I checked it, yes, they did the same. It was more than one contributor as well which makes me think it's a community of scum.
They appear to have caused another BC break by changing the accessibility of services in DI. It's hard to make heads or tails of things. I wouldn't normally be so mad about BC breaks, just peeved but when I google for it rather than just a humble, oops, we're sorry, we messed up, here's how to fix it I find nothing but self aggrandisement.
When I searched for the DI issue there's one of they yay we're so great receive the glory of our benevolent changes making best even better than best because all our comparison operators are overridden, in fact, we just go rid of them entirely! They were then saying yes you'll have to change things in this case but they love to say something like "but we're so awesome and clever that we have a magic BC layer but you still have to change things and we still didn't break BC so nurh were so awesome". That alone is just confusing as hell. If they didn't break BC, why do I have to change things? Why are external bundles now incompatible?
The worst thing is a user commented in the release blog that surely this breaks BC. Instead someone, apparently a symfony rep, goes on about how awesome they are and that the user commenting is being all mean like. Piling in on this user that at the least has a legitimate concern. Then it turns into this little circlejerk with another user coming in and being a sycophant for the symfony guy like one of those teenage girls on the front row of the latest boyband phenomena and as far as I can tell the symfony staff are just wallowing in this adulation.
Which really gets to the point. They just want people to love then unconditionally. The quality of their code and framework doesn't really matter. It's all just a show. They have one purpose and its their own narcissistic or histrionic tendencies. They've become a religion and aren't impartial to the notion that they're infallible.
You see how nasty they are when they simply call their entire manual which is just copy and paste snippets as "best practices". When they're calling anything they do unconditionally best practices they're saying it's the best, it's impossible to do better. What a bloody arrogant claim. How do they even prove it's the best? What happens when little old me comes along and does it better (tm)? Joey does it better. That's my motto. If it's the best, why does it need to be updated constantly to receive "improvements" so to make my life just that little bit less of a symfony induced living hell?
I've started complaining recently that symfony actually turns PHP into a compiled language. That's because symfony is so slow it needs to be compiled so that it'll run at a halfway decent speed. They then call it a fast framework. They hid this by renaming the symfony:compile command to cache:clear which secretly actually compiles or recompiles symfony. It's basically make clean && make.
A heck of a coincidence, but I was also recently looking through some legacy writings in the task manager from developers long left. One of them commented that you have to do thing:cache:generate because apparently the cache command doesn't other generate caches. Of course it doesn't, it compiles symfony.
These are just recent or specific problems with symfony. Every time I have to deal with it, it's one problem or deficiency after another. Almost every day. It's not just the learning curve. They stuff really sucks. It's not making things simpler, it's making me now have to jump through ten hoops instead of one to get sometimes the simplest things working.
I always make technical complaints but at this point I've been pushed to the edge of realising it'll never technically shine and it'll never be a good framework because the people behind it are just awful. If people lie or deceive about the problems, how are they going to be solved?
We all try to be nice and blame things like people just haven't learnt stuff or just blame the tech but there comes a point where I think we just have to be plain honest, the people suck, that's it, move along until we find nicer things or nice people so that things can become nicer. I don't like bagging on people but after taking an evidence based approach it's the only conclusion I'm left with. If there's one thing worse than the framework, it's the people that make and maintain it.
We're a place where coders share, stay up-to-date and grow their careers.
We strive for transparency and don't collect excess data.