Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Posting-Version: version B 2.10.2 9/18/84; site peora.UUCP Path: utzoo!watmath!clyde!burl!ulysses!mhuxr!mhuxt!houxm!hjuxa!petsd!peora!jer From: jer@peora.UUCP (J. Eric Roskos) Newsgroups: net.singles Subject: Re: Titles Message-ID: <1999@peora.UUCP> Date: Wed, 5-Mar-86 15:44:40 EST Article-I.D.: peora.1999 Posted: Wed Mar 5 15:44:40 1986 Date-Received: Fri, 7-Mar-86 06:24:41 EST References: <4514@kestrel.ARPA> <3407@nsc.UUCP> <276@sdcc7.UUCP> <499@tekig5.UUCP> <283@sdcc7.UUCP> <9397@ritcv.UUCP> Organization: Concurrent Computer Corporation, Orlando, Fl Lines: 99 I started reading this series of articles just now because our system was down, I hadn't read net.singles in awhile, and it said the subject was "Titles", something I am always interested in because people usually call me by my title only in jest, which annoys me, though I don't usually say anything about it. But it turned out to be much more interesting than that... since it was the old debate of "is someone with a CS degree better than an experienced person without"? Well, when I started out in this field, years ago, I didn't have any degrees and didn't have any formal education in CS, only in "Biological Sciences". However, I had learned a great deal, due to devoting all my time to programming computers, disassembling an OS on an old PDP-8, and other "hacker" amusements. At that time, I thought I knew a lot. Looking back at my old programs, and even just at the things I did by brute-force effort, probably I did, and they are things that, now that I am older, I probably would not be able to do (without some strong motivation) simply because they are so tedious... and I suppose I gained a lot of intuitive feel for a lot of computer science topics in the process -- I can recall, for example, that I figured out the nature of "structured programming" (as it was called at that time) as a result of studying the flow of execution of my programs, and when I eventually read about it, immediately it made intuitive sense -- something that I see missing even in many CS graduates today, who know what things are, but don't know why. Fortunately, I eventually went to graduate school for many years. I can recall in particular a "Programming Languages" course I had to take during my first semester, and how I wrote several long essays on programming philosophy on homework problems and take-home tests, because some things being taught in the courses seemed "wrong" at the time. In retrospect, as I was thinking not too long ago, I am gravely embarassed to have written such things. I recall that the instructor for the course, a graduate student who I knew because he had gone to the same liberal arts college I attended as an undergraduate, never commented on these essays. Possibly he knew I'd change, in time, or possibly it was because all my programs always did a lot of extra stuff and I always got A's on them so he thought I was just a little eccentric. But I did change. And now, years (and I do mean years) of CS courses later, I find myself in a similar sort of dilemma, just from the other side. Here in the real world I see programmers, especially new ones just out of college, blindly confident in their skill and programming prowess; and I see them make grave mistakes, and although they ultimately see the mistakes (this being the way you gain experience), often I find it *impossible* to convince them before hand! Why? Well, sometimes there is no pure CS theory that determines what is a good program, and even if there is, often it is not explainable to someone who is not familiar with Computer Science. Ultimately there is an amalgam of experience and science which comprises good programming practice, and the design of good algorithms, and even just simple elements like programming style. Opposing experience and science, too, is a sense of "wizardry," essentially a social phenomenon, consisting of a general understanding of "the way other wizards do it," combined with sufficient knowledge of trivia to demonstrate a sort of prowess over those less familiar with that particular field of trivia. People who complain that Computer Science per se doesn't make good programmers are in some sense right, for it is just a part of the whole nature of programming. Computer Science is not even a source of ultimate answers to most questions; it is far from a closed body of knowledge. I recall in my own graduate research (which involved the demonstration of a purported flaw in current models of Von Neumann machines, and of what good and bad things happened when you eliminated it) how many people with advanced CS degrees disagreed with it, and how many asked "what's it good for?" Thus these "titles" and degrees do not in themselves convey any ultimate knowledge; Computer Science is a young science, and probably at the moment even has phlogiston theories of its own still accepted in it. Yet the idea that one has reached some sort of ultimate skill when one can do "neat tricks" and can use obscure features of a machine or language is a major problem today, a major source of friction in the "real world" in solving nontrivial problems. It is suitable that the term "wizards" is often used in this context, because it is indeed wizardry, nothing more. When I was a graduate student, my department chairman (a very wise and famous automata theorist, who was the Major Professor of one of the two creators of Unix) had the philosophy that one should teach one's graduate students humility; indeed, some aspects of the process of attaining the higher degrees were designed exactly to show the student how broad and complex the field of Computer Science was, and how impossible it was to know all of it in depth. This was a wise thing to do. My point is that there is no substitute for experience, but experience spans both the practical and the theoretical. Arguments that one approach or the other alone is enough make little sense. Above all, one should have humility. One should not aspire to be a "wizard". There are far better things to be. -- UUCP: Ofc: jer@peora.UUCP Home: jer@jerpc.CCUR.UUCP CCUR DNS: peora, pesnta US Mail: MS 795; CONCURRENT Computer Corp. SDC; (A Perkin-Elmer Company) 2486 Sand Lake Road, Orlando, FL 32809-7642 LOTD(5)=O ---------------------- Amusing error message explaining reason for some returned mail recently: > 554 xxxxxx.xxxxxx.ATT.UUCP!xxx... Unknown domain address: Not a typewriter (The above message is true... only the names have been changed...)