We had many walls of confusion in software development regardless of whether onshore or offshore development. these are the ones which leads to blame games between the different stakeholders including Customer, Developers, Operations and Users.
What make this worst in offshore development (in many of the co-located teams as well) is what we refer as a customer is not a real customer. There are product/project sponsors. the real customer sits in the other end of the spectrum. Just like anyone else, product sponsor(including analysts, product owner) think they know what customer wants and how the users will use the system.
Agile helped destroy the first wall of confusion between product sponsor and development team, through demos and shorter feedback cycles.
The second wall of confusion is been addressed by DevOps, which brings cultural, technical and process change for development and operations teams to work together.
We still have the most important wall of confusion left which prevents us from engaging the real customers and respond to the users needs. that's why, we still build wrong products for people who never asked for it in the first place.
So how do you break the last wall of confusion? Answer is to go to them early and often. Practices like "Lean Stratup" and "Continuous Delivery" provides the perfect way to implement this. Just to highlight few ideas from lean startup that we can use right way
- Build, measure, lean cycle
- Go live with MVP and evolve the product
- Pivot early
- Culture of experiments
- Validate your assumptions
- Focus on real goals
- Monitoring and measuring systems
- When in doubt AB Tests