How Software is Built
Author: Gerald M. Weinberg
Format: Kindle Edition
This is part 1 of the latest edition of the classic, Quality Software Management. Its fundamental purpose is to teach how to understand the dynamics of software development organizations, to plan software projects, and to act effectively to carry out those plans.
Written from a technical and psychological perspective, describing how to think about what you do. The notation takes almost no effort to learn and use it. The diagrams are simple and easy to understand and used in a consistent manner.
The book offers ideas for coping with the very difficult problems that face those who work on projects where they don't have enough time, enough information, enough skill, or enough money to do a perfect job of anything. Given these limitations, managers have to make tradeoff decisions in light of the best understanding of cause and effect they can muster.
Reviewers say the book is a hidden treasure, containing within it the best definitions of quality ever published. It's written with a great sense of humor that helps make the lessons and insights you will get from the book easier to take.
For example, why is software development so often plagued by crisis? Weinberg helps the reader step back from developing software and examine the dynamics and patterns of software creation. By discussing patterns of quality, patterns of managing and patterns of software faults, the author shows that quality software begins with keen observation and clear thinking about software development. The text is extremely thought-provoking and is spiced with anecdotes drawn from decades of software experience.
The book is divided into three sections: "Patterns of Quality", "Patterns of Managing", and "Demands that Stress Patterns." Each section has a number of chapters that examine different systemic aspects of the specific issues.
In the "Patterns of Quality" section, Weinberg challenges our assumptions about what quality is, how to obtain it, and how to recognize how to change it. For those of you who are intimate with the SEI (Software Engineering Institute) CMM (Capability Maturity Model), this section provides compelling reasoning about the model, and about how dangerous level 2 can be to an organization.
The "Patterns of Managing" section was truly eye opening for me. I had been working on a measurement system at the company, and had been spectacularly unsuccessful obtaining useful metrics. I thought we needed these measurements so that we could understand what worked for us, and what needed to change. This section gave me a new understanding of how other people see the organization and their roles within the organization.
"Demands that Stress Patterns" discusses what happens in real organizations with real customers and real products. Jerry has a number of ideas about how to keep the development organization working productively.