Focusing on Productivity Actually Works Against Us
Can we just make developers more productive? If they just worked smarter not harder, wouldn’t they be able to get it all done? We have all tried this. It does not work. On the contrary, going for increased productivity directly usually results in decreased productivity. Why? Because keeping people productive means keeping them busy, even if that means starting new tasks before completing old ones. This creates multiple things being working on simultaneously and that means induced work (think back to Figure 1).
Let’s see how this happens. Imagine a development team is working on a project and needs some information. They want to ask questions of an analyst but find they have to wait to get them answered. This happens because the analyst, wanting to stay productive, has started working with another team. The developers just sigh, go back and decide, well, in order for them to be productive (busy), they’ll have to work on something else too. Since they can’t continue with their original project they start working on a new feature. Before long, everybody is doing several things at once, each waiting for the other. It gets so bad that people stop trying to talk to each other and instead start using emails to communicate. And so it goes, worse and worse.
It is a horrible situation and all too common. We have all been there. We are incredibly busy but do not achieve real value compared with our efforts. We fall into this trap because the goal of productivity does not provide us insights into achieving it. Poor decisions are made because we take actions that increase local productivity—keeping each person working—but ignore the big picture—getting value delivered to our customers.
The Software Development Value Stream—A Necessary Component of Increasing True Productivity
This value stream is the flow of work from its conception to its consumption. Figure 3 illustrates this, showing the roles of the customer, business, management and development team.
Figure 3: A conceptual view of the software Development Value stream
Also illustrated in Figure 3 is we must go to our customers (internal or external) to see what they need. Business sponsors need to select, size, and prioritize those features that are going to be created. By creating the smallest features that are still useful from a customer’s perspective and viable for the business to deploy, product managers can provide work assignments that teams can quickly build and deploy. Teams, for their part, must learn how to develop in smaller steps than they may have been used to. Management’s job is to facilitate how teams’ interpret the business/customer need, provide visibility to the business of what is being accomplished and to improve the organization so that impediments to the value stream are removed. This combination of business, management and teams is required for agility at the enterprise level.