rcd@ico.ISC.COM (Dick Dunn) (10/06/89)
billwolf%hazel.cs.clemson.edu@hubcap.clemson.edu (William Thomas Wolfe, 2847 ) writes, among other things, that: > ...But engineers don't play; this is left > for hackers. We're here to engineer products on time, under budget, > and with as much quality as we can get within those two constraints. Actually, engineers *do* play; the ones who don't seem to be playing are playing at being engineers. But that's another posting. Here, I want to assert that the "on time, under budget" phrase is a red herring. (BTW, why not "ahead of time, on budget" or even getting both right and being "on time, on budget"? But that's another digression...) It's particularly sad to see "quality" a poor third to the other two. You can make any feasible software project come in on time by setting a long enough schedule, and of course you can bring it in under budget if you set aside enough money. That's why we've got a red herring--the numbers can be tweaked. Moreover, this is not just an idle observation... There are lots of "methodology mavens" on the loose these days. They'll sell you or teach you a way to improve the predictability of your software projects. An unfortunately large proportion of them do it by adding make- work to projects, in a particular way: They front-end load the project with paperwork, rituals, meetings, millstones, etc. What does this do? - It increases the total time/budget for the project, providing a way to hide needed time/money. If things start to get tight, the ritual gets short shrift; the effort gets shifted to real work. You get a safety buffer you don't have to justify. - It lets you hire (or assign) the people you're going to need in the later implementation phase early on...and it gives them some- thing to do (push paper) without getting in the way too much. (After this, they'll be GLAD to get to work!) This allows lazy management to deal with a flat staffing through the project. - It adds to the total time/money for the project, so that any error in estimation induced by true risk is reduced in apparent magnitude by the slopfactor. The next point may come as a radical surprise (or affront) to the academi- cians (and Adacademicians especially), but: It's not necessarily best to produce a schedule which you know you can meet at a very high confidence level! Sure, if you're aiming for a hard deadline or bidding a contract fixed-price, you need to hit pretty high confidence. But in many cases it makes more sense to set the schedule at the most probable completion time. That's the most useful for planning. For example, in the commercial world, aiming for a 90% confidence-of-completion time on a schedule might cause you to decide you can't meet the market window for a product--when in fact a more realistic confidence level in scheduling will tell you it's worth the chance. In any event, a single "schedule end date" or "cost" for a software project is carelessly simplistic; it's as bad as rating processor performance on a single number. You need to associate confidence levels with the values. But overall, Wolfe has it backward. You need to produce quality software that does what it's supposed to do. Then you need to do it predictably. But if the software doesn't work, it doesn't matter how quickly or cheaply it was done. -- +---------+ Dick Dunn rcd@ico.isc.com ico!rcd (303)449-2870 | In this | 4th annual MadHatterDay [10/6/89]: | style | A Thousand Points of Madness |__10/6___|
billwolf%hazel.cs.clemson.edu@hubcap.clemson.edu (William Thomas Wolfe, 2847 ) (10/06/89)
From article <16168@vail.ICO.ISC.COM>, by rcd@ico.ISC.COM (Dick Dunn): >> ...But engineers don't play; this is left >> for hackers. We're here to engineer products on time, under budget, >> and with as much quality as we can get within those two constraints. > > why not "ahead of time, on budget" or even getting both right and being > "on time, on budget"? But that's another digression...) It's particularly > sad to see "quality" a poor third to the other two. If the product does not meet the minimal standards of acceptability, then it is not complete. "On time", etc., refers to the product being completed in accordance with the relevant quality requirements. Bill Wolfe, wtwolfe@hubcap.clemson.edu
itkin@mrspoc.Transact.COM (Steven M. List) (10/08/89)
rcd@ico.ISC.COM (Dick Dunn) writes: > ... stuff deleted ... >In any event, a single "schedule end date" or "cost" for a software project >is carelessly simplistic; it's as bad as rating processor performance on a >single number. You need to associate confidence levels with the values. >But overall, Wolfe has it backward. You need to produce quality software >that does what it's supposed to do. Then you need to do it predictably. >But if the software doesn't work, it doesn't matter how quickly or cheaply >it was done. >-- In reading what Dick said, I can only believe that he's never worked on a project for which someone ELSE was paying. Or a project for which the market window is critical to the continued survival of the company or the project or the product. He implies (probably unintentionally) that Mr. Wolf's approach is unrealistic and financially motivated. He says that his statements will come as a surprise to the Academicians. Dick's statements strike me as somewhat ivory tower. While those of us who consider ourselves professionals in the field of "software engineering" presumably ALWAYS strive for quality products, we can't just turn off our systems and refuse if someone comes along and says "we have a deadline". Rather, we have to make every effort to compromise and push and squeeze and produce the required product in the required timeframe and within the specified budget. This is REALITY. Now, I don't want Dick to misunderstand. I laud his goals. I too believe that our first goal SHOULD be quality software. Define quality. Unfortunately, too often, that translates to "as much functionality as can be gotten in that works reliably as we can fit within our constraints". Happily and sadly, we live in a commercial environment. As such, we are controlled, largely, by the need to earn dollars so we can continue to do what we enjoy doing. Having become a principal in a business within the last couple of years, I've had to learn this lesson even more painfully than before. No doubt, there will always be those who will take one side or the other. "Quality MUST come first, even at the risk of lost opportunity or lost business." "Meeting our deadlines and our budgets is paramount. If the product isn't up to standards, well, we'll adjust later or change our marketing." The truth is that living in the real world ALWAYS requires compromise. From what time you get up in the morning to what you eat for lunch to whether or not you include a feature in the software you are developing. To survive, you must adapt. Adaptation FREQUENTLY requires compromise. So, I guess, I believe that you have to fit all things together. The question I must always ask myself, when we start a project or task, is "How much can I get in that meets MY/OUR/OUR CUSTOMER'S standards of quality within the time and budget constraints set forth? Can we modify the constraints? Are we willing to adjust our standards?" Dick's statement that producing a schedule that meets a lower confidence factor would permit a favorable decision is frightening to me. This implies that it's okay to plan based on 80% or 70% or lower confidence. This implies that he is willing to proceed based on the assumption that HE CANNOT SUCCEED in meeting time or budget constraints. Dick - who's funding you? What happens when the date for which you had 70% confidence comes and goes? Who eats it? I would rather produce a realistic project plan up front, including specifying the compromises, than to produce a falsely optimistic plan with a qualifier ("this is only 70% certain") and have to scramble to adjust near the end. -- +----------------------------------------------------------------------------+ : Steven List @ Transact Software, Inc. :^>~ : : Chairman, Unify User Group of Northern California : : {apple,coherent,limbo,mips,pyramid,ubvax}!itkin@guinan.Transact.COM :
rcd@ico.ISC.COM (Dick Dunn) (10/11/89)
billwolf%hazel.cs.clemson.edu@hubcap.clemson.edu (William Thomas Wolfe, 2847 ) writes: > >> ...We're here to engineer products on time, under budget, > >> and with as much quality as we can get within those two constraints. > > ...It's particularly > > sad to see "quality" a poor third to the other two. > If the product does not meet the minimal standards of acceptability, > then it is not complete. "On time", etc., refers to the product > being completed in accordance with the relevant quality requirements. "Quality" software is MUCH more than software which meets "the minimal standards of acceptability", thank you. A piece of software may be judged to have been "completed" on time and within budget if it meets its stated requirements within those constraints. The requirements are going to be objective criteria--such as tasks the software must perform, performance and size limits, etc. They MUST be objective criteria in the (very common) case where the requirements are part of the negotiated contract for the software project. It is entirely possible to construct software which meets all such require- ments, but which is poorly conceived or implemented. Examples abound. I know of no way to specify software requirements such as "must be able to survive the next five years of changes, to meet new needs, hacked in by bored second-string maintenance programmers..." But that's often what quality software needs. Sometimes software doesn't need high quality--sometimes the minimal hack that meets the short-term requirements is enough! The "lowest bidder" approach is OK sometimes, but not universally. Most software far outlives its originally estimated/intended life. It is more common to find our- selves with software under-engineered than over-engineered. My personal peeve here is that I spend far too much of my time reworking under-engin- eered hacks back into decent code that can survive. So I see an extreme focus on budget/schedule as needlessly increasing the amount of such work I have to do. -- Dick Dunn rcd@ico.isc.com uucp: {ncar,nbires}!ico!rcd (303)449-2870 ...No DOS. UNIX.
rcd@ico.ISC.COM (Dick Dunn) (10/11/89)
itkin@mrspoc.Transact.COM (Steven M. List) writes: >...In reading what Dick said, I can only believe that he's never worked on > a project for which someone ELSE was paying. Or a project for which the > market window is critical to the continued survival of the company or the > project or the product... You are quite wrong on both counts. I have worked on both for many years; currently most of my work falls into projects paid for by customers. I think it's not that we are in any fundamental disagreement (we'll see) so much as that we're driving at different points. > Dick's statements strike me as somewhat ivory tower. While those of us > who consider ourselves professionals in the field of "software engineering" > presumably ALWAYS strive for quality products, we can't just turn off our > systems and refuse if someone comes along and says "we have a deadline". Understood completely. I'm NOT trying to put quality at the very top of the list, to the exclusion of schedule and budget...but I want to get schedule/budget off the top of the list. One of the things we have to consider in bidding a software project is that we want to set a reasonable cost which will allow us to produce a product of sufficient quality that the customer is not only happy with it in the short-term (meeting the immediate needs) but in the long term when it comes time to modify it. If it's our own product, we don't want to do a quick hack that will save us 10% on the first release and cost us 50% more in the second release when we have to repair the damage we did by hurrying. Sometimes, market pressures are extreme enough that it's the only way to hit close enough to the market window that there can BE a second release--but we need to avoid that. > "How much can I get in that meets MY/OUR/OUR CUSTOMER'S standards > of quality within the time and budget constraints set forth? Can > we modify the constraints? Are we willing to adjust our standards?" This is a good statement. The software MUST meet its requirements, but that's a separate issue. We MUST schedule enough time and money to do that. Then we try to schedule enough to produce a product of sufficient quality that we won't hate ourselves for it later on. > Dick's statement that producing a schedule that meets a lower confidence > factor would permit a favorable decision is frightening to me. This > implies that it's okay to plan based on 80% or 70% or lower confidence. Sure--why not? Wait, let me qualify that...There are circumstances where it's OK to work at that confidence level. Just remember that nothing is black and white here. Suppose we're talking about a product aimed at a particular market window. What's the accuracy of the end date on the market window? Probably 50% at best! (That is, the window is at least as likely as not to close AFTER the estimated end date.) Also, the window doesn't just slam shut...it means that the longer you delay, the smaller your market share. You have to work with the probabilities involved. If there's a 70% chance you can make the stated market window, you also need to know something like what your 90%-confidence completion date is, and whether that might come in acceptably close to the window that it will still give you a good product--enough to make some money even if not as much as you "should" make. There are literally SCORES of other factors to consider. The better the condition of the company, the more of a gamble you can afford to take. You may build the company's reputation in a new technology area; you may gain expertise you need as a side-effect of the project. You have to look at the type of contract you're going to work with, if it's contract work. You can bid base cost plus T&M at a lower confidence level than fixed-price, which in turn can be lower than fixed-price-with- penalty-for-late, which is different from fixed-price-with-bonus-for-early, etc. to endless detail. Sometimes you don't even bid because the terms your customer wants don't fit with the amount of risk (which translates into level of confidence for a plausible schedule) for the project. > This implies that he is willing to proceed based on the assumption that > HE CANNOT SUCCEED in meeting time or budget constraints... No, it implies that I might be willing to proceed even with the knowledge that the desired (ideal) outcome is less than certain. But it involves lots of other considerations, per above, if you're going to go ahead from a lower confidence value. >...Dick - who's > funding you?... Our customers. >...What happens when the date for which you had 70% > confidence comes and goes? Who eats it?... If the project is begun at a low confidence level, there will be aspects of the contract which anticipate that. If an estimate carries a low confi- dence, that's taken into account. >...I would rather produce a > realistic project plan up front, including specifying the compromises, > than to produce a falsely optimistic plan with a qualifier ("this is > only 70% certain") and have to scramble to adjust near the end. It depends on what the curve of confidence level vs schedule looks like. All such curves have a tail asymptotic to 100%. With some, the shape of the tail heading out past 75% or so is unpleasantly long...that tells you that the project is riskier than average, and you have to decide whether you can live with the risk. -- Dick Dunn rcd@ico.isc.com uucp: {ncar,nbires}!ico!rcd (303)449-2870 ...No DOS. UNIX.
billwolf%hazel.cs.clemson.edu@hubcap.clemson.edu (William Thomas Wolfe, 2847 ) (10/11/89)
From rcd@ico.ISC.COM (Dick Dunn): >> >> ...We're here to engineer products on time, under budget, >> >> and with as much quality as we can get within those two constraints. >> > ...It's particularly >> > sad to see "quality" a poor third to the other two. >> If the product does not meet the minimal standards of acceptability, >> then it is not complete. "On time", etc., refers to the product >> being completed in accordance with the relevant quality requirements. > % It is entirely possible to construct software which meets all such require- % ments, but which is poorly conceived or implemented. Examples abound. I % know of no way to specify software requirements such as "must be able to % survive the next five years of changes, to meet new needs, hacked in by % bored second-string maintenance programmers..." But that's often what % quality software needs. [...] My personal peeve here is that I spend % far too much of my time reworking under-engineered hacks back into % decent code that can survive. So I see an extreme focus on % budget/schedule as needlessly increasing the amount of such work I % have to do. This depends upon whether the product is implemented by hackers or by professionals. A professional will meet cost and schedule constraints by using CASE tools, advanced programming languages, and so on, using overtime as the last resort. A professional knows that developing modular, readable software not only helps make the software maintainable, but also reduces the probability that the product will be delayed due to errors and reduces the time that will be required to correct errors if they are discovered, thereby enhancing the probability of meeting scheduling constraints. Dick's particular environment is one in which operating system software is being developed in C, a double whammy as far as a well-established tradition of hacking is concerned. In such an environment, great efforts must be taken on the part of management to ensure the existence of a proper software engineering orientation. Bill Wolfe, wtwolfe@hubcap.clemson.edu
hallett@positron.uucp (Jeff Hallett x5163 ) (10/12/89)
In article <16187@vail.ICO.ISC.COM> rcd@ico.ISC.COM (Dick Dunn) writes: >It is entirely possible to construct software which meets all such require- >ments, but which is poorly conceived or implemented. Examples abound. I Therefore it is time someone addressed the issue of how to quantitatively specify nebulous terms like "user friendly", "maintainable", "extendible", etc. In a requirements document, these terms have no meaning aside from the warm and fuzzy connotations. To quote Star Trek: The Next Generation ("Samaritan Snare"), the space moron stated : "We look for things: things to make us go." Sure, but quantify it. How does one specify a requirement for "user friendliness" or "well-written"? -- Jeffrey A. Hallett, PET Software Engineering GE Medical Systems, W641, PO Box 414, Milwaukee, WI 53201 (414) 548-5163 : EMAIL - hallett@gemed.ge.com "Your logic was impeccable Captain. We are in grave danger."
rsd@sei.cmu.edu (Richard S D'Ippolito) (10/12/89)
In article <16187@vail.ICO.ISC.COM> rcd@ico.ISC.COM (Dick Dunn) writes: >It is entirely possible to construct software which meets all such require- >ments, but which is poorly conceived or implemented. Examples abound. I >know of no way to specify software requirements such as "must be able to >survive the next five years of changes, to meet new needs, hacked in by >bored second-string maintenance programmers..." But that's often what >quality software needs. There are ways to do it. One can generally anticipate the areas of change, especially in large systems where there is a long history of changes. For example, suppose you require software for a flight trainer used to simulate operation at several airports, i.e., the characteristics of the airports are used to drive the simulated display and the cockpit instruments. Can't it be required that the capability of changing the airport(s) be designed in? It is possible for the contractor to include in his bid the effort (read "cost") to do this. Suppose you are building a C3I system based on a large number of electronically received messages which have to be translated and validated before being stored in a database. Should you not require the contractor at proposal time to tell you the cost of adding or deleting new messages, some of which are of the same types and some of which are probable new types (if known)? There are many other examples I could give, as these types of systems have been around long enough for us to have a good idea of the nature of the expected changes. It merely requires the program office to request the cost of the anticipated changes in the proposals. As you can see, the contractor (read "software engineer") is going to need some concrete idea of what he's going to build in order to be responsive, but, hey, isn't that true of other engineers? Watch for it -- happening soon to a contractor near you! Rich -- It is not the possible that determines what to hope for -- it is hope that determines what is possible. Richard J. Oman rsd@sei.cmu.edu -----------------------------------------------------------------------------
phil@attctc.Dallas.TX.US (Phil Meyer) (10/12/89)
In article <6742@hubcap.clemson.edu> billwolf%hazel.cs.clemson.edu@hubcap.clemson.edu writes: >From rcd@ico.ISC.COM (Dick Dunn): > > This depends upon whether the product is implemented by hackers > or by professionals. Haven't we had the hacker vs. professional wars before? I am reminded of the fortune "A poor workman blames his tools". It is also a poor workman who must blame tools for other's inferior workmanship. This next statement suggests that you are not professional if you do not use CASE tools. Pretty silly. Most developers are still eyeing CASE. > A professional will meet cost and schedule > constraints by using CASE tools, advanced programming languages, > and so on, using overtime as the last resort. This last line is the killer. If you don't work your butt off, you don't work for me! If the job needs doing, you stay 'till it's done. What is this? Bankers ethics in the computer center? Forget it! > Dick's particular environment is one in which operating system > software is being developed in C, a double whammy as far as a > well-established tradition of hacking is concerned. In such an > environment, great efforts must be taken on the part of management > to ensure the existence of a proper software engineering orientation. This statement applies to ANY environment. It may be true that sloppy programmers working in a CASE environment can produce better code than without CASE, but steps must still be taken to insure that guys like you who won't stay past quitting time, don't just throw stuff together! This isn't really a flame, I was just suprised to see stuff like this in a news group where I'm certain that most participants dream of the day when they can work 'regular' hours.
linda@rtech.rtech.com (Linda Mundy) (10/12/89)
In article <16187@vail.ICO.ISC.COM> rcd@ico.ISC.COM (Dick Dunn) writes: >billwolf%hazel.cs.clemson.edu@hubcap.clemson.edu (William Thomas Wolfe, 2847 ) writes: [...some discussion of "on time, under budget" vs. "quality", deleted...] >"Quality" software is MUCH more than software which meets "the minimal >standards of acceptability", thank you. > [...more good stuff deleted...] > >It is entirely possible to construct software which meets all such require- >ments, but which is poorly conceived or implemented. Examples abound. I >know of no way to specify software requirements such as "must be able to >survive the next five years of changes, to meet new needs, hacked in by ^^^^^^^^^^^^ >bored second-string maintenance programmers..." But that's often what ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >quality software needs. > Dick, I really agreed with the main points of your article, making the above remark come as a surprise. Not picking you in particular, but this is such a common attitude towards maintenance programmers, I thought it might be appropriate as a topic of discussion in its own right. So I ask you: -- do you think maintenance work is easier than development work? always? sometimes? never? does your answer change for large systems vs. small systems? -- do you think that maintenance programming belongs lower on the "pecking order" than development programming? -- do you think that such presumptions are likely to help people work together more effectively? -- do you think that software engineers should do a stint at maintenance, or do you think that maintenance is a place to put the (perceived to be) less talented? -- do you think maintenance should be a separate function, or that developers should be responsible for maintaining their own code (as much as possible)? -- do you think that there are different skill sets for maintenance vs. development? if so, is one skill set "better" than another? You can probably tell, you hit one of my hot buttons. I personally think that any new, just-out-of-school programmer should do maintenance work for awhile (assuming, of course, that the company already has a product!) It will introduce them to the product they will be working on, in a context where they can both learn and have something to show for it. It will introduce them to the prevailing coding style. It will introduce them to the many pitfalls and pratfalls that lead to bugs, thus hopefully teaching them how to avoid same. It may introduce them to the real-world effects of software bugs on customers, thus improving their attitudes towards software quality. etc., etc. But the most important point: don't diminish people because of their relative positions. It can't do any good -- in fact, it is exactly such attitudes that lead to "bored, second-string" employees -- wherever they happen to be in the organizational structure. As I said before, this is not meant as a flame, and judging by your other statements, I doubt that we are in basic disagreement. Of course, I could be wrong! (but only about the previous statement...;-)) >-- >Dick Dunn rcd@ico.isc.com uucp: {ncar,nbires}!ico!rcd (303)449-2870 > ...No DOS. UNIX. -- "Who are you to tell me to question authority?" Linda Mundy {ucbvax,decvax}!mtxinu!rtech!linda
billwolf%hazel.cs.clemson.edu@hubcap.clemson.edu (William Thomas Wolfe, 2847 ) (10/12/89)
From phil@attctc.Dallas.TX.US (Phil Meyer): >> A professional will meet cost and schedule >> constraints by using CASE tools, advanced programming languages, >> and so on, using overtime as the last resort. > > [...] I'm certain that most participants dream of the day when > they can work 'regular' hours. First, the context: my work experience so far has been with a company which had to actually pay time-and-a-half for overtime, which is usually a VERY expensive way to trade cost for schedule. Also, Phil misinterprets my position. The idea is to maximize the use of productivity tools FIRST; simply throwing time at the problem makes little sense UNLESS we have already done all the things that can be done to minimize the difficulty of solving it. Bill Wolfe, wtwolfe@hubcap.clemson.edu
rcd@ico.ISC.COM (Dick Dunn) (10/12/89)
I was gritching about quality being given short shrift, and had pointed out that software can be constructed which meets all objective requirements, yet is of poor quality. > This depends upon whether the product is implemented by hackers > or by professionals... Hey, groovy...we'll just get our customers to add a clause to the contract to require that "All software shall be implemented by professionals. Hackers shall not be employed..." and nobody will have to worry about poor quality software any more, right? Of course good people will produce better software than bad people. That is true, but irrelevant to the point I was trying to make--which is that the relative emphasis on quality will influence the result. A good programmer, under extreme time/budget pressure, will likely be able to produce better-quality software than a dullard working at leisure who codes with a chainsaw . But the professional won't do as good a job as if there were more external interest in quality and less extreme time/money pressure. >...A professional will meet cost and schedule > constraints by using CASE tools, advanced programming languages, > and so on... No. A professional will use the tools suitable for the job (perhaps creating them if appropriate). A professional will focus on the job of constructing good software, and will leave the buzzword-oriented programming to the acolytes of strongly-hyped languages. (apologies to Andrew Koenig) And what's this about advanced programming languages? Wolfe has, in other postings, been an outspoken advocate of Ada, which is certainly *not* advanced. In fact, the difficulty of making Ada catch up to current technology has been a hot topic over in comp.lang.ada. > Dick's particular environment is one in which operating system > software is being developed in C, a double whammy as far as a > well-established tradition of hacking is concerned... There is operating system software developed in C at Interactive Systems. That's not what I'm doing, although that is irrelevant. C is well suited to the task. (Most of the OS work is, for example, better done in C than in C++. But you have to understand what "most of the work" is about, and that's another topic.) The "well-established tradition of hacking" is an empty insult, a manifes- tation of Wolfe's inability to mount any substantive objection. C works. UNIX works. They've lasted well, and survived incredible amounts of modifi- cation and adaptation. All the cheap insults you can dream up won't change that. We'll trade taunts with you for a while; then we'll let you go back to *talking* about software while we *produce* software. Don't get me wrong--C is *not* The One True Way. (That's religion, which is anathema:-) C is *a* way to get things done, and done both well and expeditiously. There are other languages and tools--some of them more appropriate to their problem domains than C could be. > In such an > environment, great efforts must be taken on the part of management > to ensure the existence of a proper software engineering orientation. Not at all. You just get good people who know what they're doing, and make room for them to do their jobs. Good management does not direct; it assists. The people I work with are not the people who produce the nasty code I was complaining about in my earlier posting. In fact, some of the nastiest code was produced as a result of blind, dogmatic application of so-called software engineering principles. It's gotten them into binds. We have to help them out, help clean up the messes, and get the software headed back in a reasonable direction. We do it in C (since that's what all of them are using), without dogma and buzzwords. Sometimes we have to tell them that getting back to quality software is going to cost a little more and take a little longer than the "shortest path" to meeting the immediate requirements. When we can make a good case for it, they're likely to go for it--because they've seen how we work and they appreciate the long- term benefits. We budget and plan for quality work; we don't "lowball" contracts. -- Dick Dunn rcd@ico.isc.com uucp: {ncar,nbires}!ico!rcd (303)449-2870 ...No DOS. UNIX.
sps@ico.ISC.COM (Steve Shapland) (10/12/89)
In article <3807@rtech.rtech.com> linda@rtech.UUCP (Linda Mundy) writes: >In article <16187@vail.ICO.ISC.COM> rcd@ico.ISC.COM (Dick Dunn) writes: >>I know of no way to specify software requirements such as "must be able to >>survive the next five years of changes, to meet new needs, hacked in by > ^^^^^^^^^^^^ >>bored second-string maintenance programmers..." ... > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ > ..... I personally think that >any new, just-out-of-school programmer should do maintenance work for awhile >(assuming, of course, that the company already has a product!) It will >introduce them to the product they will be working on, in a context where they >can both learn and have something to show for it. ... I agree with the policy of assigning rookie programmers to maintenance tasks. The learning experience is wonderful. Most companies I've worked for tend to follow this policy, and I believe that this is what leads to Dick's view of maintenance programmers. 1) "hacked" - Being rookies, they are still learning the product, style, and problems of real-world (large complex systems) programming. Their code tends to lack the polish of craftsmanship. 2) "bored" - Being youthful, they still possess the dream of setting the world on fire. "Enough of this working on last year's code, I want to design the next major system." They are being forced to walk when they want to run. 3) "second-string" Of course they're second-string. They still have to prove themselves to management; and until they do, the more senior people of the team continue to carry the ball. There is yet another reason for assigning junior programmers to maintenance tasks. Don't forget that maintence represents ~80% of the life cycle costs of a software product. By assigning programmers from the low end of the pay scale, these costs may be reduced. All of the above sounds brutal, but the benefits, to both the programmers and the companies who pay their salaries, are very significant. My pet peeve regarding quality software is programmers who insist on the status quo, without considering improvements in their toolkits and development processes. These programmers are still producing code with last year's methods and setting poor examples for the junior programmers who have to fix that code next year. Quality development is an continual spiral. As you introduce quality improvements, the quality of the each succeeding product generation improves. The inverse is also true. If you do not introduce quality improvements in the development process, the quality of the future products continues to deteriorate. The real problem for management is the intial cost of getting into the right spiral. Once on the proper path, quality methods becomes second nature. Steve Shapland Interactive Systems Corp.
ted@nmsu.edu (Ted Dunning) (10/12/89)
In article <3807@rtech.rtech.com> linda@rtech.rtech.com (Linda Mundy) writes: In article <16187@vail.ICO.ISC.COM> rcd@ico.ISC.COM (Dick Dunn) writes: ... I personally think that any new, just-out-of-school programmer should do maintenance work for awhile (assuming, of course, that the company already has a product!) ... why wait until then? one of the most important things that any course in software engineering should have students do is work on a large system. for that matter, so should _all_ but the most basic courses. if you have compiler class, make them work on a real compiler, in a course on semantics, make them work with the semantics of a real language. ... But the most important point: don't diminish people because of their relative positions. It can't do any good -- in fact, it is exactly such attitudes that lead to "bored, second-string" employees -- wherever they happen to be in the organizational structure. ... i am not sure that dick was trying to diminish people asmuch as he was just observing that the programmers who do maintenance and typically _are_ bored, typically _are_ second-string. -- ted@nmsu.edu Dem Dichter war so wohl daheime In Schildas teurem Eichenhain! Dort wob ich meine zarten Reime Aus Veilchenduft und Mondenschein
rcd@ico.ISC.COM (Dick Dunn) (10/13/89)
linda@rtech.rtech.com (Linda Mundy) writes about my comment that one hard- to-pin-down aspect of new-code quality might be: > >..."must be able to > >survive the next five years of changes, to meet new needs, hacked in by > ^^^^^^^^^^^^ > >bored second-string maintenance programmers..." ... > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ She says: > Dick, I really agreed with the main points of your article, making the above > remark come as a surprise. Not picking you in particular, but this is > such a common attitude towards maintenance programmers, I thought it might be > appropriate as a topic of discussion in its own right... I agree with Linda's sentiments. Now, to be clear about why I said what I did: It IS a common attitude toward maintenance programmers. It's an unfortunate, stupid, misdirected attitude. Not only do I NOT agree with it; it makes me angry. BUT it's there, and has to be reckoned with. In other words, I pointed out that quality software needs to survive being hacked over by bad maintenance programmers not because maintenance SHOULD be done that way, but because it WILL be done that way, in all likelihood. You have to make the software a little hardier than it should need to be in order to survive what it will be put through. Maybe I should also have been careful with the wording so that it would have been clear that I meant (second-string) (maintenance programmers), as opposed to (second-string maintenance) programmers. > -- do you think maintenance work is easier than development work? Sometimes it is - routine changes may be very easy to make. Sometimes it's not - the effects of an apparently small change may run across the grain and affect a large part of the code, requiring exceptional perspicacity to keep from screwing up the code. > ...does your answer change for large > systems vs. small systems? My initial reaction is that it doesn't. It changes depending on the structure of the system. The more interconnected a system is, the harder some changes are. > -- do you think that maintenance programming belongs lower on the > "pecking order" than development programming? As a rule, no. However, it is usually PLACED lower in the pecking order. Sometimes, maintenance work can be used effectively for training--in this sense, you spend time learning an existing body of code, understanding how things are done, seeing problems, etc., before you go create new code. It works if it's done carefully. > -- do you think that software engineers should do a stint at > maintenance, or do you think that maintenance is a place to > put the (perceived to be) less talented? > -- do you think maintenance should be a separate function, or that > developers should be responsible for maintaining their own > code (as much as possible)? All software engineers should spend time on maintenance. Since maintenance, in the general sense which includes modification, porting, and the like, is MOST of what software folk spend their time doing, having people work only on new code puts them a bit out of touch with reality. One approach is to assign people to a software project "cradle to grave." That is, if you write it you maintain it. You get to take on a new project when the work load for the old one drops below some threshold. This has an interesting incentive--if you want to work on new stuff, you may be more careful getting things right so you don't have to do a lot of maintenance time. The approach also has a handful of flaws, but it's worth exploring it in some environments. > -- do you think that there are different skill sets for maintenance > vs. development? if so, is one skill set "better" than > another? We need to get development and maintenance to equal prestige. There are people who LIKE to work on existing code, shaping it to new needs. There are others who are better at cutting from whole cloth; they have trouble reworking other people's code. We should be able to accommodate these different abilities. > You can probably tell, you hit one of my hot buttons... Yes, and I did so unintentionally; it seems that we're mostly in agreement. But it's just as well. It's a topic that needs to be dragged out into the open periodically. It has been realized for perhaps two decades that maintenance tasks are perceived as "inferior" in many organizations. It has also been realized that this leads to poor maintenance. But we per- petuate those damaging stereotypes. -- Dick Dunn rcd@ico.isc.com uucp: {ncar,nbires}!ico!rcd (303)449-2870 ...No DOS. UNIX.
barnes@Xylogics.COM (Jim Barnes) (10/13/89)
In article <16202@vail.ICO.ISC.COM> rcd@ico.ISC.COM (Dick Dunn) writes: > >One approach is to assign people to a software project "cradle to grave." >That is, if you write it you maintain it. You get to take on a new project >when the work load for the old one drops below some threshold. This has >an interesting incentive--if you want to work on new stuff, you may be more >careful getting things right so you don't have to do a lot of maintenance >time. The approach also has a handful of flaws, but it's worth exploring >it in some environments. One disadvantage to this approach is that it will encourage turnover of personnel. "I'm tired of just doing maintenance and since I can't get assigned to some new development, I'll just go somewhere where I CAN work on something new." Then you have to hire new programmers to do maintenance anyway. >We need to get development and maintenance to equal prestige. There are >people who LIKE to work on existing code, shaping it to new needs. I agree, but it seems that it is very hard to find these people. Maybe the truly good maintenance programmers do not change jobs very often. ---- Jim Barnes (barnes@Xylogics.COM)
UH2@PSUVM.BITNET (Lee Sailer) (10/13/89)
<16187@vail.ICO.ISC.COM> <1189@mrsvr.UUCP> In article <1189@mrsvr.UUCP>, hallett@positron.uucp (Jeff Hallett x5163 ) says: >How does one specify a requirement for "user friendliness" or >"well-written"? > I know many will scoff, but you can measure these things. Just go ask a social scientist, eg psychology, sociology, anthropology. These guys measure such fuzzy things all the time. So, without further ado, here's a brief course in Measurement: What is a meausre? We have some concept from the world, like 'user friendly'. The domain is the set of all programs we are concerned with. We'd need a function that maps from the domain to something arithmetical, say the set of reals. That function is a measure if some features of arithmetic on the resulting reals behave in a way that reflects the behavior of the objects in the domain. Consturcting that function is the art of measurement. Example--User Friendliness Let's use a spreadsheet as an example. Prepare a test, say 8 or 10 problems that spreadheet users should be able to solve. To measure the user friend- liness of spreadsheet X, choose 100 typical users at random, give them some fixed amount of instruction, say 5 hours, and then give them the test. The average score of those 100 users on the test is a number, UF(X). Repeat for spreadsheet Y with a new group of 100 users. This produces a number UF(Y). In fact, for any spreadsheet Z there is in theory at least a number UF(Z), so UF: Spreadsheets ------> reals is (within some variability from group to group) a function. I contend that if UF(X) > UF(Y) then spreadsheet X is more user friendly than Y is, which makes UF an "ordinal" measure. Comments That's pretty expensive, isn't it? Yes, it is. Some things are easy to measure. The physical scientists snapped those up pretty early, eg length, weight, temperature, strength. Some things are hard, eg time, space, subatomic thingies, and nearly all the stuff social scientists are studk with. Do UF(x)-UF(y) or UF(x)/UF(y) mean anything? These arithmetic operations may not be used on our example measure, UF. However, techniques for creating scales where these operations may be used are available, eg Magnitude Scaling. Where can I learn more? The library, or course, is full of books. Start with Research Methods in _______________, where the blank is any social science. Measuring "well-written" Give the code to the quality control team. They study the code, and then introduce bugs on purpose. Give the code to another team that debugs it. This produces several numbers: the number of introduced bugs they find, the number of introduced bugs they correctly fix, the number of new bugs they find. high scores for the first two indicate well-written code, and high numbers for the second indicate poorly written code. That's three measures. You might stick them together with something like WW = (measure1 + measure1)/measure3 Is this fuzzy and squishy? Yes, of course it is. More money poured on the process would make the measurement more precise, valid, reliable, and so on, but may not be worth it. lee
richard@pantor.UUCP (Richard Sargent) (10/13/89)
> From: phil@attctc.Dallas.TX.US (Phil Meyer) > Message-ID: <9670@attctc.Dallas.TX.US> > Date: 11 Oct 89 22:10:39 GMT > > In article <6742@hubcap.clemson.edu> billwolf%hazel.cs.clemson.edu@hubcap.clemson.edu writes: > >From rcd@ico.ISC.COM (Dick Dunn): ... > > A professional will meet cost and schedule > > constraints by using CASE tools, advanced programming languages, > > and so on, using overtime as the last resort. > > This last line is the killer. If you don't work your butt off, you don't > work for me! If the job needs doing, you stay 'till it's done. What is this? > Bankers ethics in the computer center? Forget it! You've got to be joking! Sweatshops went out of fashion in the last century! It is true that entrenpreneurial companies and start-ups require long hours of the staff/owners, but sensible employers plan for their staff to be still alive and functional so that they can do the next project. Staff distracted/unhappy/etc. from divorces/miserable homelives/etc. or burned out, etc. are poorer producers than those who aren't. Whether the burnout takes 6months, a year, or two isn't germane. Turn-over is *very* expensive for companies If a company can't budget a project to avoid burning out its staff, it is in long-term trouble. There certainly circumstances where the 6 month project just has to be done in 3 months, but if that is company policy, you'll lose a lot of people. *I* work to live, not live to work. I am fortunate to work in a field that I enjoy. If my employer tried to make 16 hour days a policy, I would switch to working for a bank faster than you could say "boo". (They pay better and the fringe benefits are nice - low interest and a pension plan, for starters. :-) Enough said. I fully realize there as many rebuttals possible as there are circumstances for everyone out there. This is my opinion: you don't have to agree nor even like it. Richard Sargent Internet: richard@pantor.UUCP Systems Analyst UUCP: uunet!pantor!richard
richard@pantor.UUCP (Richard Sargent) (10/13/89)
> From: linda@rtech.rtech.com (Linda Mundy) > Message-ID: <3807@rtech.rtech.com> > Date: 11 Oct 89 22:49:07 GMT ... > Not picking you in particular, but this is > such a common attitude towards maintenance programmers, I thought it might be > appropriate as a topic of discussion in its own right. > Most companies I have encountered have the attitude that it takes a particularly *skilled* person to be a *successful* maintenance programmer. Think about it for a few moments: when you come along, pick up some else's code, have to find and fix a bug in the shortest possible time frame (since it is delaying your customers!), and so on. Good maint.programmers are worth their weight in gold (well, maybe silver :-) to companies which have a significant investment in existing products. In an ideal world, it would be nice if we developers didn't create programs with any bugs, so maint.programmers would only have to deal with enhancement requests, but it just ain't that way now, and won't be for quite some time to come. :-( Richard Sargent Internet: richard@pantor.UUCP Systems Analyst UUCP: uunet!pantor!richard
rcd@ico.ISC.COM (Dick Dunn) (10/14/89)
rsd@sei.cmu.edu (Richard S D'Ippolito) writes: > ... rcd@ico.ISC.COM (Dick Dunn) writes: [about the hard-to-pin-down adaptability needs] > >..."must be able to > >survive the next five years of changes, to meet new needs,... > There are ways to do it. One can generally anticipate the areas of change, > especially in large systems where there is a long history of changes. Yes, you can anticipate some of the needs. But there's a whole continuum of possible changes. Some future needs are so explicit that you can actually put provisions in your requirements that the code be "ready" for the changes--in effect, what you do is specify and design for a feature; you just don't implement it. Next along the spectrum is the type of change Richard is talking about-- You may not be able to pin down the exact change you'll need, but you know the general area and direction. The type of change I'm interested in is all the way down at the other end of the spectrum...the changes which will eventually come about because someone comes up with a need and says, "Wait a minute! What about the xyzzy program? Doesn't it do a lot of this stuff? Could we adapt it to do what we need?" It may be an adaptation of the program to add a capability, or you might clone the program and transmogrify the clone. I don't have many clues of how to characterize or measure the adaptability of code to such unanticipated needs. I'm not even sure it makes sense to try to measure it. But I do know that it's common to look at recycling code this way...and I know that "quality code" will allow it to happen. It's hard to make analogies with other areas of engineering about this sort of change, because software is so much more mutable. -- Dick Dunn rcd@ico.isc.com uucp: {ncar,nbires}!ico!rcd (303)449-2870 ...No DOS. UNIX.
linda@rtech.rtech.com (Linda Mundy) (10/14/89)
In article <TED.89Oct12104143@kythera.nmsu.edu> ted@nmsu.edu (Ted Dunning) writes: > >In article <3807@rtech.rtech.com> linda@rtech.rtech.com (Linda Mundy) writes: > > In article <16187@vail.ICO.ISC.COM> rcd@ico.ISC.COM (Dick Dunn) writes: > ... > I personally think that any new, just-out-of-school programmer > should do maintenance work for awhile (assuming, of course, > that the company already has a product!) > ... >why wait until then? one of the most important things that any >course in software engineering should have students do is work on >a large system. for that matter, so should _all_ but the most >basic courses. if you have compiler class, make them work on a >real compiler, in a course on semantics, make them work with the >semantics of a real language. > I certainly agree that could be a very useful approach; however, few if any university CS programs operate that way. > ... > But the most important point: don't diminish people because of > their relative positions. It can't do any good -- in fact, it > is exactly such attitudes that lead to "bored, second-string" > employees -- wherever they happen to be in the organizational > structure. > ... >i am not sure that dick was trying to diminish people asmuch as >he was just observing that the programmers who do maintenance >and typically _are_ bored, typically _are_ second-string. ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ > I don't think he was *trying* to diminish people, yet that phrase "second-string maintenance programmers" sure sounds like a stereotype to me. And your comments above perpetuate that stereotype. >-- >ted@nmsu.edu > Dem Dichter war so wohl daheime > In Schildas teurem Eichenhain! > Dort wob ich meine zarten Reime > Aus Veilchenduft und Mondenschein -- "Who are you to tell me to question authority?" Linda Mundy {ucbvax,decvax}!mtxinu!rtech!linda
bander@cs.odu.edu (Jim Bander) (10/14/89)
In article <1189@mrsvr.UUCP> hallett@gemed.ge.com (Jeffrey A. Hallett (414) 548-5163) writes: > >Therefore it is time someone addressed the issue of how to >quantitatively specify nebulous terms like "user friendly", >"maintainable", "extendible", etc. In a requirements document, these >terms have no meaning aside from the warm and fuzzy connotations. To >quote Star Trek: The Next Generation ("Samaritan Snare"), the space >moron stated : "We look for things: things to make us go." Sure, but >quantify it. > >How does one specify a requirement for "user friendliness" or >"well-written"? I'm not sure anyone will ever QUANTIFY user-friendliness in a way that would help me design better systems. But Paul Heckel (formerly of PARC) SPECIFIED the requirement 30 useful ways in _The Elements of Friendly Software Design_ (Warner Books, 1984). His point is that software designers who think like engineers are doomed to fail, as was Thomas Edison when he tried to make movies. Engineers develop the medium; writers and artists use it to communicate effectively! -- ----------------------------------------------------------------------------- Jim Bander, Tidewater Consultants, Inc., Virginia Beach, VA Internet: bander@cs.odu.edu Ma Bell: (804) 497-8951 USnail: 160 Newtown Rd. #415 Va. Beach, VA 23462 "It's not the things we don't know that get us into trouble; it's the things we do know that ain't so." --Will Rogers ----------------------------------------------------------------------------- Disclaimer: All my mistaken opinions are my own.
linda@rtech.rtech.com (Linda Mundy) (10/17/89)
In article <16198@vail.ICO.ISC.COM> sps@ico.ISC.COM (Steve Shapland) writes: >In article <3807@rtech.rtech.com> linda@rtech.UUCP (Linda Mundy) writes: >>In article <16187@vail.ICO.ISC.COM> rcd@ico.ISC.COM (Dick Dunn) writes: >>>I know of no way to specify software requirements such as "must be able to >>>survive the next five years of changes, to meet new needs, hacked in by >> ^^^^^^^^^^^^ >>>bored second-string maintenance programmers..." ... >> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >> ..... I personally think that >>any new, just-out-of-school programmer should do maintenance work for awhile >>(assuming, of course, that the company already has a product!) It will >>introduce them to the product they will be working on, in a context where they >>can both learn and have something to show for it. ... > >I agree with the policy of assigning rookie programmers to maintenance >tasks. The learning experience is wonderful. Most companies I've >worked for tend to follow this policy, and I believe that this is >what leads to Dick's view of maintenance programmers. > Well a few people have pointed out the apparent contradiction of (a) wanting maintenance to be respected and (b) assigning rookies to do it. First, I did not say nor mean to imply that *only* rookies should be doing maintenance, just that *all* rookies should do some. None of this "this guy's too smart to 'waste' his time doing maintenance". In my experience, even smart programmers benefit a *lot* by exposure to the problems that occur when software gets out there in the real world -- they see first-hand that software may be used in ways that are not foreseen; they experience the agony of trying to debug something which has bad error handling/lack of tracing facilities/ etc... Hopefully, they learn from this how to code defensively. [...Steve's other comments deleted for brevity...] > >Steve Shapland >Interactive Systems Corp. -- "Who are you to tell me to question authority?" Linda Mundy {ucbvax,decvax}!mtxinu!rtech!linda
linda@rtech.rtech.com (Linda Mundy) (10/17/89)
In article <16202@vail.ICO.ISC.COM> rcd@ico.ISC.COM (Dick Dunn) writes: >linda@rtech.rtech.com (Linda Mundy) writes about my comment that one hard- >to-pin-down aspect of new-code quality might be: >> >..."must be able to >> >survive the next five years of changes, to meet new needs, hacked in by >> ^^^^^^^^^^^^ >> >bored second-string maintenance programmers..." ... >> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ > >She says: >> Dick, I really agreed with the main points of your article, making the above >> remark come as a surprise. Not picking you in particular, but this is >> such a common attitude towards maintenance programmers, I thought it might be >> appropriate as a topic of discussion in its own right... > >I agree with Linda's sentiments. Now, to be clear about why I said what I >did: It IS a common attitude toward maintenance programmers. It's an >unfortunate, stupid, misdirected attitude. Not only do I NOT agree with >it; it makes me angry. BUT it's there, and has to be reckoned with. In >other words, I pointed out that quality software needs to survive being >hacked over by bad maintenance programmers not because maintenance SHOULD >be done that way, but because it WILL be done that way, in all likelihood. >You have to make the software a little hardier than it should need to be >in order to survive what it will be put through. > >Maybe I should also have been careful with the wording so that it would >have been clear that I meant (second-string) (maintenance programmers), as >opposed to (second-string maintenance) programmers. > Well your main point remains valid, i.e. that one needs to think about future maintenance/enhancement when coding something. The phrase quoted above just jumped out at me -- like a red flag in front of a bull -- and demanded comment... >-- >Dick Dunn rcd@ico.isc.com uucp: {ncar,nbires}!ico!rcd (303)449-2870 > ...No DOS. UNIX. -- "Who are you to tell me to question authority?" Linda Mundy {ucbvax,decvax}!mtxinu!rtech!linda
kurtl@fai.UUCP (Kurt Luoto) (10/17/89)
In article <7402@xenna.Xylogics.COM> barnes@Xylogics.COM (Jim Barnes) writes: >In article <16202@vail.ICO.ISC.COM> rcd@ico.ISC.COM (Dick Dunn) writes: [ Some stuff deleted regarding assignment of personnel to maintenance programming ... ] >>We need to get development and maintenance to equal prestige. There are >>people who LIKE to work on existing code, shaping it to new needs. > >I agree, but it seems that it is very hard to find these people. Maybe >the truly good maintenance programmers do not change jobs very often. > >---- > Jim Barnes (barnes@Xylogics.COM) I agree that finding people to stay with a project long-term is often difficult. I certainly don't have any easy solutions. However, I think that we help continue the problem and the mindset that gives rise to it by refering to "development programming" and "maintenance programming" as if they were somehow very different things. In my humble experience, there really is no difference. The cuttoff point for the "maintenance" phase of a product's life cycle is completely arbitrary. I don't change the way I program based on whether the product has had a first release or not. Certainly I have some different problems when having to use or modify code that another person wrote as opposed to code that I wrote myself, but I have dealt with that situation even in the "development" phase. Ever had a team member leave the company in the middle of development? I think a company can take a small step towards resolution by officially not recognizing such an arbitrary distinction between development and maintenance phases of a project. I know that I'm not the first to voice the opinion, but can't find the references at the moment. Cheers. ------- Kurt W. Luoto kurtl@fai.fai.com or ...!sun!fai!kurtl
jrj1047@ultb.UUCP (J.R. Jarrett) (10/18/89)
titled "Software Maintenance is a Solution, not a Problem" in the Jan '89 issue of System Development. He stated that the goal of maintenance should be to maximize efficiency rather than minimize cost, and to do that, the best people should be attracted to and placed in maintenance positions. It doesn't always happen that way. I work for a software maintenance group, and the new hires are the ones that get put in there; the experienced people move on to more "interesting" ventures. It's nice to say "Put the best people in", but until it happens in industry, it's no more than lip service.
madd@world.std.com (jim frost) (10/19/89)
In article <3829@rtech.rtech.com> linda@rtech.UUCP (Linda Mundy) writes: >In article <16202@vail.ICO.ISC.COM> rcd@ico.ISC.COM (Dick Dunn) writes: >>You have to make the software a little hardier than it should need to be >>in order to survive what it will be put through. [...] >Well your main point remains valid, i.e. that one needs to think about >future maintenance/enhancement when coding something. Yes; the technique I've used is to error-check arguments everywhere that performance isn't ABSOLUTELY necessary, even in distributed code. This costs some performance but improves the initial quality and future maintainability. During development it catches early programming errors, saving debug time. Sometimes it saves a LOT of debug time. During maintenance it provides known points of failure which can be used in tracking reported bugs and drops the likelihood that low-quality programmers will use functions incorrectly. jim frost software tool & die madd@std.com
cweir@richsun.UUCP (Charles Weir) (10/20/89)
In article <1989Oct18.201225.3330@world.std.com> madd@world.UUCP (jim frost) writes: >>>You have to make the software a little hardier than it should need to be >>>in order to survive what it will be put through. >[...] >>Well your main point remains valid, i.e. that one needs to think about >>future maintenance/enhancement when coding something. > >Yes; the technique I've used is to error-check arguments everywhere >that performance isn't ABSOLUTELY necessary, even in distributed code. > >This costs some performance If performance is important, then make it an option (Compile option in C, I don't know in other languages): #if defined (CHECK)... [check all parameters] #endif That isn't quite as convenient as leaving the checks in permanently, but it allows one to use the technique in virtually ALL code. It's funny how little public domain code does this... -- Charles Weir, Rich Inc, Franklin Park, IL 60131 Email: cweir@richsun.uucp uunet!richsun!cweir