Reuse Creates Bottlenecks
Written by Mike Cottmeyer Monday, 9 November 2009 01:10
Here is something to think about. Is re-use always good? Is it always a good idea to have shared services and rely on common components? I jotted down a great quote at Oredev this week but can’t seem to recall who said it. “Reuse Creates Bottlenecks”. Isn’t that what we have really been talking about over the past few weeks? When you have a team… or a department… or a division… or a business unit that has everything it needs to deliver… it sure does make planning easier. Why? Because you reduce dependencies on the rest of the organization. There is less coordination… there are less constraints.
But is that how we tend to think most of the time? We seem to think that we’ll pull out all the stuff that is common and share it across the enterprise. That might make sense… it might be the best use of our resources… but it might create unnecessary dependencies that we’re going to have to manage for the life of the product. So here is a word of caution… if you are going to move toward shared services, have you considered the impact that decision will have on your ability to be responsive to your external customers? Have you considered what you are optimizing for?
Organizations that have people in functional silos are, in a sense, reusing people. They believe that having folks with similar abilities working for the same manager is the best way to optimize their limited resources, to get the most out of their investment dollar. Agile teams know that optimizing for throughput is better and tend to rely more on specializing generalists to level variations in the need for talent over time. Reusing system components has a similar effect on the organization as resource silos… and leads to the same kind of behavior. More documentation… more up front planning… and more managing dependencies.
So… if reuse is essential… or strategic… go for it. Just understand your trade-offs. If you are doing it because you think it is going to lower costs… you might want to think about it. If you trade shared systems for increased coordination and management overhead… you might not save as much as you think. Anyway… something to think about.