In many things in life, but particularly in the world of user interfaces and software behaviours, good programmers subscribe to the principle of least surprise. This means that we, as programmers, attempt to ensure that the ways we accept input, produce output, and perform work, are as obvious to the user as they can be, as consistent as possible across software projects and therefore as unlikely as possible to surprise the user.
Unlike when we're receiving gifts or attending a pot-luck dinner, when we're writing a configuration file, or running a fundamental tool, surprise is a bad thing. Users simply do not like it when something they expect to work doesn't and the principle of least astonishment. This leads to a consistency and uniformity of interface which users appreciate and programmers find handy. For example, many applications use INI file style configuration so that users can be confident that they understand the syntax of the file they're editing.
Programs often use similar key bindings to navigate content. Anyone who has
played with Vi/Vim will know about hjkl
(bless you). It might therefore
surprise you to know that XMonad defaults to using M-h
and M-l
as "move
boundary left/right" and M-j
and M-k
as focus "up" or focus "down" in the
window list. Or that in G+ (yes, Google Plus, and in fact in gmail too) you
can navigate between entries using j
and k
(as does Tweetdeck, Twitter,
Facebook and a myriad others).
As an example of where the principle breaks down is in the use of the home
and end
keys. I personally expect home
to be start of document and end
to be end of document so when someone else tries to operate my editor and
home
doesn't take them to the start of the line they're very confused.
Equally my fingers are used to C-w
being 'delete word' in a shell, but some
terminal emulators take that to mean close window which can be a tad
confusing.
So next time you're developing a piece of software the user interacts with in any way (even if only on the commandline) -- take a look at how other programs do the sorts of things your UI will have and try and ensure no user will be surprised with how you choose to do things.