Controlling Friction to Improve Performance
High performance requires just the right amounts of the right kinds of friction. In order to achieve this goal, you must understand the cause of each form of friction and seek to control it. In some cases, you may need to vary the quantity of a particular form of friction over time.
Over the course of a software development project, the software may need to be stabilized many times in order to produce something that can be used by testers and/or users. To achieve stability, the level of friction must be increased to slow the rate of change in the software.
One form of this friction is reviews or approvals to ensure that changes are checked and okayed by other people. Another form is a requirement that developers write tests to verify their changes. Existing tests must also be executed, to ensure that unwanted side effects are not introduced with these verification tests.
As the need to slow the rate of change increases, the level of friction can be increased. For example, when stabilizing during the early and middle stages of a project, the team might mandate a code review by one person plus a team leader's approval for each change that will be made. Later in the project, the approvals might be more stringent; such as requiring reviews by two people plus approvals by both a team leader and the development manager.
At times, you may not have control over a source of friction. In other cases, you may have control but not enough time to make an adjustment. At these times, it may be possible to "lubricate" the situation, in the same way that oil reduces friction and improves the efficiency of a mechanical machine. For instance, social friction may be reduced by lubricants such as these:
- Accepting blame for and apologizing for mistakes
- Immediately addressing controversial issues
- Giving credit where it's due
- Downplaying the mistakes of others
Imagine that a new release of a software product delivers many new features, but the setup and configuration have become inordinately more complex, time-consuming, and fragile, resulting in deployments of the software that don't always work. Even if the schedule doesn't have sufficient time to improve the product's setup and configuration, the team can provide some "lubrication" that will help ease the friction for customers:
- Easy-to-follow instructions
- "Recipes" for standard configurations that will suit common usage scenarios
- Troubleshooting guide to assist in solving problems solving
- Hotline or chat service that allows customers to connect with support staff
By learning how to understand and control the source and importance of friction, you'll go a long way toward improving performance.