Learning items in software development

A subjectively created list of books about software development grouped in the following categories:

Category I: Practitioners sharing their hard-won and thoughtful experiences.

Category II: Foundational knowledge.

Category I: Practitioners sharing their hard-won and thoughtful experiences


Agile Principles, Patterns, and Practices in C# by Robert C. Martin, Micah Martin

The Art of Agile Development by James Shore, Shane Warden

Implementation Patternsby Kent Beck

Extreme Programming Explained: Embrace Change (2nd Edition) by Kent Beck and Cynthia Andres

Object Solutions: Managing the Object-Oriented Project by Grady Booch

Organizational Patterns of Agile Software Development by James O. Coplien, Neil B. Harrison

Agile and Iterative Development: A Manager’s Guide by Craig Larman

Agile Software Development: The Cooperative Game by Alistair Cockburn

Agile Software Development With Scrum by Mike Beedle, Ken Schwaber

The Enterprise and Scrum by Ken Schwaber

The Craft of Software Testing: Subsystems Testing Including Object-Based and Object-Oriented Testing by Brian Marick

Test-Driven Development: A Practical Guide by David Astels

Concurrent Programming on Windows Vista: Architecture, Principles, and Patterns by Joe Duffy

Multi-Paradigm Design for C++ by James O. Coplien

Working Effectively With Legacy Code by Michael Feathers

Windows Internals: Including Windows Server 2008 and Windows Vista, Fifth Edition by Mark Russinovitch, David A. Solomon

Domain-Driven Design: Tackling Complexity in the Heart of Software by Eric Evans

 Agile Project Management: Creating Innovative Products by Jim Highsmith

Agile Estimating and Planning by Mike Cohn

Software Pioneers by Manfred Broy (Editor), Ernst Denert (Editor)

I. M. Wright’s Hard Code by Eric Brechner 

Pragmatic Programmer: From Journeyman to Master by Andrew Hunt, David Thomas

Software Craftmanship: The New Imperativeby Pete McBreen


Category II: Foundational knowledge


Software design by David Budgen

Software for Use: A Practical Guide to the Models and Methods of Usage-Centered Design by Lucy A.D. Lockwood, Larry L. Constantine

Sketching User Experiences: Getting the Design Right and the Right Design by Bill Buxton

Object-Oriented Analysis and Design with Applications (3rd Edition) by Grady Booch

Practical Guide to Structured Systems Design (2nd Edition) by Meilir Page-Jones (Author)

Structured Design: Fundamentals of a Discipline of Computer Program and Systems Design by Edward Yourdon

Structured Analysis and System Specification by Tom Demarco and P. J. Plauger

Structure and Interpretation of Computer Programs – 2nd Edition by Harold Abelson, Gerald Jay Sussman

Instructor’s Manual t/a Structure and Interpretation of Computer Programs – 2nd Edition by Julie Sussman

Computer Science: An Overview (9th Edition) by J. Glenn Brookshear

Generative Programming: Methods, Tools, and Applications by Krzysztof Czarnecki, Ulrich Eisenecker

Foundations of Empirical Software Engineering: The Legacy of Victor R. Basili by Barry Boehm