"People think that computer science is the art of geniuses but the actual reality is the opposite, just many people doing things that build on each other, like a wall of mini stones".
(Donald Knuth)
There are several definitions of Art, but in all cases, the definition uses purely subjective elements. Personally, I think that it is not limited in expressions and does not require mandatory standards or canons to diversify.
But could we say that practicing a science is art, even if this is contradictory? Is it possible that following a formal method to get a hypothesis or result, shall be the product of an artistic manifestation and not just a "mental quadrature" pure and simple?
The way in which problems are solved through Computational Sciences, could be almost like writing a poem, but with a practical operational turn, since it uses a certain language to write itself, it does not have a pre-conceived way of giving solution to the issue, and often presents an intellectual challenge. It is not enough just to know the problem and give a solution, since the essence of all this art is lost, which revolves around an original idea.
Maybe it would be irresponsible to say that Computing has now become a true Art, or especially in a “place” to create it, but I think so. We see it everywhere: Software is literally eating the world. But it's just the beginning. Sooner, perhaps a "postmodern" painter, will use a brush of augmented reality, with would draw a Mona Lisa 2.0, on a canvas persisting in a ubiquitous way, in a virtual art gallery, which we will admire by accessing some sort of Matrix, where we will have a second identity, well defined, allowing us to travel to that additional reality. The Matrix is everywhere...
Welcome to the real world
All aspects of our daily life are surrounded by computer code, (and by Computer Science in general). However, accepting it does not mean that all people should be an expert in the subject, but simply they must understand common purpose concepts and overalls, understand the real impact in their daily lives. Matters such as Physics, Mathematics, or History can show us how to approach science and many of them make up the necessary tools, to properly understand the Art of Computing. For example:
Physics can help you understand that idea of computation is currently closely related to the states of an electron, and will bring a new revolutionary paradigm (Quantum Computation).
Mathematics carries all the preconceived logic existing to develop notations and understand the formal methods of software development.
And finally, History tells us how Computing has developed over time, its evolution, its impact on societies and even its probable future.
Normally when I talk about Computational Sciences, the concept of Programming invariably comes up, which I visualize as a bridge uniting the creator with his creation.
This activity is very similar to music, there is no standard to create or make music; although there is a framework to write the notes and the time, in which those notes will be played, it is not a rule when creating a piece, but rather a tool to be able to capture it. As a result, you can take your instrument and just play it without even writing a note, and it will be music.
Programming goes through the same "artistic" process, where each "brushing” has a "sense" and each "color" that is used has a "purpose", giving us emotional and intellectual satisfaction, because it is a great achievement undoubtedly, to defeat complexity and give life to our creation. Our palette are algorithms that we paint in the memory of a system and their combinations / permutations lead us to create several times, something sublime or even evocative. Even when we read the art of others (the code of others), we can recognize that many programs are genuine pieces of art: some are elegant, others are beautiful, some are striking, but there are also exquisite ones. Programming requires a lot of creativity, in addition to the abstract concepts, tools and techniques that we can synthesize; all that theory represents only a small fraction of what it takes to make a good developer. And although some accept programming as an “Art”, not all artists are the same. As people have different natures, our motivations, goals and challenges will always be different from the start. But like painters or musicians there are many programmers who only replicate things, never creating something original.
Genuine artists are different. They come up with new things, they re-define the standards of the future, and they change the current environment to improve it. They are not afraid of criticism. Because they want to create, because they want to express themselves through the code. Because they are simply free to do so, even if it is not something big that is going to change the world. And because even in this place there are misunderstood “virtuosos”:
"I do not understand your code. What are those lines right after your 'lambda expressions' inside your 'Super Class'?"
"Don’t you see? Those objects created by "polymorphism" express my internal feelings".
Programmers are artists.