1-Sentence Summary: The Art of Doing Science and Engineering: Learning to Learn demonstrates how you can reach your goals much more efficiently, going a distance proportional to the number of steps you take, by choosing to do excellent work on important problems.
It’s mind-boggling how much knowledge the many areas of science and engineering have created. Are there general principles we can extract from them we can apply across multiple domains? How do we learn and apply them to solve the most intractable problems in our respective fields?
These are some questions Richard Hamming sought to answer in The Art of Doing Science and Engineering: Learning to Learn. An overarching theme is that the answers should also lead one to doing impactful work. Whether that choice is intentional or by chance, impactful work is essential to staying engaged.
I wrote this summary through the lens of that overarching theme. I’ve also expanded some ideas with examples of more recent progress, keeping the core principles intact. With luck, it will provide insight for those looking to solve an enormous problem, especially by developing a radical solution that may require inventing technology we don’t have yet.
Some skills developed when studying science and engineering are important no matter what the application. This section reviews a few of those you’ll likely need when building your moonshot.
If you’re uncertain about whether a statement you encountered or conclusion you arrived at is true, model the situation. Even a simple back-of-the-envelope model keeps your modeling skills fresh, so it’s not a big effort to revive them when you encounter a critical use case.
If someone comes up to you and claims that the total amplification factor or gain of a phone company’s analog voice signal is 10^120, that might seem off. But if you do a quick modeling that considers each amplifier’s gain of 100, their distance from each other of 50 miles, and the total travel distance of over 3,000 miles, you’ll find that the estimate is realistic: 100^60 = 10^(2*60) = 10^120.
Doing the calculations also helps you remember the result. A model, whether it’s mathematical, programmatic, natural language, graphical, etc. is an alternative representation of how you think the world should work. Besides giving you more confidence from having verified the result at some level, the model provides knowledge redundancy, which may help you remember the concept.
The ideal situation would be to have a sandbox Earth—a world just like ours in every respect–on which we can inexpensively run experiments without causing harm or suffering to any living being, supreme or otherwise. Second best is what we have now: computer simulations.
Running a simulation is more cost-effective than lab experiments and produces results faster. Seldom-used lab equipment can become obsolete or non-functional in a few short years.
Hamming encapsulates some universal principles of design in his chapter on the history of software, where he describes how he designed a programming language for the IBM 650, a popular computer in the 1950s. Programming languages should be easy to learn and use, and software written in the language easy to debug. Ideally, they wouldn’t require learning new ways of thinking.
These features apply to pretty much any technology you’re trying to develop:
You can view building a moonshot as systems engineering, where the goal is to build and manage a complex system, translating local actions into global actions while keeping in mind that there is no single bigger picture. With many components interacting with each other in hard-to-predict ways—think power grids, air traffic control systems, your younger brother’s bedroom—you have to balance work on the parts with checking that you’re progressing towards the whole. The whole includes the environment in which the system operates.
One way to find the right local actions is through trial and error. This is where having a simulation helps.
Hamming gives several examples to illustrate two related rules:
They were using a differential analyzer, an early form of computing that used mechanical parts, to solve differential equations. They’d improved one component—the amplifiers—without considering the need for adequate copper grounding. This caused unexpected errors in solving the equations. It took them hours of tinkering and troubleshooting to find the issue and fix it.
For another perspective, consider how many of us cram for finals. Sometimes we’ll do well enough to get a good grade, but forget everything we studied shortly after [1].
We optimize for individual classes to the detriment of the entire education, graduating with bits of disconnected knowledge about many topics but not having a firm grasp of any subject. Or maybe understanding a few specialized topics deeply, but not knowing how they fit in with the rest.
When designing an invention, we might wonder “Hm… will this fly? Is this workable?” as if it violates some physical law that makes it impossible to achieve in this universe. However, success may depend less on physical limitations than on societal laws, perceptions, company rules, market demand, and other human factors.
Better questions to ask are:
“Many a good idea has had to be rediscovered because it was not well presented the first time, years before!”—Richard Hamming
On the other hand, digital people would be a game changer, but the components to create them won’t be available for a while. To create a digital person through whole brain emulation, you need an understanding of all the aspects of their mind and how the brain works, to ensure accurate reproduction and to prevent disastrous results like long-term disability.
This could mean understanding the brain at a level where we can improve its intelligence into superintelligence, maybe by vastly increasing working memory, adding sensory modalities, and connecting it to the cloud, which would have a bigger effect than just speeding up its operation. It would be comparable to the development of the neocortex in our ancestors, which enabled perception, spatial reasoning, and language.
Since neuroscience hasn’t progressed enough to allow this understanding, success is far from assured and it would be safer to bet on more near-term ideas.
An invention’s ultimate impact won’t be clear until well after it reaches the market. As Hamming suggests, even the inventor may only have a partial understanding of what they developed. Thomas Newcomen and James Watts built their steam engines without fully understanding thermodynamics. The Wright brothers invented the powered airplane without comprehensive knowledge of aerodynamics.
This is a good thing, though, because it means we can invent without waiting for a full understanding of how something works. If electronics engineers had waited for a mature understanding of how electrons behave in solid materials before developing the transistor, we might not have seen the digital revolution.
It also means you can notice things your predecessors haven’t, so you can build on their work.
A key criterion in choosing problems is whether you have an angle of attack on it. Physicist Richard Feynman only worked on problems he felt he had an advantage in solving [2]. Most physicists don’t work on time travel because they don’t have ways to test ideas like wormholes—yet.
To never run out of interesting problems, keep 10 to 20 problems in your mind at all times. Be familiar with the context of those problems and ways to solve them, including what others have tried. As you go about your day—or week, or decade—you’ll automatically think of ways you might solve them. With a good learning routine, you’ll absorb information related to the problem over time [3], improving your odds of recognizing a potential solution no one’s tried yet.
When you do, drop everything and hit it hard! 🤛
Hamming covers a wide range of fields to help the reader recognize the overall shapes of important problems. Recognizing a problem is the first step towards finding a way around it. If it’s a gating factor for a project or a blocking issue for another problem, you might decide to abandon the project or problem altogether. If you don’t recognize a hidden problem, you could end up pursuing less promising paths.
When Hamming wrote this book in 1994, he knew AI would be a big deal and that not understanding it at some level would put one at a disadvantage. He was particularly interested in whether machines could think to begin with, approaching this by comparing machine learning with human learning.
When we attend a class, isn’t the teacher programming concepts into us? What’s the fundamental difference between programming a human by teaching them concepts and having them output a certain result—what they learned—and programming a machine to produce similar outputs?
Aren’t we just programmed to play chess, Go, and video games, to solve math problems and prove theorems, to put parts together in a factory assembly line, to classify images, and to drive cars? We didn’t even choose to be programmed to learn some of these skills; our environment, our culture, and maybe our parents did.
Throughout the book, Hamming identifies many cognitive biases that can delay progress. Confirmation bias, in which a person cherry picks information that confirms their beliefs and ignores contrary evidence, is especially pervasive.
To help overcome this, the more certain we are of a position, the more we should take the other side and find arguments against that position. This could also help counteract disconfirmation bias, where we hold higher standards for evidence that doesn’t support our belief.
If you’re arguing a position with another person, it helps to start with the points that you both agree on. Attempting to clarify these points helps ensure you understand what they’re saying or what their position is. Sometimes you’ll find that you both have the same viewpoint and are just arguing it from different perspectives.
By laying out the groundwork first, establishing the points you both agree on, you also bring their guard down, making them more open to your arguments.
Hamming quotes Pasteur’s “luck favors the prepared mind” to convey that having a baseline of knowledge and experience can lead to breakthroughs, like his recognition of the usefulness of a parity check in error-correcting codes [4].
It’s good to be familiar with a wide range of fields, but just as important is being able to recall that knowledge when needed. Create a system for storing and reviewing knowledge that ensures you keep the most relevant information accessible.
To help with this, develop your "second brain", as Tiago Forte describes it. Think of your smartphone, laptop, and other computing devices as extensions of your brain. How you organize your information across those devices determines how well you solve problems with it.
Regularly review the knowledge you consider most important, to ward off the forgetting that accompanies the formation of new memories. Forgetting is a good thing, but only if you forget the right things, so you’ll want to have a system for periodically reviewing old knowledge and adjusting their priority so you only see them again if they’re important enough [5].
As a pioneer of multiple important innovations, Hamming was deeply interested in the creative process, spending an entire chapter untangling this phenomenon. How did he and his esteemed colleagues achieve their breakthroughs?
He suggests this procedure:
[Pathwooded note: Try to generate positive emotions while working on the problem. Being in a good mood boosts your ability to come up with creative insights because it activates the brain region that helps you notice less obvious ideas. Being in a bad mood keeps you on the safe path, exploring only those ideas you’re sure will work.]
Creativity falls squarely into the “Art” in the book’s title. Harnessing it is less a problem of pure reasoning and more about the trial and error of putting yourself in the right conditions to recognize a solution.
The more emotionally involved you are with a problem, the more likely you are to persevere when the going gets tough. Hamming repeatedly suggests aiming for “excellence” and having “the goal of doing significant work” because doing so gives you the motivation to work on a problem for years on end.
We often think of having to develop grit to achieve a hard goal, but if you’re already passionate about a tough problem, you’ll instinctively find ways to solve it. Think of the last time you pulled an all-nighter to debug a Lisp program (challenge: try Prolog), finish a science project, or beat Diablo, Ganon, or (insert your favorite video game’s final boss).
Each time you experience the frustration followed by the rush of dopamine from completing the hard goal, that’s one rep in building your grit muscle. Because of this, you don’t want to pick goals that are too hard as your grit-building routine. Break down ambitious goals into smaller, more slowly moving chunks that are easier to reason about, let you measure progress, and build confidence with each win.
If people aren’t criticizing your idea, it’s probably not innovative or audacious enough. Cynics will come out of the woodwork when you suggest an invention or approach that goes against traditional methods so much that even experts in your field can’t understand it.
If skeptics are getting you down, browse the history of inventions experts once declared useless or impossible. As Hamming notes, “The record of the experts saying something is impossible just before it is done is amazing.”
If experts can’t get it Wright, how much more your non-expert colleagues or random online detractors?
This summary barely scratches the surface in describing the principles of science and engineering Hamming expounds throughout the book. I aimed for a general survey of Hamming’s practical ideas, so I skipped his witty anecdotes and heartfelt reflections on the habits of the teams and organizations he worked with.
Further, readers with more mathematical sophistication will appreciate the deep insight that can only come from working through Hamming’s examples.
For an adventurous reminder of how innovation and creative ideas are nonnegotiable in modern society, I strongly recommend The Art of Doing Science and Engineering: Learning to Learn by Richard W. Hamming.
[1] Techniques like spaced repetition have been gaining steam in helping counteract the tendency to cram.
[2] John Baez said in an interview:
"The physicist John Wheeler put it this way: you should never do a calculation until you already know the answer. That’s a bit of an exaggeration, because it’s also good to fool around and see where things go. But there’s a lot more truth to it than you might think.
Feynman had a different but related rule of thumb: he only worked on a problem when he felt he had an “inside track” on it—some insight or trick up his sleeve that nobody else had."
[3] We’re talking months or years. Darwin and Mendel didn’t develop their theories overnight, and you are working on a tough problem, right? On that note, SuperMemo founder Dr. Piotr Wozniak offers an algorithm for solving any problem: https://supermemo.guru/wiki/How_to_solve_any_problem%3F. It’s at the bottom of the page, but the rest of the article is worth reading (incrementally maybe, using SuperMemo?) to understand why it’s effective.
[4] The parity of a group of bits in a message refers to whether it has an even or odd number of 1’s. Parity checks help you detect data errors by using one bit to represent the message’s parity, and then checking that bit upon receipt of the message. If the received message has an odd number of bits while the original has an even number, then you know something’s wrong.
Hamming’s “key insight was that if you apply some parity checks not to the full message but to certain carefully selected subsets, you can ask a more refined series of questions that pin down the location of any single bit error.”—3Blue1Brown, “Hamming codes and error correction”, YouTube, September 4, 2020, https://youtu.be/X8jsijhllIA.
[5] Software like SuperMemo lets you specify the priority of pieces of information during spaced repetition, so you review the most important ones more frequently.
1-Sentence Summary: The Art of Doing Science and Engineering: Learning to Learn demonstrates how you can reach your goals much more efficiently, going a distance proportional to the number of steps you take, by choosing to do excellent work on important problems.
It’s mind-boggling how much knowledge the many areas of science and engineering have created. Are there general principles we can extract from them we can apply across multiple domains? How do we learn and apply them to solve the most intractable problems in our respective fields?
These are some questions Richard Hamming sought to answer in The Art of Doing Science and Engineering: Learning to Learn. An overarching theme is that the answers should also lead one to doing impactful work. Whether that choice is intentional or by chance, impactful work is essential to staying engaged.
I wrote this summary through the lens of that overarching theme. I’ve also expanded some ideas with examples of more recent progress, keeping the core principles intact. With luck, it will provide insight for those looking to solve an enormous problem, especially by developing a radical solution that may require inventing technology we don’t have yet.
Some skills developed when studying science and engineering are important no matter what the application. This section reviews a few of those you’ll likely need when building your moonshot.
If you’re uncertain about whether a statement you encountered or conclusion you arrived at is true, model the situation. Even a simple back-of-the-envelope model keeps your modeling skills fresh, so it’s not a big effort to revive them when you encounter a critical use case.
If someone comes up to you and claims that the total amplification factor or gain of a phone company’s analog voice signal is 10^120, that might seem off. But if you do a quick modeling that considers each amplifier’s gain of 100, their distance from each other of 50 miles, and the total travel distance of over 3,000 miles, you’ll find that the estimate is realistic: 100^60 = 10^(2*60) = 10^120.
Doing the calculations also helps you remember the result. A model, whether it’s mathematical, programmatic, natural language, graphical, etc. is an alternative representation of how you think the world should work. Besides giving you more confidence from having verified the result at some level, the model provides knowledge redundancy, which may help you remember the concept.
The ideal situation would be to have a sandbox Earth—a world just like ours in every respect–on which we can inexpensively run experiments without causing harm or suffering to any living being, supreme or otherwise. Second best is what we have now: computer simulations.
Running a simulation is more cost-effective than lab experiments and produces results faster. Seldom-used lab equipment can become obsolete or non-functional in a few short years.
Hamming encapsulates some universal principles of design in his chapter on the history of software, where he describes how he designed a programming language for the IBM 650, a popular computer in the 1950s. Programming languages should be easy to learn and use, and software written in the language easy to debug. Ideally, they wouldn’t require learning new ways of thinking.
These features apply to pretty much any technology you’re trying to develop:
You can view building a moonshot as systems engineering, where the goal is to build and manage a complex system, translating local actions into global actions while keeping in mind that there is no single bigger picture. With many components interacting with each other in hard-to-predict ways—think power grids, air traffic control systems, your younger brother’s bedroom—you have to balance work on the parts with checking that you’re progressing towards the whole. The whole includes the environment in which the system operates.
One way to find the right local actions is through trial and error. This is where having a simulation helps.
Hamming gives several examples to illustrate two related rules:
They were using a differential analyzer, an early form of computing that used mechanical parts, to solve differential equations. They’d improved one component—the amplifiers—without considering the need for adequate copper grounding. This caused unexpected errors in solving the equations. It took them hours of tinkering and troubleshooting to find the issue and fix it.
For another perspective, consider how many of us cram for finals. Sometimes we’ll do well enough to get a good grade, but forget everything we studied shortly after [1].
We optimize for individual classes to the detriment of the entire education, graduating with bits of disconnected knowledge about many topics but not having a firm grasp of any subject. Or maybe understanding a few specialized topics deeply, but not knowing how they fit in with the rest.
When designing an invention, we might wonder “Hm… will this fly? Is this workable?” as if it violates some physical law that makes it impossible to achieve in this universe. However, success may depend less on physical limitations than on societal laws, perceptions, company rules, market demand, and other human factors.
Better questions to ask are:
“Many a good idea has had to be rediscovered because it was not well presented the first time, years before!”—Richard Hamming
On the other hand, digital people would be a game changer, but the components to create them won’t be available for a while. To create a digital person through whole brain emulation, you need an understanding of all the aspects of their mind and how the brain works, to ensure accurate reproduction and to prevent disastrous results like long-term disability.
This could mean understanding the brain at a level where we can improve its intelligence into superintelligence, maybe by vastly increasing working memory, adding sensory modalities, and connecting it to the cloud, which would have a bigger effect than just speeding up its operation. It would be comparable to the development of the neocortex in our ancestors, which enabled perception, spatial reasoning, and language.
Since neuroscience hasn’t progressed enough to allow this understanding, success is far from assured and it would be safer to bet on more near-term ideas.
An invention’s ultimate impact won’t be clear until well after it reaches the market. As Hamming suggests, even the inventor may only have a partial understanding of what they developed. Thomas Newcomen and James Watts built their steam engines without fully understanding thermodynamics. The Wright brothers invented the powered airplane without comprehensive knowledge of aerodynamics.
This is a good thing, though, because it means we can invent without waiting for a full understanding of how something works. If electronics engineers had waited for a mature understanding of how electrons behave in solid materials before developing the transistor, we might not have seen the digital revolution.
It also means you can notice things your predecessors haven’t, so you can build on their work.
A key criterion in choosing problems is whether you have an angle of attack on it. Physicist Richard Feynman only worked on problems he felt he had an advantage in solving [2]. Most physicists don’t work on time travel because they don’t have ways to test ideas like wormholes—yet.
To never run out of interesting problems, keep 10 to 20 problems in your mind at all times. Be familiar with the context of those problems and ways to solve them, including what others have tried. As you go about your day—or week, or decade—you’ll automatically think of ways you might solve them. With a good learning routine, you’ll absorb information related to the problem over time [3], improving your odds of recognizing a potential solution no one’s tried yet.
When you do, drop everything and hit it hard! 🤛
Hamming covers a wide range of fields to help the reader recognize the overall shapes of important problems. Recognizing a problem is the first step towards finding a way around it. If it’s a gating factor for a project or a blocking issue for another problem, you might decide to abandon the project or problem altogether. If you don’t recognize a hidden problem, you could end up pursuing less promising paths.
When Hamming wrote this book in 1994, he knew AI would be a big deal and that not understanding it at some level would put one at a disadvantage. He was particularly interested in whether machines could think to begin with, approaching this by comparing machine learning with human learning.
When we attend a class, isn’t the teacher programming concepts into us? What’s the fundamental difference between programming a human by teaching them concepts and having them output a certain result—what they learned—and programming a machine to produce similar outputs?
Aren’t we just programmed to play chess, Go, and video games, to solve math problems and prove theorems, to put parts together in a factory assembly line, to classify images, and to drive cars? We didn’t even choose to be programmed to learn some of these skills; our environment, our culture, and maybe our parents did.
Throughout the book, Hamming identifies many cognitive biases that can delay progress. Confirmation bias, in which a person cherry picks information that confirms their beliefs and ignores contrary evidence, is especially pervasive.
To help overcome this, the more certain we are of a position, the more we should take the other side and find arguments against that position. This could also help counteract disconfirmation bias, where we hold higher standards for evidence that doesn’t support our belief.
If you’re arguing a position with another person, it helps to start with the points that you both agree on. Attempting to clarify these points helps ensure you understand what they’re saying or what their position is. Sometimes you’ll find that you both have the same viewpoint and are just arguing it from different perspectives.
By laying out the groundwork first, establishing the points you both agree on, you also bring their guard down, making them more open to your arguments.
Hamming quotes Pasteur’s “luck favors the prepared mind” to convey that having a baseline of knowledge and experience can lead to breakthroughs, like his recognition of the usefulness of a parity check in error-correcting codes [4].
It’s good to be familiar with a wide range of fields, but just as important is being able to recall that knowledge when needed. Create a system for storing and reviewing knowledge that ensures you keep the most relevant information accessible.
To help with this, develop your "second brain", as Tiago Forte describes it. Think of your smartphone, laptop, and other computing devices as extensions of your brain. How you organize your information across those devices determines how well you solve problems with it.
Regularly review the knowledge you consider most important, to ward off the forgetting that accompanies the formation of new memories. Forgetting is a good thing, but only if you forget the right things, so you’ll want to have a system for periodically reviewing old knowledge and adjusting their priority so you only see them again if they’re important enough [5].
As a pioneer of multiple important innovations, Hamming was deeply interested in the creative process, spending an entire chapter untangling this phenomenon. How did he and his esteemed colleagues achieve their breakthroughs?
He suggests this procedure:
[Pathwooded note: Try to generate positive emotions while working on the problem. Being in a good mood boosts your ability to come up with creative insights because it activates the brain region that helps you notice less obvious ideas. Being in a bad mood keeps you on the safe path, exploring only those ideas you’re sure will work.]
Creativity falls squarely into the “Art” in the book’s title. Harnessing it is less a problem of pure reasoning and more about the trial and error of putting yourself in the right conditions to recognize a solution.
The more emotionally involved you are with a problem, the more likely you are to persevere when the going gets tough. Hamming repeatedly suggests aiming for “excellence” and having “the goal of doing significant work” because doing so gives you the motivation to work on a problem for years on end.
We often think of having to develop grit to achieve a hard goal, but if you’re already passionate about a tough problem, you’ll instinctively find ways to solve it. Think of the last time you pulled an all-nighter to debug a Lisp program (challenge: try Prolog), finish a science project, or beat Diablo, Ganon, or (insert your favorite video game’s final boss).
Each time you experience the frustration followed by the rush of dopamine from completing the hard goal, that’s one rep in building your grit muscle. Because of this, you don’t want to pick goals that are too hard as your grit-building routine. Break down ambitious goals into smaller, more slowly moving chunks that are easier to reason about, let you measure progress, and build confidence with each win.
If people aren’t criticizing your idea, it’s probably not innovative or audacious enough. Cynics will come out of the woodwork when you suggest an invention or approach that goes against traditional methods so much that even experts in your field can’t understand it.
If skeptics are getting you down, browse the history of inventions experts once declared useless or impossible. As Hamming notes, “The record of the experts saying something is impossible just before it is done is amazing.”
If experts can’t get it Wright, how much more your non-expert colleagues or random online detractors?
This summary barely scratches the surface in describing the principles of science and engineering Hamming expounds throughout the book. I aimed for a general survey of Hamming’s practical ideas, so I skipped his witty anecdotes and heartfelt reflections on the habits of the teams and organizations he worked with.
Further, readers with more mathematical sophistication will appreciate the deep insight that can only come from working through Hamming’s examples.
For an adventurous reminder of how innovation and creative ideas are nonnegotiable in modern society, I strongly recommend The Art of Doing Science and Engineering: Learning to Learn by Richard W. Hamming.
[1] Techniques like spaced repetition have been gaining steam in helping counteract the tendency to cram.
[2] John Baez said in an interview:
"The physicist John Wheeler put it this way: you should never do a calculation until you already know the answer. That’s a bit of an exaggeration, because it’s also good to fool around and see where things go. But there’s a lot more truth to it than you might think.
Feynman had a different but related rule of thumb: he only worked on a problem when he felt he had an “inside track” on it—some insight or trick up his sleeve that nobody else had."
[3] We’re talking months or years. Darwin and Mendel didn’t develop their theories overnight, and you are working on a tough problem, right? On that note, SuperMemo founder Dr. Piotr Wozniak offers an algorithm for solving any problem: https://supermemo.guru/wiki/How_to_solve_any_problem%3F. It’s at the bottom of the page, but the rest of the article is worth reading (incrementally maybe, using SuperMemo?) to understand why it’s effective.
[4] The parity of a group of bits in a message refers to whether it has an even or odd number of 1’s. Parity checks help you detect data errors by using one bit to represent the message’s parity, and then checking that bit upon receipt of the message. If the received message has an odd number of bits while the original has an even number, then you know something’s wrong.
Hamming’s “key insight was that if you apply some parity checks not to the full message but to certain carefully selected subsets, you can ask a more refined series of questions that pin down the location of any single bit error.”—3Blue1Brown, “Hamming codes and error correction”, YouTube, September 4, 2020, https://youtu.be/X8jsijhllIA.
[5] Software like SuperMemo lets you specify the priority of pieces of information during spaced repetition, so you review the most important ones more frequently.