I don’t really hate PHP. Yes, I do. Maybe not. It pays the bills. Either way, for me PHP has been a decade long enduring (endearing?) period of the abusive girlfriend syndrome for me. All the places that I have worked where PHP was employed at some level had major issues. But why is that?
I started my professional career as a perl programmer. Yes, I will admit that. But back in the day, we were paid good money for its short lifespan. Then Sun came along and eradicated us from the market little-by-little along with BEA (which later was acquired by Oracle) with promises to make businesses run better with the whole J2EE ecosystem. I missed out on an opportunity to take a J2EE job with training and have ended up wishing I could have shot my foot off instead.
Later, although I did some J2EE, I ended up gravitating towards PHP just because my webhosting company would support it. It was one of the few existing languages that performed reasonably well without requiring a dedicated server that could cost hundreds of dollars per month, despite not dealing with high loads of traffic.
From that point, I managed to slowly move into PHP from 4 to 5 and now to 7. Luckily, for myself, I had good principals and a decent foundation in software engineering to build what I wanted. Even if back in the day there was no Laravel type of framework, I still could build my own given my experience and knowledge of what I needed.
When I came back from Tokyo and got my first job as a PHP developer in the states, I quickly came to realize that not every software engineer is created equal. In fact, there are some downright horrible ones that managed to get into the industry because they might have at some point programmed their mom’s website and jotted down on a resume that a unscrupulous, dimwitted yet obsequious recruiter found through the typical buzzword…i mean keyword search on some job posting website located and convinced a bunch of hiring managers to give this lunkhead a real job.
The end result has been my life of hell due to people who never had to engineer a real system in their life creating the so-called foundation of the core system that I would inherit. Please shoot me.
Now, I’m not saying Perl nor Java in my experience have been much better. But I find that PHP jobs tend to suck the mostly due to these n00bz claiming to be real engineers creating horrible monumental piles of shit without oversight and leaving companies in a black hole of tech debt.
Part of the problem is that PHP has been possibly one of the most accessible web languages around. I mentioned that early on a person could get a bargain basement deal on web hosting (mine back in 2004-ish was a $9 steal!) where the administrator could provide shared hosting for a decently performing backend language. Compared to Java or Mod_perl and its ilk where you require constant reboots anytime a major change occurred, this was a godsend back in the day.
This allowed people to create quick and dirty dynamic websites. Mysql (which also notoriously sucks but had been easily setup on these webhosts) provided enough for the average joe to get up and running with a simple blog in no time. And because PHP was designed from the start to mix html with simple, dynamic code, it permitted people to get basic work that the average site required done.
What happens when you start to get serious business and deal with issues of scale? What happens when you need massive offline batch processing? What occurs when suddenly all those requests that were being tossed into a semi-normalized database start crushing the system as people generate ad hoc reports?
What happens is called a clusterfuck.
It happens because people never can anticipate their own success (nor failure to be fair). And it happens because basic engineering principals never were applied due to how such idioms were not enforced from an early point in time.
PHP 5 and certainly 7 have managed to amend a lot of these issues. The opcode cache and php-fpm have helped a great deal. Things like PSR and better OOP principals have been introduced. Well thought out frameworks like Laravel have evolved so that a much better groundwork can be established.
But you still have PHP3/4 programmers hanging around. Many of these jokers will never have any desire to improve because they’re a bunch of hacks. And unless you get someone senior enough to recognize just how bad these guys can be, your company might be infected by someone doing the equivalent of a toxic waste dump into your system. You will know one because they think global $db is still a thing (and if I catch someone doing that on my watch, I’ll fire them immediately).
Unfortunately, the damage has been done and PHP7 seems like something that has come along far too late. The court decision between Oracle and Google with regards to Android and Java has been tossed out, thus allowing Java to continue to exist in its current form, which in turn means PHP won’t be the next replacement anytime soon. And Go(lang) is gaining quite a bit of traction. You’re not going to see some idiot start running around doing concurrency without understanding how that works. It takes a brain just to get the basic concepts, most of which these PHP3/4 hacks will never get.
Nevertheless, PHP feels like it’s in its dying throes kinda like how mod_perl was back in 2001. Python is being taught in school, which means the likelihood of good python programmers and environments are much higher and attractive, especially with all these BigData type of jobs. Node.js continues to be the redheaded stepchild but only due to how people need to learn a single language. And Go(lang) will kick ass because of its massive support by Google and the real deal speed gains that I haven’t seen any other popular server side language touch thus far.
But PHP? If all that’s left is WordPress, Drupal, Joomla and Magento jobs, you might as well just find a new career. Maybe take up Uber driving. It seems only slightly less painful.