My dad was in the army and he taught me a lot of army-isms like the 5 Ps: Prior Planning Prevents Piss Poor Performance (complete with a superfluous P for added emphasis).
Another saying he taught me was “when you assume, you make an ASS out of U and ME.” I think this phrase is somewhat related to planning but it’s really about always being explicit with your plans and intentions. Don’t assume that someone will be on night watch; assign it to someone and make sure it’s her duty. This communication is especially important because the army enlists men from many different backgrounds, all of which come with different assumptions.
If assumptions are so dangerous, why do we always make them? Well, because we’re lazy. If we had to explicitly communicate everything to everyone we wouldn’t really get anywhere. Assumptions are really just mental shortcuts. Or, if you’re a cognitive scientist, they’re “mental models”, concepts people have about the way things work in the world.
One assumption we make every day* on the web is that blue underlined text will usually take you to a new web page. There’s no affordance there (other than maybe the little hand cursor) so this is something that must be learned through experience. It’s a convention and woe be to the developer who decides to break it. He’ll potentially be breaking his application for some people.
If we want to make applications that are easy to use, we need to enable users to make assumptions. Let them take the mental shortcuts derived from their mental models. Funnily, this means you want to follow a lot of pre-existing conventions. Or, in other words, be conventional. Yeah, I know, being conventional is boring but it’s better than being unconventional and broken. And realize that it’s all these conventions we’ve unofficially agreed upon that make it easy to navigate this crazy world.
But even being conventional is difficult. Sure, hyperlinks are an easy convention to follow but what will users expect when it comes to more complex interactions? This is where you need to do research. Start with some heuristics. Look at other similar applications. (I’m assuming you’re not doing anything original when it comes to interface design). When you have something worth showing someone, show it to them and let them make assumptions; They are telling you how to make your app easier to use.
* Yes I’m making a gross assumption here.Written 1 September 2014