This is the eighth post in the reading notes series for The Programmer’s Apprenticeship: From Good to Great. The author, Jeff Atwood, is one of the founders of Stack Overflow. His articles cover a wide range of topics. He is a seasoned programmer, manager, and entrepreneur. This book discusses many things beyond programming. Whether you are a junior engineer or a senior engineer, this book is worth reading. As your experience grows, every time you re-read this book, you will gain new insights. Just as the title “From Good to Great” suggests, the author points out the path for you, but whether you can succeed depends on your own cultivation.
I will excerpt some wonderful remarks from the book and sometimes add my own insights or experiences. The outline of the reading notes is consistent with the outline of the book itself. This is also a method I learned from another source and have been using: “How to Read a Book”. I record it for my own frequent review and for readers’ reference. Below is the The Programmer’s Apprenticeship reading note series:
- The Programmer’s Apprenticeship - 01: The Art of Fighting Back
- The Programmer’s Apprenticeship - 02: The Way of Programming
- The Programmer’s Apprenticeship - 03: Web Design Principles
- The Programmer’s Apprenticeship - 04: Reflections on Testing
- The Programmer’s Apprenticeship - 05: Know Your Users
- The Programmer’s Apprenticeship - 06: All About the Internet
- The Programmer’s Apprenticeship - 07: Games and Programming
- The Programmer’s Apprenticeship - 08: The Beauty of Reading
Source note (reviewed October 2026): These are reading notes and personal interpretations, not a verbatim translation. Links have been corrected to accessible original articles. The computer-crime section draws on 2012 writing and should be read as history, not as current threat statistics.
Not Reading, Whose Fault Is It?
(Based on Jeff Atwood’s Programmers Don’t Read Books – But You Should)
There’s a saying: “Programmers don’t read books.” Jeff explores why this might be true. Often, technical books are dry, outdated by the time they are printed, or just plain boring. The Internet has replaced the reference book for many of us.
However, Jeff argues that we are missing out. Deep knowledge often requires the long-form structure that only a book (or a very long series of articles) can provide. Reading code is important, but reading about code—the philosophy, the architecture, the “why”—is equally vital.
We can’t just blame the industry or the medium. If we don’t read, it’s our own fault. We stagnate. We miss the wisdom of the “giants” upon whose shoulders we stand. Books like The Pragmatic Programmer, Code Complete, and The Mythical Man-Month are timeless for a reason.
Heaven Helps Those Who Help Themselves
Related original article: Jeff Atwood’s Rubber Duck Problem Solving (2012).
This section echoes the core philosophy of Stack Overflow: Self-reliance.
Before you ask for help, you must demonstrate that you have tried to help yourself. “Heaven helps those who help themselves” implies that you shouldn’t expect others to solve your problems if you haven’t put in the effort first.
Start by asking yourself: “What have I tried?”
If you encounter a bug, don’t just post the error message. Tell us:
- What you expected to happen.
- What actually happened.
- What you have already done to try to fix it.
Writing out the problem and what you have tried often helps you find the answer before you even ask. That is the point of rubber duck debugging.
2026 update: For debugging questions, follow Stack Overflow’s minimal reproducible example guidance. Include necessary code and configuration as text, report the exact error, and rerun the reduced example before posting to confirm it still reproduces the issue. State the actual versions when version differences matter.
History and Status Quo of Computer Crime
(Based on Jeff Atwood’s Computer Crime, Then and Now and I Was a Teenage Hacker)
In the 2012 article “I Was a Teenage Hacker,” Jeff recalls writing an AppleBasic tool in the 1980s to try calling-card access codes for long-distance calls. This was calling-card code guessing, rather than wardialing to discover modems across telephone numbers.
In “Computer Crime, Then and Now,” Jeff contrasts earlier experiences with financially motivated crime and emphasizes the persistence of social engineering. The claim that techniques changed little belongs to that 2012 argument; it is not a survey of all attack methods in 2026.
These cases highlight risks in human behavior and account-recovery processes, beyond machine configuration. Historical examples help explain those risks, but assessing a system today still requires its current software versions, deployment, and actual threats. “Techniques have not changed” is not a substitute for that assessment.
How to Communicate with People
Related original article: Is Writing More Important Than Programming? (2006).
Ideally, code would speak for itself. In reality, communication is the most important skill for a programmer.
You can be the best coder in the world, but if you can’t explain your ideas to your team, persuade your manager, or understand your users, you will fail. Jeff emphasizes the importance of clear writing (blogging helps with this!) and communication.
Soft skills are hard. They require empathy, patience, and practice. But they are force multipliers for your technical skills.
Practice Basic Skills Diligently
Related original articles: The Ten Commandments of Egoless Programming (2006) concerns review and collaboration; The Ultimate Code Kata (2008) addresses deliberate practice more directly.
Finally, there are no shortcuts. To be awesome, you must practice.
But “practice” doesn’t just mean typing code for 10 hours a day. It means:
- Deliberate Practice: Working on things you are bad at, not just things you are good at.
- Code Katas: Small exercises to keep your skills sharp.
- Reading Code: Reading other people’s code to learn new patterns.
Excellence is a habit. It comes from the daily discipline of trying to suck a little less than you did yesterday.
The Programmer’s Apprenticeship (or Building a Career in Software) is a compilation of the best articles from the Coding Horror blog. The book is divided into 8 chapters, covering topics such as time management, programming methods, web design, testing, user needs, the Internet, game programming, and technical reading. The topics selected by the author are all pain points in a programmer’s career. Many articles have high click-through rates and reply rates on blogs and the Internet. —— from Douban
Jeff Atwood founded the Coding Horror blog (codinghorror.com) in 2004 to record his thoughts and bits and pieces of his software development experience. Today, the blog has nearly 100,000 visits per day. Readers participate in comments, and various views and wisdom collide passionately there. —— from Douban
The writing style of The Programmer’s Apprenticeship is humorous, understanding, and caring; it is suitable for programmers at all stages from novice to veteran, and also suitable for students of computer science and related majors who are about to become programmers. The Programmer’s Apprenticeship can help readers pay more attention to the human nature and humanistic factors of technical work, thereby achieving a successful turning point in their programmer career. —— from Douban
About Me && Blog
Below is my personal introduction and related links. I look forward to exchanging ideas with fellow professionals. “When three walk together, one can always be my teacher!”
- Blogger Intro: Includes personal WeChat and WeChat group links.
- Blog Content Navigation: A guide for my blog content.
- Curated Excellent Blog Articles - Android Performance Optimization Must-Knows: Welcome to recommend projects/articles.
- Android Performance Optimization Knowledge Planet: The paid community stopped operating in 2026 and no longer accepts new members; this link preserves its history.
One person can walk faster, a group can walk further
