“Creativity is intelligence having fun” – Albert Einstein

Context: I recenlty made a talk about open-source communities. At the end of the talk, I had very interesting questions from the audience. In this blog post, I will share with you why I love coding useless stuff!

As children, we are encouraged to learn and try new things, we love experimenting and aren’t afraid of failure. But with time, we become more self-conscious and feel more pressure to perform. It’s not rare that people don’t even try doing something because they think this activity or its results will look “ridiculous” to observers.

I started coding over a decade ago and spoke to many programmers along the way, and noticed a tendency for stifling perfectionism in the IT community. Worrying about being scrutinized, that the projects aren’t “serious” enough, or the libraries used aren’t “fancy” enough. Like those high school rules we see in the movies – you should always try to sit at the table with the “cool kids”, and if anyone spots you sitting with that weird nerd, you’ll be labeled a loser.

Personally, I love, if not prefer, coding things that are “useless”. As Simone Giertz, a self-taught inventor who got famous building purposefully crappy robots, says in her talk: “Building these robots is an expression of joy and humility that often gets lost in engineering, and for me it was a way to learn about hardware without having my performance anxiety get in the way”.

It can start as abstract or quirky as I want it to, and I have a blank slate do develop it into anything I want, with no time pressure or being limited by specific tools. Implementing an idea is like solving a puzzle, I need to find the languages and libraries that are best suited for it, and learn a lot in the process. And it often turns out that the ideas and methods that were developed would give ideas that are implemented in my main projects, sometimes the very next day.

So, even though the result of such experimental coding might not be “useful” in and of itself, the overall experience brings a lot of fun and knowledge, and it often gives insights that help with the “serious” projects.

I have important projects that I do and often talk about, related to privacy, surveillance, censorship. But just as often I code for fun, and thoroughly enjoy it. It is entertaining as well as educational.

Learning isn’t passive; we need to fiddle with things to feel their structure, usages and limitations. As Kurt Lewin said, “If you want to truly understand something, try to change it.”