Have you ever wondered what is the real meaning behind this image?

If you take a closer look you may see it’s not exactly one of the Piet Mondrian’s paintings. You can find that it’s rather heavily inspired by it. This image is actually a source code to a program drawn in Piet programming language (which displays a word “Piet” on the screen). Traditional programming languages have a more textual nature. Seeing such creative experimentation done with use of esoteric programming languages is quite refreshing. In everyday programmer’s job we can find multiple occurrences of creativity. However, we seem to forget about them all the time. Let’s try and bring the word “artist” and “programmer” back together (even though those 2 words do not seem to fit each other very well in the first place).

Would you rather watch the video?

The artisan

Our programming adventures start quite differently – although I started mine with PHP, it was still something exciting and worth discovering. It was something more than just merely recreating the already known concepts. Working as programmer may verify that with tiresome and repeatable tasks. Let’s try and look at it from slightly different perspective. What if we were artisans? What if instead of writing our code we forged it on an anvil? Working on projects for clients always makes us create solutions tailored to their needs. Those words show that programmers’ jobs and craft intertwine.

Our jobs could even look like this!
photo by Nicolas Hoizey

Code mastery

Masterfully created pieces of code can be easily compared to things like sculptures and paintings. We could probably create a museum out of those as well. Let’s follow that thought – the artistry seems to be connected somehow with code mastery. I present you the “elegance/complexity curve”.

We start our journeys with little to no knowledge. We go through some tutorials and courses and get to know fundamentals of programming. The created code is simple and clean, because we don’t tend to create complex applications at that point. With this simplicity comes charm, but we’re yet to understand that.

The more code we create, the more complex it becomes. We start using more patterns and libraries, and therefore it can become a harder read as a result. The code starts losing its charm, but there’s hope. If we find ourselves in such a situation, the only way to go is up (or down with the complexity). We’re going back to our humble beginnings, but we can create more complex solutions. In other words, we have smaller and cleaner pieces of code, which we can compose. “And what about the elegance part?” you may ask. We just have to flip the chart to see its shape.

Back to the ground

Let’s get back to the ground. Let’s try and connect the mentioned “artist” and “programmer” words more literally. For instance, a programmer may consider venturing into the music industry with Sonic Pi. This piece of software can be used to create beautiful pieces of music with code. Moreover, we can also give live performances with on-the-fly code changing. Here’s an example of such an amazing performance by Jylda and Sam Aaron (the Sonic Pi’s creator).

What a great time to be a programmer! With your coding skills you can even become a full-time music band member.

Now, let’s also get to what I consider crème de la crème of the artist-programmer connection. And that is the game development. Logical thinking is always a must, but here the skill is pushes to its limits. We are always faced with bunch of unique challenges to overcome while implementing the game mechanics. However, we can be even more adventurous here. We can also flex more of our artistic muscles and create a whole game by ourselves. Some may consider assets created like this as “programmer art”, but we can also discover a new artist in us along the way.

The fantasy of coming back to the ground

Let’s have a quick gander into the past, where the game development was a much harder thing to do. There were no big engines on the market, so the programmers had to create custom solutions. However, loads of awesome games kept on coming. These were not only a show of great creative ideas, but also an excellent demonstration of ways of working around software and hardware limitations of the era. Those limits induced the creativity. We don’t have to buy expensive pieces of hardware from the olden days to emulate the same feel today. We can fantasy consoles.

“And what are fantasy consoles?” you may ask. Those are full game creation suites, which also artificially implement the hardware limitations. All the code and assets can be created within the console’s editor. Have a look at one of the most popular ones like PICO-8, which was used for instance to create an original version of Celeste.

What a great time to be a programmer! With your coding skills you can also create awesome interactive adventures for people to enjoy. And there are oh so many ways you can achieve that – with big or small game engines, or even with custom solutions.

Summary

Day-to-day programming may be overwhelming, but often we seem to forget about the pleasures and niceties of it. In some extreme cases this could be a cause of major burnout. Creative and/or artistic approach to what you’re coding will surely boost your productivity and sense of fulfillment.

With that in mind, I have a quest for you. After you’ve written a piece of code, try and look at it as if it was a painting or a sculpture. Try and look at any subtleties, its simplicity or used patterns. Maybe even put it in a frame and hang it above your bed, so you can enjoy it every morning.

If you’re not a programmer and yet somehow you’ve found yourself in here, I have a quest for you as well. Try and find some creativity and artistry specks in your work as well and make sure you share that with us.

And remember: life without art would be like living without underwear – it would be barely recognizable.

Until next time!

And if you’d like to work with the team of inspired artist-programmers…

Let’s talk!

Aleksander Krawiel, the audacious Frontend Developer at Makimo, is a provocateur in the tech realm, continuously pushing boundaries with functional and system programming. A tireless explorer, he crafts articles that delve into the intricacies of DevOps, building developer environments, and mastering CSS & JS. Outside work, he morphs into a polyglot programmer, nimbly shifting between JavaScript, Godot, and Blender. Aleksander's multifaceted persona promises a riveting journey in the world of code.