- Structure and Interpretation of Computer Programs (doing all the exercises is key). This book helped me think about how programs run, how state is stored, how you can build out asynchronous computation, and how you can build your own languages.
- Designing Data Intensive Applications. This book profoundly changed how I think about application performance and data. It describes so much about different kinds databases and query languages, that now I feel like I've got a big picture view of the whole industry.
- Harry Potter and the Methods of Rationality. This book really taught me to think rationally and logically. I think I really did not understand the scientific method until this book.
1. 'The Secrets of Consulting: A Guide to Giving and Getting Advice Successfully' I was put off for a decade by the click-bait title but this is a profound little book that helped me get perspective on problem solving in my work and myself.
2. 'Becoming a Technical Leader' The text is great; working the exercises for yourself will make you a stronger thinker.
3. 'An Introduction to General Systems Thinking' One of his densest, driest books, but a great summary of the highlights of the field with plenty of thought problems in the exercises and plenty of pointers for digging deeper.
https://www.amazon.com/How-Solve-Mathematical-Princeton-Scie...
And for improving statistical thinking, the classic How to Lie With Statistics by Darrell Huff
https://www.amazon.com/How-Lie-Statistics-Darrell-Huff-ebook...
The private thoughts of a person with terrible power. An emperor who could put to death anyone he chose. Create the law by speaking it. Command any one to his bed if the mood took him. These pages are filled with Aurelius’ private struggles to be a good man, despite the frustrations of the world.
His words helped me become a more social thinker.
It’s really a summary of a single idea, but the most valuable idea I have encountered- how to recognize that the hardships and problems we face mostly come from failing to identify what we actually control, and mistakenly focusing our efforts and concerns on what we can’t control while neglecting what we can.
And Aristotle's metaphysics and Nicomachean ethics
They had an integrated understanding of the different kinds of knowledge and the phenomenology of the mind and the resulting errors we tend to make.
And since their traditions were esoteric, it's a nice challenge to read them critically to get what they're pointing at.
For those sniffing that these aren't mathematical models or category theories, realize that the entire family of logic can only tell you what's not possible. The real action in thinking is topologically sorting what's relevant, and that mostly depends on understanding yourself and others.
However, reading them is an exercise in frustration without a good classics scholar; they are rare and getting rarer.
This introduced me to systems thinking which gives an interesting perspective on how to solve complex systemic problems.
Concepts can be applied to engineering or any other field
2. On a similar theme, “The Lady Tasting Tea” (David Salsburg) was a wonderful history of the development of statistics as a mathematical discipline. I found it absolutely fascinating to map out how individual personalities were buffeted and shaped by larger historical events and movements (e.g. eugenics in the late 19th century, WW2, the rise of the Soviet Union, etc.) into asking questions of data that propelled statistics forward. Disciplines we think of as being “hard” (math, CS, statistics, physics) have been shaped by social forces in a non-linear non-Hegelian fashion, in fits and starts, quite contrary to the way they are presented in a pedagogical setting.
Purely Functional Data Structures by Chris Okasaki broadened how I think about algorithmic complexity analysis, after decades of mostly imperative programming. Other books on lambda calculus, type theory, OCaml, Haskell, etc. preceded this in my reading list, but this book clinched my love of functional programming.
The Garbage Collection Handbook by Richard Jones, Antony Hosking, and Eliot Moss provides broad, yet sufficiently detailed, coverage of automatic memory management that most techniques can be understood and implemented without digging into the primary literature. That said, this book (actually its predecessor, Garbage Collection by Jones and Lins) inspired me to dig deep into memory management, and jemalloc is one of the incidental results.
Wonderful lessons therein on:
- thinking from first principles and following the evidence and solid metrics
- being willing to be proven wrong, and keeping an open mind in the face of new facts
- the value of open scientific collaboration
- resisting arguments from authority
- how fundamental skills and intelligence transfer across domains
Ventris did not have a Rosetta stone at hand, so he had to decipher the script from what he could suss out using statistical methods and building up an internal logic. It's also a fun story of a great puzzle.
It's a short and great book and was formative to me. There's newer books on the story that do a better job of highlighting the contributions of Ventris' collaborators (particularly the impressive Alice Kober), but Chadwick's is still the most concise and enjoyable, I think.
1. Increase context on problems being solved
2. Improve tactics/strategies/systemic understanding
3. Improve physical health/mental health
If you want to think better, I think physical health and mental health will have the highest return by far.Thinking is kind of like driving. Imagine driving a car where some parts are broken (mental health problem) or a really uncomfortable seat (obesity), improper fluids (can cause parts to break or decay faster), or lack of routine maintenance (exercise).
You can think of dopamine kind of like fuel and it will directly influence the amount of time and effort you can spend to solve problems or overcome setbacks.
I've been enjoying the Huberman podcast lately.
Thinking, Fast and Slow: introspection about how the mind may work, common biases and traps. I often think about the fast/slow system divide and notice when I just want to coast along doing fast thinking.
The Scout Mindset: very neatly describes a way of being which I rarely attain, but aspire to.
Culture Of Honor: The Psychology Of Violence In The South by Richard Nisbett and Dov Cohen
https://www.amazon.com/Culture-Honor-Psychology-Violence-Dir...
The authors use a variety of independent evidence (historic, lab experiments, etc) to show that a culture of honor exists, what it is, how it is perpetuated, and how we can make predictions based on it. This book is superb!
Richard Rhodes (1986) Making of the Atomic Bomb
"In scientific work, creative thinking demands seeing things not seen previously, or in ways not previously imagined; and this necessitates jumping off from 'normal' positions, and taking risks by departing from reality. The difference between the thinking of the paranoid patient and the scientist comes from the latter's ability and willingness to test out his fantasies or grandiose conceptualizations through the systems of checks and balances science has established – and to give up those schemes that are shown not to be valid on the basis of these scientific checks. It is specifically because science provides such a framework of rules and regulations to control and set bounds to paranoid thinking that a scientist can feel comfortable about taking the paranoid leaps. Without this structuring, the threat of such unrealistic, illogical, and even bizarre thinking to overall thought and personality organization in general would be too great to permit the scientist the freedom of such fantasying." (p. 151)
Daniel Kahneman (2011) Thinking, Fast and Slow
"In the current view of how associative memory works, a great deal happens at once. An idea that has been activated does not merely evoke one other idea. It activates many ideas, which in turn activate others. Furthermore, only a few of the activated ideas will register in consciousness; most of the work of associative thinking is silent, hidden from our conscious selves. The notion that we have limited access to the workings of our minds is difficult to accept because, naturally, it is alien to our experience, but it is true: you know far less about yourself than you feel you do." (p. 52)
Thomas Kuhn (1962) Structure of Scientific Revolutions
"One suspects that something like a paradigm is prerequisite to perception itself. What a man sees depends both upon what he looks at and also upon what his previous visual-conceptual experience has taught him to see. In the absence of such training there can only be... a 'bloomin’ buzzin’ confusion'" (p. 113)
- Concise introduction of how the mind works, biases, dealing with uncertainty, critical thinking, and dealing with complexity.
The Pyramid Principle - Barbara Minto - Logic in writing and thinking.
The Almanack of Naval Ravikant - Eric Jorgenson - Inspiration for better thinking.
fs.blog - Mental models, better thinking, decision making.
Philosophy comes to mind. As it helps you think out of the box.
The big 3 philosophers and stoics are a great place to start. Explore the differences of western and eastern philosophies too once you get a taste for the west.
You'll naturally come across mental models this way rather than have to read a farnam street blog on.
I don't do statistics in my day job, but having a solid foundation in the math and the theory and the proofs really had a profound impact on how I approach problem solving generally and root cause analysis specifically (just thinking about e.g. model specification and how you do it is a good exercise). It's still on my bookshelf and I'll pull it out and do a problem set from time to time just to stay sharp - even though, again, I don't do this for my job. Maybe, one day, I'll get a job with a baseball team or something. Understanding heteroskedasticity for example is one of those things where once you "get it", it really opens your eyes to a lot of things and you can't "unsee" it.
PS there are packages in R nowadays but back in the day we used STATA.
PPS if people don't like Wooldridge, what else would you recommend?
Edit: I know you said "Your choices needn't be only math books" but this is a statistics textbook, so it probably doesn't count as "math".
Intuition Pumps and Other Tools for Thinking
https://www.amazon.com/Intuition-Pumps-Other-Tools-Thinking/...
Dialog and progressive discovery are crucial to solving problems, and these things happen even after (mostly after?) you arrive at a good solution. _P&R_ provides a working example of how this might go, and how a diligent and magnanimous mind might approach the process. I think it's a really fun and engaging book, too.
Works on pragmatism by CS Peirce were really impactful, though I can't recommend a specific book. In a very focused way, Peirce advocates for evaluating ideas in terms of their real-world effects, often by employing a measured skepticism.
On the psych/behavioral side, _Gut Feelings_ shows how to be an efficient thinker. Largely contrary to Kahneman's work, it vindicates intuition, but does so in a qualified way. It explains when and how to trust your instincts, and emphasizes the importance of cultivating them.
Already a semester or two (of real analysis, linear algebra, experimental physics, theoretical physics) would get one very far I think.
As for books, https://theoreticalminimum.com/ might be a great starting point.
https://static1.squarespace.com/static/5ca3e714d74562b554c38...
Masterful distillation of the most important parts of current systems engineering and systems management into a broadly applicable systems thinking approach.
The book is now reworked to a course and is currently free: https://eem.institute/open-endedness/systems-thinking/
TBH I read the original (in Russian), and English translation does not seem to be of stellar quality.
1. The Secret of Our Success https://www.thriftbooks.com/w/9474901
2. The Weirdest People in the World https://www.thriftbooks.com/w/26726468
The first explores the extent to which humans are dependent on culture. It also underscores that we're not as smart as we might think. There's valuable knowledge that accretes culturally over time, and this book was the first to make me consider the ramifications of that on family, business, and community. The second book starts from the premises of the first and highlights the strangeness of Western Educated Industrialized Rich Democratic (W.E.I.R.D.) cultural norms.
Both books compelled me to consider the power of culture on human behavior and thinking. We're less smart than we think, and there's more knowledge buried within our cultural norms than we realize. I'm not sure it's made me a better problem solver, but it has made me more likely to ask myself "does tradition/norms/etc. suggest a direction for this problem?" Time will tell if that approach leads to better problem solving.
Reversing: Secrets of Reverse Engineering by Eldad Eilam https://en.wikipedia.org/wiki/Reversing:_Secrets_of_Reverse_...
Spent a few years trying to figure out how Help people without trying to force businesses to do what’s right.
Anytime I hear a new fiscal policy or laws idea I can usually figure out if it’s going to work or cause problems
https://www.amazon.com/Basic-Economics-Thomas-Sowell/dp/0465...
This book changed the way I think about user experience as a developer. I’m not a designer at all but when building a UI I try to think of it from a user perspective now because of this book.
It's the first volume of a set of biographies of Lyndon B. Johnson, but it's so much more an exploration of how power works and shapes. Caro is obsessed with power (thus the other classic: Caro's The Power Broker). Learning how Johnson learned how to wield power made me see the impact of power in my daily work and interactions, and hopefully, taught me how to predict how 'upstairs' reacts. It's all about power.
Interestingly enough, I recommended it to a few friends of mine who quite clearly to me had toxic partners. In both instances, they thanked me for the book recommendation and took action to remove those people from their lives. Especially in relationships, it's good to have a frame of reference to tell whether someone truly has your best interest at heart, or they just want power over you and use your good nature to get that.
Keep in mind that the book is written in such a way to sound like your getting an education in politics from a full-blown psychopath, but once you get past that there's a lot of worth to be found.
Algorithms to Live By: The Computer Science of Human Decisions by Brian Christian & Tom Griffiths
https://www.amazon.com/Algorithms-Live-Computer-Science-Deci...
While reading and applying, the suspicion had grown in me that probability is embedded in causality. Specifically when using Bayes theorem I had tweaked notation for me, so P[X|Y] would mean that X depends causally on Y. Then
P(Y|X)=P[X|Y]P(Y)/P(X)
would clearly show the reverse problem character, and how evidential reasoning is built on causal reasoning.
Thus what Pearl and a lot of contributors built fell on fertile ground with me. I think it is an amazing addition to reasoning tools.
An Introduction to Philosophical Analysis by Hospers. Provides an approach to thinking about different types of philosophical problems.
Both are accessible and will make you super genius.
“Seeing like a state”, “Knowledge and Power”, and “Antifragile”, top down control of a system always clashes with bottom up understanding, so experts in a field need humility when working with a new system and need to learn from the people who work with it every day.
“Critique of Pure Reason”, there are things we can’t know using only logic, so don’t try to use it to understand everything.
The book is basically a bible among top tier management consulting firms as it has some fantastic principles for breaking down complex problems and communicating it to others (e.g. MECE; Mutually Exclusive, Collectively Exhaustive)
A penal code includes a closed set of behaviours, also called crimes. In order to commit a crime you need to check if both actus reus (the act) and mens rea (the criminal state of mind). So you have to analyze all the parameters that may apply which may be multiple. How to defend a criminal is a great exercise to become a better thinker and problem solver.
Then if you like it go to: The logical thinking processes; A systems approach to complex problem solving by Dettmer.
And finally if you need to improve not only you thinking but that of a group in an open discussion go to: Dialog Mapping by Cocklin
https://press.princeton.edu/books/hardcover/9780691156668/th...
Defies categorization, difficult to summarize. A tutorial for effective and fulfilling learning, grappling with challenging intellectual problems, and for cultivating creativity.
It’s easy to read it superficially. The authors recommend reading it three times through. I read it again with first semester college students every fall. In actual fact, returning to it always reveals more insights (at least for me).
Most students roll their eyes and miss the value. But every year students come back and tell me that it changed the way they think when they got to college.
I’ve gotten some colleagues hooked on it too.
and
How to Measure Anything: Finding the Value of Intangibles in Business by Douglas W. Hubbard
Really changed the way I approach decision making.
When you’re stuck or your team is stuck, do what he calls a “question burst” to ideate all the questions that need to be asked. It’s so simple but highly effective
I find that reading books from those genres makes me question things more, which I find is a good exercise towards becoming a better thinker and learning how to piece ideas from different areas together.
For software, has got to be "Web Scalability for Startup Engineers" because it gave me a sweeping tour of most of today's software development, and various books on compiler development as building compilers taught me how to decompose things into smaller chunks.
Zero to One by Peter Thiel: philosophy for building companies and future.
Steve Jobs Biography by Walter Isaacson: a life of one of if not the most influential founder of our time.
Incerto 5-Book Set (Black Swan and Antifragile included) by Nassim Nicholas Taleb: how to understand and win in life, literally.
Art of War. Good example of a creature to last a damn long time.
Plato
Alexis de Tocqueville
Notebook of Nicholas Tesla
Deep insight into non-engineering nature often brings out a solution that can be applied toward engineering/computer science.
Ways of Seeing by John Berger. It's a short book, written about 50 years ago to accompany a British TV series, which you can find on YouTube, and which I highly recommend before reading the book.
Its a book about visual experience. Painting, advertisements, television. Pardon the pun, but it was eye opening when I read it and understood how advertising works, and today, years after the first reading and now in the context of what is the most graphically and visually intense society we have ever lived in, I find the messaging even more relevant.
In my experience, my co-workers tend to accept many concepts / structures / processes for granted whose design is non-obvious, yet they accept them although they don't understand them.
They're relying on an illusion of understanding - better thinking starts when you realize that you had no real understanding to begin with. I am not sure that you can teach this from a book. It requires an inquisitive mind and the courage to think for yourself.
by Nancy Leveson
Definitely one of better books that makes you think outside the box.
It gave me a whole new perspective on virtually everything. It answers a lot of the ‘why’ questions about how we got to the place we are in this world.
The thing that taught me the most about solving problems was doing a bunch of autograded systems programming assignments, and reading about how other people went about doing the assignments
I developed this mindset (note this is for writing code for an autograder that no one else will read, it isn't going into a long term codebase):
- only do the bare minimum necessary to satisfy all criteria
- ignore any bloat that people suggest unless it's part of the shortest cost path
- figure out one way of doing something and just reuse it so that you can use the mental energy elsewhere
- reread the instructions so many times that you can mentally "see" all the logic before the first line gets written
- try to work in long bursts over a short term as opposed to short bursts over a long term because context switching is too expensive
https://books.google.bg/books/about/The_Art_of_Insight_in_Sc...
https://www.amazon.com/Archetypes-Collective-Unconscious-Col...
“Applied Engineering Analysis” by Tai‐Ran Hsu, published by John Wiley & Sons, 2018 (ISBN 9781110071204)
Recent discovery. Complete reference in a single textbook. Applicable to any scale: from industrial automation to lunchtable experiments ;)
>>> better thinker
Wolfgang Engel. Decades of books from shaderx to gpuzen. Plus The Forge renderer!
>>> holiday fun
Flea | Acid for the Children (if you enjoy Just Kids, Chronicles: Vol 1, etc)
What has done the most for me is actually running into lots of problems and solving them by digging deep, finding the cause, and a good way to solve it. One thing that's been invaluable is the idea that any problem can be solved, any system can be understood (as well as necessary to solve a problem), and that everything is fair game and in scope for solving the problem (thinking outside the box? there's only the box you put yourself in).
Nowadays, I'm mostly learning how to better explain the thought processes behind good software engineering that is all about tradeoffs and not about following rules or applying patterns without assessing applicability.
Another superpower is always to think of the simplest thing that will work. Avoid using fancy words or creating abstractions that make software seem sophisticated and complex when unnecessary. That only lowers the limit of how complex a problem you can solve. If you get really good at thinking and solving problems in simple ways, you can solve much more complex ones when called for.
I would suggest an entirely different path: play Go, the board game. The rules are incredibly few and easy to learn. The tactics and strategy limited only by imagination and ability to count/execute while balancing priorities (important vs urgent). Another thing that it teaches is the counter-productivity of ego. There's odd parallel I've noticed where getting good at Go makes you better at other things and vice versa. I've taken a year or more off playing and when returning to the game, find I quickly get back to my past level and beyond. Alternatively, if a bit masochistic play StarCraft 2 ladder ;-)
"Outliers: The Story of Success" (Malcolm Gladwell)
"Data-Driven Science and Engineering: Machine Learning, Dynamical Systems, and Control" (Steven L. Brunton, J. Nathan Kutz)
"Yertle the Turtle and Other Stories" (Dr. Seuss)
"The Lorax" (Dr. Seuss)
As far as problem solving specifically I enjoyed taking the CFA exams. Particularly L1 was good for looking a Financial problems.
The book is not actually about problem solving, but about deliberate practice. It is a bit tangential, but in seen problem solving as a skill, you can see how the principles in that book apply. A good book - however, like many books of this style, I find it somewhat repetitive too.
The Goal: A Process of Ongoing Improvement https://a.co/d/iQGmd23
Mindware by Richard Nisbett - a researcher focusing on this for decades distills his best insight in a recent book.
https://www.amazon.com/Mindware-Tools-Thinking-Richard-Nisbe...
Predictably Irrational by Dan Ariely - a classic book in the field.
https://www.amazon.com/Predictably-Irrational-Revised-Expand...
- Antifragile: how things benefit from volatility
- Hold Me Tight: relationship advice
- The Lucifer Principle: energy flows
- Scale: how patterns persist across various scales
The Art of Living: Vipassana Meditation as Taught by S.N. Goenka by William Hart
These I read when I was a young art student. I learned a lot from the way they mapped the interior process of creative thought.
Doing the problem sets from a good university course.
Some problems might take you hours to solve, but it will develop your stamina for thinking hard.
A bit of a cheat answer. The book here represents the game of Go. I found getting into this hobby helped in problem solving other areas of my life since it exercises analyzing many branching paths.
There are often too many possibilities to try every one, so it requires intuition to narrow down the good options, and then you can visualize how it might play out.
99 cognitive biases with memorable examples and stories.
A great book about how all communication and thought is mediated through metaphor.
Douglas Hofstadter's books in general tend to be very thought-provoking.
It helps you apply systematic thinking to get the best out of complex situations in life.
We live a story and to make society work that story has to be shared.
The goal of life would be to be in self-sacrifice in service of truth and love, in a sense it’s similar to the stoic philosophy but with more dept.
So much of our humans problems and pitfalls are outlined perfectly, but we have to find a way to read it without prejudice, with the intention of discovering what we don’t know.
There is a deeper meaning than the bearded magician in the sky, but it’s a process for a scientifically minded person to be open to what is there (we have been taught that it’s a bunch of lies and superstitions)
do spiritual autolysis for few thousand hours, then profit
Before having children, I thought I was fairly empathetic and introspective, but raising a child helped me realize how superficial those traits in myself were.
I'm being completely honest when I say this book made me a better leader and project manager - having a better understanding of the motivations of others, incentivizing those looking to you for guidance based on their own goals/desires, providing those with tools they need to succeed, and taking a macro view of a problem and allowing those under me to flourish and find creative ways to solve problems that take advantage of their strengths and idiosyncrasies.
I'm in no way suggesting that you infantilize those around you, just that teaching my toddler to shit opened my eyes to the way I approached problems, and Brandi Brucks' book helped me approach things differently with great success!