Now, for a moment, forget about software development, and think what happens when you tell something to a friend, and that friend tells it to his friend, who passes it along to her friend. Ever play the game “telephone?”
This is an extreme case, of course. In order to make this model work, so that it doesn’t matter where the development team is, we just need to have a sound process to capture information at the source (through the liaison), document it and pass it along to the remote team. And if we have people that do this really well, it could even become an advantage over the guys that “just do it”.
So let’s get ourselves a requirements analyst (if she has worked in the same industry for a few years we can even call her a business analyst – that’s cool stuff!), make sure she writes well, make sure the client signs off on what she’s written, and we’re fine. We’ll establish specialization of work (you think a developer can write these documents?), templates to guide the work, a governance model with clear responsibilities and rites to get all that done.
Good. First part of the puzzle is complete. Now, how does the remote team communicate back to the client? Well, the reverse process should work just as well. So the specialists on the team write documents (architectural view, technical specifications, etc.) of how the system will look like once developed, hand these off to the liaison (with some knowledge transfer in between, of course), and the client will be able to have a beautiful overall picture, and will be able to sign off on that. And of course, all this flow is specified in the process, so it won’t fail.
Ah, but then the development advances and the business stakeholders realize that some changes are needed. Big deal? Well, we just need to go through the cycle again – capture the change, verify the documentation already produced and verify the impact (by the way, there are tools for that, don’t worry), communicate to the team, perhaps negotiate with the project sponsor a new timeline and some extra cost. Or perhaps the architecture needs to be modified to consider a new integration.
You know the drill, I don’t need to describe it. But to deal with this complex cycle we as an industry have invested a lot of money in standardizing the software development processes and in a certification (CMMI) to demonstrate that we’re mature and can do it every time, haven’t we? This process is so superior that even local players now have to follow it or they’re not considered “world-class”.