One of the things I talk a lot about both with small groups of friends and during speaking events is the idea of going deep rather than wide.

In the context of software, I’m typically referring to the idea of going extremely deep within the languages and tools that you’re using on a daily basis so that you may become the best developer that you can possibly be in that area.

But there’s a tension that I think most programmers feel and it’s that there are so many neat things out there to learn. Couple that with the fact that others can sometimes make us feel inferior if we don’t know what they know, the tension grows even stronger.

I’m not sure if I’m making much sense.

Deep and Wide

Here’s what I mean: Let’s say that you’re a Rails developer and you’re used to working with CoffeeScript, LESS, Ruby, and MySQL.

Then someone comes along and they’re building software with PHP, Backbone.js, and CouchDB.

Yikes! That sounds neat – I don’t know that stuff. Maybe I should start dabbling in that.

So you spend a few hours each day or each week looking into these others languages and tools, and then a few weeks later you’re at a meet up and there’s someone who is an iOS developer and he’s going on and on about the App Store, Objective-C, and Xcode.

Yikes! That sounds neat – I don’t know that stuff. Maybe I should start dabbling in that.

Okay, so now you’ve added yet-another-set-of-things to learn in addition to the stuff you were already focused on.

But wait – now there’s a WordCamp in your local area. You’ve blogging every so often and have used WordPress as a platform, but you had no idea that there were entire camps setup around the application.

So you go and you attend and you listen to some of the programmers start talking about what they are doing with the platform.

Yikes! That sounds neat – I don’t know that stuff. Maybe I should start dabbling in that.

All of this because we met with other developers in other fields doing cool work reminding us what we don’t know.

If it wasn’t already, now it’s kinda beginning to suck, isn’t it?

And now we’ve gone from working with Ruby, Rails, CoffeeScript, and LESS to dabbling in PHP, Backbone.js, CouchDB, Objective-C, Xcode, WordPress, MySQL, jQuery, and so on.

That tension can be a crippling feeling, but it’s ridiculous isn’t it?

What’s Up With Our Industry?

When I look around at other industries – commercial, medicine, construction, law, whatever – people seem to get into their niche and then they stay there for a significant amount of time.

By that, I mean that each industry has its on niches in which people become specialized in that one aspect of said trade and they make a living in doing just that.

Of course, there are exceptions – everything has exceptions – but I’m not talking about people like that.

I’m talking about:

  • The guy who’s been in the commercial glass industry for 40 years
  • The doctor who’s studied internal medicine starting with a chemistry major since he was 18
  • The criminal defense attorney who’s been practicing just that for two decades
  • The teacher who has dedicated her entire adult life to fourth grade students
  • Guitarists who spend their entire lives (some starting before they are teenagers) dedicated to music
  • …and so on

Yet we, as developers, are a weird bunch.

I believe that we want to be the best that we can be at what we do, but we also want to the be the guy or gal who knows about whatever else the other guy or gal is talking about.

But no other industry works that way. People typically go deep into their subject area, become experts, and then push forward doing just that.

While we, on the other hand, have this tension and desire to thrash between every single new language, technology, application, and/or platform that is released.

But It Doesn’t Have To Be That Way

There’s definitely a balance to be struck between staying up to date on current technologies, and knowing how to work well within your niche of the industry.

I’m not necessarily saying we should forgo meeting with other developers, going to meet ups, or reading blogs to get a view of what others are doing; however, I don’t necessarily think that we need to make it our mission to learn everything that’s available under the sun.

How can you become an expert, a sought after expert in your slice of the industry, if you’ve spent so much of your time that you know more about what’s available than how to actually use any of said things?

Be Comfortable, Be Unapologetic

If you’ve ever talked with me at a meet up, in a podcast, or even via email, or even just read this blog, you know that I’m currently focused strictly on WordPress and its related technologies.

I even stopped doing some of the work that I used to do and rebranded my entire company for the sake of focusing on a few good technologies and becoming the best that I can with them rather than spreading myself too thin.

And I make no apologies.

None of this is meant to be about me, either. It’s just a testimonial. I’m simply saying that we – as developers – should be unapologetic about the tools that we use to make a living and to solve problems for others.

The world needs more specialists and less generalists. Problems are detailed, not vague.

And we need to be able to solve them.