software engineering literature topic home

An artist needs to know the tools of his trade, master materials and techniques. But no matter your specialty and technical capabilities, you'll always be affected by the human factors of the discipline. Engineering literature, specifically for software or not (due to the young age of informatics, it helps to look at other, more established branches) distinguishes the professional from the hobbyist, provides the terms, patterns, and proven approaches, and helps in dealing with the related project leadership and management.

I'm proud to have read many classics and learned invaluable lessons from these books:

Donald G. Reinertsen, The Principles of Product Development FLOW; Second generation lean product development; academically grounded rules around queues, variability, batch size, WIP, feedback and decentralization, motivating the move to Agile methodologies in (software) product development, and highlighting differences to manufacturing (where many of these came from); Celeritas Publishing, 2009

Henrik Ingo, Open Life; The Philosophy of Open Source; tracing the history of Linux and hacker culture and its principles of no deadlines, scratching one's own itch, laziness, tolerance, and diversity; including a history of companies going Open Source and how they fared, ending with an outlook on Wikipedia, Creative Commons, etc. that came up at the book's publication date; Self-published on, 2006

Robert C. Martin, Clean Code; A Handbook of Agile Software Craftsmanship; a great (if somewhat jumbled) collection of rules and common wisdoms that most senior devs should know by heart, but often forget to apply in the turbulent daily business; quality is the result of a million selfless acts of care, and caring means being meticulous and test-driven; Pearson Education, 2009

Luke Hohmann, Beyond Software Architecture; Creating and Sustaining Winning Solutions; a broad swipe over Marketecture vs. Tarchitecture, and how the different functions need to collaborate to drive them, discussing business models, licensing, deployment, integration and extension, brand and usability, installation, configuration, and security; covers the entirety of enterprise software development like no other book, unfortunately, each good discussion can only scratch the surface of the topic; Addison-Wesley, 2003

Steven Casey, Set Phasers on Stun and other true tales of design, technology, and human error (second edition); entertaining short stories about accidents and their causes (unfortunately without thorough analysis); Aegean, 1998

Joachim Baumann, Ronald Hötschl, Bastian Spanneberg, Continuous Delivery ein Überblick; short booklet about Agile transition to Deployment Pipeline and Continuous Delivery, the technical as well as organizational challenges for analysis, architecture, dev, build, testing, deployment, and operations; dpunkt.verlag, 2014

Jakob Freund, Bernd Rücker, Praxishandbuch BPMN 2.0; syntax and best practices of business process modeling, from the strategic overview over precise operative models to a technical model that can be fed to a business process engine; contrast with BPEL, XML implementation details, business rules; Carl Hanser Verlag, 2010

Gregor Hohpe, Bobby Woolf, Enterprise Integration Patterns; designing, building, and deploying messaging solutions; a catalog of patterns around messaging, nicely illustrated by architecture diagrams and examples using JMS and MSMQ; Pearson Education, 2004

Martin Fowler, UML Distilled, second edition; a brief recap of the most important diagram types of UML 1.4, with additional commentary on how the author uses these; Addison-Wesley, 2000

Tom DeMarco, Why Does Software Cost So Much? And Other Puzzles of the Information Age; a hodgepodge of (mostly previously published) essays containing the expected software engineering and management wisdom of great sage and good writer DeMarco, but also some articles that are out of place; Dorset House, 1995

John Vlissides, Pattern Hatching; Design Patterns Applied; additional contemplations about Composite, Visitor, and Singleton as part of a design example; new patterns Generation Gap and Type Laundering; insights into the challenges of Pattern discovery with the example of Multicast vs. Observer; Addison-Wesley, 1998

HP Corporate Engineering, Software Quality and Productivity Guide; FURPS+, design through data flow diagrams (in a pre-OO world), and a surprising emphasis on unit and function testing, metrics for defects and maintenance; Part No. 5959-1606, 6/1988

iX Developer, Bessere Software; Application Lifecycle Management tools in the Agile context; version control, especially with Git; Continuous Integration and Delivery, DevOps and TDD; Verlag Heinz Heise, 3/2013

Serge Demeyer, Stéphane Ducasse, Oscar Nierstrasz, Object-Oriented Reengineering Patterns; a pattern language around social, testing, and refactoring patterns to adapt and maintain an inherited software application; First Open-Source Edition, 2008

Michael T. Nygard, Release It! Design and Deploy Production-Ready Software; best practices to ensure stability and capacity in modern web applications (with great war stories), and how to design software for the operations people; Pragmatic Bookshelf, 2007

Robin Williams, The Non-Designer's Design Book; visual design principles, page layout for common business papers, and an introduction into typography, with many illustrations; Peachpit Press, 2008

David Sibbet, Visual Meetings; how graphics, sticky notes, and idea mapping can transform group productivity; use of simple visual templates in various forms of meetings to engage people and avoid passive PowerPoint poisoning, various examples of successful visual facilitation; Wiley, 2010

Daniel Brolund, Ola Ellnestam, Behead your Legacy Beast: Refactor and Restructure relentlessly with the Mikado Method; Morph a system towards a goal through naive steps that are continuously reverted until you arrive at a leaf change, to avoid delving into a can of worms without escape; restructuring techniques and the use of refactoring; online book draft, Feb-2013

Jason Cohen, Steven Teleki, Eric Brown, Best Kept Secrets of Peer Code Review; Making a convincing case for code reviews, advocating for a modern, collaborative tool-based approach, which is more efficient than traditional, high-ceremony meetings with prior preparation. Tips on overcoming obstacles and not-so-subtle advertising for their CodeCollaborator tool; SmartBear software, 2012

Konrad Lischka, Fehlfunktion; Warum Frischhaltefolie nie gerade abreißt und andere Alltagsärgernisse; Sinn- und Unstimmigkeiten in Gegenständen des täglichen Umgangs, und warum dies so ist; Goldmann, 2010

John McWade, Before & After: Graphics for Business; Logos, Typography, layout, and colors for newsletters, stationery, reports and forms, described through various example projects; Peachpit Press, 2005

Jeff Atwood, Effective Programming: More Than Writing Code; Favorite blog essays on programming, security and testing, hiring and building a community; Hyperink Blog to Book Series, 2012

c't extra soziale Netze: privacy, control, and business models in Facebook, Google+, LinkedIn, Twitter, etc.; Verlag Heinz Heise, 2/2012

Eric Evans, Domain-Driven Design: Tackling complexity in the heart of software; Short, but expressive examples illustrate what a domain model is and how it can be refactored to a supple design and an ubiquitous language, Addison-Wesley, 2004

Alistair Cockburn, Writing Effective Use Cases; Formats, scopes, writing, and management of use cases, with many examples and critiques of UML alternatives; Addison-Wesley, 2001

brand eins, Geld verdienen im Netz Schwerpunkt Digitale Wirtschaft; Urheberrecht, Digitalkopie, Geschäftsmodelle, Startups; 07/2012

37signals, Getting Real; The smarter, faster, easier way to build a successful web application; short articles about lean startups, with contributing quotes and examples from Basecamp and the other 37signals products.

Amy Brown and Greg Wilson, The Architecture of Open Source Applications, Volumne II; sketches of 24 architectures, core design features, and lessons learned; 2012

Amy Brown and Greg Wilson, The Architecture of Open Source Applications, Volumne I; sketches of 25 architectures, core design features, and lessons learned; 2011

John McWade, Before & After: How to Design Cool Stuff; Typography, layout, colors, and photos, described through various example projects; Peachpit Press, 2010

Andy Oram and Greg Wilson, Making Software; What really works, and why we believe it; selected software engineering studies to move beyond the anecdotal stories about reviews, pair programming, TDD, design patterns, code quality, and many more; O'Reilly, 2010

William Lidwell, Kritina Holden, Jill Butler, Universal Principles of Design a cross-disciplinary reference; 125 ways to enhance usability, influence perception, increase appeal, make better design decisions, and teach through design; from the 80/20 Rule to the von Restorff Effect; Rockport Publishers, 2010

Karl Fogel, Producing Open Source Software; How to Run a Successful Free Software Project; technical infrastructure, good communications, encouraging and fostering collaboration of volunteers; a first-person account from a main Subversion contributor; self-published, free e-book, 2005

Stevel Levy, Hackers; Heroes of the Computer Revolution; From the origins of Lisp and Unix at MIT, through the hardware freaks like Woz building the first home computers, which enabled the rise of the famous game programmers and software startups, and how commercialization and the desired ubiquity finally ends the age of the hacker, with only residual echos in the free/open source communities; Penguin Books, 1984

Henrik Kniberg, Scrum and XP from the Trenches; How we do Scrum; Practical examples for sprint planning, execution, and the work environment from an early practitioner; C4Media, 2006
Henrik Kniberg & Mattias Skarin, Kanban and Scrum making the most of both; timeboxing vs. pull, differences to limiting WIP, a practical case study of an ops team switching to Kanban; C4Media, 2010

Henning Wolf, Arne Roock et al., agile review 2010; Articles on Scrum, FDD, Kanban and Lean Development; SOLID principles, acceptance tests with FIT; it-agile, 2010

iX kompakt Software-Qualität, usability and accessibility, testing, code quality and maintenance, migration and offshoring; Verlag Heinz Heise, 1/2011

Jessica Livingston, Founders at Work, stories of startups' early days; interviews with 33 founders of tech startups reveal the culture and stories before, during, and after the tech bubble, and what it takes to be an entrepreneur; Apress, 2008

Bob Walsh, Micro-ISV: From Vision to Reality; how to develop web and desktop applications and sell them over the Internet, the business side of software; interviews and portraits of successful founders; Apress, 2006

James Shore & Shane Warden, The Art of Agile Development; Agile methods as exemplified by Xtreme Programming, highlighting the interconnectedness of individual practices and how this fits into the big picture of Agility; O'Reilly, 2007

Michael Doyle, David Straus, How to Make Meetings Work; the new Interaction Method; structure meetings via dedicated facilitator and recorder roles, and try to attain collaborative win-win solutions; Jove, 1976

Michael C. Feathers, Working Effectively with Legacy Code, A discussion of common problems in legacy code and a catalog of dependency-breaking techniques; Prentice Hall, 2005

Erfolgreiches IT-Projektmanagement: Offshore-Projekte, Gruppendynamik, Chancen von agiler Entwicklung; iX magazine special, Verlag Heinz Heise, 3/2009

Phil Simon, Why new systems fail — theory and practice collide; Outlines the risks involved in system activation and migration of HR and ERP systems, using case studies and many real-life examples; AuthorHouse, 2009

Gerald M. Weinberg, The psychology of computer programming, Silver anniversary edition; Reading and evaluating the quality of programs, the social, team and motivational aspects of software development; Dorset House, 1998

Steve McConnell, Software Estimation - Demystifying the Black Art; Estimation techniques and challenges; Microsoft Press, 2006

Robert L. Glass, Facts and Fallacies of Software Engineering; A brief discussion of frequently forgotten fundamentals in management, life cycle and quality; Pearson Education, 2003

Dan Roam, The back of the napkin: solving problems and selling ideas with pictures A visual thinking process based on four steps (look, see, imagine, show), five questions (SQVID), and the six ways we see and show (who/what, how much, where, when, how, why); Portfolio, 2008

Steve Krug, Don't Make Me Think! A Common Sense Approach to Web Usability, Second Edition: Behavior and expectations of web users, home page design, navigation, accessibility; New Riders, 2006

Pete Goodliffe, Code Craft: The Practice of Writing Excellent Code: Proven code-writing and software engineering techniques in a competitive team environment from the real world software factories; No Starch Press, 2007

Ian Graham, Business Rules Management and Service Oriented Architecture: A Pattern Language; Aligning IT and business via SOA-based rules, expert systems and knowledge induction; John Wiley & Sons, 2006

Bruce Schneier, The Psychology of Security: Human factors and heuristics in assessing risks; Internet article, 2007

Richard P. Gabriel, Patterns of Software: Tales from the Software Community. Essays on reuse, piecemeal growth, code habitability and design patterns; a personal history about a startup around AI and Lisp and a discussion about its eventual failure, leading into insights about markets and innovation and the Worse is Better principle. Oxford University Press, 1996

Martin Fowler, Patterns of Enterprise Application Architecture: Layering, organizing domain logic, mapping to relational databases, presentation, distribution and concurrency patterns, Addison-Wesley, 2003

IBM Object-Oriented Technology Center, Developing Object-Oriented Software: An experience-based approach; Work Product-centered development from initiation through analysis, design, coding and testing; advice and guidance on processes and methodologies, Prentice Hall, 1997

Neal Stephenson, In the Beginning was the Command Line: The history and market forces of various operating systems; different user interfaces for different users, essay, 1999

Brian Foote and Joseph Yoder, Big Ball of Mud: A discussion of the most prevalent structure in software architectures, PLoP'97 conference paper, 1999
Brian Foote and Joseph Yoder, Evolution, Architecture, and Metamorphosis: Architecture patterns that allow to grow and evolve software over time, PLoP'95 conference paper, 1995
Brian Foote and Joseph Yoder, The Selfish Class: Reuse and replications seen from the source code perspective, PLoP'96 conference paper, 1997
Brian Foote and William F. Opdyke, Lifecycle and Refactoring Patterns that Support Evolution and Reuse, PLoP'94 conference paper, 1994

Gerald M. Weinberg, An Introduction to General Systems Thinking: Use basic algebraic principles to explore new approaches to projects, products, organizations and other kinds of systems; silver anniversary edition, Dorset House, 2001

Luis Felipe Cabrera, Christopher Kurt, Don Box, An Introduction to the Web Services Architecture and Its Specifications (51 pages), Microsoft Corporation, 2004

Cem Kaner, James Bach, Bret Pettichord, Lessons Learned in Software Testing: 293 lessons distilled from 30 years of testing practice, Wiley, 2002

Craig Larman, Applying UML and Patterns Third Edition - An Introduction to Object-Oriented Analysis and Design and Iterative Development, Prentice Hall, 2005

Allen Holub, Holub on Patterns - Learning Design Patterns by Looking at Code, Apress, 2004

Steve McConnell, Rapid Development: Taming Wild Software Schedules, Microsoft Press, 1996

Robert C. Martin, Dirk Riehle, Frank Buschmann (editors), Pattern languages of program design 3, Addison-Wesley, 1998

Simson Garfinkel, Daniel Weise, and Steven Strassmann, The UNIX-HATERS Handbook, IDG Books, 1994

Mike Gancarz, Linux and the Unix Philosophy: tenets and software engineering principles applied in the Unix operating system family, Digital Press, 2003

Tom DeMarco & Timothy Lister, Peopleware: productive projects and teams (2nd ed.), Dorset House, 1999

Frederick P. Brooks, The mythical man-month: essays on software engineering (anniversary edition), Addison-Wesley, 1995

Martin Fowler, Refactoring: Improving the Design of Existing Code, Addison-Wesley, 2000

Gamma et al., Design Patterns: Elements of Reusable Object-Oriented Software, Addison-Wesley, 1994

Steve McConnell, Code Complete: A Practical Handbook of Software Construction, Microsoft Press, 1993

Bernd Oesterreich, Objektorientierte Softwareentwicklung mit der UML, Oldenbourg, 1997

Computerviren - die neue Bedrohung: Detailed analysis of the Robert T. Morris Internet worm; early floppy-based homecomputer viruses; interviews with John McAfee on new threats