Software development, shredding the gnar and other improbable ways to create meaning in life.

Shawn Hamman
6 min readOct 17, 2018

I love software development. I’ve known that I love software development since a particular mid-summer afternoon, a long, long time ago, when I copied a page from a Colour Genie EG2000 user manual into GWBASIC on a PC and experienced my first life changing insight: I had just programmed a computer. That moment has stuck with me for over 30 years.

The art of software development has been a fundamental part of my life since then and I love everything about it (even the stuff I hate). Since starting to code in primary school, I’ve never really stopped, though it’s been a while now since somebody paid me to personally write some code.

Before my first real job in software development, my contact with other programmers was limited to one or two other kids I knew and a couple of random strangers on the HNR BSS (yeah, that’s right, 2400 BAUD of wonder and excitement), and my access to knowledge limited to books from the library and whatever could be moved down the sketchy phone connection to the BBS (until the internet came around for me in ’95, anway). I spent an ungodly number of hours writing code in BASIC at first, then teaching myself Turbo Pascal with a bit of inline-assembly and then moving on to C — text games, utilities, graphics demos.

A peculiar phenomenon I noticed develop — even at an early age — was that while coding I could lose myself completely in the process of programming for many hours at a time and it felt really good. It was deeply satisfying in a way that getting lost in a video game was not.

Moving along a couple of years, I found myself building the first ‘enterprisey’ software of my career: a loan origination and servicing system for a government supported regional housing finance corporation. A glorious client/server desktop application built in Visual Basic 6, integrated to a sexy, completely newfangled “workflow management system” and connected back to a head office via the Rolls Royce of public switched network telephone connectivity: ISDN. Before this I had mostly done web development in Perl then PHP and Flash (yep).

During that loan origination and servicing ordeal (it was just that), I met a senior developer from whom I first heard the phrase: The Zone. He was the guy that put a label on that place that I, and, as it turned out, many other developers know well; where one is completely immersed and completely focused to the exclusion of nearly everything else in solving a problem by writing code for extended periods of time.

The concept of “flow” was recognised and named by Mihaly Csikszentmihalyi in 1975 and has been widely referred to in a variety of fields, but the concept has existed for thousands of years especially in some Eastern religions.

Jeanne Nakamura and Csíkszentmihályi identify the following six factors as encompassing an experience of flow:

  • Intense and focused concentration on the present moment
  • Merging of action and awareness
  • A loss of reflective self-consciousness
  • A sense of personal control or agency over the situation or activity
  • A distortion of temporal experience, one’s subjective experience of time is altered
  • Experience of the activity as intrinsically rewarding, also referred to as autotelic experience

Those aspects can appear independently of each other, but only in combination do they constitute a so-called flow experience.

Additionally, psychology writer Kendra Cherry has mentioned three other components that Csíkszentmihályi lists as being a part of the flow experience:

  • “Immediate feedback”
  • Feeling that you have the potential to succeed
  • Feeling so engrossed in the experience, that other needs become negligible

Having, or more accurately, creating opportunities for yourself to participate in activities that allow you to enter this state of flow, or The Zone, is one of the pillars that supports happiness, purpose, satisfaction, meaning in life.

It is one of the primary reasons I fell in love with programming. The nearly inconceivable satisfaction you sometimes experience after spending many hours in The Zone: intellectually constructing interconnected models of an abstract problem space, mentally following and testing a branching tree of logical solution options; careful to painstakingly prune back the solution options to the one that fits optimally, finally constructing a solution — sometimes more than once (you know, sadly human and fallible) — until finally realising that, after what feels like superhuman effort, you have created a useful thing, seemingly out of nothing. A solution that actually works!

It’s hard to explain that feeling to people who haven’t felt it.

Focus, flow, being in The Zone. Expending a large amount of energy in solving and overcoming challenges. Over time, mastering that activity: experiencing an accumulation of knowledge, feeling that you are progressing, knowing that you are improving a skill and through that yourself. That, is satisfaction. That is what creates meaning for me.

Speaking of overcoming (and as I mentioned in a previous post) facing obstacles and challenges is how we grow as human beings. From early childhood and throughout our lives, the experience of getting through appropriately hard things shape us and helps us grow and gain critical skills. It gives us confidence, teaches us perseverance and makes us stronger. As with everything, there needs to be a balance: too hard and the costs outweigh the benefits; not hard enough and you don’t maximise what you can learn from it.

A specific situation where one (well, me personally at the very least) becomes acutely aware of the process of overcoming challenges, maintaining a critical balance between too much and too little challenge, while being strongly encouraged to stay completely focused, is in my other most favourite activity: shredding the sick gnar.

Ok, fine, I will admit that what I do on the slopes is perhaps less sick gnar shredding and more accurately described as haphazardly careening down a slope, barely in control, repeatedly and narrowly avoiding an embarrassing faceplant. Often successfully. But the point stands! Snowboarding is an excellent example of an activity that, to progress at any reasonable pace you need — and are strongly encouraged to by circumstances and consequences — to focus on what you’re doing.

You have to — especially in the beginning — repeatedly overcome falling, sometimes painfully, by getting up and carrying on. You need to overcome fear by making your mind do things that it doesn’t naturally want to do, like leaning into your downslope leg so your board edge can bite into the snow to have any control whatsoever. Your brain really doesn’t want to do this. Leaning down into what your brain immediately categorises as The Abyss Of Horrific Pain And Certain Death doesn’t come naturally to a lot of people. You also have to make yourself frequently start from the top of ever steeper hills and sometimes, accidentally, much, much steeper hills with only one option for where to go now that you find yourself there: down.

This magnificent blend of focus, overcoming and gradual mastery is perhaps a slightly different flavour to the psychological outcomes produced through the process of software development but surprisingly similar in most ways, particularly the deep level of satisfaction that they create.

I spent some time a while ago trying to think through what it was that created meaning in life; to try and figure out what it was that made a person happy. These three pillars are, to my mind at least, what it all seems to distill down into: focus, overcoming and mastery. The examples of software development and snowboarding may seem bizarrely connected on the surface but in reality, when you dig into it, just about everything can be or does boil down to these three pillars. From running — the focus during the activity, overcoming the pain and distance, the feeling of development and improvement through training — to relationships or mathematics, sewing, horse riding, painting.

Life, I think, has no intrinsic meaning. How you decide to go about life, is what creates the meaning.

--

--

Shawn Hamman

Part time hacker, occasional runner, full time technical organisation leader; Python aficionado, Objective C enthusiast, Swift admirer, technology connoisseur.