Maintaining Your Programming Focus, Or, How To Make Your Own Grass The Greenest

Let’s be honest with each other. Are you really, truly focused on what you do?

Or do you find your attention wanders to new and shiny things more often than you’d like to admit?

Do you order programming books from Amazon on a variety of different subjects and then find that they end up gathering dust on your bookshelf?

Do you play around and write ‘hello world’ programs in other languages, or create basic scripts, but then never really spend any more time on them?

If you see yourself doing this, you might well be suffering from a lack of programming focus.

Is that so bad?

Now don’t get me wrong. I’m all for broadening your skill base and I do believe that a programmer with more than one tool at his disposal is a more well-rounded programmer (and probably learns faster – see below), but there is a big difference between being proficient in one or two subjects and being a jack-of-all-trades by dabbling in lots of them.

So why does the grass always seem greener and the technology more exciting on the other side of the fence?

Psychologists have puzzled over this attitude for decades, and I’m not about to solve it here, but what I can tell you is that by not focusing on your potential area of expertise, you’re sabotaging your own skill set.

Eh? That sounds a bit harsh!

Yes, it does, doesn’t it. Shall I put it a nicer way?

By not focusing on your potential area of expertise, you’re passing up the chance to be the hottest network/RTOS/Ruby programmer this side of the Atlantic.

Ooo, that sounds much better.

Good.

Did you know that you actually learn better and retain more knowledge when you’re reading and learning about a subject you ALREADY KNOW? (Now, this is a bold claim that I can’t currently back up because I can’t for the life of me remember where I read it (oh, the irony) and I’ve had a glass of wine so my Googling skills are somewhat suspect, but trust me, it’s true).

This is because the brain has the structure in place already and can file new information in context. So deepening your knowledge and becoming and expert is actually less of a challenge for the brain than learning lots of new things from scratch.

And even better, when you learn a subject in depth, it often pays off in terms of mirroring the structure/pattern of other subjects, so you win on both counts.

I’m convinced. Where do I sign up?

Well, just as with all things in life that are worth doing, it does take a little bit of effort.

(Hells bells, that sounds good!)

1) Do more of what you already do.

Stuck writing Java for a boring application?

Write more Java at home and create something you enjoy using the same skill set.

If you’re already employed working in a particular area, you are essentially being given the opportunity for free training every. single. day. Take it and run – you never know, you might even start enjoying your job more.

2) Dust off (and read!) the books that deepen your knowledge, rather than broaden it.

You know the ones. Go and get one off the shelf right now, and read chapter 1.

Even if you think you know it all, you often discover new things when reading a good programming text. Not only that, but you could even write a review about it once you’ve finished (see point 4).

3) Vow to learn something in-depth in a language you already know.

Spend half an hour a day for a week reading and writing code in a niche that you have knowledge of. Get to grips with threads, finally work out what O notation is all about, or understand the ins and outs of lighting in OpenGL. Think how great it will feel to finally know exactly what you’re doing ;-).

4) Write an article for a magazine or online programming resource.

Take something you know, and really get to know it.

Then share it with the world!

5) Regularly read blogs and news about what you do.

Try reading more about what you’re already doing – what you do is exciting to other programmers, remember? They are looking at your grass thinking how nice it is, so don’t neglect it.

So there you have it.

It turns out the grass isn’t actually greener with Ruby, Java, OpenGL, Networking, MATLAB or C.