Human Factor in Programming

This post presents cuts from the extraordinary speech "Aesthetics and the Human Factor in Programming" by Andrei Ershov on 18 May 1972.

Check the timelessness of the thoughts from nineteen seventy two:

/-/
A small software house, which at its smallest might better be called a software hut, will often be nailed together in the course of several weeks by a group of able programmers, who may perhaps plan on leaving a large organization in which they have received their initial experience. What motivates such an initiative? In many cases, it is a mix of profit-thrust and a somewhat unrealistic desire to break free of excessive supervision, accompanied of course by some particular interesting and useful technical software idea. However, only those groups have survived in which initial motives were quickly subordinated to tough economies, and in which hierarchical interpersonal relations and strong discipline were imposed - in other words, all of those things reconstructed which originally will have driven a software group from its parental roof.

/-/
I see a certain danger in converting programmers into what is simply a highly paid subgroup of the working class. If such a tendency is to be resisted, a programmer must find some system of inner values in his specialty, values which can help him both to assimilate industrial working methods and, when necessary, to transcend them.

/-/
In his work, the programmer is challenged to combine, with the ability of a first-class mathematician to deal in logical abstractions, a more practical, a more Edisonian talent, enabling him to build useful engines out of zeros and ones, alone. He must join the accuracy of a bank clerk with the acumen of a scout, and to these add the powers of fantasy of an author of detective stories and the sober practicality of a businessman. To top all this off, he must have a taste for collective work and a feeling for the corporate interests of his employer. I know that to overcome these difficulties, great emotional effort is required, which can be provided only through conscious deliberation and a positive inner attitude.

/-/
How should programmers be trained? By cultivating a "world view" (in universities) or by emphasizing "job-related" skills (in technical institutes)?

/-/
In programming, the use of assembly-line organization can destroy the intellectual work-satisfactions which motivate programmers, and the contradiction between the monotony of work so organized and the difficulty of a programmer's work can bring about neurosis. Imagine a man who is compelled to work exclusively at solving crossword puzzles, eight hours a day, five days a week, 50 weeks a year, and you will understand what a programmer specialized in the writing of some narrow class of program components faces.

/-/
Does this not indicate a preference for the easy plasticity of a young man, an attempt to avoid grappling with a more mature and resistant 33-year-old family head? Does it not also show that we don't know how to enhance the professional dignity of an implementer; how to help him avoid losing ground with age; how to keep him useful, not only for the manager with whom he must work, but for himself and for his future managers?

/-/
programming requires of a man a certain attitude, a certain moral preparation for his duty. The programmer is the lynchpin of a second industrial revolution; as such he must possess a revolutionary way of thinking. That programmers are an elite group is quite evident to me. In this respect the activity of programmers represents a significant challenge to humanity as a whole; a challenge which I hope will be accepted.

/-/
programming embodies rich, deep, and novel aesthetic principles on which the inner relationship of a programmer to his profession is based, those principles which give him both intellectual and vivid emotional satisfaction. This aesthetic has roots in the creative nature of programming, in the difficulties which programming overcomes, and in the social significance of programming.

/-/
This requirement for 100 percent fulfillment is not only the source of some of the programmer's most frustrating difficulties, but at the same time it gives rise to some of the deepest satisfactions of his work.

/-/
Knowing fully the possibilities which the machine affords, he will nevertheless not allow himself to indulge in a personal intellectual laziness implying reckless expenditure of computational resources. This essentially aesthetic relationship of the programmer to his work constitutes a most effective safeguard against the mindless accumulation of software inefficiencies, which, though it might not raise any special objections on the part of companies which sell machine time, would cheat the consumer and lose for us the full power of machines.

/-/
On first meeting and attempting to analyze a social phenomenon of grand scale (and the arrival of the computer on the historical scene is without doubt such a phenomenon) we search for historical analogies broad enough to give us a basis for extrapolation and prognosis. It is in this sense that we speak of the advent of the computer as a second industrial revolution characterized by the industrialization of intellectual work. Another analogy on the same scale may be offered for the profession of programming. The progressive expansion of software is, it seems to me, comparable in many ways to the phenomena set in motion by the invention of printing. The accumulation of books, each one embodying its author's view of the external world, broadened a social process of understanding. In the same way, programs and data banks accumulate informational and operational models of the world, and allow us not only to influence but also to predict the world's evolution, giving us in this way an unheard-of power over nature.

/-/
To be a good programmer today is as much a privilege as it was to be a literate man in the sixteenth century. This privilege leads the programmer to expect recognition and respect on the part of society.

/-/
I will add a remark to the continuing discussion of "prima donnas" in programming. To declare flatly that they are undesirable is at the very least shortsighted. I have been lucky enough in my life to meet several such prima donnas who, despite their individuality and extravagance, made priceless project contributions, especially in difficult situations. So that I definitely advocate complete recognition and full exploitation of the broad scale of individual abilities in programming.

/-/
At present we limitlessly recruit young people into programming, promising them the sky. However, human generations change much more slowly than machine generations. We, as innovators, must learn to keep a 50-year-old programmer as useful as a new recruit.

About Andrei Ershov (1931-1988) and his archive: http://ershov.iis.nsk.su/en
Link to the manuscript of this speech: http://ershov-arc.iis.nsk.su/archive/eaindex.asp?lang=2&did=18046