And since then, in every single job I've had, I've been coding. Even when coding was not in the job description, even now that I'm in management. At times that was out of necessity, because the ship was sinking fast and all hands needed to be on deck. (Yes, I've seen my share of startup shipwrecks). But most of the time it is by choice. Because to me, coding is fun. Here is why.
Reason 0: Code is a game of exploration, a journey
Coding is all about learning: learning new languages, new technology, new techniques, new ways of doing things. It's about wrapping your head around callbacks, object-oriented programming, asynchronous behavior, promises, functional programming (especially since the arrival of hooks), databases, browsers, mobile platforms, game engines… Obviously, it's not just about those. But there is a sense where it is a journey into the minds of brilliant (and sometimes not so brilliant) people who have created new, weird, and exciting stuff. And the fun is in the journey, in the process of discovering the ideas and creativity that has gone into producing all this new tech.
Reason 1: Code is a construction game
Coding is about creating something out of thin air, electrons, and a sprinkling of imagination. There is a joy in producing something new and beautiful that strangers will experience and hopefully understand and enjoy. Of course, the first iteration usually fails miserably by that standard, but it is also wonderful to then be able to refine and polish something imperfect, to make it into a thing of beauty.
Reason 2: Code is a strategy game
There are times when despite your best efforts, the computer refuses to bend to your will, especially when venturing out into unfamiliar territory populated by new technologies and concepts. Or trying to get browsers to behave in a uniform manner. In this situation, it pays to learn how to think laterally, how to come at the problem from a variety of directions, or even to make your way around said problem. There are many ways to skin a cat, to center a div, or to query a database.
Reason 3: Code is a puzzle game
I love reading whodunnits. I love trying to work out who the culprit is, and unraveling the mystery of the motivations and psychological interactions that underlie it all. And code has a measure of that. In particular when trying to understand the reason why things are not working or, to paraphrase Chesterton, the even darker reason of why things are working when they should not be.
Code is my 9 to 5 & my side hustle
All these reasons combine to explain why so many developers choose to spend their leisure time coding: because as Jane McGonigal stated in her book Reality is Broken: "Games make us happy because they are hard work that we choose for ourselves, and it turns out that almost nothing makes us happier than good, hard work." Coding is good hard work with visible outcomes and a sense of having overcome the perils of the journey when you finally reach your destination.
And the nature of software means that journey is always beckoning.