The best books of lessons about software development

Who am I?

I first learned to program in college in 1970. Since then I’ve spent much time as a software developer, manager, tester, process improvement leader, consultant, trainer, author, and, of course, a user. I quickly learned that I didn’t have time to make all the mistakes that every software developer before me had already made. My training and writing career has involved sharing what I and others have learned with audiences to help them quickly become more effective software development team members, regardless of their project role. This book distills insights and observations both from my own experience and from what I’ve heard from thousands of students and consulting clients.


I wrote...

Software Development Pearls: Lessons from Fifty Years of Software Experience

By Karl Wiegers,

Book cover of Software Development Pearls: Lessons from Fifty Years of Software Experience

What is my book about?

There’s a tremendous amount to learn about the complex business of software development. Any approach that can help you avoid mistakes and false starts is a real time saver. Also, there’s a lot more to software development than just writing code. You can struggle up all those learning curves yourself, or you can jumpstart your career by learning from others’ experiences.

I wrote Software Development Pearls to share 60 powerful insights that I’ve collected in my 50+ years of software experience about requirements, design, project management, culture and teamwork, quality, and process improvement. Each lesson describes practical techniques, many true experience stories that illustrate the lesson, and helpful guidance to let you begin applying the lesson immediately in your world.

The books I picked & why

Shepherd is reader supported. We may earn an affiliate commission when you buy through links on our website. This is how we fund this project for readers and authors (learn more).

201 Principles of Software Development

By Alan M. Davis,

Book cover of 201 Principles of Software Development

Why this book?

Many of the most significant principles of effective software development are timeless. They’re independent of the development life cycle or model, programming language, application type, and so forth. Although this book is quite a few years old now, nearly all of its contents are still valid. The 201 principles cover the full spectrum of software engineering: general principles, requirements engineering, design, coding, testing, management, product assurance, and evolution. The descriptions of each principle are concise, whereas my 60 lessons in Software Development Pearls go into a great deal more detail and offer many practical techniques.

There’s an unfortunate tendency among young software people to disregard knowledge from the past as irrelevant to them. That’s not correct. This book can help close significant gaps in any practicing software developer’s knowledge.


Software Engineering at Google: Lessons Learned from Programming Over Time

By Titus Winters, Tom Manshreck, Hyrum Wright

Book cover of Software Engineering at Google: Lessons Learned from Programming Over Time

Why this book?

This hefty and contemporary volume provides a wealth of recommendations about how to build high-quality, large-scale software that’s intended to endure for an extended period of time. The book contains sections on culture and leadership, processes, and tools. It describes many effective practices for testing, configuration management, continuous integration and delivery, code reviews, code static analysis, and documentation. Not everyone is writing software on the scale that Google does, but the many comprehensive and specific examples in this book can be applied to nearly any software development project.


Facts and Fallacies of Software Engineering

By Robert L. Glass,

Book cover of Facts and Fallacies of Software Engineering

Why this book?

Robert Glass is one of the foundational leaders of the discipline of software engineering. He’s done it all and seen it all. This book includes 55 facts and 10 fallacies about many aspects of software engineering, grouped into the major categories of management, the life cycle, and quality. Based on my own experience, I can vouch for the validity of all the points Glass makes.

These timeless truths can help you avoid going down an ineffective path, wasting time only to rediscover the same facts on your own. There’s no need to retrace the missteps from the past. Books like this can keep your energies focused where they will provide the most value to your customers.


AntiPatterns: Refactoring Software, Architectures, and Projects in Crisis

By William J. Brown, Raphael C. Malveau, Hays W. "Skip" McCormick III, Thomas J. Mowbray

Book cover of AntiPatterns: Refactoring Software, Architectures, and Projects in Crisis

Why this book?

Most books about lessons learned and good practices tell you what you ought to be doing. AntiPatterns warns you about things you should not be doing. It points out a wide range of software project approaches that the authors believe are not advisable. The antipatterns have whimsical titles such as Poltergeists, Golden Hammer, Spaghetti Code, Stovepipe System, and Design by Committee. Each pattern describes the symptoms, causes, and consequences of that particular behavior, as well as offering a restructured approach that’s likely to yield better results. As with other lessons-learned books, this book lets you learn from the pain suffered by others to avoid stepping into the same traps on your own projects.


Rapid Development: Taming Wild Software Schedules

By Steve McConnell,

Book cover of Rapid Development: Taming Wild Software Schedules

Why this book?

One way to craft lessons learned is in the form of recommended best practices (or, as I prefer, “good practices”). Best practices represent collected and distilled wisdom from many observers, many projects, and many years of experience. Rapid Development includes 27 best practices for software development, with one chapter devoted to each. Although the book was published more than 25 years ago, most of these are still relevant. Indeed, several of them have been incorporated into routine contemporary practices: evolutionary delivery, designing for change, timebox development, and requirements scrubbing. Techniques such as inspections, miniature milestones, principled negotiation, and reuse are perennially pertinent.


5 book lists we think you will like!

Interested in software, software development, and software engineering?

5,810 authors have recommended their favorite books and what they love about them. Browse their picks for the best books about software, software development, and software engineering.

Software Explore 19 books about software
Software Development Explore 6 books about software development
Software Engineering Explore 9 books about software engineering

And, 3 books we think you will enjoy!

We think you will like Requirements by Collaboration, User Stories Applied, and Why Software Sucks...and What You Can Do About It if you like this list.