Monday, September 26, 2011

Playing Games with Software Design

Over the years I have been involved in many software development efforts. My guidelines always include designing the software so it is easy to navigate and hard for the user to make a mistake. Countless times I have listened to software engineers berate people for not understanding the way a program was designed.

Programmers get upset when they see people make bad choices, selecting the wrong options or performing tasks out of order. What is painfully obvious to them about the software can be a complete mystery and paralyzing to mere mortals. The sales manager wants to enter information and not have to learn fundamentals of database technology. The senior accountant wants to close the month and not learn about job queues and processor priorities. Our job as IT professionals is to understand what goes on behind the curtain but we can not and should not expect the people who use the software to have the same level of knowledge.

Microsoft Windows took computing light years forward in simplifying the user interface. Point and click is a lot easier than remembering the commands and options needed in command line systems like DOS. It made it possible for people to use multiple applications at the same time increasing productivity and efficiency when using personal computers. Window-like menu interfaces have been grafted on to most major software products. Apple is perhaps the best at making systems highly intuitive and therefore easy to use. Have you ever seen a user guide for the iPod, iPhone or iPad.

Of course making complex enterprise class software as simple as that is a real challenge. SAP, taking a lesson from video games, is trying to creatively infuse the element of fun into their ERP application. While I am not sure we should go to this extreme, the idea of addressing the user interface earlier in the product development life cycle is spot on.

All too often, the software design revolves around the process and data structures while user experience is left to the end or not considered at all. If we put some effort into understanding how people work and design the software in a way that is natural and intuitive we can eliminate many of the issues associated with new implementation and training.

I encourage project teams to try to write the training materials before writing any code. Have mock user sessions and see how people interact with the proposed design. This should allow the developers to create software that can only be used properly. Don't allow people to make a mistake. There are many techniques for guiding people through a complicated system such as a tutorial or context sensitive help. Hide options when they are inappropriate. If you do not want the B button pressed at this point then don't present the B button.

The new generation of workers, sometimes called digital natives, are a lot more savvy and comfortable around computer systems. They grew up with the latest technology and expect it to be available in the work place. But they also expect systems to be as fast, simple and reliable as their smart phone. They won't read manuals or spend hours in training classes. If they can't figure out how the system is supposed to work they will think we are the ones who don't know what we're doing.

Captain Joe

Follow me on Twitter @JPuglisiLLC