Tuesday, 2 February 2010

Software design - keep it simple...

I was asked recently what I considered to be the most important piece of functionality in our software. Given that we at Synchro32 have created and developed a full ERP/MRP application (specifically designed for the foundry industry) this was an interesting question. I’m sure the person asking was expecting an in-depth answer involving production control, scheduling, accurate cost analysis and so on. The answer was far simpler, ease of use.

You may consider that ‘ease of use’ is not a true software function, but as an objective it has to be resourced, designed, and maintained. Now, I am not suggesting that core functionality is unimportant; indeed a piece of software that does not fulfill its intended role is of little use. I suggest that ease of use is arguably one of the most important functions because of its effect on users and data.

Take two systems. The first is all singing, all dancing, and fully functional with all the data input and analysis you could ever want; but the downside is that the user interface is complicated, poorly designed, has no flow, inconsistent entry screens, fragmented menu systems, and so on (I’m sure you have all experienced this type of system). The second system has the same key functions and analytical ability; but it’s easy to navigate, all the screens work in the same way, the menus are arranged intuitively, prompts guide you through more in-depth areas, validation of data is clear, prompts ensure you don’t miss vital information. Now, it’s obvious which system you would you would prefer to work with. But the plain truth is most people don’t value the easier to use environment enough in order to change their systems, and systems designers don’t generally value ease of use enough to change their design methodology. There seems to be a general attitude that if it’s complicated it must be good, expensive yes, difficult to instruct yes, and if it’s also difficult to use its generally seen as user ‘attitude’ that can be adjusted with a managerial kick up the rear...

It may be a revelation for some, but you can have in-depth fully functional software that’s easy to use. There I’ve said it. If systems are easier to use it has far more of an impact upon the quality of data than you would think. We have found that simplifying the user environment encourages users to use the system more, the quality of data is much higher and the availability of more accurate data encourages more informed data analysis which has a knock on effect to the business in general.

In addition to consistency of design there are other key elements to simplifying the user experience. It is important to design software so that it can customize itself to a user’s role. For example designing software for multi-user access is not just a case of allowing more than one user to access the same data at the same time. Take the word processor I’m using right now, it has been designed so that I can access all its functions as and when I need them. It can do many clever things but its primary function is to create documents and it has one user, me. With larger systems like ERP and MRP, there are many functions that are considered independently primary to the multitude of its users. Even with this in mind most software designers do not allow for users to tailor centralized software to the specific needs of the individual. We pride ourselves in making our software fit an individual market, but we also design our software so that our users can further tailor it to the specific requirements of their job.

As far as I can see, anything that makes our jobs simpler, more efficient, and more effective has to be a good thing. The phrase ‘user friendly’ has been loosely bandied about ever since I started in application design over 20 years ago, and unfortunately I think most people don’t really understand what it is until they experience it. I have always insisting on staying in close contact with our customers and actively use feedback to improve our software and services. Unless you are involved in the software industry you may not realize the layers of people involved in your software’s development. Usually the person actually writing the code behind your experience is far removed from its initial requirement and in most cases is ‘interpreting’ your needs (or more likely they are interpreting an interpretation of your needs). The further back the programmers are from the shop floor the more distant the view...

When I’m asked what direction our next generation of systems will take I give the same answer every time, make it simpler, make it easier, and make it more efficient. Note, that this does not include extending functionality. Occasionally we may branch out into an associated area to make data collection and analysis easier or more informed or we may upgrade technologies to meet the latest requirements, but our main functional objectives have already been met. Outside of this all we can therefore do is make our software more widely available and an even more pleasant experience to use.

So, when you’re next asked what you consider to be the most important function of your existing system will you be able to answer its ease to use, and if not what impact is it having on your job and the health of your business?