Tuesday, February 13, 2018

Outsourcing kills the feedback loop!

It is human to optimize locally. In this blog post I would like to shed some light on one specific local optimization: Outsourcing your maintenance.

It all sounds very logical: Instead of slowing down the teams by having them fix the bugs that their software causes in production, let’s form a specialized team that will take care of that boring chore! So that our best people can focus on creating value! And better yet, let’s outsource maintenance altogether! We don’t have time for bugs, let’s focus on the customers! Let’s be customer-centric!

This looks neat from an accounting perspective too, with separate teams for CAPEX (new investments, i e new products and features) and OPEX (operational costs, such as correcting bugs).

However, when you put on your Agile glasses, you start seeing that this is really bad. The first thing that strikes you, is that the feedback loop from production back to the development team has been severed. In an organization that outsources maintenance to a separate team, there was probably not much of a DevOps setup to begin with. But the team was at least informed about the bugs that were found in production, since they had to fix them. So this was the feedback loop. And now it has been cut.

Without a feedback loop, learnings from production will never reach the development team. Let’s say the team forgot to close database connections in their code. After an incident in production, the maintenance team creates a hotfix to correct this. But the development team isn’t in the loop, so they never learn of the problem. So, in the next release there is yet again a problem with the database connections. And so it continues.

The second problem is the amount of waste this creates. The development and maintenance teams need to do constant handovers if this setup is to work at all. Handover is a Lean waste. Wasted time and energy. Since the maintenance team has to fix bugs in software that they don't fully understand, there is a high risk of overprocessing, which is also a Lean waste.  

The third problem is the organizational culture that might be the root cause of the local optimization. Somehow, the organization thinks it is most efficient and best that specialized teams do specialized task. This degenerates fast into a sequential waterfall which rids the organization of the dynamics of crossteam knowledge sharing. Put simply, the Organizational intelligence will not reach its fullest potential, since people will work separately instead of together.

Instead of insisting on local optimization, be Lean and Optimize the whole! Instead of outsourcing, insource! Keep maintenance within the team and also insource operations! Don’t just fix the bugs, find them before the customers even notice them - by insourcing monitoring!

This approach is also a great way to switch the focus of the organization from delivering as much functionality as possible to delivering as much value as possible. And that's being customer-centric for real! 

No comments:

Post a Comment