I love software development. I have been doing it professionally for over a decade - starting as a full time developer at my own startup, a team lead, and now as a developer advocate. Throughout my career, the proportion of time I was paid to write software has varied a lot - I write a lot fewer lines of code than I used to, yet I still enjoy it. But why?
I haven't thought about it much in the recent years - development is just what I did, end of story. Until this past weekend, that is. I got thinking about things like what exactly makes people love software, and software development? Why do I personally pursue it still?
And why I started thinking about it? Because of a bug, of course. This is my story.
Over the past weeks I have been spending much more time hacking and building software than I had been in the past couple of years.
Maybe it's the new reality of being locked down, but I started having tons of fun just hacking again. Early mornings before work, late evenings after work, and weekends, just going at it, having fun building things.
It starts with a bug 🐞
One of the projects I undertook was revamping my blog. I also decided to add a subscription feature with email integration to it. Each time I publish a new article, I want to send an excerpt of that blogpost to my subscribers. Something something keeping me accountable for writing more.
While building it, I discovered that each published post triggered two emails instead of one. As a bug, this was rather straightforward to solve, but it got me thinking of how many options I had for solving it. From reasonable choices to absolutely batshit crazy this-should-never-work-but-does-anyway kind of options.
I haven't had this much fun writing software in years. I told the story as it happened in this Twitter thread:
Why we ❤️ software
There is a good reason why I am in this industry, and have been for my entire career. And it's not just the decent pay.
I have always found something interesting when writing software. Is it all about being faced with challenge and overcoming it by devising elegant solution.
This fondness for challenge is universal. Applies to computer science as much as it does to real science, and to making apps as much as it does to making automobiles and airplanes. Making an app as much as it does making a bookshelf. Every single videogame exploits that to keep you engaged.
Then it occurred to me, what delights you depends mostly on your motivations, and your motivations can (and will) change throughout your career.
When I was learning the basics of programming in C and Python, I found great joy and pride in finding a great, optimal algorithm. Fewer lines of code. Faster execution, optimised for memory. Stuff big tech companies tend to ask about on interviews.
This however, didn't stick with me for long. While I have immense appreciation for every algorithmic guru out there, I myself am way more of a cowboy coder, with too little patience for that 🤠, and believed (and still believe) that done is better than perfect.
I discovered I enjoy designing elegant systems and tooling more than I enjoyed making elegant algorithms. Seeing a system that is well tested, and has well automated builds that instil confidence is delightful. My measure for a well tested system? One that lets you deploy at 5pm on a Friday before confidently heading to the pub for a few pints with the team that just shipped🍻.
So later on, I found that what really delighted me was making (and shipping) great software products. Features, apps, tools 🛠️, whatever. As long as people use them, find them valuable, and ideally makes them more productive.
Whether it's individuals, dozens, or millions. Nathan W. Pyle describes this well.
Delight in DevRel 🥑
I'm not a developer anymore. As a developer advocate, nowadays my job is primarily enabling developers. As I grew as an engineer and developer, I found myself becoming more and more passionate in empowering people around me to become more productive. On both an individual level, as well as on a team level. Seeing a team that grows as engineers - a team that becomes 10-X of itself in a short time. Now that's delightful.
This is something that has stuck with me when I entered the world of developer relations. My focus now is less on building software myself, and more about enabling others build better software. Developer advocacy is all about people - celebrating them and advocating for them. I love seeing brilliant folks devise awesome solutions, products, and hacks - ideally using the tools of the company that I'm representing.
Nowadays, my personal tool of choice is storytelling. Regardless of whether it's delivered on a stage, written in a newsletter, or told to an individual in a Zoom call. I find great enjoyment in inspiring people. It's amazing when folks reach out to me and tell me they learned something from my talk, or that my article had sparked joy. To me, that's pure, unabashed, delight and what keeps me going, excited for what tomorrow brings.
Coming full circle ♻️
As for the story from the beginning of this post, the little bit of hacking that I have been doing in the past few days was fun. It certainly has rekindled some of my enthusiasm for building and shipping things myself.
In particular, what I found the most inspiring was how many ways I could come up with to solve a particular problem - good, bad, but especially the terrible ones. I don't think they ask that in Google system design interviews, but it's fun.
In my tirade on Twitter, I counted 4 ways to solve my bug. Later, I counted some 5 more (yet I couldn't top my very worst one, and believe me, I tried.).
This freedom of choice, choose your own adventure is extremely powerful. It gives us control over the machinery that runs our world. All you need is a computer and an internet connection, and the World is your oyster.
If you find one takeaway from this, think about what delights you with that you do? Have a ponder, and pursue delight, deliberately.
Oh, and don't forget to smash that brand new shiny subscribe button if you enjoyed this story 👇