Summary

97 Things Every Programmer Should Know is not a traditional technical book with a single argument or narrative. Instead, it is a curated collection of short essays, each offering a distilled piece of wisdom from experienced developers worldwide. Edited by Kevlin Henney, the book presents a broad range of perspectives—from low-level coding habits to high-level professional conduct—each essay aiming to encapsulate a hard-earned lesson that programmers can apply in their daily work.

Despite the diversity of voices, a few themes recur: the value of simplicity, the importance of readability and maintainability, the need for humility and empathy, and the discipline of continuous improvement. It is a book designed not to be read in one sitting, but to be dipped into, reflected on, and revisited over time.

Key Insights

One of the strongest themes running through 97 Things Every Programmer Should Know is the emphasis on simplicity—in design, in code, and in mindset. This ideal is captured beautifully in the reference to Plato: “Beauty of style and harmony and grace and good rhythm depend on simplicity.” Many contributors stress that code should not be clever, but clear; not ornate, but maintainable. Simplicity is not just an aesthetic virtue—it is the foundation of robust, adaptable software.

The book also emphasises the importance of understanding users, rather than just listening to them. Essays encourage programmers to observe customers directly, asking them to walk through tasks and observe how they interact with the software. This is based on a practical insight: users often say one thing and do another. Firsthand observation helps bridge that gap and improves requirements gathering—something too often neglected in traditional software practices.

Although many of the ideas remain timeless, the book shows its age in places. Its advice on project planning and customer involvement predates the widespread adoption of Agile. Today, the notion that developers should engage regularly with end-users or deliver working software every two weeks is widely accepted. In that sense, the book sometimes reads like a call for reforms that have, thankfully, already become mainstream.

Nonetheless, its key ideas—simplicity, humility, craftsmanship, communication, and continuous learning—remain central to good programming practice. Whether reminding us to leave code cleaner than we found it, to write tests rather than proclaim correctness, or to value readable code over clever hacks, the book serves as a gentle but firm guide to professional conduct in software development.

Strengths

The strength of 97 Things Every Programmer Should Know lies in its practicality and accumulated wisdom. It offers a wealth of bite-sized advice, much of it already familiar to experienced developers—but valuable precisely because it bears repeating. Nuggets like “Be a good Boy Scout and leave the code better than you found it” or “Comments must add value, otherwise they are just noise” are reminders of the kind of craftsmanship that separates good code from merely functional code.

The advice is often straightforward but effective: keep functions under 20 lines, limit parameters to four or fewer, minimise the scope of variables, don’t repeat yourself, and never assume your code is correct—test it. None of this is revolutionary, but, as with many disciplines, mastery lies in the repeated application of fundamentals. For developers seeking to refine their habits or reflect on their practice, this book offers a concise refresher course.

The format is another strength: short essays from diverse voices ensure that the tone never grows stale, allowing readers to dip in and out without needing to follow a linear structure.

Weaknesses

For experienced developers, much of the advice in 97 Things Every Programmer Should Know may feel superficial or overly familiar. Principles like the Single Responsibility Principle, minimising variable scope, avoiding global state, or refraining from profanity in code comments are all valid—but they’re also foundational. These are lessons most programmers encounter early in their careers, whether through formal education, code reviews, or trial and error.

As such, the book can at times feel like a compendium of truisms, more useful for reinforcement than revelation. It doesn’t delve deeply into any one topic, and readers looking for advanced or novel insights may come away underwhelmed. The format, while accessible, also means that depth is sacrificed for breadth—you get 97 quick takes, but few are truly thought-provoking or technically challenging.

That said, repetition has its place, and even seasoned professionals can benefit from revisiting core principles—especially in an industry that often gets distracted by trends.

Reflections

This book will likely be most useful to those at the start of their programming career. For newcomers, 97 Things Every Programmer Should Know offers a concise, accessible way to absorb good habits and avoid common pitfalls. It captures many of the unspoken rules and bits of practical wisdom that experienced developers often learn the hard way.

As a more experienced software engineer, I found little that was new or surprising—but that’s not necessarily a flaw. Sometimes, the value of a book lies in what it reminds you of, rather than what it introduces. The emphasis on clarity, simplicity, and professionalism still resonates, and the format makes it easy to revisit now and again when one’s habits start to drift.

Conclusion

97 Things Every Programmer Should Know is not a bad book—but it doesn’t add a lot, especially for seasoned developers. It gathers familiar advice into one convenient place, and for that, it has value—particularly for those early in their careers. For more experienced readers, it may serve as a light refresher or a reminder of best practices already known. It’s a book worth browsing, but not one that’s likely to change how you think about programming.

Book Details

Title: 97 Things Every Programmer Should Know
Author: Kevlin Henney (Editor)
Publication Year: 2010
Genre: Software engineering, Programming
🔗 Buy on Amazon