Local vs Global optimum
Few weeks ago, I had a meetup with Woody Zuill, the inventor of Software Teaming, with the Software Crafters Lyon.
I have encountered the same topic at two different times:
- During software teaming: we had different speeds depending on the couple driver/navigator
- During the informal exchange after: he talked about silos in companies
It took me a long time to connect the two concepts.
During software teaming, an important part is to synchronize the pace. If someone goes too fast, no one can understand what's going on. If someone goes too slow, it would be hard to follow.
Regarding silos, the basic idea was already been studied in Team Topologies, the general idea is the following, when you structure a team, in tends to optimize itself toward its goal. For example, if you have a front-end team, it will focus on producing better front-end. On the contrary, if you create a multidisciplinary autonomous team, it will produce a better software.
It took me a while, but I have finally connected the two idea: it is about optimum.
You can improve yourself/your team to the point that you are able to build a complete module in the morning, but if you cannot deploy it, or don't have access to users feedback, there are few chances you end up building something valuable in the long run.
Local optimums create bureaucracy. In teams, we should make sure everyone is at the same pace. In companies, we have to make sure teams are autonomous, being able to gather requirements from users, design on their own, deploy at their pace, and collect feedbacks themselves.