So what does it mean, in ACRUMEN terms, for a piece of software to be Usable?
If we Google that term, we usually come up with things about making sure that users with various challenges can use the system as well as the rest of us. That’s a great goal in itself, but I’m adding on that it should be easy for everyone to use, not just equally difficult! To go into a bit more depth, it should be clear at all times, what the user must, should, or can do, especially any help facilities (including documentation, even if printed) — and those things should be easy for the user to find and do, despite any (reasonable) challenges they may be facing.
In terms of making it easy for end-users of a program, this is actually the hardest one, for most of us geeks. Fortunately, we can get a lot of help from various other professions. Mainly we want User Experience experts, but User Interface experts are almost as good. Designers can help a lot too, and it’s usually a lot easier and cheaper to hire them. Once again, though, we can go a long way with their mindset, and in particular some basic design principles, especially the KISS principle. You may have heard of that applied to code, but if not, it means “Keep It Simple, Stupid!”, or if you don’t want to be so negative, “Keep It Super-Simple”. Even an Information Architect can help lay out our site or program or whatever in a logical hierarchy, but that’s something we geeks are usually pretty good at in the first place.
Another often-overlooked part of Usability is that it’s not just for end-users of software with a graphical interface! Not just web, mobile, or desktop apps, but also other things such as command-line apps, and APIs, whether they work via function calls (like with a typical library or framework), or passing binary messages over a wire or pipe or whatever, or passing textual messages.