views:

335

answers:

6

We prototype a design, GUI, just to analyze a particular problem, proof of concept, etc. Sometimes we throw away the prototype, and sometimes it ends up in the production code. We use different languages, technologies, strategies, and styles to prototype.

What are the different situations you prototype usually and how do you prototype? Any good resource out there to master the craft?

+1  A: 

Right now I just draw pictures. I would like to do more, but to get something to a point where the users would understand any better than a picture would cost to much time.

I am interested in seeing some of these responses :)

I should mention where I work is just me and one other guy to play the roles of project manager (collect data, design spec & app), dbas, coders, tool researcher/developer, et al that comes with the job of making an app for a small company.

Arthur Thomas
A: 

I start off making a prototype that makes the most interesting part work, then I throw it away and move on to a new, more interesting project...

*kills self*

Terhorst
+1  A: 

For webapps, start with an pure (x)HTML + CSS mock-up, and then use a framework that makes it easy to implement the functionality.

Template-based frameworks are very good for this, but we've had some good experiences with JSF + Facelets + Seam, too.

Sietse
+2  A: 

One hot title is Effective Prototyping for Software Makers. The issue is that there are several schools of thought.

  • Rapid Prototyping. Use fancy tools; get something done soon.

  • Evolutionary Prototyping. Evolve from prototype to production.

Some of this is legacy thinking, based on an era where tools were primitive and projects had to be meticulously planned from the beginning. When I started in this industry, the "green-screen" character-mode applications where rocket science and very painful to mock up. Tools and formal techniques were essential to manage the costs and risks.

This thinking is trumped by some more recent thinking.

  1. Powerful tools remove the need for complex prototypes. HTML mockups can be slapped together quickly. Is it still a prototype when you barely have to budget or plan for it? [You can mock it up in MS-Word and save it as HTML. It's quicker for a Business Analyst to do it than to specify it and have a programmer do it.]

  2. Also, powerful tools can reduce the cost of mistakes. If it only took a week to put something together -- production-ready -- what's the point of an formal prototype effort?

  3. Agile techniques reduce the need to do quite so much detailed up-front planning. When you put something that works in the hands of users quickly, you don't have quite so much need to be sure every nuance is right before you start. It just has to be good enough to consider it progress.

What can happen is the following. [The hidden question is: is this still "prototyping" -- or is this just an Agile approach with powerful tools?]

Using tools like Django, you can put together the essential, core data structure and exercise it almost immediately. Use the default Django admin pages and you should be up and running as soon as you can articulate the data structures and write load utilities.

Then, add presentation pages wrapped around real, working data. Be sure you've got things right. Since you've only built data model and template-driven HTML pages, your investment is minimal. Explore.

Iterate until people start asking for smarter transactions than those available in the default admin pages. At this point, you're moving away from "discovery" and "elaboration" and into "construction". Did you do any prototyping? I suppose each HTML template you discarded was a kind of prototype. For that matter, so where the ones you kept.

The whole time, you can be working with more-or-less live, production users.

S.Lott
+1  A: 

Personally, I believe a true prototype should not be much more than diagrams drawn on paper to demonstrate the flow of whatever it is you are trying to achieve. You can then use these documented flows to run through several scenarios to see if it works with whoever has requested the functionality.

Once the paper prototype has been modified to a point where it works then use it as a basis to start coding properly.

The benefits of this process are that you can't end up actually using the prototype code in production because there isn't any. Also, it is much easier to test it with business experts as there is not any code for them to understand.

Garry Shutler
Couple of good books on the topic is Paper Prototyping: The Fast and Easy Way to Design and Refine User Interfaces and Sketching User Experiences: Getting the Design Right and the Right Design.
mattruma
It sounds like GUI specific prototyping. Thanks.
ragu.pattabi
I've found that unless I can push the buttons and traverse around through the screens you can't get a feel for usability. Your method might provide something that works, but it doesn't help lead to a good user experience.
Dunk
+1  A: 

The main reason for doing prototypes is reducing risk. Thus, we do UI prototypes, which are really not very helpful unless they actually do something that a user can play around with. Just as important, we also do prototypes to either prove that something can work or figure out how something does work.

Dunk