📜 ⬆️ ⬇️

Programmers and the human factor

Introduction

Often we have to deal with the cliché that programmers are techies. Why I call it a cliche, not an axiom, and is the essence of this article. The article arose on the basis of accumulated thoughts, arising from interviews of developers and other related professions, about what people are called programmers.

techie

The Myth of Tech

So, I challenge the statement that a programmer is a techie. Not in a particular sense, but in general. That is, I am not trying to prove that it is impossible to find a programmer who is a techie. I argue that the "techie" property for a programmer is neither necessary nor sufficient.

Etymological argument
First, why look at the etymology? Etymology, the science of the origin of words, essentially allows us to trace the development / degradation of abstraction, denoted by a word, in the face of the changing demands of civilization. Words endure changes, extending to concepts that are similar to the original meaning or, by virtue of certain transformations, change the meaning to the opposite. We will return to this point in more detail later, since it directly relates to the topic of our article. Either way, the etymology allows us to track the original idea embedded in the word.
')
Equipment
Ozhegov's dictionary defines a techie as:
TECHNIQUE, I, husband (talk) A specialist working in the field of technology, maintenance of something st., As well as in general a person who knows and loves technology.
The etymology of "technology" leads us to the Greek τέχνη - art, skill, ability. That is, the key element in this term is the craft element. Exploring the most common derivative of technology from technology, we see that technology (from ancient Greek τέχνη is art, skill, skill; λόγος is thought, reason; method, method of production) is a set of measures and techniques ensuring the functioning of a particular system. In the case of information technology - information systems. Thus, technology is formalized and structured knowledge. It is in this context that techies are called "dry." A dry techie is a person who views the world in the perspective of an ossified framework and instructions.

Program
The programmer is the author of the program. The program (from the Greek. Προ - before, Greek. Γράμμα - record) literally translates as “prescription”, i.e. the programmer writes as it should be. Yes, he is forced to paint in detail so that the description qualifies as a “technology”, but we cannot get away from the prefix pro-. The programmer does not write, he prescribes. Prescriptions are made to those who operate with a higher level of abstraction for the consumer of these instructions. Thus, the programmer is not at the level of technology, but above it. Next we look at what is embedded in these words.

Cognitive argument
In its overwhelming majority, the ultimate goal of IT technology is to satisfy the human needs of users. There are, of course, scientific, research, military, etc. projects, but the boom of IT technologies fell on corporate and consumer software, solving user problems. For example, according to data for 2009, the segmentation of the IT industry in Europe is as follows:

Of all these areas, only middleware operates with entities that are not fully understood by the user (and even if the user is pumped, he will understand the concept of workflow), all other segments are focused on user concepts and operations on them. In the end, any program is designed to receive input from the user in a format that is clear to him, to perform operations that are understandable to him, and to produce a result that is understandable to him. This user can be a schoolgirl, a system administrator, a deputy, a pilot or a researcher of Kabbalah. But all these are people whose brain has some need to process some data with a certain set of technologies. And then the question arises: who organizes the translation of these psychological signals into a language that is formalized and understandable for technology? Who, if not a programmer?


Programmer, Math and Computing

No less common is the opinion that programming is a field related to discrete mathematics, so it is worthwhile to teach mathematics to some programming language, it will turn out to be a good programmer. Again, I don’t argue that knowledge of cryptography, combinatorics, relational algebra, statistics, and other disciplines from applied mathematics will not make the programmer worse, but, again, I wonder: are they necessary?

Computer and processor
A computer, also a computer, etymologically goes back to the verb compute - count, calculate. And this is not surprising, because at the lowest level of operating a computer is full of arithmetic, the lion's share of which is composed of addition operators. For example, I joined the debugger with the Skype process (which is not seen in complex mathematical calculations). Within a radius of five instructions - two additions:

In the 50s of the 20th century, when people communicated with a computer in its native language, mathematics was an integral part of their vocabulary. In addition to this, the tasks themselves delegated to the computer were mostly computations. Thus, the computer really was engaged in computing, and its interlocutors - programmers actively participated in it.
However, as we can see, computers did not stand still, getting closer to people. At some point, the computer gets a human adjective - personal. PC - personal computer becomes the de facto standard, so the definition of "personal" becomes tautological and therefore often skipped. It is worth noting that here we notice the previously mentioned deformation of the symbol. After all, the person who owns their personal computer is not as interested in computing as their predecessors who created the computer for computing. New users operate at a much higher level of abstraction, and often at school they have a solid deuce on math. What they are doing with the computer, can not be called a calculation. They simply enter data and receive other data back. That is, following the established terminology, data processing. For them, the computer is a processor. Paradoxically, this word refers to the most computing part of a computer - the central processing unit. Because the term "computer" is already taken. But it should be the other way around - people work on a processor that translates their high-level abstractions into the strict language of arithmetic instructions by means of the CCU - the central computing unit.

Evolution of the programmer

When the tool changes, the craftsman cannot help changing. Considering the incredible transformations that a computer has undergone, the constancy of the opinion assigned to the programmers is surprising. How can you compare the programmer who wrote this program:


and this one:

foreach (File log in Server.Logs) { if (MaxErrorCluster(WebServer.Parse(log)).Length > Config.ErrorClusterThreshold) { Alerts.Add(Messages.BruteForce); } } 

Programming languages ​​have come close to human language. The 4GL languages have become so descriptive that they look more like a metaphysical description of the universe than a list of instructions to be executed. The developed technology has so abstracted the programmers from the environment that the programmer often does not know what, where and when executes his program. The only thing that remains for the modern programmer from the dark past is the user and his requirements.

User is our everything!

So, the user is our everything. Not in terms of marketing bullshit, but in terms of focus of our intellectual efforts. The user and only the user is the main object with which the programmer works. A programmer is a translator of user lexicon into the language of the technology used. The programmer is first of all a translator. By the way, layered architecture is a continuation of this translation, bringing the user thought set forth in a free form to forms that are understandable to silicon crystal lattices. Programmers made such a translation far in the 50s, making them in their heads, often not noticing all the steps themselves. Today, a whole hitch of technology allows the programmer to reduce the translation step to a nearby technology, but this is still a translation. And the task of the programmer to understand the contents of the user's brain is still as relevant as it was sixty years ago.



Programmer and abstractions

The calls of design giants to use the ubiquitous language are essentially a rephrasing of the statement: bring technology as close as possible to user abstractions. Those. the technology that a programmer creates to implement user requirements must be homomorphic to conceptual classes soaring in the user’s head. There is one very important point that the dehumanizers of the programmer profession periodically forget. Concepts that live in the user's head are implicit . Those. The user's neural network is set up so that these concepts allow him in each episode to make the right decision for his subject area, but he cannot describe these concepts. Those. it is not reproductive knowledge, but reactive. That is why, when the user begins to actively formulate their thoughts, they sound like inconsistent nonsense, which they often are. The task of the programmer who translates these requirements into the language of his technology is to identify in the flow of these words those implicit concepts that generate all these requirements. It is then that the programmer is faced with the task of identifying abstractions corresponding to the user conceptual classes. If the abstraction is correctly identified, then the new incoming requirements will not break it, but fit smoothly and uniquely into it. If wrong, then the abstraction needs to be reconfigured. Programmers call this refactoring. And linguists - etymology. The search for user abstractions is a linguistic-psychological event. And the naming - of variables, functions, classes, files, modules - what is it like not digging into one's own brains in order to identify a new character that is consistent with the existing character system? The programmer creates a new language day and night — the language of his level of abstraction with his nouns, verbs, grammar. Linguists never dreamed of it!

Conclusion

In this article I tried to show that of all professions, the profession of a programmer is the most humanitarian. Only in contrast to the humanities, the programmer is forced to understand the blurry humanitarian abstractions and formulations so well to be able to formulate them for a deterministic and soulless device. Like any good translator, a programmer must be fluent in both languages ​​- human and technological. And then the translation of the programmer, called in the common program, quite has the right to claim the title of a masterpiece of world classics.

Source: https://habr.com/ru/post/187568/


All Articles