Change Done Well
()
About this ebook
The history of software engineering is riddled with failed attempts to improve quality and productivity without first creating a supportive environment. Many managers spend their money on tools, methodologies, outsourcing, training, and application packages, but these managers rarely spend anything to improve the way in which these hoped-for improvements are adopted and used correctly.
From systems thinking to project management to technology transfer to the interaction of culture and process, Change Done Well analyzes transformation from a broad range of perspectives, providing a breadth of awareness essential for successful transformation to high-quality software creation.
Topics include:
Starting Projects Correctly
Sustaining Projects Correctly
Terminating Projects Properly
Building Faster By Building Smaller
Protecting Information Assets
Managing Design
Introducing Technology
The Diagram of Effects
The Software Engineering Cultural Patterns
The Satir Interaction Model
Control Models
The Three Observer Positions
and much more
IEEE Software says: "If you're grappling with how to improve software development and especially how to improve managing software development, then this might be the right book for you."
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 Change Done Well
Titles in the series (9)
Quality Software: Volume 1.1: How Software Is Built Rating: 0 out of 5 stars0 ratingsResponding to Significant Software Events 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 ratingsManaging Teams Congruently Rating: 0 out of 5 stars0 ratingsChange Done Well 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
CHANGE: Planned & Unplanned Rating: 0 out of 5 stars0 ratingsExploring Requirements 2: First Steps into Design Rating: 0 out of 5 stars0 ratingsHow to Observe Software Systems Rating: 0 out of 5 stars0 ratingsOptimum Sigma is NOT 6 Rating: 0 out of 5 stars0 ratingsFirst Stringers: Eyes That Do Not See Rating: 3 out of 5 stars3/5Becoming a Change Artist Rating: 0 out of 5 stars0 ratingsEssential Balances: Stop Looking and Start Seeing What Makes Organizations Work Rating: 0 out of 5 stars0 ratingsDesign in Object Technology: "Class of 1994" Rating: 0 out of 5 stars0 ratingsActive Regulation: General Systems Design Principles Rating: 5 out of 5 stars5/5Why Software Gets In Trouble Rating: 0 out of 5 stars0 ratingsThe Psychology of Management The Function of the Mind in Determining, Teaching and Installing Methods of Least Waste Rating: 0 out of 5 stars0 ratingsImplementing Beyond Budgeting: Unlocking the Performance Potential Rating: 0 out of 5 stars0 ratingsPassive Regulation: General Systems Design Principles Rating: 5 out of 5 stars5/5Supplier Relationship Management: How to Maximize Vendor Value and Opportunity Rating: 0 out of 5 stars0 ratingsThe Conversational Firm: Rethinking Bureaucracy in the Age of Social Media Rating: 0 out of 5 stars0 ratingsThe Future Is Trust Rating: 0 out of 5 stars0 ratingsExtreme Teams: Why Pixar, Netflix, Airbnb, and Other Cutting-Edge Companies Succeed Where Most Fail Rating: 3 out of 5 stars3/5Talent: Making People Your Competitive Advantage Rating: 3 out of 5 stars3/5Where Does the Money Go?: Introducing a Simple Method for Real-Time, Adaptable Management of Cash Flow, Expenses, Savings, and Debt Rating: 0 out of 5 stars0 ratingsQuality Software: Volume 1.1: How Software Is Built Rating: 0 out of 5 stars0 ratingsThe Failure of Risk Management: Why It's Broken and How to Fix It Rating: 0 out of 5 stars0 ratingsThe Practical Optimist: An Entrepreneurial Journey Through Life's Turning Points Rating: 0 out of 5 stars0 ratingsManaging Your Whole Life Rating: 0 out of 5 stars0 ratingsDancing with Change: Cultivating Healthy Organisations Rating: 0 out of 5 stars0 ratingsRoundtable on Technical Leadership Rating: 1 out of 5 stars1/5The Blocks Come Out at Night Rating: 0 out of 5 stars0 ratingsDesign in Object Technology 2: The Annotated Class of 1994 Rating: 0 out of 5 stars0 ratingsActionable Summary of The Radical Edge by Steve Farber Rating: 0 out of 5 stars0 ratingsThe laws of the BetaCodex: Twelve design principles that make organizations fit for complexity and fit for human beings Rating: 0 out of 5 stars0 ratingsThe 2R Manager: When to Relate, When to Require, and How to Do Both Effectively Rating: 4 out of 5 stars4/5
Programming For You
Game Development with Unreal Engine 5: Learn the Basics of Game Development in Unreal Engine 5 (English Edition) Rating: 0 out of 5 stars0 ratingsPython: Learn Python in 24 Hours Rating: 4 out of 5 stars4/5Python Programming : How to Code Python Fast In Just 24 Hours With 7 Simple Steps Rating: 4 out of 5 stars4/5Python: For Beginners A Crash Course Guide To Learn Python in 1 Week Rating: 4 out of 5 stars4/5Modern C++ for Absolute Beginners: A Friendly Introduction to C++ Programming Language and C++11 to C++20 Standards Rating: 0 out of 5 stars0 ratingsSQL: For Beginners: Your Guide To Easily Learn SQL Programming in 7 Days Rating: 5 out of 5 stars5/5The Unofficial Guide to Open Broadcaster Software: OBS: The World's Most Popular Free Live-Streaming Application Rating: 0 out of 5 stars0 ratingsSQL QuickStart Guide: The Simplified Beginner's Guide to Managing, Analyzing, and Manipulating Data With SQL Rating: 4 out of 5 stars4/5HTML & CSS: Learn the Fundaments in 7 Days Rating: 4 out of 5 stars4/5Linux: Learn in 24 Hours Rating: 5 out of 5 stars5/5Coding All-in-One For Dummies Rating: 4 out of 5 stars4/5Learn PowerShell in a Month of Lunches, Fourth Edition: Covers Windows, Linux, and macOS 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/5SQL All-in-One For Dummies Rating: 3 out of 5 stars3/5PYTHON: Practical Python Programming For Beginners & Experts With Hands-on Project Rating: 5 out of 5 stars5/5Web Designer's Idea Book, Volume 4: Inspiration from the Best Web Design Trends, Themes and Styles Rating: 4 out of 5 stars4/5Learn to Code. Get a Job. The Ultimate Guide to Learning and Getting Hired as a Developer. Rating: 5 out of 5 stars5/5Beginning Programming with Python For Dummies Rating: 3 out of 5 stars3/5Learn JavaScript in 24 Hours Rating: 3 out of 5 stars3/5Problem Solving in C and Python: Programming Exercises and Solutions, Part 1 Rating: 5 out of 5 stars5/5
Reviews for Change Done Well
0 ratings0 reviews
Book preview
Change Done Well - Gerald M. Weinberg
Change Done Well
Volume 9 of the Quality Software Series
by
Gerald M. Weinberg
CLICK HERE TO SKIP TO THE BEGINNING
SMASHWORDS EDITION
PUBLISHED BY:
Gerald M. Weinberg on Smashwords
Change Done Well
Copyright © 2011 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
Chapter 1. Starting Projects Correctly
Chapter 2. Sustaining Projects Correctly
Chapter 3. Terminating Projects Properly
Chapter 4. Building Faster By Building Smaller
Chapter 5. Protecting Information Assets
Chapter 6. Managing Design
Chapter 7. Introducing Technology
Epilogue
Appendix A: The Diagram of Effects
Appendix B: The Software Engineering Cultural Patterns
Appendix C. The Satir Interaction Model
Appendix D. Control Models
Appendix E. The Three Observer Positions
FURTHER READING
Chapter 1. Starting Projects Correctly
It was also becoming painfully evident that estimating the cost of technologically state-of-the-art projects was an inexact science. The experts, in spite of their mountains of numbers, seemingly used an approach descended from the technique widely used to weigh hogs in Texas. It is alleged that in this process, after catching the hog and tying it to one end of a teeter-totter arrangement, everyone searches for a stone which, when placed on the other end of the apparatus, exactly balances the weight of the hog. When such a stone is eventually found, everyone gathers around and tries to guess the weight of the stone. Such is the science of cost estimating. —N. R. Augustine
I've studied dozens of unsuccessful projects, trying to find the earliest point at which failure could have been predicted—and then that failure prevented by management action. Most of these projects were under pressure from the moment they started—actually even before the moment that their process models said they started. Indeed, the primary reason for the pressure was that there were no explicit models of what happens before a project officially starts. By the time a project manager was put in charge, external decisions had put so many constraints on the project that failure was highly probable.
1.1 Project Prerequisites
Preceding every project is a series of high-level negotiations that lead to the decisions that constrain the project. If these negotiations are not both informed and congruent, the project is doomed before it starts.
When a project is in the fuzzy early stages, before official initiation, the first question is, of course, what benefits the organization expects from the successful completion of the project. This is the What's it worth?
calculation. Assuming that benefits have been projected correctly (which is frequently not the case, however), consider the next question, which is about risk.
1.1.1 Risk analysis
Infinite potential benefits will have zero value if the project isn't completed. When project benefits are large, however, it's difficult to make a congruent decision about risk. There are a number of relatively formal systems of risk analysis that can aid in making this decision, and any software engineering manager should be steeped in at least one. Nevertheless, keep risk analysis as simple as possible, because complex processes
• are easy to rig in favor of any decision you ardently desire
• are costly, and your sunk cost may make you reluctant to kill a project that needs euthanasia
Boehm gives a checklist of the top ten risk factors in software, and I have found that an early, brief, and rough consideration of these ten factors generally improves the chances for project success by at least a factor of two:
1. personnel shortfalls
2. unrealistic schedules and budgets
3. developing the wrong software functions
4. developing the wrong user interface
5. gold plating
6. continuing stream of requirements changes
7. shortfalls in externally furnished components
8. shortfalls in externally performed tasks
9. real-time performance shortfalls
10. straining computer science capabilities
At the earliest stages, it's relatively easy to determine if several of these are potential problems, and to take some action to diminish the risk. However, Boehm, like many other writers on risk analysis never really considers what is always the biggest risk of all: The management team isn't up to the job of performing a congruent risk analysis, let alone leading the project, as the following example illustrates.
1.1.2 Congruence and risk analysis
I had just helped a hardware company complete a successful rescue of Asteroid, a software project that had been labeled as hopeless.
The company was now proposing that I help apply the same planning methods to Comet, a project that had been bogged down for many months. While I was considering this proposal, I got the following note from Lex, the Comet Project Manager:
Anyone using comparisons with Asteroid to show what plans can do to Comet is being deeply unjust. Asteroid secured some 10 people from the start. Clear customer demands and agreements were defined, and these protected their goals. Technical issues were visible from the start, and quite modest in complexity and demands, well limited, and isolated. Quite a comfortable setup! I congratulated those who were assigned, because success was assured in advance. But Comet as a project is ridiculous!
Poor Lex! Like so many software managers who are unfamiliar with the role of tactical planning, he couldn't see the real message in his own note. Of course Comet was ridiculous, since it was without planning that
• noted the risks
• made plans to reduce these risks to an acceptable level
Two years earlier, at the start of its planning process, Asteroid had been in exactly the same state. The planning process, not the plan, was what transformed a ridiculous fantasy into a real project, whose success was assured in advance.
That's what tactical planning is all about.
Lex was operating from a placating position: He felt he had to conform to whatever fantasies upper management tossed in the hopper. He didn't see that the planning process was an opportunity to stop placating and uncover the real issues with the Comet fantasy. Not that I should have expected anything different from Lex, who had seen only one non-placating planning process, and that from the outside. Previously, planning
in this company had meant hammering down anyone who raised issues of risk, until everyone was committed
to the previously established plan.
Where blame is so intense and universal, placating will always flourish.
1.1.3 Win/win negotiation
For a project to succeed, these early negotiations must produce a congruent agreement—one that balances the Self, Other, and Context. Without that balance, the project will tear itself apart like a crooked wheel spinning at high velocity.
Many software organizations become so enmeshed with their customers that they can't negotiate well. Some are prevented from negotiating by general management. A bigger problem is that they don't know they are negotiating, or they think negotiate
is a dirty word. Consequently, they negotiate implicitly and don't even like to call what they do negotiating.
If you don't negotiate explicitly, you won't negotiate well; you won't record your agreements; you won't honor your agreements; you won't know what your agreements are; and you often won't even be aware that you've even made agreements. How, then, can you measure the single most important measure of any development project: Did we fulfill our agreement?
One essential for making projects comparable is to be sure they start on the same basis, which implies that all negotiations must be done explicitly, done well, and the agreements recorded. Steven Covey lists the following five elements for a win/win agreement:
• Desired results (not methods) identify what is to be done, and when.
• Guidelines specify the parameters (principles, policies, etc.) within which results are to be accomplished.
• Resources identify the human, financial, technical, or organizational support available to help accomplish the results.
• Accountability sets up the standards of performance and the time of evaluation.
• Consequences specify—good and bad, natural and logical—what does and will happen as a result of the evaluation.
The following sections examine each of these points in some detail to see why this is a good checklist for project or sub-project prerequisites.
1.2 Desired Results
Consider two projects, A and B. They are as similar as two projects can be, each with requirements, resources, methods, tools, and schedule. Project A is completed on time, within budget. Project B runs 25% late and 30% over budget. What can we conclude about the way each project was managed?
We can, of course, make no conclusions at all unless we know how the two projects defined completed.
If their definitions were the same, we reach one conclusion. But what if Project A dropped a few requirements to meet the schedule? Does that matter? Only if their original agreement was clear on what had to be done, but in the end they didn't do it.
Judah Mogilensky describes how lack of clear initial agreement on results becomes locked into the customer/developer culture:
The problem often lies in organizational fear of clarity. Documenting clear requirements would force the customer to accept responsibility for initiating changes if a system meeting the documented requirements does not meet the real needs.... Documenting clear requirements would force the developer to accept accountability for satisfying them, and could expose the developer to risk if the cost and schedule estimates turn out to be inaccurate.
Thus, even though they are operating from opposite motivations, customer and developer can covertly conspire together to keep the requirements management practices of the Capability Maturity Model from being carried out. Each side thinks they are operating to protect themselves, and strengthen their bargaining position, but in reality each side is setting themselves up for future disappointments and disputes.
The culture creates this problem of such covert collusion to violate good requirements processes—it becomes a culture of fear. As such, the problem cannot be solved without changes at the top management level, a conclusion supported by numerous studies of project failures.
1.2.1 Phrases to listen for
Here are some of the things you'll hear when fear creates a situation in which the interested parties will not negotiate cleanly on results:
• (Any of the phrases suggesting that fixed requirements don't matter, or that they are fixed when they are not).
• I hope they won't hold us to the wall on that one.
• Well, I didn't understand it exactly, but what could I do but agree.
• I had no choice.
• You will do this. It's nonnegotiable. (Listen carefully: this may be coming out of your mouth.)
• If you were any good at this, you could do it. (Again, who's talking?)
• Schedule/resources will be really tight, but we can negotiate relief from requirements later. (Why not now?)
1.2.2 Actions to take
DO NOT allow design or construction to proceed without verified requirements, unless you have a staged process. In that case, DO NOT let any stage begin without verified requirements for that stage. DO NOT be sucked in by assurances that prototyping is different.
Prototyping is a staged process, and each stage needs to define its requirements, even though they are not requirements for the completed system.
As a final step in the negotiation process, DO hold a closing meeting with customers and developers to in effect sign their agreement. DO question all parties to the agreement to ascertain if there is true emotional sign-on. DO look for hesitations, reservations, or uncertainties, and DO NOT allow agreement to proceed unless and until these are cleared up.
DO establish policies that reward projects for truly satisfying customers, not beating them in some legalistic game.
DO establish policies that reward customers for cooperating in the effort to define what they want. The best reward is to show that you are listening to them, and not just rejecting their needs out of hand.
DO NOT browbeat, bribe, or manipulate your employees into agreements
or commitments
or signing up.
1.3 Guidelines
The power of guidelines is the way they can remind us not to do foolish things when under pressure. For instance, though we know that time, resources, and function are sometimes interchangeable, they are not linearly interchangeable. In the heat of a project, we are likely to be tempted to make such interchanges and cause great trouble.
There are so many possible guidelines that we could not cover them all here, so a few examples will have to suffice:
• Brooks's Law: Adding X per cent to the staff will not generally speed the schedule by X per cent.
• The Square Law of Computation: Adding X per cent to the schedule will not accommodate X per cent increase in functionality.
• Jones's Law: Those parts of the product that don't go through the entire development process will cause 90% of your problems.
Guidelines are a way to establish triggers while you are relatively sane, so they will keep you from doing foolish things when the project is driving you insane.
1.3.1 Phrases to listen for
• We just want to make one simple change.
• I'll give you two new people so that you can take on that added function.
• We'll take out one function and add one function, so nothing is changed.
• We can save time for testing by cutting out reviews.
• We can save time for coding by cutting out design. We'll design as we code.
• We can save time for design by cutting down on the elaborate requirements process.
1.3.2 Actions to take
DO NOT put time pressure on projects that are having reliability problems.
DO NOT add features to a project without renegotiating schedules.
DO NOT decree schedules. Schedules derived from plans should always be possible. Plans derived by working backward from schedules are often impossible, at least under the constraints given. If schedule is really a critical issue (rather than simply a way to show who's in charge), then plan in order to determine what you must spend to attain that schedule, and be prepared to spend a bundle or accept that some things simply cannot be done.
DO NOT play games on blackboards or spreadsheets that cannot be supported by measurable facts.
DO learn to take no for an answer, if backed with facts. DO send nay-sayers back for facts when they come empty-handed.
DO insist on change control from the beginning, and DO NOT yield to temptations to shortcut it.
DO insist on configuration management from the beginning, and DO NOT yield to temptations to shortcut it.
DO get outside views from disinterested parties for reality checking.
1.4 Resources
All resources are not created equal. Human, financial, technical, or organizational resources each have their own algebra, so you cannot assume that each participant at the beginning of a project knows what the resource commitments mean.
For instance,