The best software engineering books

1 authors have picked their favorite books about software engineering 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).

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.

Managing Humans

By Michael Lopp,

Book cover of Managing Humans: Biting and Humorous Tales of a Software Engineering Manager

Michael Lopp, or Rands, as he is commonly known online, has been sharing his knowledge as a software manager for years, mainly through his blog. He is one of the most insightful voices about the art of management in a software environment, and even if you are not a manager yourself (and don’t want to become one), will make you understand and better collaborate with your own manager, and be ready when you need to lead a team or understand how it is to work with other humans.


Who am I?

Since I was a kid, I’ve been passionate about technology and had a clear vocation to work with computers. I’ve been a developer for more than 20 years now, spending half of them mainly in the Python environment, and I’ve always been interested in improving my skills. While it’s true that software development is a field that changes constantly and technology evolves at great speed, there are some elements that remain relatively unchanged and can be used to compound knowledge and ability. In particular, the elements that are closer to the human element, teamwork, coordination, etc. are quite stable over time.


I wrote...

Python Automation Cookbook

By Jaime Buelta,

Book cover of Python Automation Cookbook

What is my book about?

Python Automation Cookbook is a collection of recipes that aim to present the power of the Python programming language as a way of making a computer do the heavy lifting in a lot of repetitive tasks. Some examples present in the book include dealing with files, creating graphs, working with emails, web scrapping, sending SMSs, or marketing examples.

Python is a great language because is easy to learn and to use, and at the same time is powerful and extensive, having a great community. While a bit of knowledge of Python is assumed, the book is aimed at non-experts and casual users that can learn how to automate their own tasks.

Designing Secure Software

By Loren Kohnfelder,

Book cover of Designing Secure Software: A Guide for Developers

Loren’s been contributing to security for over 40 years, and this book captures his hard-won wisdom in a way that’s both humble and accessible. It scales from principles and design approaches to in-depth explanations of exactly how things go wrong and how to avoid those problems. (Also, I was honored to write the foreword.)


Who am I?

Being able to understand and change reality through our knowledge and skill is literal magic. We’re building systems with so many exciting and unexpected properties that can be exploited and repurposed for both good and evil. I want to keep some of that magic and help people engineer – build great systems that make people’s lives better. I’ve been securing (and breaking) systems, from operating rooms to spaceships, from banks to self-driving cars for over 25 years. The biggest lesson I’ve learned is that if security is not infused from the start, we’re forced to rely on what ought to be our last lines of defense. This list helps you infuse security into your systems.


I wrote...

Threat Modeling: Designing for Security

By Adam Shostack,

Book cover of Threat Modeling: Designing for Security

What is my book about?

How to anticipate and address software threats before you’ve written a line of code. The proven tools in this book can be applied by anyone. They give you a structured and systematic approach that are be applied at any scale – from a website built with CI/CD to complex waterfall projects like spacecraft.

This book captures years of experience in a simple, accessible, and practical way.

The Mythical Man-Month

By Frederick P. Brooks Jr,

Book cover of The Mythical Man-Month: Essays on Software Engineering

In the 1970s, Brooks was the leading thinker on managing large software projects in the world, and unexpected delays in completing complex coding tasks were emerging as a costly headache for large organizations. Brooks was considered a software luminary within IBM, which dominated the digital world in the era before the advent of the personal computer.

“In many ways, managing a large computer programming project is like managing any other large undertaking, but in many other ways it is different – in more ways than most professional managers expect,” Brooks dryly declared in the opening lines of a book destined to become a classic. He went on to explore specific challenges in the book’s 15 terse chapters, the second chapter, which gave the title to the entire volume, he presented paradoxical insight that ultimately elevated the book to the status of a classic.

Brooks argued, persuasively and insistently, that adding…


Who am I?

The author was the chief Silicon Valley writer for The Wall Street Journal during the first of the 1990s. He went on to become an acclaimed scholar in the history of science, engineering, and innovation. At the peak of his journalism career, the Boston Globe described Zachary as the most talented reporter on the Journal's staff. Zachary went on to write technology and innovation columns for The New York Times, Technology Review, and Spectrum magazineZachary has also taught courses on science and technology studies at Stanford University, UC Berkeley, and Arizona State University, where he was a professor from 2010-2020. He lives in northern California. 


I wrote...

Showstopper! The Breakneck Race to Create Windows NT and the Next Generation at Microsoft

By G. Pascal Zachary,

Book cover of Showstopper! The Breakneck Race to Create Windows NT and the Next Generation at Microsoft

What is my book about?

Showstopper is an epic techno-scientific creation story, about the making of a complex and sprawling piece of computer code by a team of code writers at what was the iconic software company in the 1990s, Microsoft. The narrative follows an ensemble cast of characters through their trials and triumphs in constructing a breakthrough program called Windows NT, versions of which remain of value today, notably in the field known as cloud computing. At the time of publication in 1994, Showstopper was widely reviewed: called “a compelling tale” by Newsweek, “riveting” by Harvard Business Review and  “gripping” by Fortune magazine. remains in print. With the passage of time, Showstopper gained a cult following among code writers, both because of how the book captures life on the frontlines of computing.

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.

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.

Foundation ActionScript 3.0 Animation

By Keith Peters,

Book cover of Foundation ActionScript 3.0 Animation: Making Things Move!

Okay, hear me out. Yes, this book was published in 2007. Yes, it’s ostensibly about ActionScript, the coding language in Flash, which no one uses anymore. But you won’t use this book to learn ActionScript or Flash: You’ll use it to learn how to make things move with code, in any language. You’ll skip over the ActionScript-specific parts in favor of the lucid explanations and helpful illustrations. Your visual brain will appreciate seeing how sines, cosines, and tangents are relevant—and necessary!—to make digital things move. (Your heart will wish your brain had paid better attention in trigonometry class years earlier, but hey, no regrets!) The chapters “Trigonometry for Animation” and “Velocity and Acceleration” alone are worth the purchase price.


Who am I?

I’ve been making web pages since the World Wide Web began in the mid-1990s. Back then, the web was visually quite sparse. It wasn’t until the late 2000s that new browser capabilities let the web get visually interesting and an exciting place for interactive graphics. Graphics are great: they can be informational (like charts and maps) or purely aesthetic. My personal journey of learning to code interactive graphics has been so rewarding that I’ve shared the love with others through teaching creative coding workshops and undergraduate courses. If you’re new to coding or computer graphics, I hope you’ll give one of these books a try!


I wrote...

Unstuck: Javascript

By Scott Murray,

Book cover of Unstuck: Javascript

What is my book about?

Everyone who codes on the web has one thing in common: We get stuck! That’s normal; we’re only human, after all! But proficient coders get unstuck more quickly than the rest. Unstuck: JavaScript gets you moving again—quickly—with three simple steps that point you to directly to your best next step.

Software Security Engineering

By Julia H. Allen, Sean Barnum, Robert J. Ellison, Gary McGraw, Nancy R. Mead

Book cover of Software Security Engineering: A Guide for Project Managers

This book is a “how-to” guide for teams developing secure software. Written by a team of experts, it covers the important issues in developing software that is better able to prevent successful attacks. The book contains many references, a strategy, and an implementation guide with cross-references. For each topic, the maturity of practice at the time of writing is provided, as well as an indication of the audience.  


Who am I?

As a kid, I used to do all the math problems in my textbooks just for fun, even if they weren’t part of a homework assignment. My grandchildren cringe when I tell them this. I am a researcher and educator in secure software engineering and have enjoyed a productive career in software development and management, software engineering and software security research, and software and secure software engineering education.  


I wrote...

Cyber Security Engineering: A Practical Approach for Systems and Software Assurance

By Nancy R. Mead, Carol Woody,

Book cover of Cyber Security Engineering: A Practical Approach for Systems and Software Assurance

What is my book about?

I saw a need for books on cybersecurity that could be used both in educational settings and in practice. I like this book because it focuses on developing and acquiring assured software and systems, and it provides a risk-aware orientation, while making practical suggestions for getting started. The book covers a wide variety of software security topics for both developed and acquired software, provides copious references, and gives the readers a roadmap for implementation of good cyber security practices for developing and acquiring assured software.

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.

New book lists related to software engineering

All book lists related to software engineering

Bookshelves related to software engineering