These are my notes highlighting key points from Richard Hamming’s last lecture in a series titled “The Art of Doing Science and Engineering: Learning to Learn”. This lecture and the one on creativity left a deep impression in me and I’d highly recommend watching them. I decided to write a digest as I find writing an effective way of letting lessons sink.
Although the talk is titled “You and Your Research”, it’s really a broad set of observations from Hamming on how to have a significant career.
We have one life to live, and Hamming suggests a life of significance (for whatever we deem to be significant). A life where you say “I didn’t cause any harm” is not satisfactory.
If you’re not someone that’s significant yet, you need to do work that’s outstanding to get the recognition. Once you’re famous it’s easy to stay famous. Otherwise, what you do is taken away from you 1. You don’t give someone an opportunity to do something great if they haven’t already demonstrated greatness. The onus is on you to demonstrate greatness and then you’ll get opportunities.
“Luck favors the prepared mind” -Pasteur. You prepare yourself and then luck hits you. There is an element of luck but you prepare yourself from the way you lead your life day-to-day and when the lighting strikes you’re either ready or not. To a great extent, it is constant hard work that does it. The very able people, work very hard all the time (in bell labs, people were at the problem all the time even while hiking together). Hamming asked his manager how can John Tukey know so much given they were the same age. His manager’s answer was “Hamming you’d be surprised how much you’d know if you worked as hard as he did”.
The most important thing about great people is that they believe they can do great work. They have confidence in themselves and if you don’t believe you can do great work it’s very likely you won’t. Claude Shannon would say “I ain’t scared of nothing”. When Hamming got stuck, he’d tell himself the quote and would just go for it “let’s see what happens”.
If what you’re working on something that is not important, and it’s not likely to lead to important things, why are you working on it? If you don’t work on important problems, then you won’t be doing important work. You have to plant little acorns that can grow into mighty oak trees. You have to work on problems that can become important and matter.
Those who work with the door shut, might be working just as hard but they seem to work on slightly the wrong problem 2. You have to get a wide feeling on what’s going on. It’s important to be receptive to new ideas.
Many ideas are abandoned too early or cling onto too long 3. One feature you can cling onto regularly is the desire to do excellent work. Whatever you do, you’re going to do it well. Some things you might want to get rid off, however in general excellence is a good principle 4.
Without a vision of what you want to do or what you want to be you won’t be able to get very far. You have to have a vision and pursue it 5. Excellence is one of the best tracks you can use.
What appears to be a defect, by turning the problem around becomes an asset. When you’re stuck or in a situation that’s inconvenient that’s a good signal that you should change the problem to solve the underlying problem. You can change the condition that you have to make success. Either by inverting the problem or by changing the nature of the problem by recognizing the underlying real problem.
Hamming meditated on why some of his projects were successful and studied them over and over again. You should study your successes 6. When the time comes you’ll know how to succeed. Not just yours but of other people. Which elements can you adapt to your personality?
Hamming re-organized his life to limit distractions as much as possible 7. For example, he stopped reading magazines like the New Yorker and instead asked to become a book reviewer. This way he got to learn about a wide variety of Computer Science topics and authors.
The race is not to the swiftest. The person that works on the right problem, at the right time, and in the right way is what counts. You need to develop style and taste to find out when a problem is ripe, what problem is ripe, and how to go about it.
Hamming used to set aside Friday afternoons for “Great Thoughts”. What is the effect of computing on science? What am I doing with this machine? What should I do with computing? What is the nature of software? What are the important problems in my field? So that you can march in a uniform direction rather than stagger randomly 8. What are the fundamentals? Things that will hold true tomorrow. Learn new things. You can’t learn them all but you should get some grip on them. Is this relevant to my field or not?
Tolerance of ambiguity is another trait of great people. They both believe and disbelieve. You need to believe enough to continue working but they disbelieve enough to know when they’re wrong and to make changes to the theory. Greatness is seeing what other people have missed.
Most great scientists have 10 to 20 problems in their head at any time, which when they get a clue on how to attack they drop other things and work on that problem first. The importance of a problem is not the consequence, it depends on whether you got a way of attacking the problem. For example, time-travel is not an important problem because no one has an idea on how to solve that problem.
It is not what you do, it is the way that you do it. The style makes the difference. For example, special relativity was a problem solved by Poincaré and others but people only remember Einstein because of how elegant, clear, and straightforward was his solution. You need to get it clear so that it can be communicated to other people.
You need to learn to communicate orally, written, and in casual conversations. The way that you learn, is not only by listening to others but to the style that’s done. What talks are effective? Why were their effective? What style can you adapt?
You don’t blame the system, you do the best that you can with what you got.
If you’re going to have progress, there has to be change. Change does not mean progress, but progress requires change. You’ll never get better if you stay in the same rut.
“The unexamined life is not worth living.” -Socrates.
Thanks to my fiancée, Meghna Polimera, for reviewing early drafts of this post!
I have similar observations as someone early-ish into their career. For example, senior (and above) engineers are invited into private mailing lists or meetings where they're exposed to materials that allow them to acquire even more knowledge solidfying their position.
It makes sense to be shielded away from most of these discussions but I think it's the duty of senior folks to educate others and give junior engineers the opportunity to grow.
Socializing in general has been problematic for me, especially after college. I admire people that can approach others with ease to learn about what they’re working on. That’s really something that I want to get better at. ↩
This reminded me of how difficult it is to be pragmatic in general. It's easy to land into one of the extremes.
For example, you can always insist on the highest standards in system design or code reviews. This in my opinion is a common misconception of senior engineers. Managers and other engineers think that it's always good to be extremely adamant about quality/performance. However, there is a point of diminishing returns and it might be better to put your efforts elsewhere.
Similarly, it's easier to be a tactical tornado, or a one-person team, and just look into getting the work done without thinking of long term consequences. Being able to sit in the middle is very difficult and under appreciated.
Excellence, or insisting on high standards, is my favorite leadership principle. That's because it really unlocks new pleasures and puts you in a spot where you've never been before. My favorite explanation comes from Richard Gabriel.
- The work becomes more fun. It is deeper, it never gets tiresome or boring.
- It does change what people are trying to do. It takes away from the every, lower-level aspiration and replaces it with something deep.
Amazon's 2017 letter to shareholders is also a good read on this.
To be honest, I don't have a vision yet of exactly what I want to do. I find it extremely difficult to answer questions like "where do you see yourself in 5 years?" I have no idea...
I've made peace with the fact that I'm more of a generalist with a wide net of topics that I find interesting.
However, there are two different ways of thinking that I found more effective for me so far.
- It's easier to figure out what you don't like than what you like. I've been on 3 teams at Amazon in my 4.5 year career. Switching teams is a good way of figuring out what you don't like and seeing patterns on stuff that you enjoy thinking about.
- Thinking about traits of people that you admire and trying to incorporate them. For example, I admire people like Richard Feynman or Al Vermeulen at Amazon. Their energy about whatever topic they talk is contagious and I really want to emulate that.
I find this to be a pretty different way of thinking compared to how stuff is done in the DevOps movement.
I think the cycle of "build -> fail -> COE (correction of errors or post-mortem analysis) -> incorporate learnings" is well understood and is common practice at Amazon. An important failure results in a COE.
However, we really don't allocate enough time to study our successes. The only time I can think of is sprint-retrospectives but those are not deep studies like COEs. I think it might be interesting for us to think about how we can write a document symmetric to COEs to share successes with each other. How can we make that a common practice?
My fiancée coined the acronym COS for these docs: celebration of success 😁
Family and friends is not a distraction for me and I hope I can remind myself of that frequently. ↩
This can be a good time to study successes in the field at work. ↩