Our field is creative by nature, but does that make it art?
We create something out of nothing, although it isn’t a physical item you can touch and hold. We hardly do the same thing twice, and we’re constantly building upon what’s already existing.
I loved this hands-on work when I was an engineer.
When you’re working, and you’re in the zone, there's this special state of flow you can get into. I think it’s the same one somebody experiences when they're writing or painting. Your mind is connected to the keyboard, just like theirs is connected to the paper or canvas – you feel inseparable.
What’s amazing is how many ways you can get this feeling while engineering, such as when:
- You're doing research
- You're investigating bugs
- You're looking for a solution to a problem
- You already have a solution, and now you have to code it
- Or you’re creating something new
You feel inspired like I imagine artists do. I’m not talking about “art for art’s sake,” though, more like a functional type of art, like architecture.
Let me take you through my thinking.
Similarities between software development and the art of architecture
It's very interesting how, in Europe, architects are finding ways to blend modern architecture into old cities. For example, there's a lot of stuff like that happening in Lisbon, where I live. You have neoclassical design alongside Moorish, Baroque, and Modern, and they all mix together seamlessly.
The architects here successfully make new buildings look organically linked to the older ones. Or you’ll find really old buildings that have been completely renovated. And when you're inside, you don't know that you’re in something old at all.
This is very much what we do in software: blending new designs into old systems in a functional and beautiful way.
The balance between functionality and aesthetics
For example, in architecture, an architect can get lost and design a building or an interior where there's too much going on. These are places where the design stands out, and the purpose of the space is forgotten or secondary.
No doubt you’ve seen things like this – Gaudi often divides people’s opinions here. Equally, you’ve probably come across this problem in software development!
Conversely, it's also very easy to design a building or an interior that is too functional. Where the space is boring and not aesthetically pleasing.
For example, a hospital. In general, hospitals tend to be purely functional buildings with not much emphasis put on the aesthetic experience. Again, I’m pretty sure you’ve seen this in software, too!
But the true art of architecture – and software development– is to design something that is:
- Functional
- Convenient
- Aesthetically pleasing
- In keeping with its environment
- And pleasant to be in at the same time
Like architecture, good software development exemplifies this blend and stands the test of time.
Innovation through problem-solving
Much like architecture, software development solves complex problems.
Take, for example, the structural innovation of flying buttresses in Gothic architecture. These allowed medieval architects to build unprecedented soaring cathedrals with thin walls and expansive ceilings – marvels in both form and function. Without them, we wouldn’t have UNESCO World Heritage sites such as Notre Dame or Canterbury Cathedral.
In software development, we also innovate through problem-solving. Consider innovations that have changed the world by bringing technology into households, such as the personal computer and the internet. Then we have smartphones and the emergence of apps. And innovations that are currently changing the world, such as AI and LLMs.
We create systems that blend structure and beauty to serve both users and businesses. The whole art is about the nuances:
- How people feel around functional items
- What their perception is
- And what their experience is
But you don’t reach these heights of innovation if you have an unimaginative and conventional mindset. I believe that if you’re in this field, then you’re naturally creative.
But what is art, really?
Anything can be art if you want it to be. Beauty is in the eye of the beholder, after all.
People can find pleasure and creative expression in many functional roles. Consider these different areas:
- Machinery: Motorcycles are commonly appreciated for their lines and forms. They’re also appreciated for their engines, especially their sound.
- Integrated circuits: Look closely at the chips in your laptop, and you’ll appreciate the design. It’s like looking at collections of micro cities.
- Plumbing: There are so many YouTube videos or Reddit communities dedicated to the appreciation of well-engineered plumbing. Who knew that a complicated system of perfectly ordered pipes could be so aesthetically pleasing?
- Organization: Just look at Marie Kondo! A perfectly organized house really can be a creative exercise and bring joy.
I think the more you know about something, the more you can appreciate its intricacies. To many outside of the field, software development is just something behind the scenes that they don’t really register. But for those of us who are in the thick of it and have the right mindset, we can truly appreciate all the creative nuances and hard work that goes into making them.
The choice is yours
Everything can be art if you think of it that way, and it’s something you have within yourself. You can choose to just do your job, or you can choose to appreciate what you offer and create.
Many in the field, myself included, view software development as an art, and it’s just a happy coincidence we get paid for it! But there are also many who do not see it as such. They do it to make money, and it’s just a job for them.
To clarify, both are perfectly valid perspectives. But for the latter, I believe the experience is not as satisfying.
Those people do what they need to do to meet the requirements and expectations. But you don’t see the sparkle in their eyes when they start their day. They don’t come back after time off telling you they spent their vacation developing and experimenting because they enjoy it so much!
I believe the passion that the first group shares (myself included) ultimately gives us a greater sense of satisfaction in our work and life. You can choose to just put in your eight hours a day, or you can choose to be part of an amazing community of like-minded artists.
Fostering the artistic community
One of the things I love most about software development as a whole is the community spirit.
Now, I’m not saying all software development is altruistic. Of course, there are licenses, intellectual property, and people making money off software. But there is still an amazing sense of community.
For example, in any given product or project, you’ll use hundreds and hundreds of pieces of code written by people you’ve never met. They share their code – usually for free – and provide documentation and support. Or people will come together to:
- Create
- Support
- And collaborate
Look at Meta. Their open-source LLaMa model rivals OpenAI’s, GPT, and O models and is almost as powerful. When they released it, they did it for free. As controversial as Meta and Zuckerberg are, there is no denying that they are huge players in the open-source community.
In general, there’s not the same sense of ownership or stealing that you see in other fields. There’s more of a pay-it-forward mentality in software engineering. The Free Software Foundation epitomizes this mindset. This open-source community emerged back in the 1980s. It’s still going strong, and I hope it does so for many more years.
Just like I hope for the people treating software development as an art form.
The short version: connect with your inner artist
Like architecture, software development is a broad creative process that involves innovation, problem-solving, and building long-lasting functional systems.
Some of the other things I appreciate about the artistic nature of software development are:
- Style and substance: it’s the marriage of functionality and aesthetics
- Break-through: amazing innovations are made through problem-solving
- Community: the whole community aspect is just magical to me
As engineering managers, we also have to balance functionality and creativity. We all have deadlines and budgets to manage, but we also have to encourage the artistic environment that leads to innovation. That is one of the arts of engineering management.
I believe that creating an environment that is supportive of not only technical expertise but also creative expression will increase your and your engineers’ workplace satisfaction and innovation.
So, the real question is: how will you choose to approach software development – as a job or as an art?
Want more tips on leading effective software engineering teams?
Join my newsletter if you’ve found this content useful
Originally published on Medium.com
Content in this blog post by Alex Ponomarev is licensed under CC BY 4.0.