There is something magical in the computer world, you may not be the king of Asgard, Odin, but your words are law, and that law must be obeyed. Programmers, do that. It is an activity called programming. And programming is a very complicated progress that one cannot simply describe, so I took the challenge to simply describe what is programming and what sort of activity it really is.
Programming, in essence, is writing code, and to do that one must have enough skills to understand the problem that is to be solved, to analyze, to generate hypotheses, to test hypotheses, and to finally implement it. Therefore, writing code requires a lot of attention, creativity, problem-solving, reasoning, learning abstract concepts, concept definition, and many other cognitive skills.
Programming is also an obsession. Obsession with simplicity, beauty, and a level of abstraction. I have a friend, who cannot write a piece of code without aligning spaces. The whole file is aligned, and I tell you there is no IDE, in the current market, that it can do what he can do with the space bar. It is a positive obsession, that rises with being very passionate.
Programming is a way to solve puzzles. There is this joy, which is a very short lasting feeling, that arouses the moment when a great mystery is solved by some magic words, which took only 14 hours to figure out. Also a moment, where one repeat himself/herself that either, I am an idiot or I am a genius.
Programming is a social activity. It is a way to collaborate with one another, comment and criticize without ever meeting with one another. It is a massive knowledge exchange, where people come together at a speed that is not imaginable.
So programming is not just about typing code on a blank sheet, it is more. In other words, programmers are not just some technicians who translated the requirements (or specification) of product managers into code. But what is it then?
Paul Graham has an essay called Hackers and Painters, in which he outlines his experiences and concludes that the element hackers and painters have in common is that they both are makers. The argument is rather sane, and within the community the question that has always raised here and there is whether a programming is an art or not. Artworks and programs are the product of creative human skills and imagination, and they can both be judged by their beauty, however, art has a much stronger emotional effect than software. Furthermore, programs are usually used as a tool to accomplish a certain task while art has different qualities such as hope, expression of feeling, appreciation of things, sort of propaganda of important things in life. Therefore, we can safely deduct that programming as an activity has same or similar features compared to creative arts but their end product (software vs art) are not comparable. This explains why so far we have never seen a programmer framing a source code to hang it on the wall.
On the other hand, I as well as many other people, call ourselves engineers, I do question myself (from time-to-time) whether this is the correct title or not, as other engineering fields are way more disciplined than programmers. In computer worlds, errors are much more easily tolerated despite they costs can be very expensive. I mean here and there we might have a problem with an elevator, but last time I checked one would never get 404-Not Found error on an elevator saying 4th floor not found, would you prefer 8?. Engineers apply scientific knowledge to develop solutions while programmers just want to hack their way into things.
Recently, I was reading the book of Sam Newman on Microservices, and I found that he put it very well. His argument was that our industry is a young one, which we forgot very often. And in attempt to explain what we do, we are looking at other professions and we borrow titles from other professions, such as Engineer, Architect, Rock-Star, Ninja.
Programmers are creative as artists, disciplined as engineers, practical as technicians.
We are knowledge workers, and we are trying very hard(I am hoping at least some of us) to bring our society in a better place, we do fight for ethics, we do fight for better user experience, we solve the problems that make life of many people easier and I believe we deserve quite some credit and probably a better title.
Image Credit: Mario Klingemann