Accessibility in software is an important aspect that is often overlooked. What happens when a user is color blind? What about a user that doesn't speak the same language as the software developers?
I like to take this one more step than the standard software definition of accessibility and include hardware. In the nuclear power industry, we enjoyed the term "defense in depth", which just meant the more backups you have the better. Software developers should anticipate an input device breaking (e.g. a keyboard or mouse) and should anticipate having an alternative input method (e.g. voice commands) so that workflow is not broken and time is not lost.
For the software developer, it is a very time-consuming task to think about alternate input and output methods to increase accessibility. It can be even more time-consuming to implement these measures, but in enterprise software it is especially important. Enterprise software should just work. And work seamlessly.
If the experience is not seamless, users may try and circumvent the system, usually breaking the purpose of the system (this is especially important to us since we are defining a QC system that depends on recording everything).
Here are 6 steps to take to ensure quality in your product through accessibility:
1. User Testing
Designers very often hate this. They put a lot of work into designing something that is pretty. After spending hundreds of hours tweaking, thinking and typing the software is their baby. They do not want to hear that it can be improved. This is a huge mistake. Look at the process eagerly and get excited about improving the experience for the user, which is why you wrote the software in the first place!
Take care not to lead the user through the testing. Have them talk out loud and tell you if they are looking for something, what they are expecting to do or click next and if there are any surprises. Take special attention if there are long pauses and try and mitigate the problem.
2. Voice Recognition
There are two forms of voice recognition: one that types what it thinks you said and one that performs an action. Both should be integrated where appropriate (loud environments do not play well, sometimes dictation is not needed). Be flexible with commands; people say things very differently and anything should work (user testing is a great way to flesh this out, as well as usage logs within the software). If you are in a specialized industry, voice recognition dictionaries can improve both recognition and spelling. You may want to think about integrating a third party solution (e.g. Dragon or VoiceBrook).
3. Multi-Lingual
The world is a big place. Don't expect all your users to speak your language. Modern design makes it easy to switch output (labels, text, etc.) and input (voice recognition, keyboard) based on a chosen language. Make your solution flexible enough to switch out languages without rebuilding your product so that you can expand your support as you grow.
4. Colors
One of my favorite expressions to see is, when showing someone software for the first time, introducing them to color customization settings. People love to make software their own. Since I'm talking accessibility, I should mention that customizing colors is very important for the large number of color impaired people. Making red and green buttons cause the user to perform an activity means very little if the user can't see the difference between the two. Take care not to give the user too much flexibility in changing the looks. Narrow it down to a manageable set of choices and expect problems (like the user setting the background and text to the same color). You will keep people productive and enjoying their experience.
5. Touch Screen and Beyond
We have limited ourselves to mouse and keyboard for 30 years; where is the creativity?!?! Touch screens are everywhere, so design for them! Take into account button sizes and spacing to reduce mis-clicks. While you are at it, think about expanding beyond touch screens. There is really cool technology coming out that uses gestures and augmented reality (e.g. LeapMotion). You may not need it right now, but prepare for it.
6. Eliminate Repetition
The computer should be doing work for the user. This may be a little more efficiency, but again, I see it as accessibility. If a user is repeating a task, think about how to automate it and fix it. Six hours of development can create hundreds of hours in productivity. Don't be lazy.
Putting in a little thought and work can make your users love your software. You can have users who are more efficient, more accurate and more productive. Isn't that the whole point of a computer?