Several recent clients want help with these problems:
- Estimation isn’t accurate. Because the estimation isn’t accurate, management can’t predict when they can release anything. Managers can’t manage the capitalization (a way to move from expensing software to capitalizing it).
- Teams can’t seem to ever deliver a finished feature. The work in progress everywhere is quite large.
- Production support overwhelms the planned feature work.
These teams suffer from the divide-and-conquer problem.
When managers divide teams by function, the teams have less opportunity to learn and collaborate together.
In addition, the managers need ever-more management control. That’s because the common goal sits with a senior manager, not any of the lower level managers.
If you’re a project manager/Scrum Master/something else in an organization like this, the matrix itself isn’t the problem. The matrix is a symptom of the problem.
Divide-and-conquer creates smaller goals, supposedly in service of the larger goal. It doesn’t. Divide-and-conquer creates small goals that might not lead to the larger goal at all.
Too many managers believe that separating the functions or the architectural layers makes sense. Maybe they were taught that makes sense. Maybe they’ve never seen an alternative.
Separating product development by function or architectural layer creates incomplete pieces instead of features through the architecture.
The problem is this: customers don’t buy pieces. They don’t buy pieces of an architecture. They don’t buy the wireframe. They don’t buy development without testing. Those are all pieces.
But a variety of pieces isn’t a single feature. Pieces create an illusion of progress.
Until the team can produce finished features, the customer can’t buy anything. The slice-through-the-architecture isn’t just a nice way to think about how stories should look. It’s actually a way to finish work and capitalize it.
When we think in flow efficiency, we optimize for the teams to deliver finished functionality. When managers think in divide-and-conquer terms, they optimize for resource efficiency.
Managers do not optimize for finishing features, for collaborative learning. And, they optimize for expense instead of capitalization—exactly what they don’t want.
Managers have to create control points to understand the flow of and progress of the work.
This seems counterintuitive to some managers until I explain how software (or other knowledge work) teams actually work. The team learns together to create the product. (See the Product Organization Transformation series.) The more and faster the little feedback loops (dev and test, dev/test/PO), the faster the team releases features.
The faster a team can release features, the faster the managers can capitalize the work.
It turns out that technical teams aren’t the only ones who need to work together to learn. When managers learn together, they reduce the management decision wait times.
Divide-and-conquer creates more management work in the form of control.
My clients’ problems are real. Too many of them stem from resource-efficiency thinking instead of flow efficiency thinking.
Back in 1975, Fred Brooks in The Mythical Man-Month, said, “The bearing of a child takes nine months, no matter how many women are assigned.” (My book is at home. I think that’s the quote.)
Divide-and-conquer works when you either don’t want collaboration (such as war, or two children yelling at each other) or you do want handoffs, such as in a factory, where work moves from one machine to another.
Divide-and-conquer for knowledge work creates too much WIP (work in progress). Managers need to create control mechanisms to bring the work back together.
Instead, think in flow efficiency. Then, managers can collaborate as a team, they can serve teams and manage the project portfolio. In addition, they can capitalize the software every day or every other day.
|Published on Java Code Geeks with permission by Johanna Rothman , partner at our JCG program. See the original article here: Divide and Conquer Creates Need for Management Control|
Opinions expressed by Java Code Geeks contributors are their own.