One of the application development blogs at Forrester had a post recently that got me thinking. The basic idea is that application developers do not focus on the user experience much, and generally do not have much knowledge of how to build a nice user experience. However, in the current state of the web you cannot have an unusable site and expect to be successful:
User’s increasingly expect and demand an experience that’s valuable, easy to use, aesthetically pleasing, and emotionally satisfying. To be successful, app dev shops must build apps that win the hearts and minds of their customers.
Obviously this is true, and many people will agree. Typically, the practice is to build something usable enough just to get the product in front of customers. This trend does have its benefits, as early customer feedback is crucial in creating an effective product. Sometimes the design and user experience can be a little daunting or even confusing. This is where the web and experience designers get brought into a team. If you are wondering what the ROI might be in hiring these designers, Forrester gave us a little nugget of information for that too:
Improved user experiences will boost revenue and loyalty by more than 14% for customer-facing Web sites and improve productivity and employee satisfaction for internal applications.
So, there is an actual return on this investment and there should not be any other questions on whether to hire that new designer. Some teams figure that one of the software engineers who is most HTML and CSS fluent can do the design. They can create the design, but I have mostly seen that traditional software engineers create functional applications, not pretty or usable ones.
Building The Table
So, you are probably wondering where the “building a table” analogy comes in. As I said, software engineers “do functional, not pretty”. Software engineers build the software. This is like taking the wood, cutting it to size, securing the legs to the table and making sure the whole thing is level. Fantastic! We have a brand new table! However, the wood is unfinished and some of the edges are a little jagged from the cutting. In today’s web applications, that unfinished and unpolished table could be seen by millions of people. That is not a great impression, but sometimes people will use the application anyway because it fills a need. A table fills a need as well, but it could still be ugly.
So, there is a whole segment of the construction industry for making things nicer and more pleasing. Good “finish carpenters” are expensive, but they can make your new unfinished table a centerpiece for your room. (yes, I know that finish carpentry is normally not talked about with tables, but work with me on this) Finish carpenters have some of the same skills as regular carpenters, but they also tend to bring more of an artistic flair to the job. A software engineer would probably get a basic stain or poly finish in order to “finish” the table. Maybe they would get some sandpaper to clean up the rough edges. Guests would see the new table and say, “I like the new table, it turned out rather nice.”
The web designer would look at the table and try to figure out what would make the table stand out from other tables. Maybe the legs of the table would have a lighter natural oak finish and the top of the table would get a rich cherry finish. They might bevel the edges of the table for a more distinctive look as well. Now, when guests arrive and see the new table you might hear “Wow, the table is beautiful! Who did you hire to make it? Do you have their number?”
A web application is typically not the work of one person. Even the best “generalists” cannot create an immensely useful application that has a design that rivals something like CSS Zen Garden or your other favorite design sites. Typically, you might get a design that does not suck, but it is not going to win any awards. Software development is a team activity, and no piece should really be ignored. I hear the mantra “let’s make it work, we can make it pretty later” very often, and I have said it myself in the past. That idea can work for the basic features of an application, but if you want a lot of people to use it, it needs to have a good “finish”. And don’t get me started on the difference between building a normal application and building one with performance and scalability for the mass consumer. That is like the difference between building a driveway and building a highway, but I have brutalized enough construction analogies for one day.