A Go Programming Notebook

How to Get In the Zone (A Reminder to myself in Case I Someday Read Me)

What matters to me most about software is that it lets me get in the zone, or a state of flow. Yes, software is how I make a living, but making a living at software, I very often report to a boss or other stakeholder whose pointy hair prevents me from getting into a state of flow, so by two in the afternoon I’m tired and forcing myself to just plod along at the now inimical keyboard.

On the other hand, when I’m in a state of flow on a project, I could go for hours, except for occasional lonely moments like this when I feel I need to explain something to somebody.

It’d be great to have a job where I could spend more time in the zone, which I find myself getting into quite often on my current Rails side-project.

I could tell you the zone is about RSpec and Intellj with the Rails plugin and simplecov on a particular machine with Linux Mint installed and the right keyboard – but of course, those are just temporary implementation details. I’ve been in the zone on the same keyboard under Windows 7 and Visual Studio and NUnit.

What it’s really about is being alone with a good unit test suite on a good keyboard, making progress on a project.

Ambition kills it, plodding along strengthens it.

The whole elephant sometimes kills it, unless you can quickly grab the tail or the trunk or the leg to work on.

Numbers help. How many specs did I do? What does the coverage report say?

Knowing that at some point enough specs and enough coverage with a little bit of code each day will turn into a product helps.

It may not be a great product, and it may not sell, but spending too much time on that sort of thinking is a surefire route out of the zone and onto working on someone else’s idea of a product, which is just a downward spiral. Someone else’s product is fine if you’re doing it when your fresh at 11:00 AM on a Tuesday and collecting a paycheck for it. But if you’re going to burn weekend after weekend away from your bicycle, doing it on someone else’s Rube Goldberg device, well, all that ever gets you is tired and frustrated.

So here it is:

  • Stay in the present.

  • Don’t take a job without counting the unit tests first, unless they let you write it from scratch (in which case, count the money first) :).

  • Work on the tail, or the trunk, or the leg.  Your zone poem for the day:  ”The elephant is irrelevant”

  • If you’re not getting paid for it, it’s your code, period.  If you need a friend, go to the pound and pet a puppy.

  • Get back to work, or go outside and ride your bicycle.  Explaining things should be done in moderation.  Ain’t nobody reading you anyway.  See the line with the puppy.