Continuing the conversation about mathematics for the programmer, I offer one more provocative thought regarding the controversial idea that programming is creativity or art. I draw the reader’s attention in advance to the fact that this is not a study or statement, but an attempt to summarize the existing opinions of various authors. Which, by the way, draw radically opposite conclusions from their judgments. Starting with the fact that programming is the pinnacle of creative thought, ending with the fact that it is easy to replace a programmer with a machine.
From the point of view of the definition of the words “art” or “creativity” in a general sense, programming, like most types of intellectual activity, is certainly a creative process. If, on the basis of some initial conditions, as a result of your actions, something new is obtained, up to the position of tokens in the source code, then you create. It’s just a definition. The formal criterion in this case is the statement that if two programmers, based on the same technical task, can write two programs that do not match up to the machine instruction, then formally both results will be separate works. The consequence of which, by the way, is the applicability of copyright in relation to programs.
Art is even easier. If programming, as we have established, is creativity, then if personal experience and social aesthetic images are applied to it, then it is also art. If a programmer adheres to some conventions, tries to make his code readable and perceived by an outside observer, then he uses art in addition to creativity. Dot.
Nevertheless, there is a widespread opinion that industrial programming has long been as far as possible from subjective thought. And one cannot but agree with this. The main algorithms have been invented, the main patterns and scenarios for the application of these algorithms are well described and systematized. There are standard libraries, frameworks, and even systems for visual algorithmization of certain processes.
Moreover, if we disassemble the term “programming”, then the modern understanding is very different from the original one. Yes, programming is still understood as the creation of, in fact, programs, but how they were created then, in the days of Donald Knuth and Niklaus Wirth, and how they are created now lies the ocean of knowledge and technology. Based on this, a programmer is now sometimes called a person who, in fact, only translates from one formal language to another – a kind of very high-level transpiler.
And if approached from this point of view, then indeed, a software engineer is nothing more than a well-trained specialist in the semantic analysis of requirements and their translation into algorithmic languages according to some predetermined rules. And there are really enough such comrades now. What, by the way, is the reason for the fear of the prospect of replacing these people with modern neural networks.
With all of the above, it is obvious that in life the third situation is more common. As a professional programmer, let’s say neatly “coder”, the industry, the employer, is required to strive for a completely formal and prescribed process for creating programs. On the other hand, there is still an out-of-the-ordinary element when you are asked to be “creative” in solving a problem. Most often, this approach is required when the analysis and design link is missing or does not work well.
Simply put, a programmer used to be an architect and an analyst at the same time, and it was difficult to do without creativity then. Not everyone can break their own consciousness into three or four independent entities and everywhere show strict formalism. Today, the role of the programmer in large specialized projects is narrowed down to actually writing programs, but I propose to consider this process asymptotic. Throwing a bridge directly between analysis and quality control will never work. Or in this case, the analyst or tester will need to partially take over the programming stage.
More often, the opposite happens. Returning to the origins, the programmer, no, no, and yes, he has to act as both an analyst and a controller. And sometimes as a task manager. That is, to engage in direct creativity.
The latter, of course, is a sign of the complete failure of the organization of the technological process, if we are talking about economic, national economic activity. However, most (I may be wrong) programmers are engaged, in addition to direct work, in development and personal projects. We are not talking about commercial start-ups or initiatives. It’s about hobbies, about self-development, about learning. In any case, it is considered that the programmer who has absolutely no parallel projects, as they say, “for the soul” is bad.
And then there is no way to take away creativity and art from a programmer. There is no initial technical task, there is no specific goal, there is no measurable result, there is personal satisfaction, there is an assessment of others – what is this if not creativity and art? In defiance of such reasoning, one has to hear the thesis that many other than programmers are engaged in creativity at this level, while not calling themselves creators. They say this is too pretentious definition for this kind of activity. But I think that’s their problem. Does the builder create when he builds his own shed or shower in the country? Does the doctor create when prescribing pills for himself or relatives? Does a marketer create by selling their junk at a flea market?
There is a place for creativity in almost any profession. Even a cleaning lady can somehow optimize her work and change the algorithm of actions. Whether to call all this creativity is, it seems to me, a matter of choosing criteria. In the zero variant, everything that is taken from someone’s head is always creativity. Do programmers experience more creativity in their lives than other technical professions? I think yes, of course.
Creative activity is sewn into the profession at a fairly deep level, and it is still too early to replace programmers with machines. I will say more, creative activity is induced by the local programmers themselves in a professional environment. That is, the more programmers use creativity, the more people call themselves creators, the further we push back the moment when all professional activities of programmers can be regulated. At the same time, someone should automate the activities of programmers. And even if these people are not also called programmers, then the phenomenon itself will not go anywhere from this.