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