Issue #28: Programming As A Hobby

Specialization Is For Insects

There is a whole field called “Recreational Mathematics;” a moniker that might as well be replaced with “Mathematics as a Hobby.” I personally enjoy dabbling in it a lot; I am mostly interested in number theory feats: Ramanujan‘s hypergeometric series and continuous fractions converging to Pi in the most weird ways are among my favorites.

I regularly code as a hobby, as I have for the past 20 years. My hard drives are filled with unfinished experiments, code from books, unfinished ideas, in lots of different programming languages. Many of those experiments have to do with numerical approximations of those series or fractions. For example, the last such experiment was playing with Binet’s formula to calculate Fibonacci numbers.

Coding for fun is relaxing, if anything, precisely because money is not involved. I can write and rewrite and refactor the code as much as I want. I can release new versions, even if they break previous ones. I can change the architecture without having to call for design meetings. Heck, I do not even need to run daily standup meetings with myself, or to be interrupted by Slack notifications every minute.

I also write as a hobby. My own blog and this very magazine were born out of it.

The FAQ of the Cello C library explicitly puts hobbies at the antipodes of production systems:

Can it be used in Production?
It might be better to try Cello out on a hobby project first.

Hobbies are based on pleasure, and dare I say, a certain cult of hedonism. Hitting the keys of my keyboard during weekends and holidays has exactly to do with that. I can escape the daily ailments of reality and learn, learn, and learn again.

Sometimes I re-learn things I had forgotten years ago. Just like great books are not meant to be read just once, some things are not meant to be learnt just once.

I do not personally find more or less beauty with functional programming languages than with, say, object-oriented or procedural ones. Sometimes I enjoy writing in a language, sometimes in another. There is a certain Tao-like feeling when moving my brain from language to language.

Specialization, so valued and established in the world of business, can be left aside. Or as Robert Heinlein said, it can be left for insects. In a hobby setting, you can pursue your own interests, regardless of business needs, requirements, specifications, or screaming stakeholders. It is, arguably, the only situation where art can happen through programming.

During the pandemic of 2020 I worked mostly on just one of those experiments. My own recreation, in 20+ programming languages, of Conway’s Game of Life. Faithful readers of this magazine might remember that I have already talked about that project in these pages; that was in my article tracing my first steps writing a Smalltalk application.

As fun and satisfying as my little project is to me, I do not think it might make me a better programmer. At best, it gives me the option to try things I read elsewhere; I am not in the business of discovering anything new. I am not advancing science, by any stretch of the mind. I just learn, try things, fail once and again, and sometimes write about it.

Hobbies are not meant to be maintained. They just exist per se, they are valid through and by themselves, without the need for external validations or justifications. They are a whim. They exist with the sole purpose of pleasure and enlightenment.

Sadly, the question, “Do you code in your free time” comes often in programming interviews. The answer is used as a gauge with which to measure the degree of “passion” a certain victim candidate might possess.

By all means, it is the humble wish of this author for this practice to end, on both sides of the equation. Recruiters must stop asking this question, just as we have to teach future candidates to stop answering it. If the practice continues on the side of the recruiters, which it will, we must then teach young members of our industry to ask for an automatic raise in case of an affirmative answer.

The fact that a person codes or not in their free time is absolutely irrelevant to their potential in a job. This is a fact. There is no correlation between those two things. Brilliant consultants from nine to five might just as well enjoy paragliding on weekends; otherwise unengaged and bored code monkeys might spend evenings creating brilliant games on their home PC.

Coding for fun, or coding for money, are two absolutely, completely, and irrevocably orthogonal activities. This offset applies not only for coding, by the way; performing any human activity for the mere objective of getting paid, substantially modifies the dynamics of the activity in question, and more importantly, of the person doing it, in ways that neither psychology nor economics fully understand.

I am not calling for, nor citing studies in either discipline at this moment. After all, at this point in time this magazine is a hobby, and it is solely in your hands to help us make a business out of it.

Cover photo by Pedro Santos on Unsplash.

Adrian Kosmaczewski is a software consultant and evangelist. He is a published writer, trainer and speaker. He holds a Master's degree from the University of Liverpool.