Recently, I consulted with a PHP developer on a code fix. Unfortunately, he wasn’t familiar with WordPress and couldn’t help much. I later heard that he thought the site I was working on (still in BETA phase, I might add) was a horrid mish mash of code snippets.
I was a bit upset to hear how he felt. In a way, he was right though. I came to WordPress development after many years in traditional web development. Sites were simpler then. Code was more efficient as there were far fewer resources to keep track of and whatever was there, you put there by hand.
The WordPress system is more like a tree. WordPress is the trunk and the plugins are all the branches and leaves. Anyone can stick pretty much anything into that trunk. The result is a site with powerful yet discordant coding. The more stuff you cram into that trunk, the more stuff you have to maintain and customize. This is why a good chunk of my job is getting scripts to play nicely with each other and that isn’t going to change anytime soon.
Sadly, this also leads to what I like to call “WordPress Rot”. To be fair, this is true for any major CMS. Each one of the site elements is a constantly evolving function subject to a dizzying array of constant updates. These scripts, often, do not deprecate gracefully. If one thing is updated and another is not compatible, it can be like an atomic bomb to your site. Or, it can be a death by a thousand tiny glitches and errors. Either way, it often goes poorly. Your only options are hiring a web developer to keep things up to date with minimal issues or to completely turn off all updates, forever. Get a system going and then shut down the updates.
This though, is the way it is right now.
Much as I might sometimes yearn for the old days of web development, I think it is a phenomenal trade-off. I can now do things that I never would have dreamed of ten years ago. What I put together, especially on the more complex sites, is now more of a custom software solution than a website. By utilizing a vast wealth of ready to go code, I can focus more on the big picture. Instead of hand editing each forms php, I can now focus on building forms capable of, for instance, on the fly calculations and payment integration or complex data processing while simply fixing the styling and compatibility issues. It frees me as a developer to truly weave something powerful together for my clients.
So, as with any increasingly complex system, there are more issues to deal with but there is also far more flexibility. In time, the WordPress trunk and the plugin branches will work together almost seamlessly. For now though, it is an inevitable price to pay for progress.