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.