For anyone who has worked with it or worked on it long enough, you are likely familiar with the criticism, the hate and vitriol of WordPress.

Straight up, people despise WordPress, its codebase, the fact that people not only work on it, but also write about it, build for it, and make any argument for using it outside of its primary use case of being a blog and/or a content management system.

And as a developer – especially one not only new to WordPress, but one who is new to programming in general – this can become really discouraging.

In fact, I’ll go as far as to say that it can make you question not only your ability as a programmer, but your ability to learn the tools, methodologies, and practices of software engineers who work with other languages, tools, frameworks, and so on.

Hate and Vitriol of WordPress

If you’re plugged into the development of WordPress in any capacity – even if you’re a, say, a power user instead of a designer or a programmer – then you’ve no doubt seen some of the articles and their comments that show up every month (or even more frequently) lambasting the software, the idea of using it as a tool for providing solutions for others, and even those who work on it, and build on it.

Personally, when I read articles like that, it doesn’t bother me one way or the other. It used to – definitely – but that goes away.

As far as I’m concerned, same story, different day.

But I remember when I first got started with WordPress, I used to seriously doubt myself especially as someone who was coming from other backgrounds in development using things that were more highly regarded as a tools for “real” programmers.

Behold, I am a real programmer.

Behold, I am a real programmer.

To that end, I can’t help but think of a lot of the new developers who are up and coming, those who are opting to move to WordPress rather than some other choice, and how this may impact them.

I empathize with them – I think many of us do – and I hope that those who are looking to make a professional career out of WordPress by either starting out, or by making a move over to the application aren’t scared off by some of the worst critics.

A Wretched Hive of Scum and Villainy

I’m someone who is 100% for a free and open Internet. I provide this disclaimer because I also believe that the Internet is a wasteland full of every bit of negativity that you can find.

"You'll never find a more wretched hive of scum and villainy."

“You’ll never find a more wretched hive of scum and villainy.”

But the very same medium that brings about that negativity also does  a lot of a good and that’s not to be ignored or forgotten.

Furthermore, I think that developers are some of the most arrogant people in any industry – reading any number of blogs, tweets, articles, and/or comments let alone any face-to-face conversation can confirm this.

We take firm stances on our tools, languages, and all of that fun stuff, and we will defend it to the proverbial death as if it’s some type of a crusade at which our very lives are at stake if any of our beliefs are challenged.

People get religious about this stuff.

The thing is, there’s nothing wrong with being passionate about the things that you’re using, or the things that you’re building, or the means to whatever end you’re work, but as soon as you take it to the point of personally insulting someone’s personality and/or intelligence, a line has been crossed.

Talking Points

The most common criticisms of WordPress that are likely to show up revolve around any of the following points:

  • It’s code base is a mess
  • It’s insecure
  • PHP is a terrible language
  • Building things for WordPress isn’t really writing code
  • …and so on

And you can find arguments for and against every single one of the items above.

Blah Blah Blah

“One Does Not Simply Talk.”

But one of the arguments that I absolutely reject is that people who are true software engineers won’t use WordPress because you can’t apply advanced software engineering techniques when working with it.

Typically, this manifests itself in the form of an argument where a person will drop a couple of software ideas, catchphrases, and/or buzzwords, and then claim that they can’t be done within the context of WordPress.

For example, some will say that you can’t use inversion of control or dependency injection when working with WordPress (and you can). Some say that the event-driven approach is dated (yet many of the most popular design patterns are old and dated – this doesn’t make them any less powerful).

Perhaps you’ll read that applying concepts such as domain-driven design, aspect-oriented programming, or test-driven development cannot be used when working with WordPress.

All of the above are fancy software engineering concepts and strategies, and all of them can be used when working with WordPress.

“Working On” versus “Working With”

There’s a big different in working on WordPress than working with WordPress, but you’re also likely to find people substituting the each phrase for one another when trying to make a point.

It’s a form of equivocation when trying to make an argument.

Anyone who has spent more than, say, a month when working with WordPress in a development capacity knows the different.

Statements that come out about the quality of the WordPress codebase come from working on WordPress. Statements that come about the feasibility of applying software engineering techniques come from working with WordPress.

I’m not defending any of those statements here, nor am I saying that some of them don’t have merit. The point I’m trying to make is that it’s worth knowing the root of the ideas when you stumble across those statements to help understand where the person is coming from.

The Double-Edged Sword

Finally, I guess the point should be made that the quality of the work that comes out of working on or working with WordPress is only going to be as good as we allow it to be.

Double-Edged Sword

What’s a software article without this old cliche?

WordPress core has to maintain a lot of backwards compatibility so there are definitely going to be some nasty parts to the codebase as it has a lot of older code built into the application that can’t simply be taken away lest it break installations for who knows how many installations across the web.

Conversely, as new features are introduced into and/or updated as part of core – which happens almost daily – better techniques are going to be used. Additionally, there are going to be solutions written on top of the platform that are well-organized, coherent, and that use good engineering practices (some of which are subjective, of course).

Perhaps the largest blessing and largest curse that WordPress has going for it is that it’s open source, and widely used.

Make The Best of It

Many of the points that I’ve made above aren’t meant to poor any gasoline or water on the ever-burning-anti-WordPress fire.

Instead, I’m simply trying to share my experience as it relates to working on and working with WordPress as someone who has worked with a variety of different frameworks and languages prior to WordPress in a software engineering capacity.

Prior to working on WordPress, I had the luxury of hiding behind my compiled code, but not anymore. And I take my fair share of flak for it. Yeah – I cringe at a bunch of the stuff that I wrote even six months ago.

But rather than being scared of who’s gonna say what about whatever, I welcome a lot of the critiques that I get from other notable developers in the community because it makes me better, and continues to show that good developers actually choose to work with WordPress (imagine that!), and that they want to see others succeed as well.

Perhaps above all else, remember that work isn’t going away. To that end, I think that it’s our job to locate the intersection of what we’re good at doing, and what we love doing, and try to stay at the center of that as much as possible.

If you stray too far in any direction, it’s much easier to begin hating your work – that makes for some degree of an unfulfilled life.

So if .NET, WordPress, Rails, Node.js, C++, iOS, or whatever else helps you help others, helps you help yourself, then work to stay there, and work to better yourself along the way.