Banner, repeats post title

How WordPress Taught Me To Be a Better Developer

I might seem like a curious choice to write a post at HeroPress. I haven’t done any WP dev since around 2.0. I’ve done some work here and there setting up a couple WP installs since, but it’s been years since I was on a first-name basis with the code of WP.

After having written some fairly complex plugins, I was pretty cynical about it. Generally I felt that it was a pretty solid front-end, but the codebase was a mess. It may still be a mess, I dunno. I do remember being super disappointed that WP didn’t go all-in with PHP5 when it stabilized, like some other CMSes. I also spent a fair bit of time criticizing what I felt were technical shortcomings or the codebase. A quick glance at the current codebase tells me it hasn’t changed much in it’s approach, and were I to judge the project just based on it’s codebase, I’d say it was… problematic.

I was at php|tek 2013, and one of the keynotes was by Andrew Nacin. Andrew knew he was speaking to a room filled with a lot of folks who felt like I did — that WordPress was somehow an embarassment to PHP because it wasn’t following current best practices. Some people took this quite personally, and spent a lot of time on Twitter during his keynote expressing disagreement with his assertions.

I, however, found myself in wholesale agreement with Andrew. From the talk description:

Why is [WordPress] so ubiquitous? The answer lies … in a core philosophy that holds the user above all else.

The WordPress lead developers weren’t stupid, contrary to what so many people thought in that room. They just put the concerns of users over developers.

The purpose of the project is to empower users

The purpose is not to make developers’ lives easier.

That meant making hard choices about living with legacy code, and being very, very careful about breaking backwards compatibility. Several of Andrew’s slides showed how utilizing newer PHP libraries or extensions would make it impossible for hundreds of thousands — sometimes millions — of WP users to run it on their current hosting provider. API changes due to major code refactors would break popular plugins that users rely on, and likely splinter the WP add-on developer community beyond recognition.

“Fixing” WordPress would in fact make it useless to many, if not most, of the users.

Ultimately I believe that this is the correct approach. The purpose of creating software, web or otherwise is to empower people to do things that they’d otherwise find more difficult or impossible.

Web technologies are building blocks. We use them to build solutions to people’s problems. The point is not the thing we make, nor is the point how we make it. The point is to help the user.

Have we given them more time to do other things by making a task take less time?

Have we given them access to information they didn’t have before?

Have we empowered them to create something they could not?

Have we given them a voice they didn’t possess until now?

Those are the kinds of questions we have to ask. Anything that we choose to do must be in the service of those questions.

Harper Reed described technology as a force multiplier, and I think it’s important to consider it in that respect. The intent is the matter of the user; the things we create take the user’s intent and amplify it.

This is key to really being great at what we do — we empathize with the user, understand their intent, and create something to amplify their intent.

Sometimes they need a bit of help applying their intent in the most effective ways, but our technology and technique choices can only serve that intent. The work I’ve done in the past few years hasn’t led me to use WordPress, but that doesn’t mean it’s not a very powerful, very useful tool for many people.

The philosophy of the project continues to guide my thinking as a developer, a speaker at tech conferences, a school board member, and an advocate for mental wellness. In all of these, I have to find the intent, such as allowing a business owner to communicate more easily to customers, or to help others have satisfying careers, or to educate kids in the most effective way possible, or to help others who struggle with mental illness get the help they need.

Then I have to find what I am able to do that serves that intent. Sometimes it means making a web-based tool. Sometimes it means practicing my technique to be a better speaker. Sometimes it means writing a letter to a frustrated parent. Sometimes it means pushing myself to do things I’m afraid to do, because it will make a big difference for people who are hurting, and are to afraid to ask for help.

Banner for OSMI, Open Sourcing Mental Illness

Ultimately what I find most satisfying in life is not the particular actions I’ve chosen, but the impact they have upon the people around me.

When I spoke at the Kalamazoo X conference this spring, I was tasked by the organizers to come up with a six-word memoir. It was an exercise that made me reflect on where I’ve been, where I hope I’m going, and how I want to be remembered. This is what I came up with:

“By helping others, I save myself.”

That’s what WordPress taught me.


  1. I agree whole-heartedly with what you’re saying here. I have a bunch of friends, developers, who have a perpetual complaint about how WordPress would be better off using MVC or how the templating system is so inefficient and unstandard.

    What most people fail to realise that the templating system empowers the people who would use it the most – designers. Simple template tags within the html is easier to work with for designers rather than a robust and less messy templating systemthat requires them to write or deal with PHP code.

    The WordPress code has always evolved in a way that removes the barriers for newbies and tinkerers from taking things in their own hands and get things done rather than relying or depending on someone who understands programming paradigms. From there, based on your interest and acumen, you could go anywhere and do anything with it.

    That’s probably the number one reason why WordPress is bigger than a lot of slick, efficient and robust systems that conform to the idea of well-architectured code.

  2. Speaking as a Perl person, backward compatibility (backcompat in Perl speak) is damn near religion amongst the core Perl devs so I totally get what you are saying about not breaking things just for the sake of making things “better”.

    Making hard things easy and impossible things possible is what good tech should do.

  3. I love how you put that, Ed. Building things to amplify the intent of the user.
    I really respect word press because it is so careful to preserve backwards compatibility, while trying to move forward. This is no easy feat.
    Thanks for writing this essay, we need people that are outside that the inner bubble to share their thoughts more often.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.