The Art of Doing Science and Engineering
Main thesis:
- You should aim for great work, not only is it allowable but it is cowardly not to - in Hamming’s world, great achievements are gifts of knowledge to humanity, but any significant contributions to humanity would do
- How to do great work can be learned - it is more a matter of approach and discipline than of genius talent or luck
- True gain is in the struggle and not the achievement itself - process over outcome
Hamming’s advice after 30 years learning from the greats at Bell Labs:
- Focus on the fundamentals and learn to learn; as knowledge increases exponentially, this is the only viable way to keep up
- Develop your vision of the future; this is what tends to separate leaders from followers - concretely, for most of his life, Hamming spent an afternoon a week thinking about the future of computing
- What is possible? (Science)
- What is likely to happen? (Engineering)
- What is desirable to have happen? (Ethics)
- Have the courage to work on an important problem and believe you can solve it; this is a non-negotiable requirement to do great work
- Practice to become a great communicator
- At writing papers and books
- At prepared public talks: broad and general rather than narrow and overly technical
- Impromptu talks
- Regularly reconsider your beliefs: “Why do I believe what I do? What evidence would I accept to be proven wrong?”
- Work hard to compound knowledge and productivity: the more you know, the more you can do, the more opportunity, the more you learn
- Keep your subconscious starved when working on a really important problem: don’t let anything else get the center of your attention; the answer will pop into your mind one morning
- Think through carefully 10-20 important problems in your field, keep an eye on wondering how to attack them, and when an opportunity opens up, drop all other things to pursue it
Other nuggets of wisdom:
- Things are usually understood long after they are first created: the creators of early interpreters and compilers didn’t understand the generality of what they were building; I’m just starting to understand the potential of AI with GPT-4 in 2023 after working in the field for over 8 years; will we truly understand the significance of Turing’s universality of computation before we create AI that can create knowledge as we do?
- “What is needed in the long run is that the man with the problem does the actual writing of the code with no human interface between the person who knows the problem and the person who knows the programming language. I would think by the year 2020 it would be fairly universal practice for the expert in the field of application do do the actual program preparation rather than experts in computers.” […] Proceeds to explain neural networks. […] “You can think of it as one possible solution to the programming problem.” (1996)