2025-01-30
James Diacono
james@diacono.com.au
A little while ago I took some time off work to do some self-directed study. I felt that, despite having plenty of practical programming experience, I had big gaps in my knowledge due to a lack of formal education, and I wanted to make sure I had a good understanding of the fundamentals.
My goal for this sabbatical was to become a good programmer. I began working my way through The Art of Computer Programming by Donald Knuth. After a few months, however, I found that the experience as not as rewarding as I had expected. Tackling the mathematical content in the early chapters had taken great effort. While this was not a problem in itself, it did contribute to my growing disillusionment when the material seemed not to be converging on what I loved about programming.
Richard Feynman once observed that Princeton’s Institute for Advanced Study, while supposedly providing ideal conditions for great work, seemed to have the opposite effect.
When I was at Princeton in the 1940s I could see what happened to those great minds at the Institute for Advanced Study, who had been specially selected for their tremendous brains and were now given this opportunity to sit in this lovely house by the woods there, with no classes to teach, with no obligations whatsoever. These poor bastards could now sit and think clearly all by themselves, OK? So they don’t get any ideas for a while: They have every opportunity to do something, and they are not getting any ideas. I believe that in a situation like this a kind of guilt or depression worms inside of you, and you begin to worry about not getting any ideas. And nothing happens. Still no ideas come.
Nothing happens because there’s not enough real activity and challenge: You’re not in contact with the experimental guys. You don’t have to think how to answer questions from the students. Nothing!
Richard Hamming held a similar view, postulating that interaction with “harsh reality” is a necessary precursor for intellectual accomplishment. Those who withdraw tend not to make significant progress.
All this is to say that my sabbatical did not go according to plan, and I ended up returning to work early when the goal of “becoming a good programmer” revealed itself to be self-defeating. Exactly how could the accomplishment of such a goal be detected? Did having such a goal imply that I was a bad programmer? Judging oneself as good or bad at something is an unhelpful oversimplification.
Nowadays I just interact with harsh reality until inspiration strikes, riding it until my enthusiasm dissipates. I no longer beat myself up when not reading about computing or working on interesting problems, because I know that those times will come.