Discover millions of ebooks, audiobooks, and so much more with a free trial

Only $11.99/month after trial. Cancel anytime.

How to Observe Software Systems
How to Observe Software Systems
How to Observe Software Systems
Ebook254 pages1 hour

How to Observe Software Systems

Rating: 0 out of 5 stars

()

Read preview

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

LanguageEnglish
Release dateDec 23, 2010
ISBN9781458137937
How to Observe Software Systems
Author

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

Related to How to Observe Software Systems

Titles in the series (9)

View More

Related ebooks

Enterprise Applications For You

View More

Related articles

Reviews for How to Observe Software Systems

Rating: 0 out of 5 stars
0 ratings

0 ratings0 reviews

What did you think?

Tap to rate

Review must be at least 10 words

    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

    Enjoying the preview?
    Page 1 of 1