TL;DR

We write software to be USED by people, not for machines to use.
Therefore we need to write software in a way that is intuitive and makes sense to humans!

Usability Heuristics

  • Visibility of system status - Can easily see what's going on
  • Match between system and real world - Names and data structures can easily be identified
  • User control and freedom - Options
  • Consistency and standards - memes
  • Error prevention - A mistake does not 'penalise' the user
  • Recognition rather than recall - Users should be able to navigate their way around the system, rather than remember a set of procedures
  • Flexibility and efficiency of use - Options x2
  • Aesthetic and minimalist design - Keep it simple!
  • Help users recognise, diagnose, recover from errors - Useful info-tips and tool-tips
  • Help and documentation