WordPress Grist Mills

I make websites, both for a living and for fun. And when I’m making websites for other people, a lot of times the process begins by talking other people out of using WordPress. It happens a lot, and sometimes they can’t be convinced. They have a specific budget or half-cocked idea, and they want WordPress. And every time that happens, the site ends up poorly.

Before we begin here, I want to start this thing out with a disclaimer: WordPress is not, at its core, built poorly. WordPress is not necessarily unserious or a bad choice for “real developers”. WordPress was built by Matt Mullenweg (who own a terrific domain) and millions of other people, some of whom are quite talented. CSS Tricks is built on WordPress. The New Yorker is built on WordPress. TechCrunch is built on WordPress. Best Buy… okay Best Buy is a bad example, but my point is, there’s some good reasons for WordPress’ ubiquity. But its ubiquity has become its biggest problem, and that’s what I personally take issue with.

I work at at agency that makes websites for clients. We have a process. We try to figure out what the client wants to accomplish, and codify a plan for accomplishing those goals. We sketch and design, we get client feedback. We code, we get client feedback. Then we launch the site, measure our goals and adjust as needed. This is a very different process than the process of a WordPress Grist Mill.

WordPress Grist Mills exist all over the world, they’re bidding on the same jobs, and their modus operandi is always exactly the same: The Grist Mill says “Oh hey, we can build your website. We build all kinds of websites!” The client is easily convinced because their quote is so much cheaper, and the process begins: They spin up a WordPress instance on BlueHost. They buy a theme on ThemeForest for $40. They buy about a dozen plug-ins for $5 a pop. Finally (and this is where their technical expertise comes in), they staple all these parts together, populate the content, collect the check and split.

The client now has a website. A slow, generic website filled with useless widgets achieving nothing other than something happening on their domain that’s slightly better than a 404 error.

Or maybe not. Some people have made some really good 404 pages.

I’m going to tell you a true story

An acquaintance of mine tells me that the small company he’s working for is having some very serious problems with their WordPress site, built by one of these Grist Mills. I view the source code of the home page and I am concerned. I’m given log in credentials for their backend, and I am more concerned. Everything happening here is a terrible, terrible mess. The company makes safety equipment, but the theme is built for an artist’s portfolio, so the page structure is super weird. There’s a comments plug-in, and then there’s a different plug-in that specifically disables the comments. There are 28 plug-ins total. There are 43 different javascript files. There are 34 CSS files. The site loads the same Google Font three times in a row (including the Latin, Greek, Vietnamese and Cyrilic alphabets), but fails each time due to an SSL error. Google Analytics is loaded twice. Each url ends in .html, and there’s a plug-in to help WordPress render them as php. There’s three different plug-ins which are meant to “optimise” the experience.

So I look at all this, and then I look at the list of things that my acquaintance’s boss wants to see improved, and I tell him that his boss needs to burn the site to the ground and start over. His boss says they just spend $20,000 on this site last year and they’re not prepared to make that kind of expense again. I tell him I’m sympathetic to that, but he’s entering into a situation with me where I’d charge him thousands of dollars just to only sort of slightly improve how the site works, and that doesn’t make sense for either of us. He asks how much it’d be. I tell him a lot because it’s a lot of work plus I really don’t want to do it. He says they found some college kid who says he’ll fix all these site problems. I wish them the best of luck, and to keep my number if it ever occurs to them that perhaps the best course of action is to burn the site to the ground and start over.

The problem that happened here isn’t exactly WordPress’ fault, it’s a problem of terrible site development. But the thing is, WordPress does a really good job of facilitating terrible site development. This whole process was really easy and cost-effective for the Grist Mill to perform, and they’ll sell that same quality of work over and over again. I know how it happens, because I’ve seen this happen many times.

So let’s just say you picked up a client and your client has a restaurant.

He wants a website and he doesn’t have a whole lot of opinions but it should look nice. A lot of people would look at this as a straightforward job, so okay, let’s go with WordPress. You’ll need a theme to go on, so you buy this one. Looks nice, fits the tone, and it’s for a restaurant so this should go pretty smoothly.

Elegance! Parallax! Quail that looks like bread! This will be great.

You start building the thing and the client (who had no ideas when you first talked) suddenly has an idea, and it’s not a very good one: His friend told him this Swarm thing was cool, so he wants to add Swarm check in feeds. That’s not supported here, so you’ll need a plug-in. No problem, you add that plug-in. This theme expects that you use OpenTable, but this restaurant uses some other weird thing, you’ll need a plug-in for that too. The client doesn’t like how this theme truncates 0’s s $5.90 shows up as $5.9, is that a setting? Hope so. It’s got a Twitter Feed and an Instagram Feed, the client doesn’t use Instagram, can that be something else? Hope so. Might need a plug-in. And while we’re scrolling down here, did you notice how deep the actual address is on this website? That’s really weird. The address should be way more prominent. Except the theme expects that address to be in the footer. That might be difficult to move around. Is there a plug-in? Can you do the thing where you hit the address and it opens it up in Google Directions? Does that need a plug-in?

Oh hey, while we’re at it, why in Christ’s name would a restaurant website have an e-commerce section in it? Do you usually find yourself wanting to buy a cheesecake online with a credit card on a restaurant website? Anyway, it’s not appropriate here. You shouldn’t need a plug-in to disable it, just disable it. Although, is there going to be a whole bunch of code that still exists on the site that’s meant purely for that shopping cart thing? Yeah probably. Oh well.

All the change requests are in, and the fictional restaurant website has just been launched by the fictional you. And the fictional you really did a shitty job. But it’s easy to see how you ended up with so much bloat. Out of the box, the theme you picked has 22 different javascript files. Then you added all these plug-ins, and those plug-ins added somewhere between zero and a dozen javascript files apiece, and most of them add CSS files too. Override commands show up frequently in your code, because all these plug-ins (even the ones that are supposed to remove stuff) are just adding stuff. Nothing’s ever changed or removed or rethought, your plug-in system just added code on top of other code until something breaks, and something will break.

Oh, also? This site will get hacked eventually.

One of these plug-ins will have a security exploit in it somewhere. These things are unavoidable and, because of the popularity of WordPress, quickly circulated. Your exploit becomes a known exploit which computer programs troll the internet to find. Eventually, a 14 year old finds your exploit and now your restaurant website is just a picture of a pistol, a Palestinian flag, and the Bruno Mars song “Grenade”.

This site is proudly powered by WordPress.

Your (past) client is now very angry with you, with his website, and with the very concept of websites in general, because your client assumes this experience is typical. And the thing is, this experience is typical.

Even though they’re fun, websites are complicated. They’re long sets of instructions, written in a whole bunch of different languages, which have to render to every possible device at an incredible speed. They have to deliver content created by people who don’t understand how the site works to people who don’t care what the site is, and every failure is a catastrophe.

And websites should do something or else there’s no point. Whatever your store, law firm, rotary club, beer league softball team or vanity site, there’s gotta be some reason that you want your words to go into somebody else’s eyeballs, and if you don’t know what that reason is you shouldn’t feel compelled to invent one. Design isn’t pretty pictures. It’s a system of presenting content.

And all of this is debased when a Grist Mill grinds out another one of these sites. They didn’t lead with About Us because the site needed it, they led with About Us because it came first in the template. They stressed some poor employee out over a useless blog that only exists because the template has a blog feature. They took a bunch of Lorem Ipsum and replaced with the English equivalent. What they make is worse than boring; it’s irrelevant.

And they will keep winning bids.

An earlier version of this article was posted on ballp.it

One clap, two clap, three clap, forty?

By clapping more or less, you can signal to us which stories really stand out.