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.  My claim is that really
outstanding programs are written by programmers who fully understand the
application for which the program is being used, including those parts
of it that are not being automated.

For anything but the simpliest application areas, a specification that
could be implemented by programmer with no application knowledge would
either take an uneconomical amount of time to write or would be so huge
that it would take an uneconomical amount of time for the programmers to
read and understand.  In any case, the only people who could write such a
spec would probably be expert programmers with almost expert application
knowledge so that they can understand what application experts are saying.

Given this view, a large part of programming wisdom is application
knowledge.  For example, a really good programmer for petroleum well log
applications knows implicitly that the highest depth indices and the low
numbered time stamps are always near the beginning of the data file.
This fact influences the organization of their code, the naming of
variables, how they construct test data, etc.  It is something they learn
early in their careers and don't have to relearn for each new application.
Having to learn and remember this knowledge requires effort on the part
of programmers new to this application.

(In my industrial programming experience, it is application knowledge
that is most often the barrier to successful software development.
On our team, it has required a significant effort to bring programmers
up to speed in the application.  Until they are, they can, at best, be
used as junior coders, working under the close supervision of someone
more senior.  It is usually much easier to take some one who has the
necessary application knowledge but doesn't know the right programming
languages and get them up to speed on the language.)

This is not to say that there are not programming skills in their own
right.  After all, most physicians or petrophysicists or mechanical
engineers aren't  expert software developers after their first self
study course in Visual Basic.  What I am saying is that a substantial
component of software expertise is in the translation from application
requirement to software structure, and that this expertise needs to be
included as a major feature of any cognitive model of programming.

Ruven Brooks



begin 600 Ruven Brooks (E-mail).vcf
M0D5'24XZ5D-!4D0-"E9%4E-)3TXZ,BXQ#0I..D)R;V]K<SM2=79E;@T*1DXZ
M0G)O;VMS+"!2=79E;@T*3U)'.CM$:6%G;F]S=&EC<R`F(%-I;75L871I;VX-
M"DY/5$4Z0W5R<F5N=&QY(&%C8V5S<V5S($5X8VAA;F=E(&9R;VT@02U"($U+
M10T*5$5,.U=/4DL[5D])0T4Z-#$T+C,R."XR,C$P#0I%34%)3#M04D5&.TE.
M5$523D54.E)%0G)O;VMS0'-O9G1W87)E+G)O8VMW96QL+F-O;0T*4D56.C(P
;,#`P-C`Q5#$W,#`R-%H-"D5.1#I60T%21`T*
`
end

Reply via email to