I've fallen in and out of love with code a hundred times.
When I was ten, I was impressed and mystified by the ZX Spectrum that my father left plugged into our family TV set (imagine that!) on the morning of my birthday. It was one of the earliest attempts at accessible mass-market computing, basic and powerful all at once. I remember the feel the rubber keys with their printed pop and poke commands, holding the promises of a code I might one day break if I was curious enough. They’d stick to my fingers as I ran my hand across the machine; the yellow beeps from a cassette tape transformed by some voodoo magic into games on the screen.
My still unformed mind began to recognise the power of the this small box as an agent of transformation, spinning a cassette (externally mounted) into yellow sounding beeps, then into games on the screen. My own nascent power to transmute a mental intention into a command into an action on the screen in turn.
The seeds of a lifelong love affair were sown.
My teenage years saw a flourishing of accessible home computing, the battle between the Commodore Amiga and the Atari ST being won in my heart by a TV ad promising the ST could “paint pictures, and even make them move”. I never quite figured out how to make this happen, much to my frustration. My lifelong suspicion of the motives of advertisers began then!
A trip to my nearest city to buy a book on how to program left me swimming in a sea of assembly language, unprepared, confused and not yet ready for real code. A Basic interpreter discovered with my group of friends turned into show-and-tells for each of our latest carefully crafted choose-your-own-adventure games, text based adventures into the castles of the minds of our fifteen year old selves. The internet wasn’t even a dream and the copies of Sensible Soccer we played to death still came on 3.5 inch floppy disks.
At university in Dublin studying Physics I began to realise that people would invite me do things with computers that involved work rather than just play, and that this, indeed, might be an advantage one day. They taught us the omniscient, singled-lettered grandfather language - C - but this time I was ready to receive.
There was a moment of almost-meditative insight where my understanding of pointers coalesced from a state of perplexity, their dangerous power revealed, my understanding of the potential of bare metal beginning to structure itself. And the head banging frustration of many, many fails to apply them correctly.
Grokking that a pointer could refer to a function clarified what I would later recognise as Von Neumann and Turing's synthesis of a machine that held its data and its instructions in the same mechanism - this was a point of no return. This fact alone was worth the price of entry. However, still believing my future would be spent in a lab somewhere, I didn’t realise that the roots of my current career were growing deeper.
It took a visit to a number of labs to understand that a PhD in physics wasn’t actually for me. So I turned to code with more deliberation, taking a masters in High Performance Computing. A first job thereafter in a terribly managed small consultancy saw me rebuilding the website of a major Irish government department - and also saw my first taste of coding burnout.
Working twenty-one hours in a row is not good for anyone. I knew this type of work had the potential to do damage if not handled correctly. I fell out of love with code for the first time, my energy spent, my heart disappointed.
I spent nearly five years working at the School of Physics at Edinburgh, helping UK scientists build applications, sprinkling magic (Java) beans around. I was educated in ways of going about Projects, working with Teams and applying Best Practices. I was also introduced to the idea that your code might not actually have any relevance in the real world - that a lot of what you write is speculative, or might be thrown out.
The lesson I learned was to enjoy the process without attaching to the outcome too much. I still try to apply it today. I’d say 80% of what I’ve written has ended up on the scrap heap eventually. This realisation can bruise the ego and you can lose the love for a while, but this switch in mindset makes the difference.
It was around then I really started to become a Professional Software Developer. My code was my livelihood, so I felt the pressure to get it right. I had my first major episodes of Impostor Syndrome - the little "not good enough" voice that told me I was a fraud began to chatter away.
A few years working in financial services around the time of the GFC taught me that code can be deployed for good or for evil. There’s an ethical dimension to code, which makes the relationship tricky sometimes. I want to do good, but not everybody who wants me to write code has the best interests of humanity involved. So I try to work with those.
I spent much of this time doubling down on Java, lost in a world of often purposeless abstractions, wondering why attempts at elegance and clarity often broke down in a thirty letter, multi-level class hierarchies. The unfulfilled promise of write once, run anywhere choked a lot of us back then.
The last ten years of my career have seen the technology landscape completely upended. Ubiquitous mobile computing. Servers for pennies on the cloud. Unlimited storage and processing capacity. Free libraries, installed in a few keystrokes, that will do literally anything you need. Global issues with bandwidth seem like a complete failure in the face of all of this.
I’ve been stunned by the growth of startups I’ve worked for. I’ve moved from full time worker, to being so burned out I needed to work as little as possible with technology, to contractor, to full time once more, to starting my own thing.
Some years I’ve loved that code has been my life for this long - other than breathing, walking, reading and eating, there has nothing I’ve been doing longer.
Other years, I’ve wanted to run, to escape, to cut all ties and start again. But I keep coming back. The power to take an idea, write some lines in an editor and just run it, watching it take life as you type, remains enduringly addictive. So every time I fall out of love with code, I know it’s just a matter of time before I fall back in love again.
It'll be the same for you!
(This first appeared on CodingMindfully.com)