Mainstream Software Development Books

Software Conflict : Essays on the Art and Science of Software Engineering , Robert L. Glass (sadly out of print right now)

A book that examines what it would take to put the science in Computer Science and Engineering in Software Engineering. Although it is out of print, you should be able to find a copy in your local university library - do so and read it.


Exploiting Chaos, Dave Olsen (also out of print right now)

A book that examines the realities of the software development process, exploring how the various ideas from the field of Chaos theory can be used to advantage in designing a software development process.

We have all experienced the chaotic nature of software development. This book provides a mechanism for understanding what is really going on. And YES we would like a repeatable process, but the reality is that for some hard problems we need a large element of discovery before we can move into the Software Engineering mode of development.


Surviving Object Oriented Projects, Alistair Cockburn
A MUST READ for all people working with Objects or thinking about adopting Object Technology. It gets down to the practical, pragmatic issues that object projects face, and provides sound, experience based strategies for addressing these issues. For anyone in the process of adopting Object Technology, this book gives the real information about OO Methodologies, it is not the notation that is important, what is important is how you organize to deliver the system.

This book is a great successor to the book "Object Solutions" by Grady Booch, and it will make a great companion book to the "UML Distilled" book by Martin Fowler. It replaces "Object Solutions" because it is targeted at medium sized, time-to-market critical projects, drawing practical hints and tips from a wide range of object projects. It fits well with "UML Distilled" since both authors favor using just enough process to be effective, and always remember to counteract the OO hype with a solid reality check.


UML Distilled, Martin Fowler with Kendall Scott
This book is the first accessible book that covers the UML notation. Part of the beauty of this book is that it nominates a lightweight development process that shows how the UML can be used on projects.


Patterns of Software, Richard Gabriel
This book is an inquiry into the software development process that questions our assumptions about how we develop software. It contains a very useful inquiry into the meaning of Alexander's patterns with respect to software. What does quality without a name really mean when applied to software?

How habitable is our software, can we, as developers, really live in and extend our code, or is it an inflexible prefabricated modular design that will win design awards for the architect, and curses from the people who have to live in it?

The most thought provoking part if the book provides a possible answer to the question "is there a silver bullet?", as Gabriel hints that sometimes it is a people problem, not a technical problem. An immensely fun read (but that probably says more about me than the book).


Journey of the Software Professional, Luke Hohmann
A fascinating book about the sociology of Software Development. It provides a framework (Structure, Process, Outcome) for understanding the software development process and specific advice to both Managers and Developers. For anyone who is struggling with issues related to improving their development process, reading this book will give you several new ways to approach your problems.


Designing Object-Oriented Software, Wirfs-Brock, Prentice Hall 1990
The original source for responsibility driven design. For some reason I had always overlooked this book, but thanks to Alistair Cockburn, I have now corrected that mistake. Classes Responsibilities and Collaborations are some of the key ideas from this book, which although the title of the book says Design, the concepts are equally applicable to analysis activities as well.


Rapid Development, Steve McConnell, Microsoft Press 1996
Rapid Development shows the tradeoffs that face developers when they attempt to speed up software development. This, coupled with the earlier "Code Complete", are MUST READ books for developers. Contains sensible guidelines for improving on time delivery. The only downer on this book is that it is nearly as thick and heavy as his earlier "Code Complete", which for me is the definitive book on the low level coding issues facing developers.

Pete McBreen, pete@mcbreen.ab.ca