Background
Funny enough, this wasn’t the first time I discussed this subject. But this conversation was different. The person sitting next to me was someone whose opinion I deeply respect. We were discussing a programmer that we both met recently.
“I could never do programming. It seems so boring to me”, said The Person. This truly shocked me. Is this really how people perceive programming? As a boring, dull, completely uncreative repetitive kind of thing? Holy cow!
“But that is so utterly wrong!”, I exclaimed. “It surely can feel like that, and it definitely is so from time to time, but that’s because what the concept of job is!”. I was shivering at this point. This really hit my nerve in a weird sense. I wasn’t pissed. No. It’s just that it was a first time that I realised that this is how ordinary people see programming. Yuck!
“Look”, I proceeded, “I absolutely see programming as an art form and programs as creative expressions of their creators”. “Hah! Why the hell would you think that?”, said The Person. Well, truth to be told – I had no clue. At the time, I was absolutely sure about it and I had bunch of unconnected ideas flying through my head. But I didn’t have a proper answer. “I don’t know”, I said, “but let me try writing an article on the matter and let’s see what happens”. And that’s how this article came to be 🙂
What is Art
As with probably everything that I contemplate and preach (or, as my GF would say – bullshit about), I usually start by consulting Wikipedia and official definition. I have no idea why, but it just feels like a good starting point towards something that I’m unsure about. Here it goes:
Art is a diverse range of human activities in creating visual, auditory or performing artifacts (artworks), expressing the author’s imaginative, conceptual ideas, or technical skill, intended to be appreciated primarily for their beauty or emotional power
Source: Wikipedia
Translated to my own words and how I explained it to The Person – artists use tools in order to create art. Painters use paintbrushes, writers use words, musicians use notes. They all use relevant tools to express themselves and to create something that people will admire. What’s so different about programming then? We use computer code as a tool for expressing thoughts, ideas and visions and we hope to be admired for it.
If you’re a programmer reading this, tell me – is there a piece of software that you coded that you are so damn proud of? That you wanted to show off? Maybe you didn’t show it around, but just secretly admired it? I’m sure you can remember at least one thing; if not many! Yep, that’s what I’m talking about! That’s your personal piece of art and you should be proud of it.
Food
What does food have to do with the programming related article? Bear with me.
Let’s focus on eggs as an example. They’re healthy and nutritious. Can be pretty tasty if made properly. But in general, eggs by itself are pretty dull. Just imagine your regular omelette or scrambled eggs. You might add some tomato, salt and cheese eventually, but most of the time it’s … just eggs. Plain, yellow, boring, …
And yet, some people, who happen to call themselves chefs, make a freakin’ art out of eggs! I have to break my habit of not adding images to article as I must show you what I’m talking about:
Eggs. These are two boiled eggs. Plus some chips and whatever the sauce is. Can you resist admiring it? Feeling emotional about it? Even if you dislike eggs I’m pretty sure that you have to admire it for the sheer look of it!
The point that I’m trying to make here is – you can create an art out of anything really. As long as you enjoy doing it and want to express yourself in a way, the tool is irrelevant. It’s what you make out of it that matters.
Back to programming
I’m sure everyone’s aware that programming can be used for creating amazing stuff to be admired. Anything ranging from 3D animation and cartoons, all the way to spaceships and porn search engines. But the question that seems to puzzle most nogrammers* is – how the heck can programming itself be an artistic expression?
There are multiple ways. For starters, programming is not only about writing statements to screen. It is about finding solutions to a problem at hand. Solution itself is something that you can put some thought in and make it elegant and beautiful and have others admire it.
Optimizing and making existing code more efficient is another massive area. Be it by making it faster, less resourceful or just easier to understand, there’s that satisfaction of coming up with a way to make something better and just being proud for the heck of it!
Architecting systems is yet another beautiful area that brings plethora of options to let your imagination go wild. Everything ranging from modelling how the system interacts with outer world, all the way to evaluating and picking the technologies to use. It’s just as pure and as beautiful as it gets. Trust me.
Finally, just being a part of the bigger team that creates something great is another story on its own. That feeling when you can tell somebody – “see that beautiful thing over there? Yeah, I was a part of the team that built it!”. Overwhelming amount of joy caused by the fact that you put your signature into a beautiful end product is definitely something to be admired.
As you can see, there are so many aspects of programming where you have absolute and complete freedom to be creative. That, exactly, is something that I’m absolutely grateful for and that is why I see programming as an art form.
Fun fact: There’s a series of books called “The Art of Computer Programming”. There are four volumes published so far, totalling in over 3000 pages. These books are being referred to as “the bible of computer programming”. Bill Gates made a following statement about it: “If you think you’re a really good programmer… read Art of Computer Programming… You should definitely send me a rĂ©sumĂ© if you can read the whole thing”
* nogrammer – a term used to describe a person who never programmed. I literally coined this term as I was writing this article, which makes it my little piece of art 🙂
Some personal examples
Let me give you some examples of my own. One of the pieces of code that I remember and admire to this day is a chess engine that I developed almost 10 years ago. It was my college graduation thesis and to this day I’m not sure if my mentor was joking or not when he told me to create it. Young & foolish as I was, I accepted the challenge. And I did it! (here’s a GitHub link to the main engine class). Boy, to this day, I still remember being proud of how I envisioned, designed and developed it. And it all worked like a charm!
Here’s another pretty recent example. I’m currently involved in an architectural position tasked with replacing the 15-year old system architecture with a more modern microservice oriented one. Do I even need to say how special I feel about every Microservice that we push through? Every architectural problem that we manage to solve? Or about every scaling or performance issue that we tackle?
You could argue that it’s more narcissism than artistry and you’d probably be right. I think it’s a mixture of both. But does that make it any less of an art? No!
Conclusion
Wikipedia defines art as a range of human activities performed with the idea of expressing author’s imaginative, conceptual or technical skills, intended to be appreciated for beauty or emotional power. What we, developers, are doing is using programming code for performing work that expresses our imaginative and conceptual ideas which we look forward to receiving feedback on and, hopefully, being admired for. That is exactly what makes us artists and that’s exactly why I see programming as an art form. Thank you! **drops the mic**
Thing is, art is ultimately a subjective category. Yes, we can discuss ad nauseum about finer points of some work of art– e.g., discussing the chiaroscuro technique used by Caravaggio in his paintings, and its later influence on certain modern day comic book artists–but ultimately it all boils down to personal experience, and opinion, of something. Which unfortunately means that Ceca, turbo folk, Jala Brat, Buba Corelli, gangsta rap, Justin Bieber and other bullshit we’ve been bombarded with over the course of the last few decades could be considered art. Quite frightening, that. But, I digress.
Anyway, even accounting for this inherent subjectivity, programming should really be considered an art form. Sure, it is not so obvious. Most of the time. But, one only needs to look at, say, game engines to see the validity of this point. Or at AlphaGo.
Oh, by the way – A unique… Yeah, yeah – I’m acting like a freaking grammar Nazi here.
I absolutely agree with you man 🙂