Jeff Hoffman is the lead user experience designer working on Java Standard Edition and JavaFX. He's been designing both consumer and developer oriented products since before the boom.
Last night I went to the movies with some friends. We saw Changeling, a powerful piece set in late 1920's Los Angeles about a woman whose little boy disappears. Afterwards I started thinking about the parallels between movie making and software design. I feel that software applications can be designed so that the user enjoys the experience, even if they are performing work-related tasks.
Going to see a movie in a theater is an experience that you expect to enjoy. Your choice of movie will definitely affect the result, but in general, it's a time that you are socializing with friends, eating junk food and kicking back to watch a story unfold on the screen. No matter what kind of story (suspense, horror, comedy, drama), you are going to the movie to gain entertainment value. Similarly, starting up computer software is an action that you perform to gain value. It could be starting up your browser to check online e-mail, or bringing up a spreadsheet program to analyze your financials.
Certainly there are detractors to seeing a movie in a theater (and hence the popularity of home theater systems, which have their own issues as well). There are the expected issues such as finding the theater, securing a parking space and waiting in line to buy tickets. Then there are the unexpected problems like denial of your credit card, the movie you wanted to see has sold out and the person in front of you with the annoyingly bright mobile device. On the software side, there are lots of things that interfere with the achievement of the your desired goal and enjoyment of it's use. Examples include poor performance, confusing instructions, unexpected errors and inaccurate results. How often do you select an action that you think will do what you want, only to find out that it doesn't, and it takes minutes (or longer) for you to return to productivity?
After we've gotten past all the expectations and disappointments, we consider how the movie is crafted. Since it's telling a story, the movie needs a beginning, a middle and an end. The beginning sets up the characters, time and location. It gives you just enough context to understand what comes next (usually, though there are exceptions like Memento). The middle of the movie is where all the really interesting stuff happens. And the end of the movie is where everything is neatly tied together (though explicit loose ends are kept around for possible sequels). This way you can go home with the whole story, and you feel complete.
You can think about software in a similar way. When you start a piece of software, it should provide you with the appropriate context to begin performing tasks that will achieve your goal. This can be an obvious "Start Here" action, or a workspace that contains items of interest. For example, if you're creating a home movie to share with folks, you might want a timeline, a way to get at your video clips and a place to see your interim results. Once the context is set, you can begin the real creative work, for example arranging clips, adding transitions and titles and adjusting the sound levels. At the end of this process, you're ready to share your work, so you package it up neatly and post it on your website. You now feel as though you've completed your goal, and you are happy.
As we're in the final throws toward releasing JavaFX, I have realized that the entertainment value of this platform is going to be a key to its success. An effort that my team and I have been spending a lot of time on has been designing sample applications to show off the capabilities of JavaFX 1.0 (along with the unbelievably productive Josh Marinacci
). Each of these samples needs to tell a story and must have an easy to understand beginning, middle and end. Developers rely on the samples to get started, and to help them reach their goal of creating a compelling application.
So keep on the lookout for the launch of JavaFX 1.0, and check out the gallery of sample applications. We hope that they will educate, as well as provide some entertainment value!