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
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
(Based on Jeff Atwood’s How To Ask Questions The Smart Way and What have you tried?)
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.
Jeff famously asks: “What have you 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.
This isn’t just about etiquette; it’s about being a better engineer. The act of formulating the question and documenting your attempts often leads you to the answer before you even ask it (Rubber Duck Debugging).
History and Status Quo of Computer Crime
(Based on Jeff Atwood’s Computer Crime, Then and Now and I Was a Teenage Hacker)
In “I Was a Teenage Hacker,” Jeff recounts his own minor brush with the dark side of computing—writing a wardialer script in his youth. He uses this anecdote to discuss the evolution of computer crime.
Decades ago, hacking was often about curiosity or notoriety. Today, it is a massive, organized criminal industry. But interestingly, the techniques haven’t changed that much. Social engineering, weak passwords, and unpatched vulnerabilities are still the primary vectors.
What has changed is the scale and the stakes. We are now “digital by default,” meaning a breach isn’t just an annoyance; it’s a threat to our identity, our finances, and our infrastructure. Understanding the history of computer crime helps us realize that security isn’t a product you buy; it’s a process you practice providing.
How to Communicate with People
(Based on Jeff Atwood’s The Art of Speaking and Communication Skills)
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 writing clearly (blogging helps with this!) and speaking confidently.
Soft skills are hard. They require empathy, patience, and practice. But they are force multipliers for your technical skills.
Practice Basic Skills Diligently
(Based on Jeff Atwood’s The Ten Commandments of Egoless Programming and Practice Makes Perfect)
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: Welcome to join and thank you for your support~
One person can walk faster, a group can walk further
