Slashdot Mirror


What Tools Do You Use for UI Prototyping?

AccUser asks: "There are many articles discussing methods of UI prototyping. Having been involved in the design and implementation of a number of commercial applications (both desktop and embedded), I know the value of producing early prototypes of the UI. In the past I have used visual programming tools, such as Visual Basic, but there is always that request: 'Can't you just complete the prototype and release it?' One project I was involved with, the UI prototype employed hand drawn graphics (including hand written text labels, etc) in order to be explicit about the fact that it was a prototype. What I would like to know is what tools and techniques do you use for UI prototyping, and how do you manage your client's expectations?"

14 of 88 comments (clear)

  1. Qt designer by dcapel · · Score: 3, Insightful

    If you are OSS, or want to buy a Qt license, Qt designer is very good for prototyping -- you can even make it functionally quickly with some pyqt, then write it in whatever language you want later.

    --
    DYWYPI?
  2. My suggestion by PunkOfLinux · · Score: 5, Insightful

    I like to use pen and paper, personally. Pen and paper is good for anything, it seems.

  3. Assertiveness and a strong will to back it up by GoofyBoy · · Score: 4, Insightful


    "how do you manage your client's expectations?"

    A good solid "NO!" with lots of eye contact.

    --
    The surprise isn't how often we make bad choices; the surprise is how seldom they defeat us.
  4. VB prototype becoming final product by dtfinch · · Score: 3, Funny

    They call that RAD.

  5. "incomplete" prototype by Anonymous Coward · · Score: 5, Interesting

    Make unfinished items on your prototype have a funny font or a strange color. When the client asks you to fix it, say that it looks bad because it isn't finished. Generally, people who aren't programmers have no idea that writing an application is any harder than changing the font on a button, or that changing the font on a button is trivial. If your mockup uses Comic Sans with random alignment, they can evaluate it while realizing that it is not actually near completion.

    1. Re:"incomplete" prototype by mykdavies · · Score: 4, Interesting

      If you're using Swing, have a look at Napkin -- it gives you a great 'sketch-style' look-and feel. As the author says 'the idea is to try to develop a look and feel that can be used in Java applications that looks informal and provisional, yet be fully functional for development. Often when people see a GUI mock-up, or a complete GUI without full functionality, they assume that the code behind it is working. While this can be used to sleazy advantage, it can also convince people who ought to know better (like your managers) that you are already done when you have just barely begun, or when only parts are complete.'

      --
      The world has changed and we all have become metal men.
  6. Best way to prototype UI is to just do it. by TheSkepticalOptimist · · Score: 3, Interesting

    I mean, lots of people need multi step procedures and seek approval inbetween each step, so developing UI goes from paper to prototype to working model finally to release.

    This is mostly why many software/web products take months or years to develop.

    Best way to prototype? Dive right in and code up working UI.

    After developing UI for software for the last 10 years, I can safetly say that I can work up a working "prototype" just as quickly as I can do the release version. I have written my own Windows based GUI controls which make it easier and quicker to implement then your basic Win32 or MFC ones. This way, I can actually start working on the release software while getting feedback from people directly using the UI.

    Whether its software or web design, UI really needs to be experienced and interacted with in order to determine is efficiency or practicality. Drawing up static images of a website or application is all nice, but its a waste of time. What do you do while waiting for management to approve your pretty pictures. Sure things might look all nice, but when they finally get the release product, they may not understand why some control doesn't do what the picture suggested it would do.

    It takes me anywhere from a few hours to a few days to get a functional UI up and running and while management is playing around with it and deciding what they like and don't like, I am continuing to develop the UI further, all in an effort to get to the release product quickly. In this way, by the time management decides what it is they finally want, its already done.

    In any regard, I find it best to work up prototypes in the development environment you would use to create the final product, that is, just start working on the final product right from the start. Using any kind of thrid party tools or procedures is just a good way to waste time and money.

    --
    I haven't thought of anything clever to put here, but then again most of you haven't either.
    1. Re:Best way to prototype UI is to just do it. by elemental23 · · Score: 3, Interesting

      How do you do your usability testing then? Don't tell me you code up a UI for every testing iteration.

      I'm not making any assumptions about you but, sadly, the answer most open source developers seem to have is some variant of "Who needs usability testing?".

      I'm in the early stages of a small project and spent a good part of the day today making a functional prototype for the web application/service I'm working on. As I code, I've got two iterations of paper prototypes sitting next to me as well as the notes taken during the user testing I did last week. I've found this process to be extremely valuable, as the feedback I got in the initial rounds of testing will save me a lot of time in the long run, not to mention ensure that the UI is intuitive and easy to use.

      --
      I like my women like my coffee... pale and bitter.
  7. Paper and Pencil by jrockway · · Score: 4, Insightful

    I draw out a UI before writing a line of code. Depending on the problem at hand, I then draw (again by hand), implementation details like class hierarchies, interfaces, callbacks, etc.

    When you're sitting in front of a computer, it's too easy to just start writing code. When you lose your train of thought, though, you'll end up throwing it all away because you won't know how it works. If you go to your local coffee shop with a notebook and a pencil, and start prototyping, you'll have a good plan on paper. It will be much easier to implement from a fixed plan that's written down than from some idea that you have. It will also be easier to come in the next day and start where you left off, rather than going off on some other tangent because you forgot your idea that seemed good yesterday.

    My usual successful development strategy is this:

    1) plan UI, interactions, structure, etc. on paper.
    2) design reusable modules to do the grunt work.
    3) write the documentation and unit tests for said modules. This is where you get the chance to play test your modules before you've committed to an interface. The SYNOPSIS section of your documentation (where you show example use of your module), is a great place to experiment with how your code is going to work and interact with other pieces of code. Once you know what the interface is going to look like, document the methods. Then write unit tests for them. If your interface is no good, you'll know by now, and you won't have wasted any time writing code that you're just going to trash.
    4) go home and relax. you don't have to think about your code anymore because "perldoc My::Module" is going to tell you everything you need to know when you come in tomorrow morning.
    5) write the actual code
    6) move on to the next piece, knowing you have a well-designed, documented, tested module to build on!

    I'll throw in a link to a module I developed like this. It's not particularly good in the sense of using amazing algorithms or being incredibly useful, but the documentation and tests are decent.

    http://search.cpan.org/~jrockway/File-CreationTime -1.01/lib/File/CreationTime.pm

    Note that every interaction the module has with the outside world has at least a little blurb to refresh my memory about what happens. That's the important part. (It's an added bonus if some random person on the Internet can understand how your code works too ;)

    --
    My other car is first.
  8. MVC by Blnky · · Score: 4, Informative

    This is an an excellent reason to develop with the Model-View-Controller paradigm. You can develop the UI to be as complete as you want. It becomes reasonable to turn the prototype into the final product. However, that doesn't mean you can release it right away since the interface is only the view. You still have to develop the other two parts of the architecture. It is good for the customer because you can say yes to their request. It is also good for you since this separation has kept you from accidentally polluting the the rest of the code with the UI prototype/non-prototype. Also you can use separate languages for each part of the MVC architecture. Use a language that suits itself to the UI and then change to something else that better fits the controller and likewise the model.

  9. A piece of cloth I can't find... by Anonymous Coward · · Score: 3, Interesting
  10. Check out DENIM by noblethrasher · · Score: 4, Informative

    Surprised no one has mentioned DENIM, it's a free (as in juice) UI design tool that basically combines the advantages of a traditional whiteboard (it uses a drawing tablet for the primary interface) and something like the VB6 IDE. Check it out at http://dub.washington.edu/denim/

  11. Make a Clay Model Prototyping Another Product by rewinn · · Score: 3, Funny

    ... such as a Car, a Shoe, a Candy Bar or an iPod.

    Then respectfully ask "Can't you just complete this prototype and release it?"

    Some will get it. Some won't.

  12. Microsoft Excel by justdev · · Score: 3, Interesting

    In the past, I have used Microsoft Excel to do UI prototyping. It has some features which can be used to convey the design:-
    - Cell Comments: To mention any special logic etc on a particular field on the screen.
    - Can show drop downs, buttons.
    - Use multiple sheets and make the hyperlink work to navigate between sheets.
    - Can use colors to mark changes to some sections to existing UIs.