In Indian software world from where I come, we mostly work as vendors to the clients. Challenges we have as talked with Siddesh, on how client’s expectation is very high, ambiguous requirements and sharp deadlines, it might sound all too familiar in any part of the world.
Since Indian software clients are growing and maturing, it will be very important to experiment and spike with different solutions to see what works mutually with the client and the software team working with them.
Here is my take on it. It is just an personal opinion and there will be many arguments against it. But here is my point of view. The first primary challenge is to get confirmation if the contract is with us or not. But as soon as you get in touch with any technical details, start creating a spike. A version of spike’s meaning can be found here. You may argue that how can we start writing code without complete analysis. I am talking here about non production code.
Listen to this discussion on a idea of Test Driven Development between Jim Coplien and Robert C Martin in YouTube. They talk about writing production code of a telecom application (app size 2 million lines of code). They need half an hour to start writing the code. I think we can definitely write up some code to get a better understanding about requirement and gain some confidence.
At organization level, we can have repositories of all such spikes so that in future we spend less time in creating those. Such situation could arise for example when we end up giving the project to other teams with in the organization or if the project goes on hold. We will always have working executable code as our knowledge base. Thus, we will have information on the uncertainty of the requirement + the existing knowledge of business as usual. It is easy in theory then actually doing it. But that’s the challenge.