Anyone who has touched a WordPress website knows it needs to be updated. Often.
The core WordPress code itself needs to be updated, any themes or plugins installed need to be updated, and sometimes even one of the core underlying technologies of WordPress – the software language PHP – needs updating. And as Michelle covered in her post about hacking, many of us have had the experience of clicking WordPress’s “Update All” button, shouting “YOLO!” and then crossing our fingers while sweating out a page refresh to see if anything broke with the updates.
As we’ve worked through this PHP upgrade, we’re noticing that we’re running into problems updating in the same sites that get tripped up with more run-of-the-mill WordPress updates. Related, these are the same sites that we see running into performance issues simply because there’s too much going on (more plugins = more code = more stuff for your web browser to deal with). What do these sites tend to have in common? I’ll explain that in two phrases:
Plugin Inflation and Technical Debt
I’ll be honest – I just made up the phrase “Plugin Inflation” (note: I’m not an economist and can’t speak intelligibly about real inflation, but I’m also not above using a currently popular topic for clickbait). I think of Plugin Inflation as the process of repeatedly throwing plugins on a WordPress site to add bits of functionality. Before you know it, what started as a lean, quick site has inflated into more of a behemoth, with dozens of plugins piled on top of each other.
“Technical Debt” is a real phrase, with a Wikipedia article and everything. They define it as “the implied cost of additional rework caused by choosing an easy (limited) solution now instead of using a better approach that would take longer,” and it’s the natural outcome of Plugin Inflation.
The sites that have problems with updates are usually the ones that are more complicated, which means they typically have more plugins installed. I’m pretty sure right about now you’re saying, “but I don’t want a boring site,” or “I need that functionality,” and I hear you. We don’t want to build boring, useless websites any more than you want one! But there are steps that we can take to make for a more sustainable website when we’re thinking about adding or implementing new functionality.
Before installing the plugin, ask yourself if you really need the functionality you’re adding to your website
I get it – adding functionality to your website is usually fun! But it’s important to ask yourself if it’s bringing value that’s worth the technical debt you’re adding. It might be cool to add a zoomy interactive map of your locations, but if it slows down the site and breaks whenever things get updated, it’s probably not worth it (especially if your users aren’t actually interacting with it).
Don’t get me wrong – sometimes you absolutely do need the functionality. Running an ecommerce site that needs to ship overseas? You’re going to need a plugin (or probably multiple) for that. When that’s the case (and sometimes when the functionality is mostly for fun), it’s time to move to the next step:
It’s not really possible to completely know which plugins are going to cause issues down the road, but there are a few heuristics that can help:
- Is it recently updated?
- Does it have a lot of users?
- Does it do only (or mostly) the thing I want it to do?
For free plugins from the WordPress repository, the first two are easy to discern. If a plugin has only 10 active installations and hasn’t been updated in 2 years, it’s basically the equivalent of gas station sushi. Maybe it’ll be great, but more likely, you’re going to regret it later. We try to stick with plugins with installations in the thousands (or even millions) that have been updated within the last month or so.
The last bullet might be harder to figure out, but it’s still important. It’s a common scenario to need a plugin for a specific thing (say, adding a map highlighting the 5 states you work in) and then add a plugin that does that plus many other things you won’t use (like comes with 200 other maps, zoom effects, tooltips, country flags, etc.). This might be fine and work out in the end, but if you’re only using 10% of the plugin functionality, your website is still carrying the other 90% around with it, likely making it slower and definitely making it more fragile.
So if you’ve decided the functionality is needed, the ideal situation is to find a plugin that does only what you’re looking for, does it well, has a large user base (suggesting it works), and is current. Sometimes that’s not available, which brings us to the last option:
Add Functionality Without a Plugin
This one requires diving in and adding some custom code, which most people hate to do, but I lurve (if it’s not obvious by the time you got here, I’m a big geek). Many times, especially with simpler functionality, the best option is for us to build it ourselves. It’s more work up front, but comes with advantages:
- It’s slim. We can build it to do the bare minimum of what’s needed, making it less likely to cause site slowdowns or conflicts with other plugins and functionality on the site
- It’s customized. It does exactly what you need it to do.
- We understand it. If updating another plugin does happen to conflict with the new functionality, it becomes a lot easier to troubleshoot down the line;
Summing up: Keep it Simple (if you can)
To reiterate, our first question when considering new functionality is always going to be: is it necessary? If something is not going to advance the goals of the site, it’s rarely worth adding the complexity. When it is needed (or sometimes just wanted), we’ll work with our clients to be thoughtful about how it’s implemented, working to keep the site as lean as possible. In a world of escalating (plugin) inflation, nobody wants (technical) debt.