Marksmen and Developers

One of the things I enjoy about the sport of shooting is the almost Zen like mental state you have to get yourself into.

I use my shooting time as meditation time, you have to shed all of those external pressures of work and home life and empty your mind. Then you let all of your muscles relax otherwise you may skew the shot and it will end up somewhere other than the centre.

Normally after a couple of righter shots, you should be entering “The Zone” where you can normally ignore all but the most pervasive interruptions. And then repetition kicks in.

  • Load the rifle into your shoulder, load a round, close the breach.
  • Nestle your cheek onto the cheek piece, check the sighting on the target.
  • Close your eyes, take a breath, check your sighting again, correct your aim if necessary.
  • Breath slowing, slowing your heart rate, exhale and hold, slow squeeze the trigger and fire.
  • Unload the empty case, and check the spotting scope.
  • Rinse and repeat.

Last evening whilst down at my local shooting range this put me in mind about the similarities between being a programmer and being marksman.

First of all software developers also strive for “Flow”, a mental state where all external stimuli are excluded from perception, all your mental energy is concentrated on solving the problem at hand. Some developers try and shroud external interruptions with headphones, I tend to find that distracting unless the office environment is already quite noisy.

Secondly software developers should also be in a routine, but often steps are left out. Most notably testing. I believe a software development routine should follow something along the lines of (at a bare minimum):

  • Update code from source control.
  • Write your code.
  • Check your functionality on a local web instance if possible.
  • Update your test cases or write new ones to cover the new code.
  • Update code from source control.
  • Run your unit tests.
  • Fix any tests if needed.
  • Commit code to source control with a description of change and bug number or feature identifier.
  • Rinse and repeat.

With some of the above steps, the order may change, if your following Test Driven Development, then you may write your tests before you write your code, but all the steps are still present.

Much like my marksman (sorry and women) example, after a while these become instinctive and you almost forget that your doing them, but you get a gut feeling that something is wrong when they are absent.

Thirdly I find that if I stop shooting or developing of any length of time, say a fortnight for shooting or a week for writing code, I start to get an itchy brain. Something is not right and I can start to get a bit anxious.

So I rambled on there a bit and didn’t really come to any conclusion. But part of the idea behind this blog is for me to brain dump and also for me to develop my communication skills.

So to try and wrap this up with some kind of conclusion, if your significant other is a software developer, don’t berate them for watching TV and writing code on their laptop at the same time, or staying up until 2am working on that niggley little problem. It’s an addiction and they can’t help it, to make them stop is like depriving them of sleep. They won’t feel right until they scratch that mental itch.

And if your significant other is a marks[man|woman], if they haven’t been to the range in a while and are starting to get tetchy, maybe suggest they go have a practice at the rifle range.

This entry was posted in Development, Ramblings, Shooting and tagged , , , , . Bookmark the permalink.

Leave a Reply

Your e-mail address will not be published. Required fields are marked *

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