For me, prototypes have always been a key part of developing software. I’ve tried low-fidelity paper models and hi-fidelity working code; and I have to admit I gravitate towards the hi-fidelity models. Yes, they do cost more. But, in my opinion, they provide more value too.
- Easier for users to interact with.
- Require less “imagination”.
- Gain understanding of the target technology.
Of course prototypes are often “quick & dirty” so the prevailing process is “build, show, throw”.
- Build the prototype.
- Show it.
- Throw it away.
With Cryotrax Researcher Edition, we’ve adopted a “build, show, go” approach. The first two steps are the same, but instead of throwing it away, we’re going forward with development.
By making a couple of simple choices while developing the prototype, we prepared it to “go” to development.
- Use the target technology and tools.
- Isolate the “data” from the user interface.
- Build some of the control.
This doesn’t take considerable effort. There’s no need to architect the backend systems. There’s no need to develop a complex object model. This is a Java application so we created a class to contain the prototype data (mostly Strings & Lists) and accessed it through static methods. Crude? Yes. Effective? Yes. Simple? Yes.
After the “go” decision, we evolved the object model and backend system one step at a time.
- Identify the function to develop.
- Build & test functionality using test-first principles.
- Remove the call to the prototype data; replace it with a call to the business logic.
Using this approach, we’re evolving the prototype while maintaining the “façade” of a working application. Real and prototype functionality is interspersed in a constantly narrowing spiral – the real application overtaking the prototype.