Archive for June 29th, 2005

Build, Show, Go

Wednesday, June 29th, 2005

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”.

  1. Build the prototype.
  2. Show it.
  3. 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.

  1. Use the target technology and tools.
  2. Isolate the “data” from the user interface.
  3. 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.

  1. Identify the function to develop.
  2. Build & test functionality using test-first principles.
  3. 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.