1. Nine o'clock
Nine in the morning. A lecture hall, sixty students, one professor, a task on the board.
Not quicksort. Not a linked list. Nothing that balances itself.
Build a shop. Registration, catalog, basket, payment, and a back end that stays up when the shop is mentioned on television. Those who prefer may build a game instead, in three dimensions, with other people in it. You have until twelve.
At twelve there are fifty-one shops and nine games. Most of them work.
The second part begins at one, one student at a time, and it consists of the question that was always on the exam, in smaller handwriting.
Why.
2. The bait
In 1968 a thirty-year-old mathematician published the first volume of a book with a clickbait title. There was nothing to click. The mouse was shown to the public that December, and nobody had yet double-clicked anything.
A publisher had asked him for a book about compilers. He wrote the other thing instead and called it The Art of Computer Programming, in a field where art was the last word anyone was waiting for.
3. The catch
It worked. People who would not be seen with the word art on any other book have kept this one on the shelf for fifty-eight years. The spines are mostly unbroken, which is the usual condition of scripture.
4. The line
Six years later they gave him the Turing Award, and he spent the lecture on the word.
He had looked it up. Ars, artis: skill. Not the museum. The hand.
Then he drew a line.
Science is knowledge which we understand so well that we can teach it to a computer; and if we don't fully understand something, it is an art to deal with it.
Hold the line still and watch what crosses it. Sorting crossed it in the fifties. The compiler crossed it the week a machine wrote one. The line has not moved. Everything the machine has taken was on the far side of it already.
He also quoted the people who had wanted the word gone before he ever used it. In 1959 the editorial board of the profession's new journal wrote that a transition "from an art to a disciplined science must be effected." It was policy, from the first board, in the first years. He noted that the discipline had since become a science "merely by deciding to call it computer science."
We became engineers by the same method.
5. Why I am entitled to say this
I am, by any fair measure, one of the better programmers I know, and I can defend perhaps a tenth of what I have shipped. The rest compiles.
6. The forgetting
Between the book and the exam we learned the names of things. The build tool, and the tool that configures the build tool. The logger with fourteen settings, of which the thirteenth matters, at night. We learned to inject dependencies and to invert control, and we called the sum of it architecture, and now and then it was.
In those years the question in smaller handwriting went unasked, sprint after sprint, for the plain reason that nobody was going to fail us for it. Reviews asked whether it worked. When somebody did ask why it was shaped like that, the answer was the name of a framework.
We built the interview out of the first part. Forty-five minutes, a whiteboard, a sorting problem. We tested, with great seriousness, the one part of the job that could be taught to a computer, because it was the one part with an answer key.
7. The artifact
A machine can now write a C compiler in a matter of days, and has, and a web browser, and has.
So the question gets asked, usually near the coffee machine and usually by someone with a mortgage. What is left for us.
Knuth saw this coming in 1974. In the same lecture he described a field called automatic programming, whose proponents, he wrote, would love to give a lecture entitled Computer Programming as an Artifact, programming having become by then a relic. He did not think they would completely succeed. He wished them well regardless, on the grounds that turning an art into a science is how the art advances.
That answer is fifty-two years old.
8. The question
Is what the machine makes art, or trash it learned a trillion times over and reproduces without end?
Nobody will say. Ask the machine and it gives you three paragraphs for each side and a summary. Ask the man who wrote the book; he gave up email in 1990 and is still writing the book.
Whether the machine's compiler is art will never be settled. Whether yours was will be settled at one o'clock, with your name at the top of the sheet.
The machine will build anything. It will sign nothing. A signature is a promise, and a promise needs someone with something to lose.
Take the line once more. What we do not fully understand is an art to deal with. Nobody fully understands the machine, including the people who made it. Dealing with it is therefore art, by the line drawn in 1974, and the dealing comes to one act: deciding what you will put your name under.
9. A short dictionary for the second part
Framework, n. An architecture whose oral exam was taken by a stranger.
Boilerplate, n. Science we kept doing by hand, out of respect.
Senior, adj. Able to be asked why.
Technical debt, n. Interest on an unanswered why.
Legacy, n. Decisions that outlived their defense.
Code review, n. The oral exam, shortened to four letters.
Art, n. The remainder.
10. One o'clock
One o'clock. The first student sits down. The shop has worked since eleven. The laptop stays closed.
Why is the basket in the database and the catalog in memory.
What happens at three minutes past twelve when the payment provider does not fail but answers in forty seconds.
What breaks first when the television mentions you, and did you choose it.
Which of your fifty-nine classmates could read the password table.
Show me one place where you refused what you were offered, and say why.
What did you leave out.
The student built the shop in two hours and had one hour to find out what had been built.
The second part begins at one. It always did. Most of us went to lunch.
Reference: Donald Knuth, "Computer Programming as an Art", Turing Award lecture, Communications of the ACM, December 1974. All quotations above are from it.
Top comments (0)