Coders at Work
Peter Seibel
Man, this thing is epic. I read it for 18 months at least. I simultaneously have great reverence for these older, founding programmers and also a lack of interest in the theoretical and details of their working environments that were so different than mine. So some areas I was dozing off but suddenly a nugget of wisdom would fall off the page and into my head.
Well worth your time, but plan to read it here and there for months.
Luke Francl put together a nice overview of his thoughts on the book as well.
Unfortunately I did not start writing down notes until about half way through the book.
Simon Peyton Jones
A good attribute of a good programmer is they try to find a beautiful solution. [280]
Beautiful code is code that is obviously right. You may need to be told why, [b]ut after you have that ... you can see, oh yeah, that's right. [284]
The most depressing thing about life as a programmer, I think, is if you're faced with a chunk of code that either someone else wrote or, worse still, you wrote yourself but you no longer dare to modify. [286]
Peter Norvig
I see tests more as a way of correcting errors rather than as a way of design. It seems like only if it is so simple that the solution was preordained would that make sense. [304]
Dan Ingalls
"Pair debugging" seems like something we do well sometimes and we could do more of it. [395]
When asked: Do you have any tips on how to be a good techincal leader?
- The first thing is being clear about what you're trying to do.
- Leave it open where they do their part of it.
- Trust is part of it, trust of the people that you're working with. The other thing is just confidence. When the picture's clear it's easy to be confident about it. [403]
I think it's worth it to take several different computing environments and then pick a problem to solve in them, which either reveals the strengths of the language or encourages you to somehow escape from it. [410]
L. Peter Deutsch
If you get the data structres and their invariants right, most of the code will just kind of write itself. [420]
It's important to measure things. There will be times when your beliefs or intuitions just won't be right. Even sometimes measure things you don't think you need to measure. [430]
"Software developer" covers pretty much everything from architecture to coding. [431]
The fact that in Smalltalk you effectively cannot put more than one method on the screen at a time drives me nuts. [440]
Ken Thompson
I'll throw away code as soon as I want to add to it and I got the feeling that what I have to do to add it is too hard, I'll throw it away and start over.
If I don't have control, it's someone else's code, the I'll suffer. Or not do it.
[If] you get bitten, that's just part of debugging. If there's something you forget or didn't do, when you realize it you do it. [460]
When asked: How do you identify talented programmers?
It's just enthusiasm. You ask them what's the most interesting program they worked on. And then you get them to describe it and its algorithms and what's going on. If they can't withstand my questioning on their program, then they're not good. If I can attack them or find problems with their algorithms and their solutions and they can't defend it, being much more personally involved than I am, then no. At the same time you can get a sense of enthusiasm. It's not something you ask directly, but in the conversation you'll come with this enthusiasm-ometer, and that is tremendously helpful for me. That's how I interview. I've been told that it's devastating to be on the receiving side of that. [472]
Fran Allen
[Learn] about programming and [learn] about a new language by taking an existing program and studying it... take a program from somebody that I knew was a great programmer and read it. [489]
On hiring: If they don't get enthusiastic about something, they're not going to get charged up in a group. [500]
Bernie Cosell
The place of an older programmer: A better mix is to be able to give young and active people guidance. [553]
I'm glad I can have a little bit of repute as having once been a good programmer without having to actually demonsrate it anymore, because I don't think I could. [563]
Donald Knuth
Describing why literate programming works for him...could definitely be used as a defense of actively maintaining both code and code comments: I try to match a natural brain process of seeing things in two different ways at a time in order to understand something better. I think the key is usually to have a stereo view instead of a one-dimensional view. [592]
One time I broke my arm and I had a month where I couldn't do anything much, so I read source code that I had heard had some clever ideas in it that hadn't been documented. I think those were all extremely important experiences for me. [600]