The best software development books

1 authors have picked their favorite books about software development and why they recommend each book.

Soon, you will be able to filter by genre, age group, and more. Sign up here to follow our story as we build a better way to explore books.

Shepherd is reader supported. When you buy through links on our website, we may earn an affiliate commission (learn more).

201 Principles of Software Development

By Alan M. Davis,

Book cover of 201 Principles of Software Development

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.


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.

Facts and Fallacies of Software Engineering

By Robert L. Glass,

Book cover of Facts and Fallacies of Software Engineering

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.


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.

AntiPatterns

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

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.


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.

Rapid Development

By Steve McConnell,

Book cover of Rapid Development: Taming Wild Software Schedules

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.


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.

Software Engineering at Google

By Titus Winters, Tom Manshreck, Hyrum Wright

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

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.


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.

User Stories Applied

By Mike Cohn,

Book cover of User Stories Applied: For Agile Software Development

Many agile projects employ user stories as a way to represent requirements rather than a more traditional approach combining use cases and functional requirements. I favor the latter approach for several reasons. Nonetheless, user stories are well established in the agile development world, and if you wish to learn about them, there’s no better author to read than Mike Cohn. Cohn describes how to craft user stories well and how they fit into the agile development process.


Who am I?

Defining and managing the requirements for a software system is hard! I’ve been interested in improving how projects handle their requirements for more than 35 years. I realized how important this was when I saw how many projects—including my own—struggled and failed when they neglected to build a solid foundation of well-understood and clearly communicated requirements. I’ve personally used nearly all of the techniques described in my book Software Requirements, and I got always better results when I applied those techniques. My books, articles, training courses, presentations, and videos on requirements have been helpful to thousands of business analysts worldwide for many years.


I wrote...

Software Requirements

By Karl Wiegers, Joy Beatty,

Book cover of Software Requirements

What is my book about?

The award-winning Software Requirements is one of the most popular books in this domain. Coauthored with Joy Beatty, it comprehensively addresses the full spectrum of requirements development and management. It provides the broadest coverage of any requirements book.

This pragmatic book is based on my many years of personal experience with requirements as well as having consulted and taught at more than 100 companies. It provides dozens of practical techniques, templates, and work aids for requirements elicitation, analysis, specification, validation, and management. Many real-life stories illustrate how these techniques have been applied effectively. The topics covered also include business rules, data requirements, visual modeling, nonfunctional requirements, and requirements reuse. Other chapters address how to handle requirements on agile, enhancement, data analytics, embedded systems, outsourced, and packaged-solution projects.

New book lists related to software development

All book lists related to software development

Bookshelves related to software development