>I continue to be impressed by the very important role that understanding
>of the application for which a program is written plays in writing
>successful program, ones that actually get used.

Within small development groups application knowledge is king.
Programming knowledge is almost an after thought.

This is easily illustrated by looking at the code such people write.
They often tend to use a small subset of the language in a particular way.
Such usage is far from optimal.  But it serves it purpose and the gains
from concentrating on the application domain are often much greater than
learning to be a better programmer.  The code is likely to look like
typical student programs (perhaps better commented).  It is obvious that
programming skill development has almost stopped.

Within groups of people who have worked together for several years it
is often possible to detect a common style.  People have talked among
themselves and migrated to a common subset that they all understand.  The
lack of understanding of the language can at times be almost staggering.

This state of affairs used to worry me (I believed that people should
know how to use the language they programmed in).  But looking at the
issue in economic terms the current state of affairs is probably close
to optimal.  The application developers have chosen to spend their time
learning what is important to produce an end product.  An application
that performs as required by its users.

Of course these development groups do dig a number of holes for
themselves.  In many cases they never need to get out of these holes
and life goes on.  For instance these applications are rarely portable.
So what?  In economic terms it is cheaper to pay a lot more to have
those applications ported that need to be (a small number) than pay a
little bit more for every application (most of which are never ported).

>This is not to say that there are not programming skills in their own
>right.

Compiler writing is a good case where pure programming skills are often needed.

Scenario:  Big important customer has just upgraded to the latest
version of compiler.  Their conquer_the_world application no longer
runs when built.  Where does the fault obviously lay (with the company
being paid the money, where else).  Source is top secret (it wouldn't
do to let everybody know they used single letter variable names).
Hapless flunky dispatched....

In cases like this my experience is that it is best to ignore the
application domain completely.  A simply binary chop (keep cutting the
source in half, throwing away the bit that doe snot exhibit the problem)
will quickly narrow down the search area.  Then it's a matter of studying
their usage patterns looking for gray areas (language standards do
not fully define every construct, some are left intentionally as an
implementation choice, an application may make assumptions about how
an implementation will behave, which changes with a new release; ergo
common reason for nonworking program).



derek

--
Derek M Jones                                                  tel: +44 (0) 
1252 520 667
Knowledge Software 
Ltd                                     mailto:[EMAIL PROTECTED]
Applications Standards Conformance Testing       http://www.knosof.co.uk

Reply via email to