Path: utzoo!utgpu!jarvis.csri.toronto.edu!mailrus!csd4.csd.uwm.edu!bionet!ig!arizona!gudeman From: gudeman@arizona.edu (David Gudeman) Newsgroups: comp.lang.misc Subject: Re: Non-professional programmers (was: Which language to teach first?) Message-ID: <13573@megaron.arizona.edu> Date: 29 Aug 89 22:32:08 GMT Organization: U of Arizona CS Dept, Tucson Lines: 48 In article <5868@ficc.uu.net> peter@ficc.uu.net (Peter da Silva) writes: >In article <13380@megaron.arizona.edu>, gudeman@arizona.edu (David Gudeman) writes: >> Would you expect an electrical >> engineer to design a car? A mechanical engineer to design a microchip? >> If not, then don't expect either one to design software either. > >What about problems that are well understood by the mechanical engineer >and poorly understood by the software engineer? While the mechanical >engineer's program is likely to be less efficient, it's more likely to >actually produce the correct result. Which is, after all, the bottom line. It seems that I didn't express myself very well in the original article. I was refering to the practice many groups have of hiring non-software engineers to do software engineering. They seem to think that anyone who "knows how to program" is a competent software engineer. I only meant to say that _that_ assumption is no longer true, as it probably was twenty years ago. I "know how to design an I.C.", but anyone who hired me to do it would be foolish. On the other hand, it would be completely reasonable to hire me to consult in the design of a new architecture aimed at specific software. As far as formal education, I hate to sound "arrogant", but I've seen the work of some people who had lots of experience in programming with little formal education. It wasn't pretty. My reaction cannot be professional bigotry because in most of the cases I learned the programmer's background _after_ I had formed a rather low opinion of their programming ability. My experience is rather limited and may not be typical, but it stands to reason that there is a lot of information about software engineering that will not be "picked up" on the job (except by geniuses and people who do a lot of professional reading). But to be honest -- I've not always been impressed with the quality of work done by "trained professionals". And I never meant to imply that non-professionals should not be taught to program. That would be as silly as saying they should not be taught mathematics. I _do_ think their programming education should center around very high-level languages that do most of the grunt work for them. Just as engineers are not required to learn (much) meta-mathematics, they should not be required to learn about memory organization, registers, and machine instructions. If a program is so time critical that it has to be written in a low-level language like FORTRAN, C, or Ada, then it should probably be written by a professional. -- David Gudeman Department of Computer Science The University of Arizona gudeman@arizona.edu Tucson, AZ 85721 {allegra,cmcl2,noao}!arizona!gudeman