Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!watmath!clyde!rutgers!husc6!talcott!necntc!mirror!cca!g-rh From: g-rh@cca.UUCP (Richard Harter) Newsgroups: net.cse Subject: Re: Role of computer science Message-ID: <10706@cca.UUCP> Date: Sun, 26-Oct-86 15:06:28 EST Article-I.D.: cca.10706 Posted: Sun Oct 26 15:06:28 1986 Date-Received: Tue, 28-Oct-86 01:12:00 EST References: <10529@cca.UUCP> Reply-To: g-rh@cca.UUCP (Richard Harter) Organization: Computer Corp. of America, Cambridge Lines: 129 In article <> coatta@utcsri.UUCP (Terry Coatta) writes: > >It is true that I do not know much about the industry (nor will I likely >ever since I rather like the academic environment). However, I did not >exagerrate what we were told. The people we had in to talk to us were >very blunt -- we want programmers that DO WHAT THEY ARE TOLD -- NO room >for personal freedom. Well, you were there and I wasn't, so I'll have to take your word for it. Again, if the people talking to you were from IBM Cobol shops and MIS departments, I wouldn't be terribly surprised -- some of those places are (from my viewpoint) horrid places. The daughter of a good friend of mine who was business programmer/systems analyst just said goodbye to ten years experience in the field on the grounds that it was utterly destructive to her as a way to live. My experience is in engineering R/D and scientific applications. I've worked as a principal investigator, with principal investigators, as part of a large systems group, as a numerical analyst, as an applications programmer, as a software manager, and (these days) as a company president. My experience doesn't match what you've been told. Granted that you have to work on what you have been hired to work on, but that is only reasonable. However, to be fair, I would not have (and have never had to) worked for any place that squatted on you. My observation is that if you are capable and productive then you have a lot of leeway in writing your own ticket. > >As for passing on misconceptions to students I say nothing about industry >at all -- I confine myself to trying to teach them how to approach >problems, and how to translate their solutions into good code. You noted >that there were diffrences between the academic style of programming and >the "production quality" style of programming, and I agree by and large >with your distinctions. I'm even willing to go so far as to agree >that academics shoulld be aware of the differences, but NOT that they >should be required to teach the other style. In computer science >what matters is that you can think up a good solution to a problem, >and that you can translate that into good code, not that you can >produce a product that XXX company can make a fortune on. If part of >the problem you are given is that you have to work in teams, then part >of a good solution is to ensure that your code integrates nicely >with the system. Similarly if part of the problem description stipulates >that a good user interface is required, then that must be part of the >solution. These are not global concerns to be applied to everything >the student does -- it they tried we'd never have enough time to get >around to things that do matter for academics, like analyzing algorithms, >doing the group theory related to numerical analysis, doing the >probability theory related to LANs, etc. You make some good points. As somebody said, there is only so much time in a college program. There isn't time to give someone ten years industrial experience in four years of college and it shouldn't be attempted. > >I think the large difference between our viewpoints is that you want >computer science to be like engineering -- fill them up with the >formulas, rules and techniques that will produce practical results -- >I want scientists and experimenters -- give them the background >and the theory they'll need to explore the unknown territory of >computer science. The world needs both types of people, but >to force the values of one grop on the other is wasting peoples >time, and I think its pretty clear which set of values I think >belong at the university. > Well, no, I don't want computer science to be like engineering. I simply feel that most of the people who are taking computer science should be taking software engineering, because most of them are going to go out and get jobs as software engineers and they have an inappropriate background if they are computer science graduates. Computer science should be *science* not engineering. [Not that I am convinced that computer science or software engineering is the right background for software people -- the best people seem to have things like an English major with a physics minor.] I would also take exception to the notion that you teach engineering by filling them up with formulas, rules and techniques that will produce practical results. This is a fallacy. A good engineer (of whatever variety) should have a very solid and thorough understanding of basics. There are formulas, etc., that you should be able to apply automatically. However most of that sort of thing is stuff that you can look up -- and that is one of the more important things that an engineer does is look things up. The basics tell you how to evaluate what you are looking up. The engineer does not have to invent algorithms (although they do, liberally); it will suffice if she can locate the algorithm (preferably several) and select the appropriate one. They difference between engineering and science, if you will, is that engineering uses algorithms, science investigates them. [We are talking SE and CS here.] A good SE ought to be able to do the science when necessary; however the ultimate object is utilitarian. As you note, global concerns are part of engineering. What does it cost? How does it fit in with everything else? Etc. Algorithm X is O(n log n) whereas algorithm Y is O(n^2); however algorithm X is expensive to implement and algorithm Y is cheap. What are the tradeoffs? Now I am not criticising CS departments for not teaching these things; science says "what is it?" and engineering says "how do I get the job done?". It may be the case, as I have argued, that most CS students should be taking SE, and that most CS departments should be SE departments. However I am not very sure about that; it has been my observation that the best engineers have the best theoretical background -- that 'practical' training tends to be a dead end. So maybe potential SE's should be taking CS. But then, again, as I have noted there are a lot of problems with a CS degree. A lot of students come out of the colleges with bad attitudes, unrealistic expectations, and useless knowledge. [Then again, some of this is just youth, as distinct from my generation which has bad attitudes, avaricious expectations, and obsolete knowledge.:-)] Part of the problem is that a good SE has to be a generalist; you should be able to talk physics to physicists, EE to EE's, etc. Broadness, rather than narrowness, is of the essence. Then again, these are my prejudices based on my window into the world. I like the pursuit of knowledge for its own sake. I also like creating things that people will actually use; making two blades of grass grow where one grew before, so to speak. I have had a nice piece of both worlds, and I have rather enjoyed it. But that which has worked for me and seems to be true in the world that I observe may not be true in general, so take it all with as many grains of salt as you like. -- Richard Harter, SMDS Inc. [Disclaimers not permitted by company policy.] For Cheryl :-)