Share E-Book
Scan to open this page

Scan with your phone to open this page

Author: Kevlin Henney

Rating No ratings yet

97 short and extremely useful programming tips from some of the most experienced and respected practitioners in the industry, including Uncle Bob Martin, Scott Meyers, Dan North, Linda Rising, Udi Dahan, Neal Ford, and many more. They encourage you to stretch yourself by learning new languages, looking at problems in new ways, following specific practices, taking responsibility for your work, and becoming as good at the entire craft of programming as you possibly can A few of the 97 things you should know: "Code in the Language of the Domain" by Dan North "Write Tests for People" by Gerard Meszaros "Convenience Is Not an -ility" by Gregor Hohpe "Know Your IDE" by Heinz Kabutz "A Message to the Future" by Linda Rising "The Boy Scout Rule" by Robert C. Martin (Uncle Bob) "Beware the Share" by Udi Dahan

AI Reading Assistant

Whole-book reading guide from stratified index samples; jump to passages in the text

AI guide
# 97 Things Every Programmer Should Know ## 【One-Line Pitch】 A collection of 97 concise, practical essays from leading software practitioners covering the craft of programming—from coding techniques and design principles to career habits and team dynamics. Perfect for working developers who want bite-sized wisdom they can apply immediately, or anyone looking to broaden their perspective on what it means to be a professional programmer. ## 【Book Arc】 - **Opening (~0%–10%)**: The book opens with a table of contents organized by themes—design principles, coding techniques, testing, users and customers, and career development. This structure signals that the book is meant to be browsed rather than read cover-to-cover, with each essay standing alone. - **Early (~10%–25%)**: The first essays establish core values: simplicity as the foundation of beautiful code, the importance of context when reusing code, and the humility to check your own code before blaming tools. These pieces set the philosophical tone for the collection. - **Early–Middle (~25%–40%)**: The focus shifts to concrete coding practices—writing code in the language of the domain, expressive layout, compact formatting, and encapsulation principles. This section reads like a style guide from experienced practitioners. - **Middle (~40%–60%)**: Essays address professional habits and team dynamics: deliberate practice as distinct from mere task completion, the importance of deployment processes, maintaining code health, and handling exceptions responsibly. The tone becomes more reflective about the developer's role. - **Late (~60%–100%)**: The collection continues with testing philosophy, tool mastery, and interpersonal skills—covering topics like writing tests for people, knowing your IDE, and understanding that testers are your friends. The book closes with essays on continuous improvement and the broader craft of programming. ## 【Key Takeaways】 - **Simplicity is the foundation of all code quality** (Early): Readability, maintainability, and beauty all stem from simplicity, not complexity. This Platonic ideal applies regardless of whether you approach code as art or science. - **Context matters more than reuse** (Early): Pulling out shared code without understanding whether the similarity is accidental or intentional creates hidden coupling. Two pieces of code that look the same may need to evolve independently. - **Check your own code before blaming the compiler** (Early): Compiler and OS bugs are extremely rare in mature tools. The time spent proving the tool is wrong is almost always better spent finding your own error. - **Code should speak the language of the domain** (Early): When code expresses business rules in domain terms, it becomes self-documenting and easier to evolve as understanding grows. The programmer who maintains your code later might be you. - **Encapsulation is about narrow interfaces, not hiding data** (Early–Middle): Don't ask objects for information to work with—ask objects to do the work with the information they already have. Setters and getters that expose internal state are liabilities. - **Deliberate practice is different from task completion** (Middle): The goal of deliberate practice is improving your ability, not finishing the task. Experts typically require around 10,000 hours of focused, repetitive practice to achieve mastery. - **Deployment should be designed from the start** (Middle): The installation process is the first thing customers see. Testing deployment on clean environments periodically prevents assumptions that rely on development environments. - **Code health requires continuous attention** (Middle): Refactoring, reducing dependencies, and eliminating corner cases should be ongoing hygiene tasks. A "hygiene list" of worthwhile cleanup projects reduces future expenses and speeds releases. ## 【Reading Tips】 - **Skim the table of contents first** and jump to topics that address your current challenges—this book is designed for browsing, not linear reading. - **Deep-read the essays on encapsulation and domain language** (around 20%–35% of the book) if you want the most actionable coding techniques; these are the densest with practical advice. - **Pay attention to the author attributions**—essays from well-known practitioners like Uncle Bob Martin and Udi Dahan often carry the most weight, but lesser-known contributors sometimes offer surprising insights. - **Treat each essay as a discussion starter** rather than gospel; the book deliberately presents diverse viewpoints, and some advice (like the "Beware the Share" essay) directly contradicts common wisdom. - **Skip around freely**—if an essay doesn't resonate, move on. The 97 pieces are independent, and the value comes from finding the ones that speak to your situation. ## 【Coverage Limits】 This guide is based on approximately 22 of the book's 32 indexed chunks, covering roughly the first 60% of the content. The excerpts do not cover the later essays on testing philosophy, tool mastery, and career development in detail, though their titles are visible in the table of contents. ##
Page 10
. . . . . . . . . . . . . . . . . . . 84 Johannes Brodwall Know How to Use Command-Line Tools . . . . . . . . . . . . 86 Carroll Robinson viii Contents Test...
View in text
Excerpt 2
sons, Stefan and Yannick, for reclaiming some of the chaos. I hope this book will provide you with information, insight, and inspiration. Enjoy! —Kevlin Henn...
View in text
Excerpt 3
er friend once remarked that code looks like poetry. I get that feeling from really good code—that everything in the text has a purpose, and that it’s there...
View in text
Excerpt 4
Some platforms insulate you from pain here; others do not. • Exceptions are a more structured language-supported way of signaling and handling errors. And yo...
View in text
Excerpt 5
If you don’t need it right now, don’t write it right now.) • It didn’t appear to be that big an “extra,” so it was easier to implement it rather than go back...
View in text
Excerpt 6
of something. This definition implies that an estimate is a factual measure based on hard data and previous experience—hopes and wishes must be ignored when...
View in text
Excerpt 7
y. Automating configuration in the build can enable you to get consistent results when multiple people are working on a project, avoiding an “it works for me...
View in text
Excerpt 8
U EVER HEARD THiS OR SOME VARiATiON THEREOF? Sure you have! Every developer and student probably hears comments like this fre- quently. Why, though? Why is r...
View in text
Tags
AI categories
Programming LanguageCodeProgramming
ISBN: 0596809484
Publisher: O’Reilly Media
Publish Year: 2010
Language: English
Pages: 257
File Format: PDF
File Size: 1.9 MB
Text Preview (First 20 pages)
Registered users can read the full content for free

Register as a Gaohf Library member to read the complete e-book online for free and enjoy a better reading experience.

Generating text preview…