Console app (my favorite), quick & sloppy form, MS Paint (for GUI); what works best most of the time for your standard application? why?
Believe it or not, PowerPoint.
I know you may laugh, and I definitely did at first, but there are a lot of great things about PowerPoint that make it a good prototype tool.
- Easily Deploy-Able - Everyone has PowerPoint almost, so you don't have to worry about unneeded set-up just to get someone to be able to use a prototype.
- Easy mock-ups - Everyone pretty much knows how to get around in PowerPoint, so it's about as easy as drawing when it comes to creating the UI fast.
- Interactivity - This is where it gets good. PowerPoint lets you create links on slides that take you to another specified slide by clicking on an area. If you use this metaphor for buttons and other links for your proposed UI, you can set a user down in front of a maximized PowerPoint presentation and have them click away as you watch and take notes.
You can get add-on tools like this to make it look better.
For me hands down it is Balsamiq I love it for a number of reasons.
- Easy to use - The interface for Balsamiq is incredibly simple and fast for me to pull things together.
- Looks like a mockup - When showing it to clients/customers/vendors it looks like a mockup, so there isn't confusion that "I'm almost done" or something like that.
- Looks professional - In addition to the previous point, yes, it looks "hand drawn" but still looks professional.
- Common UI Controls - Are all available, to quickly build out mockups that resemble real apps.
SketchFlow in Blend is a neat idea:
- The styles reinforce the idea it's a prototype to stakeholders to manage expectations
- If you know Blend, you know SketchFlow - there's just one extra thin layer on top that allows you to create "screens" and navigate them easily.
- Since it's all in real XAML, you can enable interactivity and spend time developing real features that are crucial to the look-and-feel or functionality of the app, like important animated transitions or DataTemplate prototypes (Blend's sample data functionality is great for this). It's got built-in behaviors that plug into the "screen-map" layer of Blend - making a button or link navigate to another screen is as simple as drag-and-drop and selecting a value from a dropdown.
- It's very tough to reuse a SketchFlow prototype and turn it into a real app - you can usually recycle some visual layouts but only at a basic level. I consider this to be a good thing, because prototyping doesn't put you in the right state of mind for building a real app.
- You can export the prototype to a self-contained "player" app that only needs Silverlight to run. The player enables all the interactivity and lets you navigate through the app's screens even if you haven't wired up interactivity, and stakeholders can provide feedback through notes or ink markup right on the prototype.
The main problem with it is that it's not purely visual drag-and-drop like Balsamiq, PowerPoint prototype tools or other visual tools, so you need to know at least the basics of Blend/XAML.
I'm a big fan of MS Paint. I like that the poor quality of the doodle makes it easy to throw away and start over. Having used more sophisticated diagramming and visualization tools, I found myself spending too much time trying to figure out how to represent a complex idea when the idea itself should have been simple enough to sketch.
I think it's the same dynamic as a napkin - just getting a rough glyph of the idea is enough to set things in motion. For me, I don't want to touch a diagramming tool until the diagrams are already well thought out.
But may be just me and my strange ways.
Probably depends on what platform you're going to build the app with (A web app? Desktop? C++? Java?), but I usually go directly from paper to the actual platform. Benefits: looks like the real thing because it is, and after you've figured out how to lay out the GUI, just add the needed functionality, and your app is done.
That's called Rapid Application Development.