personality is difficult, and matching personalities to job descriptions is perhaps
near impossible; but isn't there some way we can select those people whose personalities
suit them for programming? After all, if personality is important for programming,
we cannot just give up without trying. Perhaps we can gain something from consideration
of extreme cases, even if we cannot do very much with the general case.
The nature of the way that personality interacts with programming
success is subtle, but we probably can make some assertions about how personality
traits may lead to programming failure. Although the average programming manager
would say that intelligence is more important than personality in programming
success, very few could cite cases of people who turned out not to be intelligent
enough to program, but everyone knows of cases of people who were not temperamentally
suited to the programmer's job. It is in this sense that we can assert that personality
is more important than intelligence in programming.
If we look more deeply
into the observed dominance of personality factors in programmer failures, we
can easily understand why we are more likely to make a personality mistake in
hiring a programmer than an intelligence mistake.
In the first place, there
is an enormous amount of preselection of people, which places limits on who is
likely to be making application for a programming job-even as a programming trainee.
Part of the pre-selection is imposed in explicit hiring policies, such as requiring
a college degree, or even a degree in specific fields.
Possibly even more
important is the self-selection that takes place because the uninitiated believe
that programming requires "a lot of math." Not too many years ago, the
external perception of programming was so distorted that young men were advised
to "study electronics" if they expressed an interest in working with
computers. Young women, of course, were automatically excluded by this criterion,
for young women did not study to be "engineers."
faults of this preselection in excluding people who might have made great success
as programmers, it does have the effect of largely eliminating people of below-average
intelligence. Such people, if they had presented themselves for jobs as programmers
in great numbers, might have failed in great numbers, making us feel a need to
measure intelligence of programmer applicants.
But is there no comparable
selection process on the basis of personality, as well? No doubt there is, but
personality has many more dimensions than intelligence-although intelligence is
not by any means measurable by a simple score on an IQ or programmer's aptitude
test. Thus, selection on a personality basis is not likely to produce such uniform
results with respect to the needs of programming. Moreover, even if the schools,
say, did make a personality selection as strong as an intelligence selection (and,
make no mistake, school success involves a large element of personality), personality
is more changeable than intelligence.
In fact, one of the few really reliable
things psychologists can say about these two aspects of a person is that intelligence
is much less responsive to environment than is personality. Marriage, for example,
is not likely to have a measurable effect on a college graduate's intelligence,
but it will most assuredly provoke personality changes that can be perceived even
by the untrained eye. Thus, a man who was a frivolous playboy in his fraternity
days might well surprise us with the conscientious programming job he now does;
but if he was unable to write a simple declarative sentence in college, marriage
and family will probably not help one bit.
The Achilles' Heels
traits, then, would give an indication of potential failure in a programmer? We
can speak on this subject only from anecdotal material, for there have as yet
been no formal studies of this question. Nevertheless, we can probably say with
assurance that someone without the ability to tolerate stressful situations for
a period of a week or more is not good programmer material-given the realities
of programming work today. We are speaking of professional programming, of course-where
the work and schedules are imposed from the outside. Amateur programming is not
such a stressful pastime, possibly because one's entire career does not seem dependent
on finding a particular bug by next Thursday.
Because of the diversity of
programming work, people who are not in some measure adaptable to rapid change
will probably have trouble as professional programmers. It is unlikely that a
programmer will go through a month-not to speak of an entire career-without having
to face the psychological shock of having his work pulled out from under him,
or at least changed sufficiently so that his previous efforts become garbage.
speaking of garbage, one of the most easily identifiable personality needs in
programming is a modicum of neatness. We are not speaking here of personal grooming,
though in one case a programmer actually smelled so bad that nobody could sit
next to him long enough to look at his listings. What we mean is a slight compulsion
to keep one's papers in order, without which the computer's paper-generating capacity
inexorably leads to grief. One computing center selects its programmer trainees
by giving a test and choosing the candidate who turns in the neatest paper, not
the one with the highest score.
Another essential personality factor in
programming is at least a small dose of humility. Without humility, a programmer
is foredoomed to the classic pattern of Greek drama: success leading to overconfidence
(hubris) leading to blind self-destruction. Sophocles himself could not frame
a better plot (to reveal the inadequacy of our powers) than that of the programmer
learning a few simple techniques, feeling that he is an expert, and then being
crushed by the irresistible power of the computer (the Deus ex Machina).
other side of the coin of humility is assertiveness, or force of character. A
programmer's job is to get things done, and getting things done sometimes requires
moving around obstacles, jumping over them, or simply knocking them down. The
humble person is acutely aware of the ways in which he may be wrong; his critical
mind tends to dominate his force of character. Now, although it is true that force
of character without a critical mind is like a steam boiler without a safety valve,
a critical mind without force of character is like a safety valve without a steam
boiler. There is no danger of explosion, but then there is no possibility of getting
any work done, either.
Last among the essential personality traits for programming,
we might list sense of humor. The computer "doth make fools of us all,"
so that any fool without the ability to share a laugh on himself will be unable
to tolerate programming for long. It has been said with great perspicacity that
the Programmer's National Anthem is "aaaaahhhhh." When we finally see
the light, we see how once again we have fallen into some foolish assumption,
some oafish practice, or some witless blunder. Only by singing the second stanza,
"ha ha ha ha ha," can we long endure the role of the clown.