Notes on
The Art of Doing Science and Engineering
by Richard Hamming
| 14 min read
This book is essentially a call to strive for excellence and significant contributions rather than mere comfort or existence.
Hamming emphasizes that achieving greatness isn’t usually about luck, but requires intense preparation, dedication, and working on important problems.
Striving for Excellence
Lastly, in a sense this is a religious course: I am preaching the message that, with apparently only one life to live on this earth, you ought to try to make significant contributions to humanity rather than just get along through life comfortably— that the life of trying to achieve excellence in some area is in itself a worthy goal for your life. It has often been observed the true gain is in the struggle and not in the achievement— a life without a struggle on your part to make yourself excellent is hardly a life worth living.
… Many reports by people who have written about the “good life” agree with the above opinion. Notice I leave it to you to pick your goals of excellence, but claim only a life without such a goal is not really living but merely existing— in my opinion.
This book is about more than just science and engineering. Hamming is presenting a philosophy of life.
He urges us to aim high, make a difference, and find meaning in the struggle itself, not just in what we achieve.
In ancient Greece, Socrates (469-399 BC) said:
The unexamined life is not worth living.
Professional Blind Spots
The use of FORTRAN, like the earlier symbolic programming, was very slow to be taken up by the professionals… Almost all professionals are slow to use their own expertise for their own work. The situation is nicely summarized by the old saying, “The shoemaker’s children go without shoes.” Consider how in the future, when you are a great expert, you will avoid this typical error!
It’s easy for experts (doctors, lawyers, programmers, scientists) to become so focused on applying their skills outwardly that they neglect to apply them inwardly to their own processes or lives.
Am I using the best tools and methods for my own work, not just recommending them for others?
Thinking Before Programming (and Problem Definition)
I have faith in only one [productivity method], which is almost never mentioned. think before you write the program, it might be called. Before you start, think carefully about the whole thing, including what will be your acceptance test that it is right, as well as how later held maintenance will be done. Getting it right the first time is much better than fixing it up later!
Coding is fun! So rushing to code is understandable. It has been my experience that too many people rush to code without properly understanding the problem, and so will end with an insufficient solution.
I don’t think that an all-encompassing design is worth it in all cases—far from it. But a little thinking before doing goes a long way.
One trouble with much of programming is simply that often there is not a well-defined job to be done; rather, the programming process itself will gradually discover what the problem is!
The desire that you be given a well-defined problem before you start programming often does not match reality, and hence a lor of the current proposals to “solve the programming problem” will fall to the ground if adopted rigorously.
While thinking first is ideal, often the act of programming helps clarify the problem itself.
Rigid, top-down approaches might fail when the problem itself is initially fuzzy.
I’ve taken to writing and thinking about the problem, including designing the systems and algorithms I’m considering.
If you do jump straight to programming, here’s something you could do:
Write it twice.
The second time will likely lead to a much higher-quality solution than the first.
And it doesn’t take 2x the time.
I’ve heard John Ousterhout say “design it twice.” It really does work.
Preparation, Luck, and Opportunity
Of course, as you go through life you do not know what you are preparing yourself for—only you want to do significant things and not spend the whole of your life being a “janitor of science,” or whatever your profession is. Of course luck plays a prominent role. But so far as I can see, life presents you with many, many opportunities for doing great things (define them as you will) and the prepared person usually hits one or more successes, and the unprepared person will miss almost every time.
Preparation dramatically increases the odds of capitalizing on opportunities when they arise. It’s about building a foundation of knowledge and skills, so you’re ready when a chance appears.
“Luck favors the prepared mind.”
—Pasteur
Anticipating the Future
There is one nasty thing to be mentioned, however; what it takes to be great in one age is not what is required in the next one.
Thus you, in preparing yourself for future greatness… you have to think of the nature of the future you will live in. The past is a partial guide, and about the only one you have besides history is the constant use of your own imagination. Again, a random walk of random decisions will not get you anywhere near as far as those taken with your own vision of what your future should be.
Anticipating where the field is heading and preparing for that future. This requires active imagination and foresight, not just reacting.
Following developing fields actively, trying to anticipate where they’re going, makes you far better prepared to absorb new developments than passively waiting.
when you learn something new, think of other applications of it, ones which have not arisen in your past but which might in your future.
This is practical advice for adaptability: don’t just learn facts, learn potential. Connect new knowledge to possible future uses, expanding its value beyond the immediate context.
I have both told and shown you how to be great; now you have no excuse for not doing so!
There Is No Easy Way
There is a story from ancient Greek times of a mathematician telling a ruler there were royal roads for him to walk on, and royal messengers to carry his mail, but there was no royal road to geometry. Similarly, you will recognize that money and coaching will do only a little for you if you want to run a four-minute mile.
There is no easy way for you to do it. The four-minute mile is much the same for everyone.
The Danger of Becoming Obsolete
What you did to become successful is likely to be counterproductive when applied at a later date.
Due to the accelerating rate of progress.
“The old expert is too often wrong and a block to progress.”
More and more, the time gap between the scientific creation and the engineering development is so small there is no time to gain real-life testing experience with the new device before it is put into the field for widespread use. If you want to be certain, then you are apt to be obsolete.
The pressure to innovate quickly often means deploying things before they’re perfectly tested.
Waiting for absolute certainty can mean missing the window entirely.
As the saying goes,
There is never time to do the job right, but there is always time to fix it later,
especially in computer software!
A cynical but often true observation, particularly relevant given the previous point about speed vs. certainty.
Most of our institutions (and people) are slow to react to changes… Institutions and people prefer to go along smoothly, and hence lag far behind, than to make the effort to be reasonably abreast of the times.
Institutions, like people, tend to move only when forced to.
It takes conscious effort to stay current and adapt; the default is to lag behind until change becomes unavoidable.
The Influence of Measurement
the way you choose to measure things controls to a large extent what happens. I repeat the story Eddington told about the fishermen who went fishing with a net. They examined the size of the fish they caught and concluded there was a minimum size to the fish in the sea. The instrument you use clearly affects what you see.
Our tools and metrics aren’t neutral observers; they shape our perception of reality.
Think critically of how your measurement methods might be biasing your conclusions (like the fishermen missing the smaller fish because their net couldn’t catch them).
What you measure is often what you optimize for, consciously or not.
You and Your Research
This talk, “You and Your Research”, is one of my absolute favorites, and as Hamming notes in the book, it really does feel like a summary of the preceding chapters. My enjoyment of the talk mirrors my enjoyment of the book overall.
Why do I believe this talk is important? It is important because as far as I know each of you has but one life to lead, and it seems to me it is better to do significant things than to just get along through life to its end… Thus in a real sense I am preaching the messages that (1) it is worth trying to accomplish the goals you set yourself and (2) it is worth setting yourself high goals.
Be ambitious.
If it were mainly luck, then great things should not tend to be done repeatedly by the same people.
Consistent high achievement points to underlying factors beyond mere chance.
Like Naval Ravikant says: “In 1,000 parallel universes, you want to be wealthy in 999 of them. You don’t want to be wealthy in fifty of them where you got lucky, so we want to factor luck out of it.”
Luck is merely a factor.
Newton observed that if others would think as hard as he did, then they would be able to do the same things. Edison said genius was 99% perspiration and 1% inspiration. It is hard work, applied for long years, which leads to the creative act, and it is rarely just handed to you without any serious effort on your part
Yes, sometimes it just happens, and then it is pure luck. It seems to me to be folly for you to depend solely on luck for the outcome of this one life you have to lead.
While luck plays a role, relying on it is foolish. Strive for diligent, prolonged effort.
Among the important properties to have is the belief you can do important things. If you do not work on important problems, how can you expect to do important work? … most scientists spend most of their time working on things they believe are not important…
“Why are you not working on and thinking about the important problems in your area?” If you do not work on important problems, then it is obvious you have little chance of doing important things.
Firstly, about belief:
You can just do things.
As Marcus Aurelius noted in Meditations:
Not to assume it’s impossible because you find it hard. But to recognize that if it’s humanly possible, you can do it too.
Secondly, about focus:
Focus your energy on problems that matter.
You need the courage and conviction to tackle big questions.
It’s easy to get caught up in minor tasks, but significant achievements come from significant problems.
Hamming later notes:
“Why are you not working on and thinking about the important problems in your area?” If you do not work on important problems, then it is obvious you have little chance of doing important things.
All these stories show that the conditions you tend to want are seldom the best ones for you—the interaction with harsh reality tends to push you into significant discoveries which otherwise you would never have thought about while doing pure research in a vacuum of your private interests.
Comfort and ideal conditions aren’t always conducive to breakthroughs.
Facing constraints and challenges can force creativity and lead to important insights that wouldn’t arise in isolation.
Do hard things.
Now to the matter of drive. Looking around, you can easily observe that great people have a great deal of drive to do things.
…[The Tukey story]…”You would be surprised how much you would know if you had worked as hard as he has for as many years.”… In a sense my boss was saying intellectual investment is like compound interest: the more you do, the more you learn how to do, so the more you can do, etc. … one extra hour per day over a lifetime will much more than double the total output. The steady application of a bit more effort has a great total accumulation.
Drive is essential.
Knowledge compounds over time: the more you do, the more you learn how to do, so the more you can do…, and so on.
Consistent extra effort yields disproportionately large returns in the long run.
But be careful-the race is not to the one who works hardest!
You need to work on the right problem at the right time and in the right way—what I have been calling “style.” … for some years I set aside Friday afternoons for “great thoughts.”… I found it was well worth the 10% of my time to do this careful examination of where computing was heading… I was not the drunken sailor staggering around… but could progress in a more or less straight line. I could also keep a sharp eye on the important problems…
Hard work isn’t enough; it needs direction. And direction is often more important than speed.
Taking time for reflection, for “great thoughts,” is crucial for ensuring effort is applied effectively towards important goals.
This regular strategic thinking prevents wasted effort and keeps focus on the big picture. Spend time thinking deeply about the important problems.
There is another trait of great people I must talk about… Great people can tolerate ambiguity; they can both believe and disbelieve at the same time. You must be able to believe your organization and field of research is the best there is, but also that there is much room for improvement! … If you believe too much, you will not likely see the chances for significant improvements; if you do not believe enough, you will be filled with doubts and get very little done… I have not the faintest idea of how to teach the tolerance of ambiguity… but great people do it all the time.
Holding contradictory ideas—belief and skepticism—simultaneously allows one to function effectively within a system while also seeking ways to radically improve it. It avoids both paralyzing doubt and complacent blindness.
Again, you should do your job in such a fashion that others can build on top of it. Do not in the process try to make yourself indispensable; if you do, then you cannot be promoted… I have seen a number of times where this clinging to the exclusive rights to the idea has in the long run done much harm… If you are to get recognition then others must use your results, adopt, adapt, extend, and elaborate them, and in the process give you credit for it. I have long held the attitude of telling everyone freely of my ideas…
Make your work accessible and usable by others.
Trying to be indispensable will backfire.
Recognition comes when others adopt and build upon your contributions.
Sharing ideas freely is generally more beneficial than hoarding them.
Finally, I must address the topic of whether the effort required for excellence worth it. I believe it is—the chief gain is in the effort to change yourself, in the struggle with yourself, and it is less in the winning than you might expect… I believe a life in which you do not try to extend yourself regularly is not worth living—but it is up to you to pick the goals you believe are worth striving for. As Socrates (469-399 BC) said,
The unexamined life is not worth living.
The real reward is personal transformation you attain through striving.
The process of pushing your boundaries is the point, perhaps even more than the specific achievement.
Liked these notes? Join the newsletter.
Get notified whenever I post new notes.