Writing code is therapeutic

I quit writing code professionally 7 years ago. That’s before my employer introduced a technical career track. Over the past few years I co-led a 40+ person team to support a large scale Program Management Office (PMO) for a large program ($76M/year). In essence my team functions as a general contractor with a responsibility to make 5 large-scale systems fit and work in concert. This was a “make it work” engagement or my client would face a reputational risk with 100+ international governments. My life has been occupied with coordinating activities between multiple vendors, meetings back-to-back, and reporting to dozens of audiences and many bosses (from CxOs to developers). Multi-tasking became the norm.

On stressful days I would think fondly of the period when I worked as a software engineer with ability to focus on code for 4 hours straight. What I was missing from my day job in the ability to get in the flow. I’m not romanticizing software development. Writing production grade code under deadlines is stressful, and debugging can derail your whole day. But on a good day I would enter the state of flow and feel incredibly productive. My mind operated in some other dimension, I lost the sense of time, and I felt that I created something new.

I re-created this state of flow through my recreational coding sessions. In a way they became therapeutic. For short blocks of time I was able to focus on one thing and at the end I felt I learned and accomplished something. Getting into the flow brought me a sense of immediate feedback and accomplishment. It felt good.

Recommendation

If you live in the world of constant interruptions and have some coding expertise, I recommend giving this a go.

  • Make time. Even if you have kids carve out a 2–3 hour block.
  • Work on something that doesn’t have a deadline: you’re dong this for you.
  • Learning should be part of the process: pick something within your ability.
  • Always learn by doing. Watching or reading won’t get you in the flow.
  • Don’t overextend. Code in chunks and see results.
  • Stop at milestones and plan what’s next before you end the session.