How to Observe Software Systems
()
About this ebook
"This book will probably make you think twice about some decisions you currently make by reflex. That alone makes it worth reading." "Great to understand the real meaning of non linearity of human based processes and great to highlight how some easy macro indicator can give info about your s/w development process." "An incredibly useful book" - Amazon Reviews
Gerald M. Weinberg
Gerald M. Weinberg (Jerry) writes "nerd novels," such as The Aremac Project, Aremac Power, First Stringers, Second Stringers, The Hands of God, Freshman Murders, and Mistress of Molecules—about how brilliant people produce quality work. His novels may be found as eBooks at or on Kindle. Before taking up his science fiction career, he published books on human behavior, including Weinberg on Writing: The Fieldstone Method, The Psychology of Computer Programming, Perfect Software and Other Fallacies, and an Introduction to General Systems Thinking. He also wrote books on leadership including Becoming a Technical Leader, The Secrets of Consulting (Foreword by Virginia Satir), More Secrets of Consulting, and the four-volume Quality Software Management series. He incorporates his knowledge of science, engineering, and human behavior into all of writing and consulting work (with writers, hi-tech researchers, and software engineers). Early in his career, he was the architect for the Mercury Project's space tracking network and designer of the world's first multiprogrammed operating system. Winner of the Warnier Prize and the Stevens Award for his writing on software quality, he is also a charter member of the Computing Hall of Fame in San Diego and the University of Nebraska Hall of Fame. The book, The Gift of Time (Fiona Charles, ed.) honors his work for his 75th birthday. His website and blogs may be found at http://www.geraldmweinberg.com.
Read more from Gerald M. Weinberg
Teaching People Teaching Dogs Rating: 0 out of 5 stars0 ratingsLove Poems After Fifty Years Rating: 0 out of 5 stars0 ratings
Related to How to Observe Software Systems
Titles in the series (9)
Quality Software: Volume 1.1: How Software Is Built Rating: 0 out of 5 stars0 ratingsWhy Software Gets In Trouble Rating: 0 out of 5 stars0 ratingsHow to Observe Software Systems Rating: 0 out of 5 stars0 ratingsChange Done Well Rating: 0 out of 5 stars0 ratingsResponding to Significant Software Events Rating: 0 out of 5 stars0 ratingsManaging Teams Congruently Rating: 0 out of 5 stars0 ratingsManaging Yourself and Others Rating: 0 out of 5 stars0 ratingsBecoming a Change Artist Rating: 0 out of 5 stars0 ratingsCHANGE: Planned & Unplanned Rating: 0 out of 5 stars0 ratings
Related ebooks
Active Regulation: General Systems Design Principles Rating: 5 out of 5 stars5/5Responding to Significant Software Events Rating: 0 out of 5 stars0 ratingsRethinking Systems Analysis and Design Rating: 5 out of 5 stars5/5Understanding the Professional Programmer Rating: 4 out of 5 stars4/5Why Software Gets In Trouble Rating: 0 out of 5 stars0 ratingsBecoming a Change Artist Rating: 0 out of 5 stars0 ratingsEnterprise Bug Busting: From Testing through CI/CD to Deliver Business Results Rating: 0 out of 5 stars0 ratingsExploring Requirements 1: Quality Before Design Rating: 0 out of 5 stars0 ratingsThe Psychology of Computer Programming: Silver Anniversary eBook Edition Rating: 4 out of 5 stars4/5Exploring Requirements 2: First Steps into Design Rating: 0 out of 5 stars0 ratingsManaging Yourself and Others Rating: 0 out of 5 stars0 ratingsAgile Aggravations Rating: 3 out of 5 stars3/5The Fragile Methodology Rating: 0 out of 5 stars0 ratingsGROKKING ALGORITHMS: A Comprehensive Beginner's Guide to Learn the Realms of Grokking Algorithms from A-Z Rating: 0 out of 5 stars0 ratingsA Little Book about Requirements and User Stories: Heuristics for Requirements in an Agile World Rating: 0 out of 5 stars0 ratingsRoundtable on Technical Leadership Rating: 1 out of 5 stars1/5Passive Regulation: General Systems Design Principles Rating: 5 out of 5 stars5/5Roundtable on Project Management Rating: 0 out of 5 stars0 ratingsBecoming a Technical Leader Rating: 4 out of 5 stars4/5Quality Software: Volume 1.1: How Software Is Built Rating: 0 out of 5 stars0 ratingsSuccessful Independent Consulting: Relationships That Focus on Mutual Benefit Rating: 0 out of 5 stars0 ratingsDesign in Object Technology 2: The Annotated Class of 1994 Rating: 0 out of 5 stars0 ratingsModel-Driven Software Development: Technology, Engineering, Management Rating: 4 out of 5 stars4/5Event-Driven Architecture EDA Complete Self-Assessment Guide Rating: 0 out of 5 stars0 ratingsDeveloper Experience: Navigating Digital Transformation For Productivity And Satisfaction Rating: 0 out of 5 stars0 ratingsObject Process Methodology A Clear and Concise Reference Rating: 0 out of 5 stars0 ratingsDomain-Driven Design Complete Self-Assessment Guide Rating: 0 out of 5 stars0 ratings
Enterprise Applications For You
Scrivener For Dummies Rating: 4 out of 5 stars4/5QuickBooks 2023 All-in-One For Dummies Rating: 0 out of 5 stars0 ratingsExcel : The Ultimate Comprehensive Step-By-Step Guide to the Basics of Excel Programming: 1 Rating: 5 out of 5 stars5/5ChatGPT Ultimate User Guide - How to Make Money Online Faster and More Precise Using AI Technology Rating: 0 out of 5 stars0 ratingsCreating Online Courses with ChatGPT | A Step-by-Step Guide with Prompt Templates Rating: 4 out of 5 stars4/5Bitcoin For Dummies Rating: 4 out of 5 stars4/5Systems Thinking: Managing Chaos and Complexity: A Platform for Designing Business Architecture Rating: 4 out of 5 stars4/5SharePoint 2016 For Dummies Rating: 5 out of 5 stars5/550 Useful Excel Functions: Excel Essentials, #3 Rating: 5 out of 5 stars5/5Excel 2019 For Dummies Rating: 3 out of 5 stars3/5Excel Formulas and Functions 2020: Excel Academy, #1 Rating: 4 out of 5 stars4/5Enterprise AI For Dummies Rating: 3 out of 5 stars3/5Using Word 2019: The Step-by-step Guide to Using Microsoft Word 2019 Rating: 0 out of 5 stars0 ratingsQuickBooks Online For Dummies Rating: 0 out of 5 stars0 ratingsQuickBooks 2021 For Dummies Rating: 0 out of 5 stars0 ratingsNotion for Beginners: Notion for Work, Play, and Productivity Rating: 4 out of 5 stars4/5Managing Humans: Biting and Humorous Tales of a Software Engineering Manager Rating: 4 out of 5 stars4/5Experts' Guide to OneNote Rating: 5 out of 5 stars5/5Agile Project Management: Scrum for Beginners Rating: 4 out of 5 stars4/5Learn Windows PowerShell in a Month of Lunches Rating: 0 out of 5 stars0 ratingsExcel 2016 For Dummies Rating: 4 out of 5 stars4/5Learning Python Rating: 5 out of 5 stars5/5Mastering QuickBooks 2020: The ultimate guide to bookkeeping and QuickBooks Online Rating: 0 out of 5 stars0 ratingsThe New Email Revolution: Save Time, Make Money, and Write Emails People Actually Want to Read! Rating: 5 out of 5 stars5/5Excel Tips and Tricks Rating: 0 out of 5 stars0 ratings
Reviews for How to Observe Software Systems
0 ratings0 reviews
Book preview
How to Observe Software Systems - Gerald M. Weinberg
How to Observe Software Systems
by
Gerald M. Weinberg
SMASHWORDS EDITION
PUBLISHED BY:
Gerald M. Weinberg on Smashwords
How to Observe Software Systems
Copyright © 2010 by Gerald M. Weinberg
All rights reserved. Without limiting the rights under copyright reserved above, no part of this publication may be reproduced, stored in or introduced into a retrieval system, or transmitted, in any form, or by any means (electronic, mechanical, photocopying, recording, or otherwise) without the prior written permission of both the copyright owner and the above publisher of this book.
Smashwords Edition License Notes
This ebook is licensed for your personal enjoyment only. This ebook may not be re-sold or given away to other people. If you would like to share this book with another person, please purchase an additional copy for each person you share it with. If you're reading this book and did not purchase it, or it was not purchased for your use only, then you should return to Smashwords.com and purchase your own copy. Thank you for respecting the author's work.
Contents
Preface
Introduction: A Model of Observation
Part I. Intake
Chapter 1. Why Observation is Important
Chapter 2: Selecting What to Observe
Chapter 3: Visualizing the Product
Chapter 4: Visualizing the Process
Part II. Meaning
Chapter 5: A Case Study of Interpretation
Chapter 6: Pitfalls When Making Meaning from Observations
Chapter 7: Direct Observation of Quality
Chapter 8: Measuring Cost and Value
Chapter 9: Meta-Measurement
Appendix A: The Diagram of Effects
Appendix B: The Software Engineering Cultural Patterns
Appendix C. The Satir Interaction Model
Appendix D. Control Models
Preface
When you can measure what you are speaking about and can express it in numbers, you know something about it. But when you cannot measure it, when you cannot express it in numbers, your knowledge is of a meager and unsatisfactory kind.
- Lord Kelvin
In the five decades I've spent in the software business, I've learned that there are three fundamental abilities you need to do a quality job of managing software engineering:
1. the ability to understand complex situations so you can plan a project and then observe and act so as to keep the project going according to plan, or modify the plan.
2. the ability to observe what's happening and to understand the significance of your observations in terms of effective adaptive actions
3. the ability to act appropriately in difficult interpersonal situations, even though you may be confused, or angry, or so afraid you want to run away and hide
All three abilities are essential for quality software management, but I didn't want to write a large, imposing book. Therefore, like any quality manager of software, I decomposed the project into several smaller projects, each one addressing part of one of these three fundamental abilities. Volume I, Systems Thinking dealt with the first ability—the ability to understand complex situations. Based on feedback from my readers that the book was too long for an eBook, I split it into two volumes, How Software Is Built and Why Software Gets in Trouble, making a few updates in the process.
For the same reason, I'm splitting the second original volume—First-Order Measurement—into two more accessible volumes. First, this volume—How to Observe Software Systems—treats the ability to observe what's happening and provide meanings to those observations. The volume after this one (fourth in the eBook series)—Responding to Significant Software Events—concerns how to understand the significance of observations, and how to respond appropriately to the significant events.
I spent much time anguishing over the correct title for the original volume before settling on First-Order Measurement. It wasn't a bad title, but the word measurement
confused some readers. The term first-order
confused others. For these reasons, and better to distinguish the editions, I've omitted both terms from the present titles in favor of more easily understood phrases.
Even so, this volume in particular certainly concerns measurement,
so to avoid further confusion, I feel obliged to quote Lord Kelvin. I have kept to that tradition, but now feel compelled to analyze what Lord Kelvin meant, and did not mean, by his oft-quoted statement.
When you can measure what you are speaking about, Kelvin said, you know something. If you are measuring just for the fun of knowing things, then it doesn't much matter what you measure. But if you are trying to accomplish something, then arbitrary measurements are perhaps not what you need to know. Engineering is about accomplishing things, so engineering measurements are not arbitrary.
Lord Kelvin was a physicist. Although I wanted to work with computers since I was a boy, I was trained as a physicist because there was no computer training in my school days. Today I consider myself a software engineer, and though I still love physics, I distinguish between knowing in physics and knowing in engineering:
Physics knowing is understanding the universal laws of nature.
Engineering knowing is knowing how to do something.
I use the term third-order
measurement for the kind of measurement that supports the physicist's search for universal laws. An example of third-order measurement would be an experiment that tested the First Law of Thermodynamics that says, in effect, that it's impossible to build a perpetual motion machine.
Engineers are not trying to know universal laws, but special laws relating to building specific things. Therefore, they are interested in what I call first-order
and second-order
measurement. An example of such measurement would be measurements to build and tune a high-efficiency machine.
The term first-order measurement
is used in engineering to describe a measurement just adequate to the task of getting things built. First-order measurements are used in back of the envelope
(or, in England, back of the cigarette box
) calculations. They support the rule of thumb
and the rough sketch, as well as the quick and dirty
or seat of the pants
estimate. These are the measurements that allow us to build a machine in the first place.
The term second-order measurement
refers to the kind of refined measurement used to optimize systems—to make them cheaper or faster. These are the measurements used to tune the machine to its most efficient performance. If you examine the other software engineering books with measurement
or metrics
in their title, you will find that they primarily deal with second-order measurement, and in some cases, even third-order measurement.
Although second- and third-order measurements are essential to the development of the software engineering profession, they do not really address the day-to-day problems of the typical software engineering manager. Perhaps the following parable will clarify why I make this claim:
Mr. and Mrs. Tweedle had 15-year-old twins, Dum and Dee, who were just learning to drive a car. Dee had driven the family car ten times, and she had a perfect safety record. Dum had also driven the car ten times, but he had been involved in three wrecks. Mrs. Tweedle told Mr. Tweedle that he had to have a talk with the boy, before someone was killed.
Mr. Tweedle opened the conversation by reviewing the three accidents, then asked Dum, What do you have to say for yourself?
Well, three accidents out of ten trips isn't such a bad percentage.
I might agree with you,
said Mr. Tweedle, but your sister, Dee, has also made ten trips without so much as a stone chip on the windshield.
That's true,
said Dum, but I get much better gas mileage than she does. And I don't get mud on the tires.
Oh,
said Mr. Tweedle. I hadn't thought of those things. Well, just try to drive more carefully from now on, and keep up the good work on mileage and cleanliness. I'm going to have to talk to your sister about her driving habits.
Even to those of us who have been bamboozled by our own teenagers, Mr. Tweedle sounds like an idiotic parent. But before you judge him too harshly, remember that the story is only a parable. And what is it a parable for? You may recognize the three out of ten figure from software engineering. It's the fraction of large software projects that, among many of my clients, don't ever get finished. Capers Jones, Tom DeMarco, and Tom Gilb have all confirmed to me that this 30% figure is consistent with their experience.
Suppose you were the manager of software development in an organization that had done ten projects, three of which had failed. The software engineering managers from those failed projects can show you precise measurements proving that they produced more lines of code per dollar and fewer failures per line of code than the other seven projects. What about the other seven managers—whose projects were finished and accepted by their customers. In light of the failure rate of the others, would you criticize these successful managers about the efficiency of their management practices?
As John von Neumann said,
There's no sense being precise about something when you don't even know what you're talking about.
But that's exactly what many managers are doing when they involve their 30-percent-failure organization in measurement programs based exclusively on second-order (optimizing) measurement. Bill Silver, one of the gurus of software measurement, said,
It's sad, but true. Most software measurement programs fail.
Silver's observation is confirmed by Capers Jones, whose experience is that 80% of software measurement programs are out of existence within two years. It's also confirmed by my own clients, who fit his description of the first and foremost reason for failure:
Few companies have a quality culture that provides a positive environment for measurement.
Let me put it more bluntly. A company that wrecks three out of ten major software projects is not ready for second-order measurement. Even worse, if such a company attempts to install a measurement program based primarily on second-order measurement, they will do more harm than good, and probably wind up with a million-dollar measurement mess. This is not a positive environment for measurement.
The data on software quality cultures indicates that at the present time, only a small percentage of organizations have organizations that would support a second-order measurement program. These Software Management books are designed to help the managers in those organizations improve the quality of their management, so that in turn they may improve their organizations.
The purpose of this volume— How to Observe Software Systems—and the next—Responding to Significant Software Events—is to help those organizations reach a point where they can meaningfully consider the use of second-order, or even third-order, measurement. If you work in an organization that churns out software products on time, within budget, that please your customers and continue to please them over their useful life—and you do this at least 99% of the time—then you won't need to read these volumes. In fact, if your organization meets these criteria, I would be delighted to refund whatever you paid for these books in exchange for lessons in quality management.
But if your organization doesn't meet these criteria, then I hope to show you how to create a positive environment for measurement,
to avoid the costly mistakes that have led to failure of so many measurement programs, and how to measure things simply and efficiently—to help your organization consistently produce the quality software you and your customers desire.
Acknowledgements
I'd like to acknowledge the important contributions of the following people to the improvement of this book, through reviews, discussions, demonstrations, experiments, and examples: Jinny Batterson, Jim Batterson, Mike Dedolph, Peter deJager, Tom DeMarco, Kevin Fjeldsted, John Freer, Phil Fuhrer, Dawn Guido, Capers Jones, Payson Hall, Jim Highsmith, Naomi Karten, Norm Kerth, Lynne Nix, Brian Nejmeh, Judy Noe, David Robinson, Wayne Strider, Linda Swirczek, Dani Weinberg, Ellie Williamson, Janice Wormington, Gus Zimmerman
Plus, the Change Artists and others in my client organizations, as well as numerous participants in the Problem Solving Leadership Seminars, the Organizational Change Shop, the Quality Software Management seminars, and other educational experiences.
In this book, I'll disguise all people and clients from whom I've obtained confidential information.
Introduction: A Model of Observation
Get your facts first...then you can distort 'em as much as you please.
- Mark Twain
Before you can measure anything, you must observe something. Before you start assigning numbers to observations, you must understand the process by which you obtained those observations in the first place. That's why the structure of this book follows a useful model of observation: the Interaction Model of the family therapist, Virginia Satir.
Satir's Interaction Model tells us some surprising things about what goes on inside other people's heads, as well as inside our own heads. Satir used this model to understand the complex dynamics of family systems, where such fast, mysterious interactions happen every day. I find it useful for helping software managers improve their systems of observing software processes, where fast, mysterious process may happen at any minute.
The full Satir Interaction Model was designed to account for what happens when people interact. In using the model to improve management observation, we apply it even more widely, such as to:
• interacting directly with others
• interpreting software metric reports
• watching people at work
• designing measurement systems
• training software workers to observe themselves
The observation process seems simple, but is actually extremely complex. It's easier, though, for you to study my observation process when I am interacting with somebody, rather than just watching the passing scene. Just as you might study a circuit or a program by noticing how it responds to different inputs, so can you study my mind by noticing how I respond to different things you say and do. When you apply Satir's Interaction Model to what goes on inside my head, it analyzes the brief time between when you say something and I respond—a response that you can observe.
If you were trying to understand this observed response, you could use Satir's model, step by step, to attempt to trace the course of my internal process. The purpose of working with such smaller steps is so you'll have an easier time than trying to understand my response in one big lump. Then, if the model gives you an idea about what my response really means, you can check it out with me.
Learning about interactions through this type of step-by-step analysis is like learning to perform a complex gymnastic routine by breaking it down into a series smaller, simpler moves, then building them back up into an impressive routine. Like the moves in gymnastics, the mental steps in making an observation are not actually that distinct. They flow imperceptibly from one to another. But a model's job is to simplify a complex process, so as a first approximation, Satir's Interaction Model says that my internal process has four major parts: intake, meaning, significance, and response, as shown in Figure 0-1.
Figure 0-1. The four basic parts of the Satir Interaction Model.
Intake. In the intake part of the process, I take information from the world. Some people believe this describes the entire observation process, but there is much more going on. Some people believe that intake just happens
to me, but I am actually exercising a great many choices. This is the part of the model we will examine first.
Meaning. In the meaning part of the process, I consider the sensory intake and give it meaning. Some people believe that the meaning lies in the data, but data has no meaning until I give it meaning. We will examine this part of the model in detail next. Still, we will also have to consider the meaning process as part if Intake to truly understand the intake process, because of the way the two steps interact.
Significance. Data may suggest certain meanings, but never its significance. Without this step, the world we perceive would be an overwhelming flood of data patterns. With it, we can give priority to a few patterns and largely ignore the rest. Again, although we will consider this part in detail in the following volume, we will have to touch upon it here, too, in order to fully understand the intake and meaning processes.
Response. Software managers are observers, but they are