1. I wrote a graphing package once - for use on the Tektronix 4051
(so you'll see how old that was!) - and the sales team for whom I wrote it loved it in demonstrations. It asked a series of questions and then drew a graph - just what was needed to introduce customers to the piece of hardware and show the sort of results it could produce. But then when people wanted to use that same program to produce their own graphs it was intensely frustrating - they were re-entering data time and again, unable to set defaults and feeling that the whole thing could have been so much more
efficient for them.
2. I see a similar trade off - the The "easy to use" v "easy to learn" trade off
- in programming examples. I have been catching up on a few reviews of our website this morning, and on an example that joins three tables in MySQL
, a reviewer writes "The guide itself is pretty straight forward but really, these three letter abbreviations are slightly hard to follow".
The comment is understandable. In my example, I have used three tables - with names:
bdg - for a building
res - for residents who live there
dom - for domains they have registered
and in each table, I have primary keys (ids) that start with the same letter as the table - thus:
bid - building id
rid - resident id
did - domain id
By using short names, the code examples are kept down in size, and you don't get all the lines folding. The names are just about long enough (for fluent English speakers at least) to identify with / understand what each table is. But I can appreciate that for many of our site visitors, who struggle to understand English, the abbreviation can confuse.
3. Yesterday, I was comparing Perl and PHP; Perl is a fantastic and generalized language which lets you do so many things very quickly - once you know it well
, whereas PHP is tuned for web use, for people who don't want to spend quite so long learning, and in the long run is going to produce somewhat longer code.
4. Our coffee machine at Well House Manor
is customer facing - a single push of a button produces a cup of fresh coffee. Easy for the users? Not quite as easy as you think, sometimes. The symbol for "hot water" is a odd one, and there's the occasional customer who doesn't realise that (s)he needs to put one of the mugs that are by the machine under the spout before pressing a button ...
There are design decisions to be made all the time. In each of the cases above, someone has thought about (or failed to think about, and made a random decision) the usability and the target market. My own "default" thought process is to ask myself "who is this intended for" - to look at my potential market / readership - and to design accordingly.
So I stand by my three letter table and column names. I think they're about right. And I say to people who are looking for something much more verbose that they may do better looking elsewhere for something more basic, or in their own native tongue - we can't provide the perfect answer for everyone.
And on that basis, to the lady who was on the phone, furious that our web site didn't tell her the times of buses from Potterne to Devizes, I must say "why should it - we're a software and training company in Melksham and we just mention those places as served. Have a look at the bus company's web site if you need detailed bus times!"
Associated topics are indexed as below, or enter http://melksh.am/nnnn for individual articlesQ101 - Object Orientation and General technical topics - Programming Principles 
Remember to ask the question before you listen for the answer - (2016-01-26) 
Hungarian, Camel, Snake and Kebab - variable naming conventions - (2016-01-03) 
Learning to program - what are algorithms and design patterns? - (2014-11-22) 
Writing the perfect program in Tcl? - (2013-11-13) 
Rooms available tonight - how to code an algorithm from first principles - (2013-08-19) 
We not only teach PHP and Python - we teach good PHP and Python Practice! - (2013-06-18) 
Test Driven Development in Python - Customer Comes First - (2013-05-16) 
Seamless, integrated IT - we have a long way to go! - (2013-04-11) 
Web and console - same principle, same code - Ruby example - (2013-02-14) 
Lesson 1 in programing - write clean, reuseable and maintainable tidy code - (2012-12-16) 
Storing your intermediate data - what format should you you choose? - (2012-11-20) 
From Structured to Object Oriented Programming. - (2012-10-02) 
Object oriented or structured - a comparison in Python. Also writing clean regular expressions - (2012-03-26) 
Some terms used in programming (Biased towards Python) - (2011-12-12) 
Dark mornings, dog update, and Python and Lua courses before Christmas - (2011-12-10) 
What order are operations performed in, in a Perl expression? - (2011-12-07) 
Stepping stones - early coding, and writing re-usable code quickly - (2011-09-24) 
Coding efficiency - do not repeat yourself! - (2010-11-02) 
An introduction to file handling in programs - buffering, standard in and out, and file handles - (2010-09-21) 
Looking up a value by key - associative arrays / Hashes / Dictionaries - (2010-08-11) 
Program for reliability and efficiency - do not duplicate, but rather share and re-use - (2010-07-19) 
Improving your function calls (APIs) - General and PHP - (2010-04-24) 
And and Or illustrated by locks - (2010-01-17) 
Do not copy and paste code - there are much better ways - (2009-12-26) 
The music of the stock market - (2009-11-22) 
Variable names like i and j - why? - (2009-09-22) 
Planning! - (2009-08-08) 
Learning to write high quality code in Lua - (2009-07-30) 
Where do I start when writing a program? - (2009-06-11) 
Pre and post increment - the ++ operator - (2009-02-03) 
I have not programmed before, and need to learn - (2009-01-19)
Some other Articles
Dynamically watching your web site via a PHP wrapperGraham Ellis - Summary of Training RecordMelksham to Calne by public transportMelksham Chamber of Commerce - Presidents report to AGMEasy - but for whom?Carrying a long URL around - looking for memorable shortsBack from a Python course in GlasgowOptional and named parameters to Python functions/methodsRunning operating system commands from your Python programPython decorators - your own, staticmethod and classmethod