Software Engineering in WordPress and Musings on the Deep Life

You’re Not a Computer Programmer

In this video, DHH – author of Ruby on Rails, partner at 37signals, and one of the developers that I admire most – talks about the idea of a pure programmer and whether or not programming is going to get easier as time progresses.

In the past couple of years, I’ve begun to drastically narrow the focus of my efforts into a few select technologies and there are three things than Hansson says that really hit home with me both as someone who has worked in software for several years and as someone who is now working primarily with open source software.

1. You’re Not

There’s no such thing as a pure programmer.

Decades ago, I think that it was much easier to get by with actually calling yourself a computer programmer because there were really only so many ways that you could program a computer.

Now, we have Microsoft environments and Apple Environments. There’s iOS, Android, and there was (is?) Blackberry. There’s web development and within that there is client-side development, and there’s server-side development. You can work on the database, the application, or the presentation.

In each of these areas, there are n-different languages and m-different tools and unless you know every single platform, language, and permutation of each, then you’re not a programmer – you’re a type of a programmer.

I find that to be liberating. Rather than trying to keep up with whatever everyone else knows, I’m able to define the type of programmer I am and continually work to refine that.

2. Question Everything

Being a newbie is such an important stage because that’s where you question everything.

Earlier in my career, I would’ve pushed back hard against this, but I find that I agree with this now more than ever.

Most people who have been writing code for several years will likely identify with this: When you’re stuck working on a bit of code for a significant amount of time, the solution often comes up when you least expect it – namely, when you aren’t working on the problem.

And here’s the catch: the solution is often much easier than you were trying to make it.

We’re so used to solving problems certain ways, that a slight variation of a familiar problem has us approaching it in a familiar way rather than seeing it for what it is – a new type of problem deserving of a new type of solution.

Though I don’t know how to maintain that newbie perspective, I think it’s important to make sure we keep our brains working in other ways rather than just in terms of programming – exercise, draw, read, music, etc.

Basically, do something that keeps your mind thinking creatively.

3. Keep The Blood Flowing

It’s really important that we keep this flow of fresh blood coming into the community.

Making generalizations is often dangerous and I try not to do it, but one of my biggest complaints about programmers is that they’re often arrogant. It’s as if they believe that they are in on a secret – that is, how to build software – and they carry a sense of elitism around those who aren’t in on it.

What’s interesting to me is that every industry can do that, but few of them do.

Sadly enough, I see this happen in the WordPress community. There are WordPress developers who hold themselves in high esteem because they’re familiar with the core WordPress application, the API, and the “right way” to do something.

What’s worse is when these developers encounter less experienced programmers – or newbies – and they call them out publicly offering little-to-no-constructive feedback. Ironically, the open source community is supposed to be known for just the opposite – a large group of people working together to improve a single application.

That attitude works against the ideologies of open source. I’d much rather be known as someone – regardless of experience – who is able to learn from others more experienced and help those less experienced.

So What?

Every group of developers – be it .NET, PHP, Rails, JavaScript, WordPress, and so on – needs to make a concerted effort to make sure our respective communities are inviting for aspiring programmers and to make sure that we’re taking their approach to solving problems seriously even if it’s different than how we’d do it.

It may not always be right, or it may be something that no one else in the community has considered.

Regardless, they’re only going to become a certain type of programmer by being able to participate in a given community when that community takes them and their ideas seriously and they, in turn, continue to do the same for future programmers.


  1. Andrew Lee

    Great post! I’m in the “newbie” position myself and slowly figuring out that I need to focus on something specific rather than try and be a full-stack developer. I’ve tried learning a little about everything but I’m finding that more clients/employers want an expert rather than a jack-of-all-trades kind of guy.

    • Tom McFarlin


      Honestly, sometimes I think it’s a mixed bag – I remember doing some interviews where I was grilled on a plethora of technologies. If you end up missing questions, it can be a bummer.

      But I really do believe going deep rather than wide when focusing efforts. In school, I did a ton of Java and C. Years after, I did .NET followed by Ruby on Rails. And for the past couple of years, I’ve been focusing deeply on WordPress.

      Unfortunately, I didn’t learn this idea as quickly as I liked. Despite the fact that I enjoyed what I was doing, I felt as if I needed to “keep up with the Joneses of computer programming.” That’s a slippery slope, though because you can spread yourself too thing very fast.

      Find a set of languages and tools that make you happy, learn them, and do good work.

    • Nathan @ Headhuntable

      It always helps though to have knowledge of different technologies because then you can suggest/know whats the best technology to use for what. If you only know a select few then you could be missing out on using a technology that’s going to save you time/money.

  2. Japh

    Excellent post, Tom! I have a feeling I’ll be linking people here pretty regularly.

    As a senior developer who’s lead teams, questioning and thinking laterally are qualities I’ve tried to encourage. There’s been more than one occasion where a junior developer has an idea, gets halfway through saying it and stops with a “Nah, that’s probably a silly idea”. I always encourage them to continue through with it.

    Why encourage someone with an idea they’ve decided was silly? Usually that decision is more about a sudden fear of being wrong than that the idea really was silly. Also, the outcomes are win win.

    If the idea works, hooray a solution!

    If it doesn’t, there’s an opportunity to work through *why* it doesn’t, so next time that same idea might be usable in a different scenario rather than binned altogether.

    • Tom McFarlin

      Thanks for this Japh!

      I’m with you – whenever someone says “I’ve been trying to solve it this way but, I dunno, it feels like the wrong way to do it,” I usually like to talk through what they’re thinking.

      Sure, sometimes it is the wrong way to do it; other times, it may be a way to do it that I’d not considered.

      There’s this whole reciprocal nature that benefits both developers and newbies that can come from talking through solving a problem using code.

Leave a Reply

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

© 2023 Tom McFarlin

Theme by Anders NorenUp ↑