gls@odyssey.ATT.COM (g.l.sicherman) (04/30/89)
> Suppose it is 5 years in the future - 1995 [sic]. You have been > promoted. You are recruiting someone to join your team of "Soft- > ware Engineers." The applicants all have a B.S. in "Software Engi- > neering." --What skills and knowledge do they all have? ... [Long > list of possibilities] Real programmers spend 90% of their time debugging. Computer science curricula ignore debugging, perhaps because it can never be reduced to a theory. But debugging skills are what I would look for *first.* (By the way, I am using "software engineer" as synonymous with "programmer." Separating design from implementation is usually a mistake; ask the DoD.) Other skills I would look for: 2. The ability to "port" software. This is an acid test for distinguishing able programmers from mere C.S. grads. 3. The ability to maintain somebody else's code. Most C.S. students have no experience in this. 4. The ability to work from specifications. This includes getting them changed when they need it, and filling gaps by making inquiries or using your own judgment. 5. The ability to write software with clean, convenient user interfaces. A good programmer can "see" his software from the user's viewpoint and write for the user's benefit. 6. The ability to write adequate user documentation. See 4. 7. Experience with a variety of languages, environments, and methods. Not that this experience will necessarily prove useful, but it shows that the programmer is versatile, and probably understands some of the underlying principles of software environments. By the same token, beware of dogmatism; a programmer with an antipathy to Pascal, COBOL, or VAX/VMS may have a stiff neck. A programmer who stops learning is technologically obsolete. -- Col. G. L. Sicherman gls@odyssey.att.COM
periklis@ecrcvax.UUCP (Periklis Tsahageas) (05/02/89)
Flame on ! In article <854@odyssey.ATT.COM> gls@odyssey.ATT.COM (g.l.sicherman) writes: >> Suppose it is 5 years in the future - 1995 [sic]. You have been >> promoted. You are recruiting someone to join your team of "Soft- >> ware Engineers." The applicants all have a B.S. in "Software Engi- >> neering." --What skills and knowledge do they all have? ... [Long >> list of possibilities] > >Real programmers spend 90% of their time debugging. Computer science Real software engineers spend 100% of their time trying to reduce the time programmers spend on debugging. >curricula ignore debugging, perhaps because it can never be reduced >to a theory. But debugging skills are what I would look for *first.* >(By the way, I am using "software engineer" as synonymous with "programmer." Great mistake, sounds like a voice from the past. >Separating design from implementation is usually a mistake; ask the DoD.) Seperating design from implementation is one of the greatest advances in the field of software engineering (borrowed/stolen from other engineering disciplines). Have you heard of something called data abstraction ? ADT's ? > >Other skills I would look for: > > list of skills deleted > I, absolutely, agree. They are all necessary for a programmer. >Col. G. L. Sicherman >gls@odyssey.att.COM I think software engineering degrees are an attempt by the academia, supported by the software engineering industry, to evolve the craft of current software manufacture into an enginneering discipline. Of course, this is a third year student of Software Engineering (M.Eng.) at Imperial College, London, speaking. -- Periklis Andreas Tsahageas European Computer-Industry Research Centre Arabellastrasse 17, D-8000 Muenchen 81, West Germany +49 (89) 92 69 91 09 USA: periklis%ecrcvax.uucp@pyramid.pyramid.com ...!pyramid!ecrcvax!periklis Europe: periklis@ecrcvax.uucp ...!unido!ecrcvax!periklis
perry@apollo.COM (Jim Perry) (05/02/89)
In article <854@odyssey.ATT.COM> gls@odyssey.ATT.COM (g.l.sicherman) writes: > >Real programmers spend 90% of their time debugging. Computer science >curricula ignore debugging, perhaps because it can never be reduced >to a theory. But debugging skills are what I would look for *first.* >(By the way, I am using "software engineer" as synonymous with "programmer." >Separating design from implementation is usually a mistake; ask the DoD.) Unfortunately I believe real debugging skills can only acquired with experience. You can teach techniques for writing relatively bug-free code, the hard part is when you have to debug someone else's code (or spec/interface, whatever). I generally have confidence that my code will do what I intend, but can still have a good time tracking down a subtle bug in the compiler or OS. There's a leap of faith in believing that compilers *have* bugs, the sad realization that most "compiler bugs" aren't, and finally the ability to track down the real ones. >Other skills I would look for: > >2. The ability to "port" software. This is an acid test for distinguishing > able programmers from mere C.S. grads. A lot of this could and should be taught, in the hypothetical S.E. curriculum. >3. The ability to maintain somebody else's code. Most C.S. students have > no experience in this. And the flip side, the ability to write code that can be maintained by somebody else with a minimum of difficulty. There's a trade-off here, in that a programmer in an environment where high standards of maintainability are followed can be at a loss when presented with a more real-world poorly documented program, while a programmer very adept at maintaining bare- bones code may not appreciate the value of the additional work involved in (structuring, documenting, modularizing) code. > >4. The ability to work from specifications. This includes getting them > changed when they need it, and filling gaps by making inquiries or > using your own judgment. > >5. The ability to write software with clean, convenient user interfaces. > A good programmer can "see" his software from the user's viewpoint > and write for the user's benefit. > >6. The ability to write adequate user documentation. See 4. Where "user" under 5 and 6 refers not just to an end user of an application but also clients of libraries, etc. >7. Experience with a variety of languages, environments, and methods. > Not that this experience will necessarily prove useful, but it shows > that the programmer is versatile, and probably understands some of > the underlying principles of software environments. By the same token, > beware of dogmatism; a programmer with an antipathy to Pascal, COBOL, > or VAX/VMS may have a stiff neck. A programmer who stops learning > is technologically obsolete. AMEN. (I have more follow-up material on this but it's getting long so I'll post it separately). -- Jim Perry perry@apollo.com Apollo Computer, Chelmsford MA This particularly rapid unintelligible patter isn't generally heard and if it is it doesn't matter.
render@m.cs.uiuc.edu (05/03/89)
The Colonel gives a good list of skill requirements for software engineers, but I'll be damned if I know how you can judge someone's ability on this kind of stuff unless you've watched them do it. Debugging is something they all should have done on programming assignments, but how do you rate debugging skill? Most undergrads won't have done any porting unless they had some system programming job. Maintenance covers porting and upgrades, but this is also something you don't get anywhere except on a job. Working from specs they should be able to handle; a programming assignment is nothing if not a spec, albeit a poorly worded one. Designing a good user interface is a science in itself, and should be taught as a separate class (or a big part of some other class). Ditto for writing docs. I think that a good CS program will give them some variety of languages and systems (I'd tried 6 or 7 languages by the time I got out of ugrad), and it's easily checked. As I said, a good list, but hard to check. I know the ACM has been working on a core curriculum for undergraduate CS education. Does anyone know how much software engineering is included? Hal Render render@cs.uiuc.edu | uiucdcs!render
gls@odyssey.ATT.COM (g.l.sicherman) (05/03/89)
Dr Hubert Matthews at CERNvax has privately sent me the following note. Since there's nothing here that calls for privacy (is there ever?), I'm restoring the discussion to the public. > From uunet.UU.NET!mcvax!cernvax!hjm Tue May 2 18:43:36 +0200 1989 > > 90%? What sort of programmers do you know? Perhaps the first thing > they should do is learn to write better code in the first place and > reduce that to 50%, or preferably a lot less. Try a course in formal > methods and specifications and see if that doesn't improve things. > Also, try teaching programmers about program testing; if you know the > most common ways that programs fail, then you can avoid those pitfalls > from the start. > > I'm not a CS type. I happen to know about such things as formal > methods, pre- and post-conditions and loop invariants &c., formal > specifications and the like. I also know how to write the most > gawd-awful twisted assembler and get the last drop of performance out > of the machine. I'm an engineer by trade and by training - that's why > I carry the title of Doctor with pride. > > So, get some better programmers, or train your existing ones. Thanks for your note. Indeed, the programmers on my project probably don't spend more than 50% of their time testing and debugging. It depends on where we stand in the development cycle. I do not share your faith in formal methods or methodologies. To me, the work of programming consists of weaving order with chaos. The amount of work to be done is a constant. No amount of external organization or systematic analysis will reduce the need for application and holistic attention, because chaos is unsystematic. The act of programming is a metaphor for the act of living. Still, I wouldn't mind having a better language to code in...! -- Col. G. L. Sicherman gls@odyssey.att.COM
djones@megatest.UUCP (Dave Jones) (05/03/89)
From article <854@odyssey.ATT.COM>, by gls@odyssey.ATT.COM (g.l.sicherman):
> Real programmers spend 90% of their time debugging.
Gack!! The mind boggles.
Who's making all those mistakes? Certainly not a "real programmer".
campbell@redsox.bsw.com (Larry Campbell) (05/03/89)
In article <854@odyssey.ATT.COM> gls@odyssey.ATT.COM (g.l.sicherman) writes:
-
-Real programmers spend 90% of their time debugging. Computer science
-curricula ignore debugging, perhaps because it can never be reduced
-to a theory. But debugging skills are what I would look for *first.*
-(By the way, I am using "software engineer" as synonymous with "programmer."
Nonsense. "Software engineer" is not synonymous with "programmer". One of
the differences between a software engineer and a programmer is that, while
a programmer probably does spend 90% of his time debugging, a software
engineer spends, maybe, 25% of his time debugging. Furthermore, a programmer
thinks that spending 90% of his time debugging is perfectly natural, while a
software engineer knows that nearly all bugs are fundamentally preventable,
and that each bug in his code represents a personal failing, to be learned
from and avoided next time around.
--
Larry Campbell The Boston Software Works, Inc.
campbell@bsw.com 120 Fulton Street
wjh12!redsox!campbell Boston, MA 02146
djones@megatest.UUCP (Dave Jones) (05/04/89)
From article <716@ecrcvax.UUCP>, by periklis@ecrcvax.UUCP (Periklis Tsahageas): > Flame on ! > > In article <854@odyssey.ATT.COM> gls@odyssey.ATT.COM (g.l.sicherman) writes: >>(By the way, I am using "software engineer" as synonymous with >>"programmer." > Great mistake, sounds like a voice from the past. > True. I could not agree more. People who call themselves "software engineers" usually can't program worth squat. Give them five or ten years. They usually start calling themselves programmers about the time they start to catch on. I made the crossover about four years ago. (Part of a general ego-reduction plan. But you know how it goes... It's easy to take it off. It's keeping it off that's the problem.)
sean@lfcs.ed.ac.uk (Sean Matthews) (05/04/89)
In article <855@odyssey.ATT.COM> gls@odyssey.ATT.COM (g.l.sicherman) writes: >Dr Hubert Matthews at CERNvax has privately sent me the following note. [point made in favour of Formal methods by the good Doctor (good on two counts: he shares a surname with me and he is in favour of formal methods - did you ever run into Jon by the way?)] >I do not share your faith in formal methods or methodologies. To me, >the work of programming consists of weaving order with chaos. The amount >Col. G. L. Sicherman >gls@odyssey.att.COM ^^^^^^^ I just what to clear up a point; isn't Odyssey Richard Platek's operation in Ithaca (sorry about the spelling) which specialises in mathematically verified software i.e., formal methods? Or has the good professor gone back to mathematical logic and left the field to the hackers? Se\'an
ccs013@castor.ucdavis.edu (Jason) (05/04/89)
In article <854@odyssey.ATT.COM> gls@odyssey.ATT.COM (g.l.sicherman) writes: >Real programmers spend 90% of their time debugging. Computer science >curricula ignore debugging, perhaps because it can never be reduced >to a theory. >2. The ability to "port" software. This is an acid test for distinguishing > able programmers from mere C.S. grads. >3. The ability to maintain somebody else's code. Most C.S. students have > no experience in this. and other atributes supposedly lacked by *>mere<* CS grads.... I do not mean to flame the writer of the inserted article, but..... I do not know what school you went to for your degree (or the schools of the people you hire) ....but it is unfortunate that, at that school, the CS students were taught SO poorly! Where I attend here at the University of California, Davis.... CS students FROM THE VERY START are taught the things that YOU say CS people just can't hack (no pun intended). I think that your statements were very close minded...and arrogant..... I apologize if I have offended you...but I believe an apology to those who ARE competent CS grads is due... Jason ccs013@castor.ucdavis.edu
ccs013@castor.ucdavis.edu (Jason) (05/04/89)
oh, by the by .... real CS's know software eng. AND what you boys say "programming (ers)" is (are).... JAson ccs013@csator.ucdavis.edu
hollombe@ttidca.TTI.COM (The Polymath) (05/04/89)
In article <39400019@m.cs.uiuc.edu> render@m.cs.uiuc.edu writes: }The Colonel gives a good list of skill requirements for software engineers, }but I'll be damned if I know how you can judge someone's ability on this kind }of stuff unless you've watched them do it. Debugging is something they all }should have done on programming assignments, but how do you rate debugging }skill? ... On one job interview I brought along a sample. I showed them two listings of a program I'm currently responsible for. The first was the one I got when I took over maintenance of the (extremely buggy) code. The second is what the code looks like now (bug free, as far as I know). Don't know if it helped, but they were on the point of hiring me when the job got moved from Berkeley to Boston. Oh, well. -- The Polymath (aka: Jerry Hollombe, hollombe@ttidca.tti.com) Illegitimati Nil Citicorp(+)TTI Carborundum 3100 Ocean Park Blvd. (213) 452-9191, x2483 Santa Monica, CA 90405 {csun|philabs|psivax}!ttidca!hollombe
hollombe@ttidca.TTI.COM (The Polymath) (05/04/89)
In article <855@odyssey.ATT.COM> gls@odyssey.ATT.COM (g.l.sicherman) writes: }Thanks for your note. Indeed, the programmers on my project probably }don't spend more than 50% of their time testing and debugging. It }depends on where we stand in the development cycle. Perhaps we have a semantic quibble here. The usual figure quoted is a system will spend ~70% of its life in maintenance mode. Maintenance is much more than debugging. It includes enhancement and making the program do what the customer wants it to do, after you've made it do what they asked for it to do. Given that, it's not unreasonable to expect most programmers to spend 70% of their time maintaining existing software, as opposed to creating new software from scratch. -- The Polymath (aka: Jerry Hollombe, hollombe@ttidca.tti.com) Illegitimati Nil Citicorp(+)TTI Carborundum 3100 Ocean Park Blvd. (213) 452-9191, x2483 Santa Monica, CA 90405 {csun|philabs|psivax}!ttidca!hollombe
cs132046@brunix (Garrett Fitzgerald) (05/04/89)
In article <854@odyssey.ATT.COM> gls@odyssey.ATT.COM (g.l.sicherman) writes: >3. The ability to maintain somebody else's code. Most C.S. students have > no experience in this. The second assignment in CS132 this year was to rewrite UNIX's file command so that it recognized Pascal. (I would advise against trying to read file.c--it could be hazardous to your health!) >[The ability to work from specs] That was another of our assignments--we had to write our own specs for a "Breakout" program, but then we had to code the specs they gave us. >6. The ability to write adequate user documentation. See 4. Writing the ExDoc was a major part of our final project. >7. Experience with a variety of languages, environments, and methods. One of the few failings of the department here. We do almost all of our programming assignments on Suns, with various different interfaces for the different courses. CS132 (Intro to S.E.) uses X, CS4 uses an environment called Passe`, CS12 uses yet another...If we ever have to deal with MS-DOS and PC-XT's, we could be in trouble... -------------------------------- Campus Crusade for Cthulhu--when you're tired of the lesser of two evils. Sarek of Vulcan, a.k.a. Garrett Fitzgerald cs132046@brunix or st902620@brownvm.bitnet
db@lfcs.ed.ac.uk (Dave Berry) (05/05/89)
In article <42fba1e1.183dc@apollo.COM> perry@apollo.COM (Jim Perry) writes: > >Unfortunately I believe real debugging skills can only acquired with >experience. You can teach techniques for writing relatively bug-free >code, the hard part is when you have to debug someone else's code (or >spec/interface, whatever). I read several books and articles on debugging as background for my thesis. I would recommend "Debugging C", by Robert Ward, published by Que corporation. ALthough it focuses on C on micros without sophisticated environments, Ward has enough useful ideas of a general nature to make this worth reading by people learning to program in most languages and environments. Ward does some teaching, and does teach people how to debug. He claims that his best pupils are those who can both design well and debug well. "You never smile, you know it wouldn't look right. 'Cause your dentures glow in ultra-violet light..." Dave Berry, Laboratory for Foundations db%lfcs.ed.ac.uk@nsfnet-relay.ac.uk of Computer Science, Edinburgh Uni. <Atlantic Ocean>!mcvax!ukc!lfcs!db
gls@genesis.ATT.COM (g.l.sicherman) (05/06/89)
In article <1916@etive.ed.ac.uk>, sean@lfcs.ed.ac.uk (Sean Matthews) writes: < I do not share your faith in formal methods or methodologies. To me, < the work of programming consists of weaving order with chaos. ... < --gls@odyssey.att.COM > > I just what to clear up a point; isn't Odyssey Richard Platek's operation > in Ithaca (sorry about the spelling) which specialises in mathematically > verified software i.e., formal methods? Ha! I suppose this comes of abandoning the flat namespace. The "odyssey" I post from is a macromini used for routine software development. By the way, we have plenty of bugfree environments here at AT&T, mostly in telephone switching systems where the least bug is a disaster in the field. When you have to be that careful, productivity runs in tens of lines per month. As you can see from Jim Perry's story, a programming environment works very well if each programmer takes *complete* responsibility for her programs. I'm not against formal methods, either--so long as you don't rely on them! GIGO applies to programmers as well as data; good programmers feed themselves into their programs. -:- "Hey, Rocky! Watch me pull a UNIX program out of my source directory!" "AGAIN?" "Nothin' up my sleeve ... PRESTO!" IDENTIFICATION DIVISION. PROGRAM-ID. PROCESS-DATA. AUTHOR-NAME. B. T. MOOSE, FROSTBYTE DATA SYS. SOURCE-COMPUTER. IBM-7044. OBJECT-COMPUTER. IBM-7044. . . . "No doubt about it--I gotta get a new source directory!" -- G. L. Sicherman gls@odyssey.att.COM
warren@jove.cs.pdx.edu (Warren Harrison) (05/06/89)
Sure software engineers spend a great deal of their time debugging, coding, designing, etc. I think many of us are missing one VERY important activity (that software engineers COULD be prepared for in school) --- communicating. I find that many of my students (and many new programmers/software engineers I have worked with) have a very difficult time of communicating with others, both orally and in writing. In most of the projects I have been involved in, this skill was almost as important as programming since you always end up describing the system or the code or whatever to others. I don't necessarily mean you have to be able to write the great American novel, but when you get up in front of the other 20 people on the project and try and explain your part of the system (or worse yet, the system as a whole) and can't (or worse yet describe the *wrong* interface) you're in trouble. Most posters seem to do a pretty good job of it. Maybe if I require my students to post 3 messages to the net each term they'll improve??? Warren Warren Harrison CSNET: warren@pdx.edu Department of Computer Science UUCP: {ucbvax,decvax}!tektronix!psu-cs!warren Portland State University Internet: warren%pdx.edu@relay.cs.net Portland, OR 97207-0751
emuleomo@yes.rutgers.edu (Emuleomo) (05/07/89)
> Real programmers spend 90% of their time debugging. Computer science > curricula ignore debugging, perhaps because it can never be reduced > to a theory. But debugging skills are what I would look for *first.* > (By the way, I am using "software engineer" as synonymous with "programmer." > Separating design from implementation is usually a mistake; ask the DoD.) I must say that debugging skills, although important, are NOT AS IMPORTANT AS GOOD **SOFTWARE DESIGN** skills. In general, the amount of time required to debug a program, is INVERSELY PROPORTIONAL to the amount of time spent on the drawing board designing the program properly. Have you ever seen a civil engineer debugging a bridge after it has been built? Give me a disciplined designer anyday. Debugging is usually the result of haphazard work. -- Emuleomo O.O. ** Writing good, clean code is pure MAGIC. That's why it's so hard to do! **
render@m.cs.uiuc.edu (05/08/89)
Written 8:33 pm May 5, 1989 by warren@jove.cs.pdx.edu: >Sure software engineers spend a great deal of their time debugging, >coding, designing, etc. I think many of us are missing one VERY >important activity (that software engineers COULD be prepared for >in school) --- communicating. I find that many of my students (and >many new programmers/software engineers I have worked with) have a >very difficult time of communicating with others, both orally and >in writing. When I was an undergrad in CS, we were required to take at least two "communications" courses. They could be either public-speaking or rhetoric. They turned out to be among the most useful things I have studied with respect to application in later life. I've always thought that engineers in general have poor writing and speaking skills and should have higher expectations thrust upon them. As an aside, we were also required to take two management courses, something I have found very helpful in life but fairly uncommon in CS curricula. Hal Render render@cs.uiuc.edu
diamond@diamond.csl.sony.junet (Norman Diamond) (05/08/89)
In article <May.6.16.52.43.1989.2510@yes.rutgers.edu> emuleomo@yes.rutgers.edu (Emuleomo) writes: >Have you ever seen a civil engineer debugging a bridge after it has been built? I haven't personally seen a civil engineer work. However, I have read newspaper articles about bridges and various other structures that needed debugging after being built, that were debugged before being re-built, after falling apart. The real question is, why does it happen less often with bridges than with programs? Two answers that I know: 1. Engineering companies, government institutions, etc., generally have a better feel for the difficulties of other fields of engineering. They generally allow enough time for designs to be completed properly, and they occasionally reward good work instead of criticizing it. 2. There are fewer bridges than there are programs. -- Norman Diamond, Sony Computer Science Lab (diamond%csl.sony.co.jp@relay.cs.net) The above opinions are my own. | Why are programmers criticized for If they're also your opinions, | re-inventing the wheel, when car you're infringing my copyright. | manufacturers are praised for it?
cliff@ficc.uu.net (cliff click) (05/08/89)
In article <4642@goofy.megatest.UUCP>, djones@megatest.UUCP (Dave Jones) writes: > People who call themselves "software engineers" usually can't program > worth squat. I've produced 30000 to 35000 lines of code/year for the past 3 years that end up in income-producing products. I consider myself BOTH a programmer AND a Software Engineer. "People who post blanket statements should be Shot!" - me -- Cliff Click, Software Contractor at Large Business: uunet.uu.net!ficc!cliff, cliff@ficc.uu.net, +1 713 274 5368 (w). Disclaimer: lost in the vortices of nilspace... +1 713 568 3460 (h).
smiller@umn-cs.CS.UMN.EDU (Steven M. Miller) (05/09/89)
> In article <May.6.16.52.43.1989.2510@yes.rutgers.edu> emuleomo@yes.rutgers.edu (Emuleomo) writes: > > >Have you ever seen a civil engineer debugging a bridge after it has been built? > Sure. the brand new bridge in St. Paul MN over the Mississippi just buckled. The temporary solution was to put a bunch of concrete barriers on the bridge to push the buckled part back in line. Permanent solution is now being worked on. Or how about the freeway segment in my hometown that has a stoplight because the design accidentally had to off/on ramps connecting with one another? I'm sure there are hundreds of civil engineering projects that need or needed debugging. Software can be orders of magnitude more complex and commonly has to run on multiple hardware platforms. You're comparision seems to be between apples and oranges. -Steve -- -Steve Miller, U of MN
djones@megatest.UUCP (Dave Jones) (05/09/89)
From article <1146@psueea.UUCP>, by warren@jove.cs.pdx.edu (Warren Harrison): ... > I think many of us are missing one VERY > important activity (that software engineers COULD be prepared for > in school) --- communicating. > ... I did a two year stint as a visiting associate professor at a university in Ohio. When I told my students that communication skills were very important to programmers, they just flat out didn't believe me. I discovered that very few even owned a dictionary. So, I told them I would give the equivalent of a quiz grade of 100 to every student who would bring a dictionary to class. Only one student out of two sections brought in the book. A friend of mine who also taught there told me that if I didn't want to get into trouble, I better not do that again. Only the textbook committee could make requirements about which books students are required to have, he said.
jwb@LINDENTHAL.CAE.RI.CMU.EDU (John Baugh) (05/09/89)
In article <12701@umn-cs.CS.UMN.EDU> smiller@umn-cs.CS.UMN.EDU (Steven M. Miller) writes: >Software can be orders of magnitude more complex and commonly has to run on ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >multiple hardware platforms. You're comparision seems to be between As a once-practicing civil engineer, all I can say is `baloney'. (BTW, I have also worked on software projects of > 100,000 lines of Fortrash, so I at least have some experience on both sides.) Visit your friendly neighborhood consulting AE firm to get an idea of the number of people, specifications/requirements, etc. that must be coordinated in the design and construction of a real engineering product -- it's staggering. John Baugh --
rja@edison.GE.COM (rja) (05/09/89)
In article <4167@ucdavis.ucdavis.edu>, ccs013@castor.ucdavis.edu (Jason) writes: > and other atributes supposedly lacked by *>mere<* CS grads.... > > I do not mean to flame the writer of the inserted article, but..... > Nonsense. You read the article with a chip on your shoulder. Being a software engineer isn't a function of what the piece of paper says or the name of the department is. Here we have many software engineers and the degrees include EE, Physics, Math, CS, ... Now I think that the distinction between software engineers and programmers varies a lot because neither term is well-defined, but the posting made its terms reasonably clear.
shebs@Apple.COM (Stanley Todd Shebs) (05/10/89)
In article <4951@pt.cs.cmu.edu> jwb@LINDENTHAL.CAE.RI.CMU.EDU (John Baugh) writes: >In article <12701@umn-cs.CS.UMN.EDU> smiller@umn-cs.CS.UMN.EDU >(Steven M. Miller) writes: >>Software can be orders of magnitude more complex [...] > >As a once-practicing civil engineer, all I can say is `baloney'. >(BTW, I have also worked on software projects of > 100,000 lines >of Fortrash, so I at least have some experience on both sides.) >Visit your friendly neighborhood consulting AE firm to get an >idea of the number of people, specifications/requirements, etc. >that must be coordinated in the design and construction of a real >engineering product -- it's staggering. Comparing numbers of people or pounds of documentation is not necessarily valid. My personal impression from working alongside assorted engineers is that individuals tend to be more specialized in the traditional engineering disciplines. So for instance you might have somebody on a project that is concerned only with bolts, or electrical connectors, or maybe even with only a single oddly-shaped part made by a subcontractor. Many (most?) software people are in the opposite situation - they have to be concerned about all aspects of a 50K line program, and they rarely have the leisure to really understand the code proper, the design, the limitations, the consequences for other parts of a system, and so forth. Just imagine how different things would be if you only had to be responsible for, say, 1,000 lines of code and could spend a year working on it. You spend time analyzing it in depth, you could polish the documentation, you could tune it for optimum performance. Unfortunately such a situation is rarely possible in today's environment... Getting back to comparing bridges and programs, a more valid method might be to compare the information content of a program to that of a bridge (more accurately, to the size of its description). This would factor out sheer volume; 10,000 identical bolts aren't much more interesting than one bolt, ditto for code that is replicated in different parts of a program. Seems like at least one theorist would have looked at this in the past... stan shebs shebs@apple.com
djones@megatest.UUCP (Dave Jones) (05/10/89)
From article <4105@ficc.uu.net>, by cliff@ficc.uu.net (cliff click): > In article <4642@goofy.megatest.UUCP>, djones@megatest.UUCP (Dave Jones) writes: >> People who call themselves "software engineers" usually can't program >> worth squat. > I've produced 30000 to 35000 lines of code/year for the past 3 years that end > up in income-producing products. Wow. Fifteen lines an hour, eight hours a day, 250 days a year. Love those keyboard macros! :-) > I consider myself BOTH a programmer AND a Software Engineer. > These days, everybody's got to have a slash. Me? I'm a programmer- slash-wizard. But then there's a fellow here who, reversing the trend, just calls himself a "simple country programmer". > > "People who post blanket statements should be Shot!" - me > I confess that the irony in the above escaped me on first reading. But be fair! My blanket had a "usually"-hole in it. Besides, how do you know I'm not already shot?
schow@leibniz.uucp (Stanley Chow) (05/10/89)
In article <1736@internal.Apple.COM> shebs@Apple.COM (Stanley Todd Shebs) writes: > >Comparing numbers of people or pounds of documentation is not necessarily >valid. My personal impression from working alongside assorted engineers >is that individuals tend to be more specialized in the traditional engineering >disciplines. [...] Perhaps this is why engineer build bridges that work better than most programs! There may be a lession for budding software engineers. > [...] So for instance you might have somebody on a project that is >concerned only with bolts, or electrical connectors, or maybe even with only >a single oddly-shaped part made by a subcontractor. Many (most?) software >people are in the opposite situation - they have to be concerned about all >aspects of a 50K line program, and they rarely have the leisure to really >understand the code proper, the design, the limitations, the consequences >for other parts of a system, and so forth. [...] I would consider 50K lines to be a (very) small part of a big software systen or project. (No smiley). If one person cannot totally comprehand a small program like that, either the person or the method ought to be examined carefully. As I understand "software engineering", a good part of the effort is devoted to making systems modular and understandable. One may disagree with the specific approach - Ada, Modula-2, C++, etc., but the aim is valid. In big systems, even in small 50KLOC programs, it is important to partition the program into understandable chunks. S/W people call this module interface. The civil/mechanical engineers call this "specification". It would be nice if the mechanical engineer understood how stainless steel is made and what interesting reactions corode different steel, but it is not necessary to build a bridge. There are standards that gurantee N years of corodesion resistance as long as the exposure to corosive chemicals are within certain specific limits. The S/W analogy is like the mathmatics libraries. If you call this matrix inversion routine, you will get back a good inverse as long as the input matrix is not singular, etc. May be the answer is a mandotary course in "standard writing" for all software enginees. As someone said, "Software will be a science when programmers stand on each other's shoulders instead of each other's toes." [I would be grateful if someone can point to the originator of this] > [...] Just imagine how different things >would be if you only had to be responsible for, say, 1,000 lines of code and >could spend a year working on it. You spend time analyzing it in depth, you >could polish the documentation, you could tune it for optimum performance. >Unfortunately such a situation is rarely possible in today's environment... > Aside from a quibble with your scale, I agree with your goal. However, I like to think that some, if not most, software projects are run better than you make it out to be. If the situation is indeed as bleak as you say, then I would worry about the future of S/W, especially in the USA or North America. >Getting back to comparing bridges and programs, a more valid method might be >to compare the information content of a program to that of a bridge (more >accurately, to the size of its description). This would factor out sheer >volume; 10,000 identical bolts aren't much more interesting than one bolt, >ditto for code that is replicated in different parts of a program. Seems >like at least one theorist would have looked at this in the past... > > stan shebs > shebs@apple.com This is a subject that has interested me over the years. Let's say I make a copy of a matrix addition routine, change it to do subtraction, how much information have I added? What metrics can we use? Is it possible to determine which programs are copies of each other? Stanley Chow BitNet: schow@BNR.CA BNR UUCP: ..!psuvax1!BNR.CA.bitnet!schow (613) 763-2831 ..!utgpu!bnr-vpa!bnr-fos!schow%bnr-public I am just a small cog in a big machine. I don't represent nobody.
piet@cs.ruu.nl (Piet van Oostrum) (05/10/89)
In article <12701@umn-cs.CS.UMN.EDU>, smiller@umn-cs (Steven M. Miller) writes: `> In article <May.6.16.52.43.1989.2510@yes.rutgers.edu> emuleomo@yes.rutgers.edu (Emuleomo) writes: `> `> >Have you ever seen a civil engineer debugging a bridge after it has been built? `> ` `Sure. the brand new bridge in St. Paul MN over the Mississippi just `buckled. The temporary solution was to put a bunch of concrete barriers on `the bridge to push the buckled part back in line. Permanent solution is `now being worked on. ` Some time ago there was a CACM article about the design of bridges (CACM April 1986). It mentioned a few cases of bridges that collapsed during or shortly after the construction. -- Piet van Oostrum, Dept of Computer Science, University of Utrecht Padualaan 14, P.O. Box 80.089, 3508 TB Utrecht, The Netherlands Telephone: +31-30-531806. piet@cs.ruu.nl (mcvax!hp4nl!ruuinf!piet)
shebs@Apple.COM (Stanley Todd Shebs) (05/11/89)
In article <493@bnr-fos.UUCP> schow%BNR.CA.bitnet@relay.cs.net (Stanley Chow) writes: >I would consider 50K lines to be a (very) small part of a big software systen >or project. (No smiley). If one person cannot totally comprehand a small program >like that, either the person or the method ought to be examined carefully. 50K lines *per person* is an approximation I picked based on observations in several different industries over the past few years. I'm assuming relatively sparse commentary, as seems to be the norm (sigh) - heavily commented code might be 2-3 times longer. Note also, "total comprehension" is pretty extreme. It means for instance that somebody could pick any single line and you would be able to justify its existence, explain why alternatives were not used, mention how it relates to the specification, and comment on the consequences of changing it in various ways. Total comprehension is actually somewhat rare, since it is possible to write and even debug software without understanding it completely. Incidentally, the "50K lines == small" statement is a familiar one, but I've not seen any reliable and up-to-date statistics on program sizes. Is there a believable chart anywhere of sizes, numbers, and the numbers of people involved? >In big systems, even in small 50KLOC programs, it is important to partition the >program into understandable chunks. S/W people call this module interface. The >civil/mechanical engineers call this "specification". Only amateur programmers and researchers work without specifications these days. The issues revolve around how formal the specifications can be. Informal specifications seem to cause as much difficulty as they resolve, while formal specifications are fantastically hard to get right. >May be the answer is a mandotary course in "standard writing" for all >software enginees. Undergraduate software engineering classes feature the writing of interface specs, but the environment is too artificial to get students to feel a realistic level of pain at having to conform to a bad specification. Classes can't always substitute for experience... >[...] I like >to think that some, if not most, software projects are run better than you >make it out to be. If the situation is indeed as bleak as you say, then I >would worry about the future of S/W, especially in the USA or North America. I always have an eye out for the well-run software project, but a little digging generally reveals that much of the proper methodology is window dressing, concealing the programmers-who-despise-software-engineers who are cranking out miles of code. I've been observing this ever since my first software job, which involved writing documentation for an entirely comment-free Fortran program, to make it appear as if it had been constructed according to the DoD's standards for delivered software... stan shebs shebs@apple.com (What about Apple? Well, I'll have to dig around and get back to y'all on Apple's software engineering standards)
heberlei@iris.ucdavis.edu (Todd) (05/11/89)
[Jason's (from UCD) ranting and raving] Whoa! Jason, unless you are planning on working completely by yourself for the rest of your life, you better learn to treat other people with a little more respect. Almost any project you work on will require the cooperation of a number of people from different disciplines: tech writers, programmers, managers, engineers of all types, etc. (Please note that this implies communication skills are very important) I did my undergraduate work in CS at UC Davis, have worked for our Division of Computer Science for the past year, and will return next year as a grad student in CS here at UC Davis (hey, I like it here :-) I have also worked for our Physics Dept (and taken Physics 104,105,110) and our Engineering Dept., and I find Jason's statements completely unfounded. I hope everyone out in net-land realizes Jason's views are his own; our Division of Computer Science is a great place to be (we are nice people). I agree to some extent with Jason's fear of money getting in they way of "pure science." When I was shopping for grad schools, I was upset to see schools offering an MBA with their CS degrees. However, if you want to be a key component in a research organization, you do need to have both good managerial and economic skills. Also, if an engineer does have a desire to make lots of money (nothing wrong with that), he/she is going to have to be one of the better ones in their field. The result: they learn the material anyways. :-) Enough dribble! ------------------- some thought to ponder on ----------------------- * We have been building bridges for a lot longer than we have been programming computers. Programming/SE is a trade in its infancy; maybe after a few thousand years we will be doing things correctly the first time. * I recall hearing about lots of engineering flaws in complex systems such as autos, planes, space shuttles, etc. One of Edwards AFB's primary goals was/is to debug new plane designs. I think a "prototype" really means they are trying to debug something. :-) Debugging is not the sole property of software development. * Since patching a program is easier than retooling a machine or fixing a support in a tall building (short ones too :-), maybe we software writers (and SEs) are less worried about getting something perfectly right the first time. Enough already. Send complaints to /dev/null. Todd Heberlein heberlei@leek.ucdavis.edu 128.120.57.26 heberlei@iris.ucdavis.edu 128.120.57.20
periklis@ecrcvax.UUCP (Periklis Tsahageas) (05/11/89)
In article <854@odyssey.ATT.COM> gls@odyssey.ATT.COM (g.l.sicherman) writes: >Real programmers spend 90% of their time debugging. Computer science >curricula ignore debugging, perhaps because it can never be reduced >to a theory. In article <42fba1e1.183dc@apollo.COM> perry@apollo.COM (Jim Perry) writes: >Unfortunately I believe real debugging skills can only acquired with >experience. I find it hard to believe that there exists a single Computer Science (or Software Engineering for that matter) curriculum that ignores debugging. I will use the term debugging as the process of : 1. Testing a [piece | system] of software 2. Identifying parts of its behaviour which [are not in | differ from] its specs 3. Identifying the changes that have to be made in the code (or, in the unfortunate case, in the specification) and 4. Doing these changes. In the first year of our Software Engineering degree, in the programming course, we had a series of lectures on testing. Some theoretical foundations for testing were laid then. Examples I recall AND USE : I. Test harnesses (e.g. to test ADTs, write a simple menu-driven program which performs operations on objects of the ADT and displays the results) II. Test stubs (e.g. to test a complex program, write dummy versions of the procedures it calls (and ADTs it uses) and test it with them) It's obvious that the above correspond to bottom-up and top-down design. There is no reason, however, that they can not be combined. Task 2 does not seem trivial but, again, I will argue that there are theoretical foundations here as well. Consider, for argument's sake, the testing of a procedure which performs some manipulation on lists. Its spec will have been written based on the definition of a list (well known, I presume, to all programmers and S.E.s reading this :-)). It follows that the test cases tried using (I) will include at least one empty and some non-empty lists. The differences between specs and functionality of the implementation will, thus, be easily located. For task 3 you are not on your own : complete specifications, written by an appropriate method, careful, modular, DOCUMENTED design (and experience) will be your best friends. Note that this is a task equivalent to coding. Assuming, however, that a good design will, probably, mirror the specs, it shouldn't be difficult to pinpoint the erroneous parts of the code. According to taste, you might want to use a debugging tool. Personnaly, I think that debuggers are usefull only for discovering bugs in other people's code. Our college's curriculum didn't ignore this subject either. In the second year, the theoretical foundations were laid for writting specifications and design. During the whole degree, programming exercises cover a broad range of languages, compilers, operating systems and computers. I would find it highly unlikely for someone to tackle these (especially the first ones) without making any errors. As for task 4, as nick@hp-sdd.hp.com.UUCP (Nick Flor) put it, in article <1985@hp-sdd.hp.com> : >Real programmers use only one CASE tool: vi. Real software engineers, however, wouldn't dream of starting a project without, at least, something with the functionality of [SC|R]CS. A final note, just to stir things up : SOME programmers have a very clever way of reducing the time spent debugging : They don't write specs :-). This makes task 2 trivial ! -- Periklis Andreas Tsahageas European Computer-Industry Research Centre Arabellastrasse 17, D-8000 Muenchen 81, West Germany +49 (89) 92 69 91 09 USA: periklis%ecrcvax.uucp@pyramid.pyramid.com ...!pyramid!ecrcvax!periklis Europe: periklis@ecrcvax.uucp ...!unido!ecrcvax!periklis
paul@moncam.co.uk (Paul Hudson) (05/11/89)
There is a difference between civil engineering projects like bridge building and large programming projects. Even though the bridge may fail, when it does it's regarded as the fault of the civil engineer, and contracts often specify that any fixing of failures should be paid for by the civil engineer, and even that other financial consequences of the failure such as damages should also be the responisbility. This works because the likelihod of failure is reasonably low. Contrast this with a software project. Not only do many fail (most? according to a previous posting), but the suppliers oftne do not guarantee it's continued operation and charge "maintenance" for fixing bugs and errors in the programs. The aim of software engineering (and formal methods) as I see it is to reduce the chance of failure to the point where a software company can guarantee it's product will work according to the spec. and if it doesn't fixes are included in the contract price, such price to be roughly in line with current prices, and below current prices + projected maintenance costs. Paul Hudson MAIL: Monotype ADG, Science Park, Cambridge, CB4 4FQ, UK. PHONE: +44 (223) 420018 EMAIL: paul@moncam.co.uk, ;" FAX: +44 (223) 420911 ...!ukc!acorn!moncam!paul `"";";" "/dev/null full: please empty the bit bucket" -- Paul Hudson MAIL: Monotype ADG, Science Park, Cambridge, CB4 4FQ, UK. PHONE: +44 (223) 420018 EMAIL: paul@moncam.co.uk, ;" FAX: +44 (223) 420911 ...!ukc!acorn!moncam!paul `"";";" "/dev/null full: please empty the bit bucket"
raveling@venera.isi.edu (Paul Raveling) (05/13/89)
In article <4625@goofy.megatest.UUCP> djones@megatest.UUCP (Dave Jones) writes: >From article <854@odyssey.ATT.COM>, by gls@odyssey.ATT.COM (g.l.sicherman): > >> Real programmers spend 90% of their time debugging. > > >Gack!! The mind boggles. It sure does! It's much easier to just not go to the effort of putting bugs into programs in the first place. Actually, the numbers I thought were generally accepted were 20% - 50% of project time for debugging. ---------------- Paul Raveling Raveling@isi.edu P.S.: If this seems a bit stale, or you're at ISI and it's a duplicate, that's because our newsfeed went read-only for a week or two. This is a repost of something that I believe didn't get out.
raveling@venera.isi.edu (Paul Raveling) (05/13/89)
In article <743@redsox.bsw.com> campbell@redsox.UUCP (Larry Campbell) writes: > >Nonsense. "Software engineer" is not synonymous with "programmer". One of >the differences between a software engineer and a programmer is that, while >a programmer probably does spend 90% of his time debugging, a software >engineer spends, maybe, 25% of his time debugging. ... From what I've seen of both "programmers" and "software engineers", I'm inclined to think the distinction is more like the difference between a "garbage collector" and a "sanitation engineer". They do the same things in substantially the same ways, but one name sounds more impressive. Remember when "programmers" were the elite and "coders" were the ones with less status? ---------------- Paul Raveling Raveling@isi.edu P.S.: If this seems a bit stale, or you're at ISI and it's a duplicate, that's because our newsfeed went read-only for a week or two. This is a repost of something that I believe didn't get out.
raveling@venera.isi.edu (Paul Raveling) (05/13/89)
In article <4750@goofy.megatest.UUCP> djones@megatest.UUCP (Dave Jones) writes: >From article <4105@ficc.uu.net>, by cliff@ficc.uu.net (cliff click): >> I've produced 30000 to 35000 lines of code/year for the past 3 years that end >> up in income-producing products. > >Wow. Fifteen lines an hour, eight hours a day, 250 days a year. Love those >keyboard macros! :-) No keyboard macros required. My numbers were about the same when being project leader, then manager, made me measure them for everyone including me. For my own numbers, median production of debugged product-quality code is around 200-300 lines per day when the day has no meetings and the project's learning curve is past history. Hacking takes this up to 700-800 lines per day, but don't expect to keep and maintain such a hack. To average over time, accounting for documentation, cummunication overhead, and such, I'd project 100 lines per day if the organization doesn't have a management muddle (most do). An exception is producing MIL-spec code and documentation. Using these standards drops my productivity in terms of lines of code by a factor of about 3-4. Doing rigorous module tests for MIL-spec work decreases the number of bugs existing at system integration by perhaps 5%. However, for MIL-spec work it may be more sensible to measure productivity by pages of documentation instead of lines of code. ---------------- Paul Raveling Raveling@isi.edu P.S.: If this seems a bit stale, or you're at ISI and it's a duplicate, that's because our newsfeed went read-only for a week or two. This is a repost of something that I believe didn't get out.
jamesg@syma.sussex.ac.uk (James S Goodlet) (05/15/89)
In article <May.6.16.52.43.1989.2510@yes.rutgers.edu> emuleomo@yes.rutgers.edu (Emuleomo) writes: >Have you ever seen a civil engineer debugging a bridge after it has been built? Indeed, the Erskine bridge over the River Clyde in Glasgow (Scotland) was heavily "debugged", notably with changes to the railings at the sides of the bridge to change its behaviour in cross winds (I believe the bridge was resonating slightly). Not on bridges but related, consider the infamous M25 motorway around London, England. This was repaired (several thousand tarmac joints replaced) *before* it had even opened. And now, only a few years after it was completed, it is being extensively widened. These are real bugs. Surely the point to be made is that such bugs occur less in traditional engineering ventures since: 1) they utilise disciplines which are reasonably mature and understood - there is a science (engineering discipline if you must) in bridge building - much of it is painting by numbers now. Software coding and *design* is not understood, regardless of the claims of proponents of structured design methodologies. These methodologies serve a useful purpose in supporting the book-keeping requirements of the task - they lend nothing to the assistance of the creative effort of the design team. Thus "software engineering" is an art, not a science. 2) the designs can quite successfully be decomposed into discrete subtasks, with the overall design the remit of one or two individuals. This is in the spirit of "The Mythical Man- Month"'s pilot/copilot idea, where the design is specifically the product of one or two individuals, with other team members playing supporting roles. (This is often given as the reason for the comparative success of small software teams.) In a traditional engineering discipline, the knowledge required for the design task has been made accessible through centuries of empirical investigation and analyses of results. This knowledge can be used by (held within the mind of) one or two principal engineers on a project, thus leading to internally consistent, cohesive designs. Software design/coding is not understood and thus requires either supranormal individuals (rare - if you find one, keep him/her), or many brains together. And many brains lead to inconsistencies, and unforeseen interactions - see mediaeval cathedral construction (the exception being Rennes). James (*** please note, no offence is intended to structural/civil engineers - in order to "paint by numbers", they need to attain a high level of proficiency in an esoteric domain ***) -- School of Cognitive & Computing Sciences, Talk: +44-(0)273-806755 x2407 University of Sussex, JANET: jamesg@uk.ac.susx.cogs Brighton BN1 9QN, UUCP: ...!mcvax!ukc!cogs!jamesg United Kingdom ARPA: jamesg%cogs.susx.ac.uk@nsfnet-relay.ac.uk
rgo@berlioz (Ronald Olshausen) (05/16/89)
In article <8338@venera.isi.edu> raveling@venera.isi.edu (Paul Raveling) writes: >In article <4750@goofy.megatest.UUCP> djones@megatest.UUCP (Dave Jones) writes: >>From article <4105@ficc.uu.net>, by cliff@ficc.uu.net (cliff click): >>> I've produced 30000 to 35000 lines of code/year for the past 3 years that end >>> up in income-producing products. >> >>Wow. Fifteen lines an hour, eight hours a day, 250 days a year. Love those >>keyboard macros! :-) > > For my own numbers, median production of debugged product-quality > code is around 200-300 lines per day when the day has no meetings > and the project's learning curve is past history. Hacking Those figures sound very high. But really, statistics regarding Source Lines/Hour mean nothing, unless they're put in the context of what the code does. For example, writing 5000 lines of code to do real-time embedded applications could be a whole lot different than writing 5000 lines for a user-friendly terminal interface. Depending on the degree of difficulty involved, productivity, as measured in SLOC/hour, could vary by a factor of ten, or more. Ron Olshausen NSC-Santa Clara
vfm6066@dsacg3.UUCP (John A. Ebersold) (05/16/89)
In article <990@syma.sussex.ac.uk> jamesg@syma.sussex.ac.uk (James S Goodlet) writes: >Surely the point to be made is that such bugs occur less in traditional >engineering ventures since: > >1) they utilise disciplines which are reasonably mature and understood - > >2) the designs can quite successfully be decomposed into discrete > subtasks, with the overall design the remit of one or two > individuals. This is in the spirit of "The Mythical Man- > Month"'s pilot/copilot idea, > Software design/coding is not understood and > thus requires either supranormal individuals (rare - if you find > one, keep him/her), or many brains together. And many brains > lead to inconsistencies, and unforeseen interactions - see > mediaeval cathedral construction (the exception being Rennes). In an article titled (I believe) "Slaying the software beast" (No silver bullet) in IEEE Computer, Frederick Brooks wrote about the sad state of software development. Recommend reading. He concluded, as you do, one solution seems to be finding and developing excellent software designers. These people should be given status and perks that high level management is typically given. After reading that article last year and thinking about software that seems to have been done right, leading projects small and large (some of which have turned out better than others) I have reached the conclusion that every project needs a design (and perhaps requirements) dictator. This person should be the best designer in the organization and is not neccessarily the project leader but it would help if she/he were. As Brooks wrote, to paraphrase, The best designers are not always the most experienced. The dictator should have a overall vision of what the software must do and the best way to do it. This is not to say that design trade-offs are not discussed with other project members, but when a decision must be made, the dictator decides. On a related subject... I believe that setting out general design and documentation principles and getting the partitioning bewteen the major portions of a system "right" are the most important things one can do as a project leader. I would make sure similar things are designed in a similar manner (and perhaps generalized) rather than concentrating on the design of some modules that is only needed in one place. Leave those things to other team members. What do you all think? As if I had to ask :-). -- John A. Ebersold at Defense Logistics Agency osu-cis!dsacg1!dsacg3!vfm6066 Unify Corporation System Automation Center Columbus, Ohio 1-614-238-5923 AV 850-5923 Systems with poorly understood requirements cannot be developed in a crunch.
shapiro@rb-dc1.UUCP (Mike Shapiro) (05/18/89)
In article <12701@umn-cs.CS.UMN.EDU> smiller@umn-cs.CS.UMN.EDU (Steven M. Miller) writes: ... >Software can be orders of magnitude more complex and commonly has to run on >multiple hardware platforms. You're comparision seems to be between >apples and oranges. More like grapes and watermelons, I think (or something similar). (I'm not sure the order of magnitude analogies of software vs. bridges over rivers, but apples and oranges seem too close in size.) -- Michael Shapiro, Encore Computer Corporation (formerly Gould/GSD) 15378 Avenue of Science, San Diego, CA 92128 (619)485-0910 UUCP: shapiro@rb-dc1
conor@inmos.co.uk (Conor O'Neill) (05/18/89)
In article <990@syma.sussex.ac.uk> jamesg@syma.sussex.ac.uk (James S Goodlet) writes: >In article <May.6.16.52.43.1989.2510@yes.rutgers.edu> emuleomo@yes.rutgers.edu (Emuleomo) writes: >>Have you ever seen a civil engineer debugging a bridge after it has been built? > >Indeed, the Erskine bridge over the River Clyde in Glasgow (Scotland) >was heavily "debugged", notably with changes to the railings at the >sides of the bridge to change its behaviour in cross winds (I believe >the bridge was resonating slightly). > >Not on bridges but related, consider the infamous M25 motorway around >London, England. This was repaired (several thousand tarmac joints >replaced) *before* it had even opened. And now, only a few years after >it was completed, it is being extensively widened. These are real bugs. This reminds me of the idea of asking someone to Beta-test a Jumbo jet! to beat the line munger.... -- Conor O'Neill, Software Group, INMOS Ltd. JANET: conor@inmos.co.uk Disclaimer: All views are my own, UUCP: uunet!inmos-c!conor not those of INMOS. INTERNET: @col.hp.com:conor@inmos-c
ben@vmsa.technion.ac.IL (Ben Pashkoff) (05/30/89)
In article <1492@dsacg3.UUCP>, vfm6066@dsacg3.UUCP (John A. Ebersold) writes: > In article <990@syma.sussex.ac.uk> jamesg@syma.sussex.ac.uk (James S Goodlet) writes: > > After reading that article last year and thinking about software that seems > to have been done right, leading projects small and large (some of which > have turned out better than others) I have reached the conclusion that every > project needs a design (and perhaps requirements) dictator. This person > should be the best designer in the organization and is not neccessarily the > project leader but it would help if she/he were. > > The dictator should have a overall vision of what the software must do and > the best way to do it. This is not to say that design trade-offs are not > discussed with other project members, but when a decision must be made, the > dictator decides. > I had written a really nice commentary to this and then the machine went and digested it, so, I will summarize. In the book, In Search of Excellence, Peters and Waterman state some very important ideas for what a good company should operate by. I thnk it is all very applicable to this disscussion. In particular numbers 6 and 7, dealing with sticking to the customer, in our case the end-user, and support for a 'local champion'. I like their term better for psychological reasons. They break down the 'champion' into a 'product champion', an 'executive champion' ,and the 'godfather. Concerning the product champion they write, "the zealot or fanatic in the ranks whom we have described as being not a typical administartive type. On the contrary, he is apt to be a loner, egotistical and cranky. But he believes in the product..." Does this sound familiar? -- ___________________________________________________________________________ | | | Ben Pashkoff BEN@VMSA.TECHNION.AC.IL | | BEN@TECHMAX.BITNET | | BEN@TECHUNIX.BITNET | | VAX/VMS Systems APLBENJ@TECHNION.BITNET | | Computer Center VMSA::BEN | | Technion IIT | | Haifa, Israel 32000 Phone:(972)-4-292176 | |_________________________________________________________________________|