Branching Out

As a young developer, you probably got some good advice.  Assuredly one of those pieces of advice was to keep challenging yourself.  Branch out.  Learn new programming languages.  Use new libraries.  Don’t let yourself get too comfortable about what you know.

At first it works.  It really works.  But after a while, the insights get fewer, or smaller, or less frequent.  It gets harder to try.  Maybe you even give up.  Does that mean you’re an old fart now that you should take a corporate job and wait for that sweet sweet pension to kick in?

Or are you just overtrained?

There is a concept in sports called Overtraining. It is the long term consequence of thinking that you can get better at a physical skill simply by trying harder.  For a long time such a strategy will work, until it doesn’t, and then it becomes actively harmful.  When someone notices the harm they tell you that you’ve overtrain.

The first thing you do in this case is to slow down, and stop making things worse.  But some think the real antidote is Crosstraining (a fancy word for Doing Something Else).  This involves another complementary sport that uses your body differently.  A cyclist might ice skate, a swimmer might run, or ski.  The theory is that this builds resilience, reducing the chances of injury.  While that’s extremely important, I think it’s something bigger than that, and something we developers also suffer from.

It’s called “being too sure of yourself”.  A new sport is unfamiliar territory.  You’re not the best at it.  You aren’t even good at it.  In point of fact you suck.  Everyone knows and accepts this, especially you. Because of this, you are open to new ideas, new ways of thinking and feeling about the world.  And when you finally return to your comfort zone, you can’t help but take so e of this new information back with you.  And that makes you better.

In some circles this is known as beginner’s mind.  If you have forgotten what that feels like, then I suggest you start a new hobby.  The more uncomfortable the better.

It is amazing how much you can learn about software development by doing something seemingly unrelated.  For example, almost everything important I know I learned while riding a bicycle – an endurance activity requiring perseverance, planning, teamwork, and offering a great deal of time to think, improved blood flow to the brain, and endless stamina.  Just don’t overdo it like I did.

Maybe you’re not a sportsman.  Still plenty of other opportunities.  Juggling has a lot to teach about calmly reacting to deadlines – if you panic you’ve already lost, even if all the balls are still technically in the air.  In some respects cooking works the same way, but with less panic and more planning.  Gardening is an exercise in making plans that will never happen, and constructively accepting and dealing with the consequences of forces outside your control.  Want to get better at algorithms?  Learn the Rubik’s Cube, or a strategy game, like Go (hours to learn, a lifetime to master).

And if you’re horrible at these things?  All the more reason to stay with it.  Humility is another big one that most of us programmers could stand to work on.  You can enjoy doing things that you’re terrible at.  And being comfortable with being uncomfortable will make learning anything new a lot easier.

About innerjason

Software Developer
This entry was posted in Development, Life and tagged . Bookmark the permalink.