The 1960s were characterized by a perpetual “crisis” in the supply of computer programmers. The computer industry was expanding rapidly; the significance of software was becoming ever more apparent; and good programmers were hard to find. The central assumption at the time was that programming ability was an innate rather than a learned ability, something to be identified rather than instilled. Good programming was believed to be dependent on uniquely qualified individuals, and that what defined these uniquely individuals was some indescribable, impalpable quality — a “twinkle in the eye,” an “indefinable enthusiasm,” or what one interviewer described as “the programming bug that meant … we’re going to take a chance on him despite his background.”
In order to identify the members of the special breed of people who might make for a good programmer, many firms turned to aptitude testing. Many of these tests emphasized logical or mathematical puzzles: “Creativity is a major attribute of technically oriented people,” suggested one advocated of such testing. “Look for those who like intellectual challenge rather than interpersonal relations or managerial decision-making. Look for the chess player, the solver of mathematical puzzles.”
The most popular of these aptitude tests was the IBM Programmer Aptitude Test (PAT). By 1962 an estimated eighty percent of all businesses used some form of aptitude test when hiring programmers, and half of these used the IBM PAT.
Although the use of such tests was popular (see Chapter 3, Chess-players, Music-lovers, and Mathematicians), the were also widely criticized. The focus on mathematical trivia, logic puzzles, and word games, for example, did not allow for any more nuanced or meaningful or context-specific problem solving. By the late 1960s, the widespread use of such tests had become something of a joke, as this Datamation editorial cartoon illustrates.
So why did these puzzle tests continue to be used (including to this day)? In part, despite their flaws, they were the best (only?) tool available for processing large pools of programmer candidates. In the absence of some shared understanding of what made a good programmer good, they were at least some quantifiable measure of … something.
Well this is the problem even today, there is still no adequate measure for identifying good (or potential) programmer from the bad ones.
There are a lot of rumours, discussions and unproven hypotheses… but the truth is no one has been able to create a bulletproof test for programming aptitude.
However I believe you hit a key point with “processing large pools of programmer candidates”. My opinion is that there is no perfect way to recruit developers, that would never yield false positive or false negative results.
Nevertheless it doesn’t mean that we should give up on testing the candidates, on-contrary by doing this we can filter out the candidates. But for this I wouldn’t use puzzle tests, instead I would go with something like the coding tests from TestDome.
In about 1968, I was a programmer in the US Army, rated on Army testing in the top 5% of programmers. A new colonel took command and mandated the IBM PAT. I failed. All the other senior programmers (except the ones who had been drafted from IBM) failed. Most of those IBM draftees worked for me, and they were adequate. The PAT went away, and the colonel was quietly reassigned to a Signal Corps unit.
In 1974, after graduating college, I applied for a job at Northrop. They also required the PAT. I failed again, but passed with 100% their internal test based on symbolic logic, coding and math. They hired me. I spent 40 years coding and designing systems, teaching at undergrad and grad levels, and was a Dean of Computer Science.
Forget the tests. Give me an hour with a student, and I can tell you if they can program or not.
Most can’t. It truly is a combination of talent and training.
In full disclosure, since I have retired, I have not kept current. I lost a great job once because I told Ed Yourdon that C had set the industry back 10 years. It was and is a macro assembler (as are all its successors). Even IBM thought those were bad ideas. I was a Wirth follower at the time. I still think that Modula-2 was a good language. Ada was a disaster designed by a DoD committee.
So, to all of you C, C++, and variant programmers out there, I welcome you back to the 1960s. We professionals tried like hell to get out, but managers and junior programmers who didn’t know anything else jumped on the C wagon because they learned it in college.
Challenge for you: take 1000 line of C written 10 years ago by somebody who has left your department and write a description of what it actually DOES.
I submit, based on experience, that it is not possible.
I have the IBM Programmer Aptitude test to thank for my being able to land a job as a programmer trainee in 1969.
At the time I was a year out of the Army after having been drafted – and had been working as a computer operator in a large data center with a pair of 360/50s and 2 IBM 1410s. At first it was interesting but it started to get less fun and I disliked the rotating shifts. While long jobs were running, I read every IBM manual that was in the shop’s library.
One weekend I saw an add in the paper for an entry level programmer at a local department store. I decided to apply even though I did not have a degree having completed only two years of college as a physics before being drafted.
A week later I was called in for both an initial interview and to take the IBM PAT. The interview went well and I must have scored well on the PAT. The following week was asked to come back for an interview with the hiring manager.
The following week I received a job offer with the caveat that there was a probation period of 90 days. Turns out two of us started on the same day. The boss informed us that there was only one position and at the end of 90 one of us will be gone. As it was, at the end of the trial period, my first program in 360 assembler was working and I get a $10/week raise. I stayed in software development for almost 50 years.
It is my opinion that you CAN teach anyone how to write code.
Not everyone CAN be a good programmer.
A PAT can be a good indicator but the proof is in the pudding.
Your history brought a smile to my face. Starting with unit record equipment, I had a chance to program on an IBM 1440 IF I could pass the PAT. Evidently I made it and went on to enjoy an IT career including Director of IT with a major corporation. However, my first love always remained developing solutions for company projects. Management provided the $$, but the creative aspects provided the fun and satisfaction.
In the late 70’s, I worked as a file clerk in the accounts payable department of a textile company. Eighteen years old, with only a high school diploma, I was lucky to have a job. That company offered their associates the opportunity to join their IT department as a “Trainee” in 1978. All that you had to do was take the IBM Programmer Apptitude test and have one of the 10 highest scores…. then be in the top 5 after interviewing with the 6 Project Managers …
Out of 278 people I had the 4th highest test score and out of the top 10 who interviewed I was #3.
The company purchased a training course and hired a training coordinator, we then spent 6 months doing the self paced course training and an additional 6 months working with a mentor on our first assignment.
That opportunity changed my life. I have had a successful career in Computer Technology that began in 1978 and it continues today (at 60 years old).
I am so grateful!!
In the early 70’s I had the “opportunity” to take the PAT over twenty times! I got really good at it as the exact same test was presented each time. I mistakenly assumed that the better the score, the better my prospects.
One potential employer told me that I was “too smart” and would leave within year due to boredom. My plea that I was not really that smart but knew the test, fell on deaf ears.
PS – They were quite incorrect. I stayed with the initial employer for 18 years as they provided (more) challenging assignments. Hiring didn’t even bother with the PAT. I told them I had learned eight programming languages while at college. This was enough for them to take a chance on me.
PPS – Still programming today but my language of choice is Perl rather than IBM assembler
Thanks for this comment! You confirm something that I had believed to be true; namely, that many people took the PAT multiple times. It is interesting to hear you say that you don’t Belize that getting better at the test necessarily meant that you were getting better job offers. Also interesting to hear about your potential employer who thought that you were “too smart” to be content being a programmer. That really captures the tension that pervaded the period that the book covers, meaning that for some, programmers were geniuses that had to be “born, not made,” while others regarded them as “mere technicians.” In any case, thanks again for your comment, and hoping you are finding Perl more fun than assembler