In my experience, usually as a developer you will never get clear cut project requirements, to an extent that there are no considerable requirements at all. Traditional approach is usually following waterfall model where requirements are captured upfront. Most of the time these requirements are not complete or adequate enough, which later results in extra cost and time.
Requirements are driven by market (, which is directly related to customer needs), but most of the time these requirement are at very high level, 35000 ft. above the ground. Sales and marking folks have a vague idea of customer requirements. Business analyst or product managers talks mostly in theories. No one is to be blamed for this because they don’t have a clear idea of what a customer wants. In certain cases not even customer has that.
From a developer’s perspective it’s a lot of frustration to work on something without any clear requirements. Many of the times the untold requirements are discovered during late stages of testing or customer or sales previews. These are then basically considered as change requests or defects.
All these can be handled in the early phases of development itself by adopting a prototype based development model. Agile or XP methodologies are also based on prototype based development model. It may not be necessary to adopt agile methodology as it is for development process. Variations to agile can always be considered based on the project needs.
Adopting prototype based development model is easy if you have high level requirements. Problem is where to start from? It is sometimes very difficult to get the starting point, but that is also solved even if you have slightest idea of what you are working on. Most of the time, in my observation, once you start realizing your ideas, you unblock the flow of more ideas. The picture becomes clearer, and you start adding more colors to it.
Once you reach some logical point in your prototype, show it to your stake holders. Their feedback is important. Like you they also get more ideas after looking at the prototype.
Always be aware not to spend too much time on then. Remember one thing, prototype is developed to make your requirements clearer or exploring the technology. It is not the actual application that you are going to ship to customer.
Happy prototyping!!!








