Ergonomics: code that is easy to read, understand and write
Familiarity: whenever a concept or notation is broadly in use from the world
of programming languages or scientific notation, they should be reused if
applicable.
Approachability. Simple things should be easy to do, complex things should
be possible.
Expressiveness. The solution of a problem should be expressed
in the closest way to the original problem formulation
in a clear, natural, concise and intuitive way
Error Recovery: whenever an unexpected result is reached, it should be
easy to understand what caused it, and how to recover from it.