The ninth guy interviewed in Coders at Work: Reflections on the Craft of Programming is Guy Steele, Software Architect for Oracle Labs and Principal Investigator of the Programming Language Research Group.
If you read the introduction of his chapter, it would mean no surprise at all that he works in a programming language research group. He is a true polyglot, he mentions about two dozens of languages he used seriously. I’m afraid by seriously he means a deeper knowledge than most of have on our major language.
He was also there at the creation of some languages, like Common Lisp and Scheme and he designed and wrote lots of standards and documentation for them.
It’s an uplifting story that the MIT students and DEC took young people seriously back in time. You could hang out there as a high school student, you could make proposals and they didn’t mind, they didn’t send you home to do your high school homework. Even if they didn’t agree with your proposals, their reactions were humble and respectful. This is missing even from most of the workplaces…
Something I’m sure we all experienced is that sometimes we have to turn off our computers in order to progress. We have to walk away to solve some programming issues. Steele confirms that he does the same. He turns off the computer with its whirring fans, clears his desk, spread out his papaers and thinks. Sometimes that’s way more useful than sitting in front of your screens.
Interesting to read how he learns about a piece of software he doesn’t know. He takes one particular command and trace it through. Maybe I should do the same in my current project.
As a real polyglot he doesn’t have a favourite language. He understands that there are many great ones with different caracteristics and strengths. Each of those is suitable in different situations.
It’s an interesting contradiction to read that he thinks that even though it’s easier to develop something today than it was 30 years ago, still our job has become a more difficult activity. According to him it’s maybe because it’s not possible anymore to know everything that’s going on in the computer. He considers that the biggest change of the past decades of programming.
Just like so many people he absolutely recommends to read Knuth, The Art of Computer Programming. Steele also recomments books from Aho, Hopcroft, and Ullman, [The Psychology of Computer Programming(http://amzn.to/2iFMCkJ) from Gerald Weinberg and something I already read and can confirm its importance: The Mythical Man-Month by Fred Brooks.
To finish this post, I’d mention a thought about language design and growth. Steele says there are two ways to design a language. One way is that you decide on a set of features and you implement the language. If something is missing, it’s missing. That’s it, it was already done. That’s how Pascal and Ada were implemented. Another way is that you start with a smaller set of features and you let it grow. This latter approach has the danger of getting too complex languages in the end, I’m sure you could also name a few…