Slashdot Mirror


The Economics of Perfect Software

An anonymous reader writes "This article takes the interesting perspective that leaving bugs in software is good — little ones, at least. This quote is particularly insightful: 'How do you know whether a bug is big or little? Think about who's going to hit it, and how mad they'll be when they do. If a user who goes through three levels of menus, opens an advanced configuration window, checks three checkboxes, and hits the 'A' key gets a weird error message for his trouble, that's a little bug. It's buried deep, and when the user hits it, he says 'huh,' clicks a button, and then goes on his merry way. If your program crashes on launch for a common setup, though, that's a big bug. Lots of people will hit it, and they will all be pissed. ... The cost of fixing all the bugs in your program and then being sure you fixed them all is way too high compared to the cost of having a few users hit some bugs they won't care about."

201 comments

  1. How is this news? by Dragoniz3r · · Score: 5, Insightful

    Diminishing returns applies to programming too... big surprise...

    1. Re:How is this news? by Jurily · · Score: 3, Interesting

      Diminishing returns applies to programming too... big surprise...

      But you don't know how much each bug will cost. What if that little UI glitch gives remote root?

      BTW Joel Spolsky said the same in 2001. Big fucking news indeed.

    2. Re:How is this news? by Anonymous Coward · · Score: 1, Insightful

      I leave in all kinds of weird bugs that only I can fix, just to guarantee my future job. I'm betting big software companies relying on people buying the new versions of their products do the same. After all, there's no reason for upgrading perfect software, is there?

    3. Re:How is this news? by siride · · Score: 4, Funny

      Then I would say that's a big bug, so it should be fixed.

    4. Re:How is this news? by clarkkent09 · · Score: 1

      Yeah, I remember waaaay back the saying was something like it takes 20% of the time to do the first 80% of the code, and 80% of the time to do the remaining 20%. It would be nice to get every last bug fixed but if you have plans for the rest of your life other than bug fixing you have to draw the line somewhere and get it released.

      --
      Negative moral value of force outweighs the positive value of good intentions.
    5. Re:How is this news? by Anonymous Coward · · Score: 0

      That was my first thought as well. Thanks for being quick about it.

    6. Re:How is this news? by obarel · · Score: 4, Insightful

      I hope you're not serious.

      The first problem is that it doesn't guarantee anything. There are very few software companies that close down or get rid of people because of small quirky bugs. You're not going to lose your job simply because you write perfect code either...

      The second problem is that if you do keep your job, it's only to maintain the same piece of code. Aren't there more exciting things to do than to fix the same bugs you left in some spaghetti code that only you can understand? Isn't it better to write good solid readable code and move on to more interesting problems than off-by-one bugs you left on purpose?

      And the third problem is that you can never justify that to your boss: "You've got to keep me because the code is terrible and only I can maintain it". The easiest thing would be to cut the losses and send you free, only to bring someone who can write some code that isn't an expensive liability.

      Sadly, you're not the only person that writes bad code for "job security". So I hope your post gets a "Score: 5 Funny" and not a "Score: 2 Insightful"...

    7. Re:How is this news? by Vellmont · · Score: 4, Insightful


      What if that little UI glitch gives remote root?

      Then you're an idiot who didn't separate your software properly into layers and should learn, or get out.

      I understand your example, but the ultimate fear you're expressing about "the unknown" isn't warranted. Software is complex and can lead to unexpected problems. But worrying about every single minor bug possibly being a major one is just silly if you understand how the system interacts with itself. That's why good software is developed in layers. If you've really got a system where a UI glitch leads to a root exploit, time to throw away the whole application and start over.

      --
      AccountKiller
    8. Re:How is this news? by Jurily · · Score: 1

      But how do you know before it's time to ship?

    9. Re:How is this news? by spongman · · Score: 4, Interesting

      yeah, there's a also a mistaken suggestion that there's a correlation between the severity of the bug and the cost of fixing it.

      in general there isn't.

      you might have a crashing, data-destroying bug that's trivial to fix. or you might have a minor UI annoyance that would require a complete re-write in order to fix, possibly introducing a whole slew of new bugs.

      unless you have a deep understanding of the architecture of the application, there's absolutely no way to judge which class a given bug is in.

    10. Re:How is this news? by spongman · · Score: 1

      i just hope your boss is smart enough to know this so that once your company fails he'll warn all your potential future employers not to hire you.

    11. Re:How is this news? by Z00L00K · · Score: 1

      Use tools like FindBugs to root out as much as you can.

      Then you have at least shoveled away the bulk of stupid bugs that causes resource leaks and other things that makes a system go obnoxious after a while.

      Design bugs are a different kind of animal and those are harder to figure out since they aren't detected by the normal tools.

      --
      If builders built buildings the way programmers wrote programs, then the first woodpecker would destroy civilization.
    12. Re:How is this news? by plopez · · Score: 1

      Who cares about the UI giving an attacker root. As far as I am concerned it is a *minor* problem. I don't pay the cost, why should I care?

      For those of you who are a bit slow, I don't mean this. It just serves to illustrate a point.

      --
      putting the 'B' in LGBTQ+
    13. Re:How is this news? by Anonymous Coward · · Score: 0

      Oft times fixing the little bug cures the big mysterious one, though.

    14. Re:How is this news? by AliasMarlowe · · Score: 1

      What if that little UI glitch gives remote root?

      Then you're an idiot who didn't separate your software properly into layers and should learn, or get out.

      "You talkin' to me?" - Gates and/or Ballmer, or perhaps their legions of minions.

      --
      Those who can make you believe absurdities can make you commit atrocities. - Voltaire
    15. Re:How is this news? by 10101001+10101001 · · Score: 1

      What if that little UI glitch gives remote root?

      Then you're an idiot who didn't separate your software properly into layers and should learn, or get out.

      It's funny you say that because a lot of the time it's little glitches in IE that end up giving a user remote root. A large part of the problem is users running IE as root. But, even in environments where a program is given limited privilege, either support libraries or the OS itself has various bugs that allow first remote exploitation and then further privilege escalation. Jpeg, mp3, and zip have proven to be capable carriers of exploits precisely because of the issue that either the official support code or a common library contained an exploit; this has occurred with Windows and Linux (and I'm pretty sure Macs too). Meanwhile, Windows and Linux systems generally trust a locally running program (Windows because for the longest time programs were already root and for Linux because most users run trusted, free software) and not nearly enough effort has been put into prevent privilege escalation to root.

      I understand your example, but the ultimate fear you're expressing about "the unknown" isn't warranted. Software is complex and can lead to unexpected problems. But worrying about every single minor bug possibly being a major one is just silly if you understand how the system interacts with itself. That's why good software is developed in layers. If you've really got a system where a UI glitch leads to a root exploit, time to throw away the whole application and start over.

      Well, given that basically every commonly used OS has had such built-in "minor" bugs and Windows, Linux, and Mac programs are now being built so that lots of minor bugs are turned into simple DoS attacks (by basically reducing every possible buffer overflow into a program crash), your analysis basically amounts to scrapping all modern OSs and starting over. While I rather applaud the goal and have called for it on various occasion, I do find it a bit humorous that you seem to be calling out an individual developer over the point instead of just leaping to the end conclusion.

      The simple point is, development tools and the OS are simply not designed from the ground up aiming for any sort of correctness. A large part of this is that such work is very hard, generally unrewarding, and most developers consider languages that strive to aid in correctness as cumbersome or useless. Even developers who would qualify as good architects are rarely respected enough to be listened to and are generally unwilling themselves to put in the effort to do the right thing when pushed to develop something as quickly as possible.

      To extend the analogy, most development projects are closer to shanty towns created from the available materials. Is it any surprise then that most software is so horribly defunct? To me, pointing out the economics of "perfect" software is very much a strawman. People don't generally want perfect software (or perfect buildings, for that matter). People generally do want software (and buildings) to be resistant against foreseeable dangers (fuzzing attacks and earthquakes). Coming in later and attaching make-shift braces to software/a building might be better than nothing. But the mentality that everything can be fixed later or worked upon later because perfect software is unobtainable really doesn't excuse not putting in the 20% or 50% more effort in design to make a system that doesn't have to be constantly updated.

      --
      Eurohacker European paranoia, gun rights, and h
    16. Re:How is this news? by Anonymous Coward · · Score: 0

      My experience is that serious errors in software are not coding problems but are incorrect, inconsistent or unspecified requirements. Computer programming is in some sense a trivial mechanical task that will eventually be entirely done by the computers themselves.

    17. Re:How is this news? by Anonymous Coward · · Score: 0

      Only if you assume that bugs are like needle in haystacks; you only need to find them.

      Finding the source of a bug and fixing it may very well lead to a multitude of other bugs.

      It's like finding a needle in the haystack, taking it out, and in doing so, more needles somehow spawn within the haystack.

    18. Re:How is this news? by Vellmont · · Score: 1


      It's funny you say that because a lot of the time it's little glitches in IE that end up giving a user remote root.

      IE is a full program, not a UI. A simple UI would be a form on an HTML page that uses some javascript. (I have heard of morons that use Javascript as a security mechanism. That's the kind of thing I'm talking about.

      Jpeg, mp3, and zip have proven to be capable carriers of exploits precisely because of the issue that either the official support code or a common library contained an exploit;

      Yes, decoding all of these are good examples of where security problems can take hold. It's all untrusted input and should be treated as such.

      Well, given that basically every commonly used OS has had such built-in "minor" bugs and Windows, Linux, and Mac programs are now being built so that lots of minor bugs are turned into simple DoS attacks (by basically reducing every possible buffer overflow into a program crash), your analysis basically amounts to scrapping all modern OSs and starting over.

      Not really. While the OS might be able to help, it's certainly possible to build layers into your program and many people do exactly that. Postfix (an SMTP server) is a good example of that. OpenSSH takes a slightly different approach and uses different processes with different levels of privilege associated with them. Both of these are examples of what I'd call layered software.

      The rest of what you say I'm pretty much in agreement with. I _would_ say that there seems to be some developers who actually think "perfect" software is both somehow possible, and wanted by people. (Though I'd agree in reality most users take a pragmatic approach)

      --
      AccountKiller
    19. Re:How is this news? by turbidostato · · Score: 1

      "Yeah, I remember waaaay back the saying was something like it takes 20% of the time to do the first 80% of the code, and 80% of the time to do the remaining 20%."

      Maybe it's because it comes from so way back you can't remember properly but it doesn't go that way.

      It goes "it takes 80% of the time to do the first 80% of the code, and 80% of the time to do the remaining 20%". There, fixed for you.

    20. Re:How is this news? by phillipsjk256 · · Score: 1

      I _would_ say that there seems to be some developers who actually think "perfect" software is both somehow possible, and wanted by people.

      I think "perfect" software is possible, but won't be demanded until computer technology matures to the point the society is fundamentally changed. With the wheel and printing press this took hundreds of years. I don't think computer technology is going to be any different. Back before the Dot-Com bubble, people were assuming that computers/the Internet had somehow changed the laws of economics. The crash proved those people wrong.

      Software happens in the mathematical domain. It is possible to "prove" that software is correct (that it will implement the specification). As layers and layers of abstraction get added to software, it is harder to prove it is correct. As computers stop getting faster and faster as we run into the laws of physics, it will make more and more economic sense to avoid any abstraction (library or hardware) that is not proven correct. To prove (and correct) current popular Operating Systems would take decades. That is why I feel my estimate of several hundred years (for the computer industry to mature) is not too far off.

      Digital Rights Management is a special case: any software (or hardware) implementing DRM can not be proven correct; it is designed to fail. Not only may the experience of "legitimate" users be degraded, but it is impossible to prove the software will fail (or succeed in the case of cheat tracking) in the face of an attacker. Even if you could come up with "perfect" DRM, there will be errors in the specification. The Rule of Law is a complicated system checks and balances that would be short-circuited by any automated process.

    21. Re:How is this news? by dudpixel · · Score: 1

      whoosh!

      --
      This seemed like a reasonable sig at the time.
    22. Re:How is this news? by dudpixel · · Score: 1

      I find its far easier not to put the bugs in in the first place. If I dont put them in, then I dont have to waste time looking for where I put them later...

      seriously though, I do find that testing each feature as I add it in goes a long way towards bug-free code.

      --
      This seemed like a reasonable sig at the time.
    23. Re:How is this news? by cogitolv · · Score: 1

      Software bugs fall into three broad catagories, regardless how QA labels them: 1. Insignificant (font size on menu two it 1 point bigger than menu 2) 2. Average - (If you click the menu, while holding down the alt key, a wrong menu pops up), at least 85% of the bugs are here. 3. WTF - (The wrong user is updated if you keep hitting 'save'). All 2's and 3's need to be fixed - you can set priority to schedule which ones to do first, but you cannot ignore them. The error witnessed is often just one manifestation of a bug, the other results from the same coding error could be worse. We are never going to ship bug free software, but if we know about it before we ship, we needs to be fixed. The example surprised me, if I have to drill down 20 freakin levels and then the app blows - i'm going to cuss, and cuss loudly (and may stop using the software). I thought the example of the bug to ignore, was going to be an example of one NOT to ignore.

      --
      Well, sometimes you eat the bear, sometimes the bear eats you.
    24. Re:How is this news? by Anonymous Coward · · Score: 0

      Do you actually enjoy working on subpar stuff and plan to do that for years? After all that software will never be good because you're intentionally keeping it that way.

      As for the article, when I was a developer I often fixed bugs not because they would be embarrassing to the company or would cause problems to the users. I fixed them because if they are there, my program/module won't be good enough for my standards.

      Maybe it's bad economics, perhaps I should have spent more time helping to fix other people's stuff (don't get me wrong - I did spend a fair bit of time helping).

      To me if you're that desperate to keep your job that you have to resort to leaving weird bugs in, then you probably shouldn't be working as a programmer in the first place. The world might be better off if you did something you were better at - I believe that's good economics too: more people doing what they're good at.

      And not just economics - if you can't take pride in your work, maybe you should really be planning to do something else instead of trying to wedge yourself in like a bloodsucking tick. Something else where at the end of the day you can say "Y'know, I did a pretty good job there".

    25. Re:How is this news? by Anonymous Coward · · Score: 0

      You don't need an economics degree to know this, even school kids have always figured out that it's easier to jump from 70% to 85%, but it gets exponentially harder to increase the score as you approach 100%.

    26. Re:How is this news? by Anonymous Coward · · Score: 0

      [quote]Then you're an idiot who didn't separate your software properly into layers and should learn, or get out.[/quote]
      Then why are a lot of people still using Windows ?

  2. Lets look at it another way by Anonymous Coward · · Score: 3, Insightful

    You cant afford perfect software.

    1. Re:Lets look at it another way by Tablizer · · Score: 2, Informative

      You cant afford perfect software.

      Unless you are NASA:

      http://www.fastcompany.com/magazine/06/writestuff.html
           

    2. Re:Lets look at it another way by sopssa · · Score: 4, Interesting

      Quote from the site:

      Consider these stats : the last three versions of the program -- each 420,000 lines long-had just one error each. The last 11 versions of this software had a total of 17 errors.

      So yes, they have errors too and their software isn't perfect nor bug-free. But their acceptable cost versus bug-free threshold is just a lot more higher than usual software. Exactly what the summary and article is about.

    3. Re:Lets look at it another way by umghhh · · Score: 1
      They taught me these things in a technical university - quality is not absolute but must be good enuff - you make it a holly grail and you lose money, you disregard it you will piss of customers (and lose money). I guess not being a computer scientist has its advantages.

      Common sense does too.

  3. Leaving bugs is not professional by Anonymous Coward · · Score: 0

    Fix them all, you basterds!

    1. Re:Leaving bugs is not professional by Anonymous Coward · · Score: 0

      You obviously don't work in IT. If you do, it's in marketing or sales.

  4. Oh Please by WrongSizeGlass · · Score: 5, Insightful

    The reason that every piece of software ships with bugs is because:
    * It's created by people
    * The programmers, testers, etc can never find all the bugs
    * It's gotta get out the door so you can pay your programmers, testers, etc
    * All of the above

    There is a matter of pride with individual programmers, small groups, and most open source programming projects. We'd all love to be able to crow about shipping a bug free project/product. We'd do it if we could ... and someday we will.

    1. Re:Oh Please by Anonymous Coward · · Score: 0

      ... and someday we will.

      I doubt that that will happen. Anything made by a human has a flaw.

    2. Re:Oh Please by zappepcs · · Score: 4, Insightful

      Exactly. Most coders have to use the code they write. Leaving bugs is not something you do if you know they are there. Sure some people do that, but not the ones that want to get it right - at least for their own use. This is why some open source software is not infinitely usable - it did what the original author needed, and was not intended particularly to solve everyone's silly problems. The example of the 'A' key is probably something that was going to work soon, but the need for it never materialized and someone forgot to disable the code that checks for the letter 'A' - and since it was not implemented, nobody checked it.

      The first time I had code in production, running 24/7 I was kind of upset that I didn't need to look at it everyday, then amazed that it was working so well. Then, months later when I did have to go look at why it seemed to be not working right, I learned how important documentation and comments are. At this point I stopped being amazed that it worked well, but that it worked at all. Bugs are not left on purpose, only when there is not time or resources to fix them.

    3. Re:Oh Please by Lije+Baley · · Score: 1

      Duh, you just outlined the economic rationale. And b)We'd love to ship something bug free, but even as individuals with all of our time at our discretion we would not waste the rest of lives trying to get the bugs out of something as complex as modern software, so NO we won't do it SOMEDAY either. Maybe Skynet will though...

      --
      Strange things are afoot at the Circle-K.
    4. Re:Oh Please by Anonymous Coward · · Score: 0

      The reason that every piece of software ships with defects is because:
      * It's created by people who think defects are inevitable
      * The programmers, testers, etc spend all their time fixing defects after they have been introduced rather then trying to never introduce them in the first place
      * It's gotta get out the door and capitalism treats low quality as a PR problem, instead of a people problem.
      * All of the above

      There.. fixed it for you ;-)

    5. Re:Oh Please by WrongSizeGlass · · Score: 5, Insightful

      even as individuals with all of our time at our discretion we would not waste the rest of lives trying to get the bugs out of something as complex as modern software, so NO we won't do it SOMEDAY either.

      We may not ever accomplish it, but that doesn't mean we won't stop trying. Bugs slip through no matter how much we test. One reason is because no matter how we may try to break it we can never imagine the utterly creative stupidity that a user will cast upon our software.

      And as far as Skynet is concerned, it will be written by humans or by a system written by humans, so it's gonna have bugs, too (unless it was written by Deep Thought, but that's another story entirely).

    6. Re:Oh Please by zippthorne · · Score: 1

      * It's gotta get out the door and capitalism treats low quality as a PR problem, instead of a people problem.

      At first I thought this was an indictment of capitalism, but then I strained to think of an economic system that treats it differently and realized that you can claim to think of low quality as a "people problem" if the users are the people who are the problem...

      --
      Can you be Even More Awesome?!
    7. Re:Oh Please by Anonymous Coward · · Score: 1, Insightful

      We'll patiently wait for you to show us your prefect, bug free software. Until then we'll get on with the job of writing the software that you use every day.

    8. Re:Oh Please by phantomfive · · Score: 1

      We'd do it if we could ... and someday we will.

      Really? How? I'm genuinely curious.

      --
      Qxe4
    9. Re:Oh Please by Jurily · · Score: 4, Insightful

      Leaving bugs is not something you do if you know they are there.

      Depends on how much of the code you have to refactor to get rid of it, how many users are annoyed at that particular bug in the previous release, and how many new users you'd get by implementing the most asked-for feature instead.

      You probably won't fix the bug where your text editor crashes if the user tries to open a file larger than 32 Gb first, if they've been also nagging you for global replace functionality.

    10. Re:Oh Please by Anonymous Coward · · Score: 0

      (...) prefect (sic), bug free software.

      http://ertos.nicta.com.au/research/l4.verified/

    11. Re:Oh Please by Vellmont · · Score: 2, Insightful


      Most coders have to use the code they write. Leaving bugs is not something you do if you know they are there. Sure some people do that, but not the ones that want to get it right

      This happens all the time. Have you never read release notes that have a list of "known bugs"? Generally that's open source software. The closed source software has the exact same list, it just exists on the software makers private network.

      Sure, if you KNOW how to fix the bug and it's easy most people will just fix it. The other cases it depends on the economics. Open source software isn't any different than closed source in this respect. Resources are always finite whether they're money or time.

      --
      AccountKiller
    12. Re:Oh Please by zappepcs · · Score: 1

      You are describing the resources vs number and type of bugs. With enough resources, both problems would be addressed: if $file.size > 32Gb then err_msg and return. In this case, global replace is probably more work to fix. Still, it comes down to resources and the squeaky wheel syndrome.

      Lets not ignore or forget that in many commercial situations, the propensity for Marketing and Sales groups to describe the problems opposite of how I did. That is to say they will promise the hard fix before the easy one to get the sale. This in turn negatively affects the resources vs. problems algebra.

      3(-2x + 1) = -6x - 7 looks good on paper so far... Sure, global replace is easy says the salesman, the dev teams are working on it already.

    13. Re:Oh Please by Tablizer · · Score: 3, Funny

      The reason that every piece of software ships with bugs is because:...It's created by people...

      I'm breeding cockroaches to write code. How ironic: bugs will solve bugs.
         

    14. Re:Oh Please by gyrogeerloose · · Score: 2, Insightful

      I doubt that that will happen. Anything made by a human has a flaw.

      Yeah, but it's one of those infinite-number-of-monkeys-for-an-infinite-amount-of-time things. Enough programmers writing enough code for enough time will, more or less by accident, write a perfect piece of code.

      --
      This ain't rocket surgery.
    15. Re:Oh Please by Anonymous Coward · · Score: 1, Insightful

      3(-2x + 1) = -6x + 3

    16. Re:Oh Please by scamper_22 · · Score: 2, Interesting

      The other thing that might be a possibility... is that software needs to have bugs from the business end to ensure lucrative service contracts.

      Now this is just pure speculation of course... but I used to a work for networking vendor known for superior customer support... and making mega bugs in the servicing contracts as well.
      I sat there looking at some ridiculous policies in the software realm that almost seemed to encourage bugs in the code as opposed to writing good software.

      They were throwing code around to various teams... seemed to value programmers who could be tossed onto a project instead of those who wrote good software...

      I left... not my kind of place... I don't like being a janitor cleaning up everything... but lately... I've gone more into technical project management. You know what customers love... they love seeing lots of engineers giving them attention.
      So it got me thinking if such policies to encourage buggy software are not just stupid policies, but actually active management policies... to ensure customers are willing to pay for lofty service contracts.
      Get something that works reasonably well to get things working... but make sure the bug fixing phase never ends... and you never lose service contracts.
      You never just sell a piece of hardware... like a spoon.

    17. Re:Oh Please by acecamaro666 · · Score: 3, Insightful

      Not true. Infinite number of programmers and an infinite amount of time just means an infinite number of bugs.

    18. Re:Oh Please by istartedi · · Score: 1

      I would add, "* perfection can't be achieved within today's software lifecycle's".

      Maybe at some point in the future, the software lifecycle will be longer. A particularly mature piece of software might be considered "done" from the standpoint of features. Then, its lifecycle is indefinite. You might consider analog signal decoding as a very simple program with a feature set that is "done". In the early days of FM radio there was debate about the best circuit for decoding a signal, then they settled on a particular way of doing it.

      Almost all modern software is considerably more complicated, although I wager that much of the low-level communication software such as digital radio and cell phone packet processing is approaching "done", or "perfection". These are relatively simple programs that have to work with a high degree of reliability.

      An office suite, OTOH, is way too complicated, with way too many features being added for this to happen. However, it's not too hard to imagine that 100 years from now there will be some kind of standard for office suite features, and you will be able to get work done in minimum feature mode. It will virtually never fail. Office suites will be DONE. They'll be perfect. Fortunately, we'll all be dead or at the very least retired by then, so there's no need to worry about programmers losing all their jobs just yet.

      In other words, as you more succinctly put it, "someday we will".

      --
      For all intensive purposes, "whom" is no longer a word. That begs the question, "who cares"?
    19. Re:Oh Please by not-my-real-name · · Score: 1

      ...Have you never read release notes that have a list of "known bugs"? Generally that's open source software. The closed source software has the exact same list, it just exists on the software makers private network...

      This list also exists for aviation (and I'm sure other life critical) software. In the case of aviation software, it gets submitted to the FAA (or whoever your regulatory agency is, along with an analysis of each bug and why it is OK not to fix it.

      --
      un-ALTERED reproduction and dissimination of this IMPORTANT information is ENCOURAGED
    20. Re:Oh Please by Hotawa+Hawk-eye · · Score: 2, Insightful

      One reason is because no matter how we may try to break it we can never imagine the utterly creative stupidity that a user will cast upon our software.

      That's one factor; but another larger factor is that there are often several orders of magnitude more users of your software than there are testers. Even if the testers were able to come up with all the "utterly creative stupidity" as the users, there wouldn't be enough hours in the day for them to test all those cases.

    21. Re:Oh Please by gyrogeerloose · · Score: 1

      Ah, but they will pass through the infinite number of bugs stage and onto perfection. Eventually. Maybe even before the sun burns out, although I wouldn't bet on it.

      --
      This ain't rocket surgery.
    22. Re:Oh Please by zappepcs · · Score: 1

      It was just supposed to "look good" to go with the story, but I guess having a bug was just as good :-)

    23. Re:Oh Please by Anonymous Coward · · Score: 0

      Plenty of bugs are introduced because of new features breaking old ones due to unintended consequences of changes made. It passes the skin-deep regression test, ship it!

      It is perfectly fair to blame shitty programmers when their software is used as intended and breaks. Don't shift blame on the user so broadly.

    24. Re:Oh Please by Anonymous Coward · · Score: 0

      I'm in the business of selling software with expensive support contracts. There is no business case for intentionally building the software with bugs. My customers will not pay more to call my support department more often. They pay a flat fee and get all the support they need. My ideal scenario is that the support lines never ring, so I can use my support staff for more productive things, like doing manual testing of release candidates and prioritizing which bugs the developers should fix.

      We don't fix all the bugs we find, but anything that would generate lots of support calls has to go.

    25. Re:Oh Please by Spyder · · Score: 1

      I'm breeding cockroaches to write code. How ironic: bugs will solve bugs.

      Well if you're not breeding them to debug, then really you're making bugs to make bugs - which arguably they already know how to do.

      --
      Spyder
  5. Well, sure, if you have precognition by Geoffrey.landis · · Score: 4, Insightful

    Well, sure, except that this assumes that you are PERFECT in your ability to predict the effect of a bug. And if you're not, that bug that you think will only happen in some situation that's vastly improbably will, in fact, actually hit at exactly the WORST possible time, because maybe that key sequence gets used in some extremely important operation that you hadn't realized your software was going to be used for. Or maybe that bug is ALSO triggered by some different sequence that you weren't quite prescient enough to realize would be common.

    --
    http://www.geoffreylandis.com
    1. Re:Well, sure, if you have precognition by PingPongBoy · · Score: 1

      Well, sure, except that this assumes that you are PERFECT in your ability to predict the effect of a bug

      That's just it. Keeping software in a controlled environment if there is any risk of it running amok is only prudent. In the enlightened days of Terminator Toyotas a cap on the damage caused by bugs needs to be considered.

      --
      Know your pads. One time pad: good for cryptography. Two timing pad: where to take your mistress.
    2. Re:Well, sure, if you have precognition by Bigjeff5 · · Score: 1

      It's not hard.

      Bug Report:

      "If I do X, Y, then Z, and sometime in the next 5 seconds do A, B,C, followed by ctrl-shift-A, I get an error message."

      If you've got a million customers, there are maybe 50 who are going to hit that sequence, and all it does is give them an error message without stopping their work in any way. The effect on the user is practically nill.

      Now, same bug, but for some reason you've buried significant functionality in this sequence that 10% of your users are going to want to use, it's more important but still a minor bug that doesn't really affect the user's ability to use your software. It does make your software seem less professional, so maybe you fix it at the next major update.

      One more time, same basic bug, but this time instead of just throwing an error message and continuing like nothing bad happened, it throws an error and then crashes your program. Worse if it corrupts any saved data. That's a serious bug, and you want to fix that ASAP and push out a free patch to all your customers as soon as you possibly can. That's like, work-around-the-clock-to-fix it important, because there is a very good chance you will lose 10% or more of your customers over it.

      Well, sure, except that this assumes that you are PERFECT in your ability to predict the effect of a bug.

      For 99% of bugs that you come across before the release, you know exactly how it will affect your customers and exactly how important it is to fix. Those 1% are the ones that come out of the blue, they are rare, and they usually don't affect a lot of people. But sometimes they do.

      However, once you know about a bug (what it is and what it does) it's very easy to determine how it impacts your customers. What you are thinking of are bugs that you think you understand, but really don't. That's different, and falls into that rare 1%. It's almost like you've found Bug 1, it's common enough that it is something to be a little concerned about, but it doesn't actually do anything so you ship anyway. What you did not know is that there is a subset of Bug 1, called Bug 1a, which with additional conditions (making it even rarer than Bug 1 itself) is absolutely devastating to your program.

      You missed Bug 1a going out the door, even though you caught Bug 1 but decided it wasn't worth fixing at this time. Now you have to determine how many people Bug 1a affects, if it is just a handful you can put it off - it isn't worth fixing. If it's a significant number of people then you'd better think about fixing it soon.

      It's not a difficult process to figure out how much a bug affects your users, but you are definitely not going to catch all the bugs, and that's true for serious bugs that are subsets of minor bugs.

      --
      Security is mostly a superstition... Avoiding danger is no safer in the long run than outright exposure. - Helen Keller
    3. Re:Well, sure, if you have precognition by Geoffrey.landis · · Score: 1

      It's not hard.

      Bug Report:

      "If I do X, Y, then Z, and sometime in the next 5 seconds do A, B,C, followed by ctrl-shift-A, I get an error message."

      That's not the bug. That's a symptom of the bug. The bug itself will be something like a race condition, or a temporary variable that is not deleted after use. If it's triggered by sequence A,B, C-- and you don't actually what the bug is-- then why do you think know what else will trigger the bug?

      ...It's not a difficult process to figure out how much a bug affects your user

      Sure... if you can predict everything that your users are ever going to do with your software, now and in the future.

      --
      http://www.geoffreylandis.com
  6. probably good idea; definitely bad example by pem · · Score: 3, Insightful

    If a user who goes through three levels of menus, opens an advanced configuration window, checks three checkboxes, and hits the 'A' key gets a weird error message for his trouble, that's a little bug.

    When I'm trying very hard to make a program do what I want it to, the more hoops I have to jump through for every iteration of trying to make it work, the madder I get. So, the fact that the software has dark corners that you can get to like this is already a major strike against it...

    1. Re:probably good idea; definitely bad example by hedwards · · Score: 1

      You must be a Windows user or haven't updated to an Apple OS past the old world Macs. The only way of eliminating those dark corners is by eliminating them. Which coincidentally is the thing which angers people more than an obscure corner of the app having issues. I've largely given up on Windows except for a few things because there's somethings which you just can't do.

      And others like disabling WMP's stranglehold on my MP3 player requires a somewhat obscure incantation involving deregistering a dll file. Or that time when the resolution wouldn't stay set via the control panel and I had to go reg diving to change it to what I wanted on a regular basis. As broken as that was, it was nice to be able to rig up a simple tweak via an obscure method of screwing with the registry.

      Someday somebody will find the line of code that causes windows to work perfectly at MS and be horribly, horribly broken everywhere else. They'll be awarded a Nobel peace prize for all the peace and quiet they provide.

    2. Re:probably good idea; definitely bad example by WrongSizeGlass · · Score: 4, Funny

      The only way of eliminating those dark corners is by eliminating them.

      And today's Yogi Berra award goes to hedwards. We'd like to thank everyone who participated for participating and the winner for winning.

    3. Re:probably good idea; definitely bad example by pem · · Score: 5, Funny
      When I wrote:

      When I'm trying very hard to make a program do what I want it to, the more hoops I have to jump through for every iteration of trying to make it work, the madder I get.

      then you replied:

      You must be a Windows user or haven't updated to an Apple OS past the old world Macs.

      I have been racking my brain for the last half hour, trying to figure out what I wrote that bothered you so much that you felt compelled to resort to this sort of name-calling, but I can't figure it out, so expect a communication from my lawyer demanding compensation for this terrible libel you have committed about my computing practices in front of the entire slashdot community.

    4. Re:probably good idea; definitely bad example by Bigjeff5 · · Score: 1

      Not if it is some obscure functionality that hardly anybody is going to need. If you have a lot of features, that's the only way to do it.

      Sure, you could make your program do less, but why the hell would you want to do that?

      --
      Security is mostly a superstition... Avoiding danger is no safer in the long run than outright exposure. - Helen Keller
    5. Re:probably good idea; definitely bad example by Ozlanthos · · Score: 1

      Sounds like grounds for a defamation case!

      -Oz

    6. Re:probably good idea; definitely bad example by pem · · Score: 1

      Sure, you could make your program do less, but why the hell would you want to do that?

      Maybe because you believe in the Unix way of small programs to do a single thing well?

    7. Re:probably good idea; definitely bad example by TeknoHog · · Score: 1

      The obligatory XKCD is the obligatory XKCD: http://xkcd.com/703/

      --
      Escher was the first MC and Giger invented the HR department.
    8. Re:probably good idea; definitely bad example by Anonymous Coward · · Score: 0

      Don't blame the OS for what your MP3 player's manufacturer decided to lock your device to. Now you want to make us believe that a Mac OS is open and has a multitude of options for you with that same MP3 player? (again, it boils down to what the manufacturer of that player decided to offer to Mac users!!!!)

  7. Uh, Duh? by Anonymous Coward · · Score: 0

    Sums it up nicely

    Thank you, think you very much

  8. Dangerous approach by mmmmbeer · · Score: 4, Insightful

    This sounds a lot like the "Good Enough Software" policies that certain companies used to have. It's true that having a few minor bugs is acceptable; in fact, it's pretty much inevitable. But you should expect to have bugs that you haven't even noticed at the time you ship your software. If you start ignoring the bugs you do know about, you increase the total number considerably. From there, it's a slippery slope. Pretty soon, you'll be answering bug reports with a chorus of "Minor, leave it," and your code will be riddled with tons of minor bugs. Your users will go from "huh" to "what?" to "dammit" to "f*ck this!" Your software will look sloppy and unprofessional, and even if none of the bugs are showstoppers, your customers will be looking for alternatives.

    1. Re:Dangerous approach by Anonymous Coward · · Score: 0

      You're right.

      While I see that you cannot ship without bugs for obvious reasons, I don't like how a lot of commenters make it sound like many bugs shouldn't be fixed or left in until later. Once you're getting lazy on this front, the quality of the software degrades. We all know that bug fixing gets more and more expensive the older the bugs are. Not to speak of the resulting bad image.

  9. It's not a bug...... by Anonymous Coward · · Score: 0

    it's a feature... There's your fix :)

  10. Hitchhiker's Guide to the Galaxy by Anonymous Coward · · Score: 0

    The Economics of Prefect Software.

  11. Maybe. by Junior+J.+Junior+III · · Score: 3, Insightful

    The cost of fixing all the bugs in your program and then being sure you fixed them all is way too high compared to the cost of having a few users hit some bugs they won't care about.

    I think it also depends on how much it costs to remove the bugs. Often times, the small bugs that people are more likely to accept or tolerate are also very easy to fix. When the cost of fixing the bug is very low, it should be a no-brainer to do it. If on the other hand the bug is expensive to fix -- requiring a complete redesign and re-coding, then if the bug is not severe it may well be better to leave it in.

    --
    You see? You see? Your stupid minds! Stupid! Stupid!
    1. Re:Maybe. by Anonymous Coward · · Score: 0

      Fixing the bug is cheap. The problem is finding the bug. Once a user finds it and reports it, you might as well fix it, but it might not be worth spending enough on testers to actually find it.

    2. Re:Maybe. by Bigjeff5 · · Score: 1

      When the cost of fixing the bug is very low, it should be a no-brainer to do it.

      For large programs especially, but with any program really, there is a minimum cost to fix any bug. Most of them involve time, but there are other costs as well. Because of this, there are bugs that are small enough that never make sense fixing, unless you are already fixing a larger bug and fixing the small bug at the same time adds minimal extra cost. If there are no more large bugs to defray the cost of fixing the small bugs, it may never make sense to fix the small bugs if they are small enough.

      --
      Security is mostly a superstition... Avoiding danger is no safer in the long run than outright exposure. - Helen Keller
  12. Wrong name by aBaldrich · · Score: 1

    It should have been Perfect Software-Econonmy or something like that. The Perfect Software(tm) has zero bugs, and if such a program ever happens, its cost will be very high.

    --
    In soviet russia the government regulates the companies.
    1. Re:Wrong name by betterunixthanunix · · Score: 2, Funny

      int main()
      {
      printf("Hello, world");
      return 0;
      }

      I demand your first born.

      --
      Palm trees and 8
    2. Re:Wrong name by The+Clockwork+Troll · · Score: 5, Funny

      You didn't include stdio.h and you probably wanted a \n at the end of your output string.

      First born denied.

      --

      There are no karma whores, only moderation johns
    3. Re:Wrong name by CapOblivious2010 · · Score: 1

      You forgot the \n at the end of the string... seems to me that's a BUG!

    4. Re:Wrong name by zippthorne · · Score: 1

      $cat hw.c
            int main() {
                  printf("Hello, world");
                  return 0;
            }
      THEEND

      --
      Can you be Even More Awesome?!
    5. Re:Wrong name by betterunixthanunix · · Score: 4, Funny

      In C you can implicitly declare functions! I demand at least half of your firstborn.

      --
      Palm trees and 8
    6. Re:Wrong name by lurker-11 · · Score: 1

      You can't rely on that for printf() or other varargs functions. It'll often work on many implementations but it is not valid.

  13. I'm not sure I buy the argument by Palestrina · · Score: 2, Insightful

    Software is not so different from other engineering disciplines that we cannot learn from the best practices of adjacent fields. Although no human endeavor -- other than being Pope -- is infallible, we do see disciplined attempts to measure, manage and improve quality levels. The point is not to reduce the quality level to zero, but to know what your quality level is and be able to hit your mark. What level of quality is needed will depend on the market, your customers, the competition, the frequency of releases, whether the software is easily updated or burned into firmware and devices, etc.

    In the end, the best way to create higher quality software is not to find and fix more bugs. It is to use a disciplined approach to programming that introduces fewer bugs in the first place. If you focus on defect detection and removal, then you are fighting the wrong battle. You can't win doing it that way. Quality software comes from a disciplined process at all stages, from requirements to testing, and not just as an endgame activity to sway as many bugs as you can.

    1. Re:I'm not sure I buy the argument by Tablizer · · Score: 1

      But the problem is that bug-severity level is generally subjective. Is a broken X worse than a broken Y? Without an objective metric, a "mechanical" way to measure quality is elusive.

      In the end, the best way to create higher quality software is not to find and fix more bugs. It is to use a disciplined approach to programming that introduces fewer bugs in the first place.

      The problem is that requirements tend to change too often. If you have a fixed target, it's easier to be anal about getting it right. However, often users and designers don't really know what they want until they use a working product.

      For example, I've been working on an open-source sql query assistance tool[1] for a few years now (side pet project), and I've scratched much of it and started over 3 times already because when it gets close to being usable, I find that the UI and feature interaction is not to my satisfaction and not sufficiently better than what it intends to replace.

      [1] Sort of like a cross between Toad, MS-Access, and a scripting language.

    2. Re:I'm not sure I buy the argument by thoughtsatthemoment · · Score: 1

      If we have a bunch of top notch disciplined programmers to begin with, we'd all be building paradise by now. The problem is, you almost always have to start with existing code with other programmers with varied quality, especially in a company. The cost of rewrite is simply too high. As to being disciplined, well, you can easily be disciplined in doing things with the wrong approach. Many programmers like to talk about best practices, but that's just the best practices KNOWN to them.

  14. Err. Dumbo. by Anonymous Coward · · Score: 0

    They are not bugs.
    They are DEFECTS.
    Pure and simple.

    That little example of the 'trivial' bug, if it is the feature, integration, function, exporter, importer, etc.. without which the user cannot work. If it is the feature for which they actually bought the product. And they have now wasted their time and money buying, installing, partially configuring the tool. And now, due to the incompetence of the developers they cannot continue. Then they Will think you are a Jerk, and that -all- developers are jerks. And they are right. I've worked at a 6-sigma organisation, it's not actually very hard to write bug-free code, you just have to care.

    once again. They are NOT BUGS. They are DEFECTS caused by lacklusture workmanship.

  15. If they need it, and it's buggy, it's annoying by Tsu+Dho+Nimh · · Score: 3, Insightful

    ... a user who goes through three levels of menus, opens an advanced configuration window, checks three checkboxes, and hits the 'A' key gets a weird error message for his trouble

    Is going to be one extremely unhappy user because they had a reason for going that deep into the sub-cellars of the software to get at that obscure feature ... and it is likely that they are the sport of user who is a bit more tech-savvy and ready to bitch than Joe Average user.

    1. Re:If they need it, and it's buggy, it's annoying by Kral_Blbec · · Score: 1

      Unless they had no reason to hit the A button and it was an accident that just happened to trigger an error message without actually breaking any functionality.

    2. Re:If they need it, and it's buggy, it's annoying by mikael_j · · Score: 2, Insightful

      How about we pretend that the user actually wants to use the feature to avoid analogies along the lines of "It's like saying a car is acceptably broken if the engine explodes when you turn on the radio since we can assume the driver had no intention of actually using the radio, that's just an obscure extra feature that no one uses..."...

      --
      Greylisting is to SMTP as NAT is to IPv4
    3. Re:If they need it, and it's buggy, it's annoying by Bigjeff5 · · Score: 1

      It's more like there is a small beep on the radio when the users changes radio station while turning the ignition, but only if the park break is on. Very strange, and definitely a bug, but it affects an extremely small number of people and does not affect them in any significant way.

      If the engine blew up, that would be different, but it's just a beep on the radio - who cares?

      --
      Security is mostly a superstition... Avoiding danger is no safer in the long run than outright exposure. - Helen Keller
    4. Re:If they need it, and it's buggy, it's annoying by blackraven14250 · · Score: 1

      It's actually more like the radio turns off in that situation, and can just be turned back on.

    5. Re:If they need it, and it's buggy, it's annoying by mikael_j · · Score: 1

      My example was based on the assumption that the error was somehow critical (as in, software/car refused to function due to the malfunction) and in that case any user who wanted to use the feature would've been pretty annoyed ("WHAT DO YOU MEAN I CAN'T USE THE RADIO WHILE THE ENGINE IS ON?! IT CAME WITH THE CAR! IT SHOULD WORK! WHAT'S THE POINT OF A CAR RADIO THAT ONLY WORKS WHEN THE ENGINE IS OFF?!").

      --
      Greylisting is to SMTP as NAT is to IPv4
    6. Re:If they need it, and it's buggy, it's annoying by Kral_Blbec · · Score: 1
      Where as mine was based on the assumption that it was not, as in

      without actually breaking any functionality

    7. Re:If they need it, and it's buggy, it's annoying by mikael_j · · Score: 1

      Which was clearly not the premise of the post by Tsu Dho Nimh that you replied to.

      Talking about bugs that don't cause any problems wouldn't make any sense.

      --
      Greylisting is to SMTP as NAT is to IPv4
    8. Re:If they need it, and it's buggy, it's annoying by Anonymous Coward · · Score: 0

      Is going to be one extremely unhappy user because they had a reason for going that deep into the sub-cellars of the software to get at that obscure feature ... and it is likely that they are the sport of user who is a bit more tech-savvy and ready to bitch than Joe Average user.

      As a user of 3D rendering and animation software... You'd be surprised at how often this indeed the case, and it's exactly what prevents you from taking on a particular project or being able to achieve a certain effect. Basically you can enable this, this, and this... But if you turn on that with those other three on, well that's the straw that breaks the camel's back! And why it does that, or what interacts to cause the crash? Haven't a clue. Plenty of RAM and other things that should factor out the hardware end. Then you throw on plug-ins into the mix, and I'm sure that doesn't make it any easier. Yet a lot of times there's something that triggers a memory leak or runaway condition, and the worst is when you find the bugs after a few hours into a now-stopped rendering project that seemed to go smoothly otherwise.

      Sometimes I wonder about the sanity of programmers that take on developing such software, and even more so for those that do the open-source versions. It must take a special breed to accept the nagging they get from userland for the most mundane and unusual problems with few rewards on their end. Yet believe it or not, I actually respect and love them for that. Even if the most I can offer is "cheers & beers" on my end in their honor.

      But the rest of the software is good, and often does what I need for a given price. And yes, I'd rather have a software that I can use for most things, than no software at all because of certain bugs. It's an understandable trade-off.

  16. Clear cut? by Anonymous Coward · · Score: 0

    I agree with what you are saying, but will the economic v. code perfection decision always be clear cut? Could lead to a slippery slope...

  17. Functional Tests and Unit tests by fysdt · · Score: 1

    There are programming methods that aim to decrease the amount of bugs substantially with functional testing and unit testing. Unfortunately these tests don't make software 100% bug-free but it they do reveal 'big bugs'.

  18. The core argument does make sense. by Max+Romantschuk · · Score: 2, Informative

    Sometimes it's better to ship a product and deliver it to 95% of the user base instead of having everyone wait because 5% wants feature X which is broken.

    But there is the option to disable feature X, so rather than knowingly ship with bugs you can often have the program show a notice that this feature is disabled or something like that.

    Generally when building software you'll have "Quickly", "Lots of features" and "Bug free". Depending on the software and project stage you'll want to strike a different balance. Releasing an alpha which has lots of features quickly with loads of bugs is OK. Releasing a final release of a program handling financial transactions with loads of bugs is never OK.

    But yes, it's a question of economics, and what makes sense for a given project at a given time.

    --
    .: Max Romantschuk :: http://max.romantschuk.fi/
    1. Re:The core argument does make sense. by Anonymous Coward · · Score: 0

      "bug free" is not really an option.

    2. Re:The core argument does make sense. by Anonymous Coward · · Score: 0

      Sometimes it's better to ship a product and deliver it to 95% of the user base instead of having everyone wait because 5% wants feature X which is broken.

      Would be interesting if you had 20 of those bugs.

    3. Re:The core argument does make sense. by Draek · · Score: 1

      The thing is, the 95%/5% argument also works for the feature X itself. If feature X works in 95% of user scenarios and only triggers the obscure bug 5% of the time, why would you disable the entire thing? just ship it as is and send a "thanks for reporting a bug to us, we're very sorry it happened to you" note to whoever is affected alongside the SP1.

      --
      No problem is insoluble in all conceivable circumstances.
  19. sometimes crash == possible exploit by Eponymous+Coward · · Score: 4, Insightful

    It isn't always easy to judge the severity of bugs. Exploits often grow from a black hat figuring out how to crash a program. Some of the greatest exploits started with the smallest of footholds.

  20. The Economics of the Perfect Square by Dunderflute · · Score: 1

    Did anyone misread the title as "The Economics of the Perfect Square"?

  21. This applies to everything really... by Anonymous Coward · · Score: 0

    Creating a 100% perfect product is just a terrible idea for business.

    Of course, in software, creating a perfect product is hardly an achievable thing to do, especially if you are actively working on it.
    Whether it is adding new features, releasing optimizations for functionality X, or just some bug fixes, you shouldn't really ever be able to create anything "perfect".
    If you somehow managed to create something perfect, then you already never had much scope for the product in question.

    I use a simple example, PowerMenu for Windows adds 4 new menu items on all windows context menus to change priority and transparency, set it Always On Top or Minimize to the system tray.
    It was built with Windows XP and below in mind. It worked and it worked well. You can't really do much else with it. (well personally i think it would be nice to have had the ability to minimize to the powermenu tray icon rather than clog up the system tray)
    Okay, my example wasn't good, sue me.
    But you get the idea... right..?

  22. Duh. by Vellmont · · Score: 1

    Isn't this how people ACTUALLY write software already? Resources aren't infinite, and unless you're NASA writing code for the space shuttle, all bugs don't have to be fixed. I learned about triage and fixing the "big bugs" 15 years ago in school and it was certainly common practice in the industry then.

    I was going to say "what a stupid article, everyone already knows this". But judging from the responses I guess everyone doesn't.

    --
    AccountKiller
  23. It's *intended* accleration... by Anonymous Coward · · Score: 0

    Did Toyota Sponsor this article? Really, it's a *little* bug, we should just let it go....

  24. Other golden rules by Anonymous Coward · · Score: 0

    1. If you're aware of a bug, stop and fix it.
    2. If you cannot fix a bug quickly, you've got a design problem. Stop and fix it.
    3. If you have so many bugs that you need a tool to track them, you've got a management problem. Stop and fix it.

  25. You sure about that? by zippthorne · · Score: 1

    Bah, stupid submit button right next to the continue editing button.


    $cat <<endhere >hw.c
    > int main()
    > {
    > printf("Hello, world");
    > return 0;
    > }
    > endhere
    $gcc -o hw hw.c
    w.c: In function ‘main’:
    hw.c:3: warning: incompatible implicit declaration of built-in function ‘printf’

    --
    Can you be Even More Awesome?!
    1. Re:You sure about that? by betterunixthanunix · · Score: 1

      Can you point out the error? I see a warning related to not including stdio.h, but it is still valid C code and will still do exactly what you expect.

      --
      Palm trees and 8
    2. Re:You sure about that? by The+Clockwork+Troll · · Score: 1

      Where I come from, avoidable compiler warnings are bugs.

      --

      There are no karma whores, only moderation johns
    3. Re:You sure about that? by Greg+Hullender · · Score: 1

      Compiler errors can't be bugs, since the program won't run at all! Or are we talking about bugs *in the compiler?* :-) --Greg

    4. Re:You sure about that? by russotto · · Score: 1

      He forgot -Wnone. And the "return 0" is entirely unnecessary; the specs say to print "Hello World.", with no requirement on the return value. This overdesigning of the simplest tasks is costing far too much money :-)

    5. Re:You sure about that? by Anonymous Coward · · Score: 0

      return 0 may be unnecessary, but a return value from main is required by spec, and lacking it can be a serious bug on some architectures depending on calling conventions: The caller (startup code in this case) will pop a return value from the stack since main always returns an int, but without a return statement, nothing was pushed to the stack, so the program's stack is now trashed.

    6. Re:You sure about that? by mikestew · · Score: 2, Insightful

      Programs run just fine, or so some hope, with compiler warnings. Despite that, parent says his shop considers them to be bugs.

      Oh to work in such a shop, where I don't have to sift through 74 warnings every build because someone decides that catch (Exception e) is fine even if you never take so much as a passing glance at what got put into variable e. Hey, dev manager, how about you just turn the fsckin' things off if no one cares?

    7. Re:You sure about that? by vadim_t · · Score: 1

      No, it won't necessarily do what you expect.

      With printf undeclared, it's assumed to be a function that takes an int argument, and returns int. It just happens to work on your machine, but on a 64 bit box it would likely crash, because on AMD64 int is still 32 bits, but a char* is 64 bit.

      I've just finished debugging precisely this problem in a piece of software over the weekend, btw.

    8. Re:You sure about that? by Criffer · · Score: 1

      a return value from main is required by spec

      Um, no. Main is special.

      C99 5.1.2.2.3 Program termination

      If the return type of the main function is a type compatible with int, a return from the initial call to the main function is equivalent to calling the exit function with the value returned by the main function as its argument;10) reaching the } that terminates the main function returns a value of 0.

      Reaching the end of main without a return is the equivalent of calling exit(0); as the last line.

  26. insight on. by eexaa · · Score: 1

    I might misunderstand the actual message, but still, I see a small benefit for leaving minor bugs around:

    Imagine a long-running project (just like cobol+finances). Several core programmers go away, and you have a big heap of code that no one can maintain, therefore you will need to rewrite all your software "as soon as possible" and spend huge amount of money on migration.

    If you leave a tiny annoying thingy there, it will inevitably attract hackers that:

    a] formulate the real nature of a bug (gaining insight on how it really works)

    b] eventually hack through all the code and apply the oneliner (slowly becoming experts on the topic. Happens only if source is available to users/admins)

    In short, 'annoying non-critical bugs produce maintainers'.

    (well, maybe I am a development lunatic)

  27. That's a symptom, not a bug. by John+Hasler · · Score: 1

    > If a user who goes through three levels of menus, opens an advanced
    > configuration window, checks three checkboxes, and hits the 'A' key
    > gets a weird error message for his trouble, that's a little bug.

    That's a symptom, not a bug. It could be a symptom of a buffer overflow that, if not fixed, will soon be exploited to clean out the bank accounts of 100,000 of your customers. You won't know until you've fixed it.

    --
    Warning: this article may contain humor, sarcasm, parody, and perhaps even irony. Read at your own risk.
    1. Re:That's a symptom, not a bug. by skelterjohn · · Score: 1

      If a bug in your UI can possibly allow exploits on the backend, then your software design system has a bug.

    2. Re:That's a symptom, not a bug. by John+Hasler · · Score: 1

      From the description I don't know that the bug is in the UI.

      --
      Warning: this article may contain humor, sarcasm, parody, and perhaps even irony. Read at your own risk.
  28. mediocrity by electrogeist · · Score: 5, Insightful

    "Once genius is submerged by bureaucracy, a nation is doomed to mediocrity. " -Richard Nixon

    s/nation/project/

    1. Re:mediocrity by FlyingBishop · · Score: 1

      Between bureaucracy and Nixon-style genius, I'll take mediocrity.

      Really, that statement was a cover for Nixon quietly subverting the bureaucracy. The bureaucracy exists for a reason, and it is effective. Genius always thinks itself better than the group. It is generally wrong.

  29. Im not aprogrmmer but do programming by Anonymous Coward · · Score: 0

    Programmers view my approach to programming a bit weird. But so do I, they always claim bugs aren't a problem, its ingrained in the way you do things.

    You can do things a LOT better. For starters stop making the same mistake many times.

    And for gods sake don't always ask as much code as one possibly can do in any amount of time its inanely stupid. If the code is worth to you 20,000$ the be prepared to pay 20,000$ for it. It don't get better because you may sometimes get it cheaper if you luck out. Because in the end this always bites your ass.

  30. Those bugs indicate a broken dev process by Anonymous Coward · · Score: 0

    if the simple and easy stuff is broken (the stuff that can be automatically checked),then bigger bugs lurk below. Article is dumb, assumes the dummy programmer can know the difference.

  31. But it's just rhethorical by ET3D · · Score: 1

    I'd bet that the majority of CEO's know that most software is released with bugs (the others are not in the software business :). Any product manager worth his salt will be able to manage priorities correctly. So the entire argument is built on false assumptions. Sure, there are bad managers who will get priorities horribly wrong, but even they probably know that not all bugs can be squashed. To present this as if it's something new and revolutionary is silly.

  32. No bugs isn't a perfect product. by ArundelCastle · · Score: 5, Insightful

    Even if it's bug free, that doesn't mean the software is designed to be easy or intuitive to use. There is often more money to be made from deliberate obfuscation. Every piece of Enterprise software I've used (particularly SAP) seems to follow this principle. And the huge aftermarket of expert consultants charging $150/hr for training and troubleshooting, seems to affirm it. Keep in mind those consultants are usually teaching the corporate experts, I'm not even touching the surface of end user training, which I'm experienced at being responsible for.

    The real money comes from support packages and direct-line support levels (ie: silver, gold, platinum and such to maintain a 24h call centre). Let's ask a simple hypothetical: what if Windows was bulletproof and bug free? How would Microsoft make any money? If nobody had reason to fix a problem within 30 minutes like their job depends on it? Or even not upgrade to the next version because the last one works better? With XP and Vista we already know the answer to that.

    1. Re:No bugs isn't a perfect product. by zippthorne · · Score: 1

      If Windows was truly perfect, then we could consider "Operating Systems" to be a solved problem. We wouldn't need a fifty billion dollar software company any more, we'd just need someone to print bits on a polycarbonate cylinder and/or transmit them over glass tubes.

      --
      Can you be Even More Awesome?!
  33. High Quality in Software Requires THINKING by CAOgdin · · Score: 1, Troll

    I know, that's too much to ask of modern code monkeys. How many of you who "good enough" quality have ever even read a book on "Software Engineering?" Have you even HEARD of the original NATO conference on that subject? How many have studied interesting "Software Physics." Yes, all code I write has bugs, because I am not omniscient. There are inputs and environments I never imagined the program having to cope with. But about half the code I write has two things rarely seen in code today: 1. Comments in the form of Assertions (e.g. "At this point, input XYZ is confirmed to be in the range 87...92". 2. About half the lines of actual code (absent comments) are validation of input conditions from the world (user and environment) outside the program itself. Perfection is not actually achievable, but IT'S THE ONLY TARGET WORTH PURSUING. Companies like Microsoft don't even try, because they're not in the software business; they're in the money-making business. Professionals care; money-grubbers aren't.

    1. Re:High Quality in Software Requires THINKING by thoughtsatthemoment · · Score: 1

      I actually believe the poster of the parent post is sincerely, although, IMO, his understanding of programming is, well not quite up to par.

  34. This sounds like the Ford Pinto design philosophy by countertrolling · · Score: 1

    Leave in "little" flaws to save a buck. Well we all know what happened there.

    --
    For justice, we must go to Don Corleone
  35. Economics of Perfect (Gaming) Software by macraig · · Score: 1

    Yeah, in my own mind I inserted that extra word in the title, and I was disappointed that it wasn't about that at all. I'd like to see an article about that, describing how the "perfect" game would be an economic Bad Idea, and including interviews with game developers who finally admit that they deliberately repeat old shortcomings and mistakes and stop short of perfection, knowing that the perfect game would completely destroy the market for next year's game. I can think of one or two that actually tried to damn the torpedoes and thwart this dynamic, but ultimately they got shut down by the suits holding the purse strings.

    1. Re:Economics of Perfect (Gaming) Software by Truth+is+life · · Score: 1

      More pertinently, there's the fact that there is no such thing as a perfect game, since whether or not a game is "perfect" will obviously be extremely subjective. Compare chess and basketball for two wildly varying implementations of "game," or if you want to stick to video games, Halo and Sim City. Every one of those has their fans, but you'd have a hard time getting them to agree on what would make a game more perfect!

    2. Re:Economics of Perfect (Gaming) Software by macraig · · Score: 1

      It should have gone without saying that I meant "the perfect game within a particular narrow genre", like 4X games for instance. There would be more than one perfect game in total, if such things actually existed. Endless replayability with well randomized maps/scenarios would be one of the most important criteria for the perfect game.

    3. Re:Economics of Perfect (Gaming) Software by Truth+is+life · · Score: 1

      Well, clearly I needed it to be said :)

      That being, um, said, even your fundamental element (that is, endless replayability via randomzation) would be disputed by a lot of people. Just focusing on your 4X-style games, I can immediately think of at least one developer whose games, while 4X-style, would be utterly unsuited to such a thing. In fact, if they DID implement randomization to "improve replayability" they'd lose almost their entire fan base! You're just not going to get agreement on fundamental things--eg., compare Oblivion and Mass Effect fans. You think their ideas on how to improve RPGs are going to be the same? Now throw in Final Fantasy fans--it's getting crazy! Sure, you can keep making it narrower and narrower, but you're not going to get a perfect setting (what about Dragon Age versus Mass Effect? Or GalCiv2 versus Civ?), a perfect story, perfect graphics, etc. etc. And so you'll end up with a fragmentation into lots of games, each of which hews to its own concept of what's "perfect" (even if it doesn't achieve that). Kind of like what we have today.

  36. Doesn't sound like a little bug... by argent · · Score: 1

    If a user who goes through three levels of menus, opens an advanced configuration window, checks three checkboxes, and hits the 'A' key gets a weird error message for his trouble, that's a little bug.

    1. If that error message refers to "H-Tilt", then that's a big bug no matter how many levels of menus you go through.

    2. If a user can provide a reliably reproducible test case like that for the bug, then it's one you should have caught in testing.

  37. "If X is less than the cost of a recall..." by Minwee · · Score: 1

    Is this still Slashdot? Why has nobody made the obvious quote from Fight Club yet?

    I haven't even seen a numbered list ending in "Profit!" Why are you all letting me down?

  38. A lesson by BigBadBus · · Score: 1

    I used to work for a small computer firm in Weybridge, England. Oh, damn it, since it collapsed ten years ago, I may as well name it: MTA (Computer Consultants) Ltd. We had a project between 1997-9 to write a software demonstrator for a radar resource manager for the Eurofighter project, for DERA Malvern. The project was divided into two parts, of which phase 1 went through a successful factory acceptance task. However, a few bugs had been found in the programme after this, one of them, due to me, was fairly serious. It was a small mathematical error but I produced a bug in a few mninutes.
    Now MTA had gone through a turbulent time, having to sack all of its staff because of the lack of money and the rehiring them. MTA were annoyed that DERA decided to stall the programme while it did a full evaluation of the software, rather than go to phase 2, which would have provided money for the coffers. At this point, the only thing keeping MTA afloat was hope for this project and a tiny project. MTA stalled on delivering the software, saying they would only do so when the software went to phase 2. By the time MTA had backed down and provided the patch, I had already left. DERA cancelled the project and MTA went bust within the year.
    Moral? It doesn't pay to piss off those who pay you.

  39. Obscure bugs can be fatal ones. by Garrett+Fox · · Score: 4, Informative

    The post talks about minor bugs being the ones that are hard to reach, but that's not necessarily the case. There was a piece of radiation-beam hardware used for cancer treatment (the Therac-25), that became a case study in engineering because of a literally fatal flaw. It was possible to mis-configure the machine so that it struck the patient with a much more powerful radiation beam than was normally allowed. The relevant point was, this situation only happened if the operator did some obscure, seemingly unlikely combination of actions that would result in a lead plate getting misaligned or something. Yet it happened at least six times, killing at least two people. The fact that the bug was caused by this particular sequence of actions made it that much harder to identify -- and it was not a minor bug worth ignoring.

    --
    Revive the Constitution.
    1. Re:Obscure bugs can be fatal ones. by plopez · · Score: 1

      Exactly. What, BTW is a "minor bug"? How do we decide this if we haven't experience it? If no one has seen it yet, how do we judge?

        Also, the Ford Motor Company in the early 70's made an informed, rational and very wrong economic decision to produce the Pinto despite knowing it could be dangerous. They measured things out and decided the danger was worth it in terms of profitability.

      This argument is just an excuse for not caring.

      --
      putting the 'B' in LGBTQ+
    2. Re:Obscure bugs can be fatal ones. by roman_mir · · Score: 1

      If someone can get hurt and even die because of a piece of software can be executed in a way that will cause that, then it is a bug of the most severe kind, no matter how unlikely that situation is.

  40. My TV Remote has bugs... by tonywestonuk · · Score: 1, Interesting

    If I connect my TV remote to the mains AC, it will break. I blame the makers for not 'validating' my input voltage. My Cups/Mugs all have bugs, as when I drop them, they break....silly makers for not designing in dampers to cushion the blow. My car has bugs.... I can very easily crash it, how dare the manufacturers make something I can crash by just pressing the buttons/ turning the wheel in the wrong order.

    My point is, that practically everything will fail, or demonstrate unpredictable behavior if it is subject to conditions to which it is not designed to handle. We accept this, as a fact of life!....Why should software be judged any different, just because it's 'virtual' and cant really be seen as a real world object?...to make a perfect bug free piece of software is practically impossible.....well, maybe 'hello world', and even this will fail should it be run on an architecture it was not designed to run on.

  41. Another reason by Anonymous Coward · · Score: 0

    Large corporations often like to buy "Enterprise" software with support contracts. If the software works perfectly, nobody is happy: the IT staff responsible for supporting the software have less to do and worry about their job security; IT management does not get anything demonstrable from the support payment; the vendor's support staff do not get a chance to learn how the software is being deployed in the field; the vendor's management have a high cost-per-ticket on their support line. Nobody builds relationships. If bugs cause small or medium problems, but the problems are handled well, corporate customers actually like this: rationally, it's a successful test of the support model giving reassurance that a big problem might be handled well too; irrationally, people feel better about a company after it handles a problem extremely well - e.g. quick resolution and apologies - than they would if the problem never arose in the first place.

  42. The bugs you are not aware of are the worst ones by Anonymous Coward · · Score: 0

    Ask Toyota. But there is no need to despair. Toyota software researchers or anybody else who writes safety-critical applications should read this: How to Construct 100% Bug-Free Software. It can be done but we will need to change to a synchronous and reactive software model.

  43. Says who? by Chris+Newton · · Score: 1

    You cant afford perfect software.

    The problem with that argument is that there is little evidence that it is actually true.

    Let’s assume that by “perfect” what we really mean is “much better than most software today”, since no-one has yet worked out how to write literally perfect software. In that case, the difference in cost (by the time you take into account the full lifetime, including maintenance costs) seems to be rather small: it's not that great even during initial development, and the lower maintenance costs make it rather efficient to put more up-front effort into making less buggy code.

    1. Re:Says who? by maxume · · Score: 1

      That's a hell of a ninja argument there -- perfect software? Sure, it's possible, it just won't be perfect!

      --
      Nerd rage is the funniest rage.
    2. Re:Says who? by Chris+Newton · · Score: 1

      Well, OK, I’m moving the goalposts. But discussing something that strictly speaking no-one can do isn’t particularly interesting, while there is an interesting underlying issue of whether it is cost-effective to write relatively high quality software, or whether we are doomed by economics to the predominantly mediocre mass market software we use today.

    3. Re:Says who? by thoughtsatthemoment · · Score: 1

      Perfect code means trying to fix very bug the programmer knows. What the OP says is basically asking the programmer to forget about some of the bugs or issues. The mindset of pursuing the perfect code can be very rewarding. One thing I've done in this area was trying to handle out of memory in GUI code. It was really a eye-popping and enlightening experience.

  44. Release when? by Midnight+Thunder · · Score: 1

    Perfect software is like a perfect person: hard to find. Even if you did find it, then it probably wouldn't be doing things in the way you want it to.

    If I am asked to add a set a features and make it perfect, then I will do the best job I can, but in the end the question to be asked is "do you want perfect software or a deliverable?". Perfect software is also like a derivative, in that you can always get closer to your integer the more you work at it, but still not be there, it simply tends to infinity.

    --
    Jumpstart the tartan drive.
  45. Actually no. by Anonymous Coward · · Score: 0

    You customers will be looking for whatever helps them get their jobs done the easiest, cheapest and quickest.

    If your next release contains fixes to all your minor bugs but no new market-required features then your customers will be jumping ship to the competitor whose bug-ridden code does contain the market-required features.

  46. Bug Free Software is Possible by Anonymous Coward · · Score: 0

    I just requires a disciplined approach.

    10,000 lines of C
    0 Bugs

    http://ertos.nicta.com.au/research/l4.verified/

  47. Diminishing returns for who? by skids · · Score: 1

    Sure, there are diminishing returns from the corporate payroll/sales perspective, but even tiny bugs tap manpower out of your customers, and as such, put a drain on the economy.

    Hours of my time every week are spent working around bugs that the OP would probably have considered too minor to be worth fixing. It's all nickel and dime stuff -- five or ten minutes here or there, sometimes even just seconds, but many times a day. We'd use less buggy software, but it doesn't exist. Sometimes we fix the bugs and push it upstream if it is OpenSource, but a lot of it isn't. It's almost never worth our time to do it for our own purposes, but it is worth it when you consider the total user base. /me contemplates the total manpower cost of most network administration UIs not being able to figure out that 0024.81b3.ff3e or 00-24-81-b3-ff-3e or 002481-b3ff3e are MAC addresses.

    1. re: Diminishing returns for who? by Anonymous Coward · · Score: 0

      Why is the parent post not modded up to infinity?

      I have used buggy software that cost me at least an hour per day to work around bugs or to recreate data lost due to minor bugs.

      One hour per day times five days per week times 50 weeks per year times 2000 employees times $40 per hour (when you include benefits) is $20 million per year, every year. For one medium-large company.

      One hour per day times five days per week times 50 weeks per year times 5 employees times $30 per hour is $37,500 per year, every year. For a mom-and-pop operation.

      Multiplied by every company in the country. That's a huge economic cost.

      You can argue that I have pulled numbers from my nether regions, but in more than twenty years of computer support, I have seen a very large proportion of employees lose much more than an hour of productivity per day, routinely, because of minor software bugs.

    2. Re: Diminishing returns for who? by GigaplexNZ · · Score: 1

      Why is the parent post not modded up to infinity?

      There is a minor bug in Slashdot moderating that caps it to 5.

      It's easy to make economic arguments like that. But consider where the money comes from and who it goes to. Sure, the developers could spend an extra 5% of their resources to reduce the wasted costs of clients by 60% (I took the same liberty of numbers from nether regions), but that may result in the developer making a loss instead of a profit and they then stop producing the product. The clients may be happy that they save the $22,500 per year but probably won't be giving it to the developers.

  48. Crappy excuse alert! by plopez · · Score: 1

    If you don't have pride in your work, quit. Making excuses for bugs has no excuse. It guarantees you will ship bad software. There is a ratcheting effect. At first you accept some defects, then you accept more, etc.

    And if I was that user I would be angry. I just wasted all that time navigating through all of those menus (also a sign of bad software, too many levels) for no good reason. You just pushed off your lack of caring on to me. I would look for better software. Something which costs me less $$$$ in lost productivity. As a user, the economics of this makes no sense.

    It is exactly this sort of attitude which destroyed the American car companies.

    --
    putting the 'B' in LGBTQ+
  49. Blasphemy by toboldh · · Score: 1

    Only god can create perfection. Every piece of software requires at least one bug to avoid blasphemy.

  50. How do you know which is which, though? by Moraelin · · Score: 1

    My question, though, would be how do you know which is which?

    And before I even start, a thing I learned pretty early is that if you aim low, you'll hit even lower. If you aim for a B or C in school, 'cause, well, no point in fretting over not being exactly perfect, you start getting D's and lower. I should know, I actually tried that philosophy for half a year or so, before realizing that lesson. Partially because life doesn't throw you exactly the curve you were expecting, and partially because once you started making excuses and rationalizations, well, stretching the excuse just a little more or rationalizing a little further kinda comes naturally.

    Same here.

    But really, how do you know what you've _missed_? Because half the trouble with bugs is finding them in the first place. Something you didn't find (because finding the last little bug isn't worth it, right?) how do you know if it's a big one or a small one?

    And if you found it and decided to ignore it, how do you know if that small bug isn't a symptom of something bigger? How do you know if that spurious failure to save the settings on the third page of a dialog buried 6 ft deep in menus, isn't symptomatic of a problem in a library function that is also called somewhere else too? How do you know if the same clever function -- or a version of the same clever hack from the same programmer -- isn't also used, say, when saving that 30 page form that the user has been editing? That's a big bug, especially when you deal with contracts worth hundreds of millions.

    I mean, after all, the whole point is that you don't know exactly what line or method is causing it, or you'd have fixed it. So how do you know in which category to file the _unknown_?

    --
    A polar bear is a cartesian bear after a coordinate transform.
    1. Re:How do you know which is which, though? by Vellmont · · Score: 1

      How do you know? Experience. Experience reading through the code, and experience in software debugging.

      How do you know absolutely positively without a doubt? You don't, and you never will. All understanding and knowledge is a model of reality, and models are sometimes wrong. This idea people in this discussion seem to have that you can eventually, with just a little more effort make the system "perfect" is severely flawed. The disconnect the pragmatists in this discussion have with the perfectionists is deeply personal and philosophical, so I don't know that it can be explained or bridged, but I'll try. The level of quality a product needs is dependent on the product. Pursing anything beyond that is merely a personal quest. Pursing "zero defects" is essentially unattainable if you REALLY mean zero. If nothing else, the silly cosmic ray story about the Prius (possible, but still silly) should remove any possibility that zero defects is something that's actually attainable.

      --
      AccountKiller
  51. What? by Mr0bvious · · Score: 1

    So user impact being considered when assessing a bug's criticality is uncommon?

    --
    Never happened. True story.
  52. Until your users figure out the game by gig · · Score: 1

    The little bugs add up, and users consider your software and even computers in general to be very unreliable these days. The PC has such a bad reputation that users just openly mock it all the time. It's expected to suck. Microsoft software especially is expected to have bugs. The whole platform is just a big bugfest, a race to the bottom in quality.

    Part of why Apple has been making hay over the past decade is that their software is just more reliable than what people have come to expect. They spent years putting a Unix core under the Mac and they were mocked for it, "why do consumers need that level of reliability?" Now, it's typical for a Mac never to crash, typical for an iPhone never to crash. Users may not even consciously be able to explain that, but it's part of what they love and why they come back.

    Thr truth is, you can't parse out the right level of quality you're "supposed" to ship. You have to take pride in your work at every level. Software is layered, all dependencies ... if you don't shoot for perfect you will never even get good. And you'll get into the race to the bottom, making Wal-Mart software. "Hey. we have 1 less bug thatn our competition, break out the champagne!"

    Generally speaking, users hate computers. No wonder the PC is being replaced by mobiles with simplified software and a much, much higher expectation of quality.

    So there is always damage from bugs. It may not be measured in this quarter's report, but you can see your whole product or company or platform hurt by it long-term.

  53. triaging incompetence by epine · · Score: 1

    One of the best things I've read on this subject was an interview with top level muck muck at NASA (I think it was _the_ guy) when NASA was bent on fixing their safety culture, following a little bug that cascaded into millions of small pieces. In a safety audit they found a small number of broken wires in some electrical harnesses that weren't supposed to have this defect in this quantity. The engineers did what I might term a sensitivity analysis and determined that with all the other layers of redundancy, there was essentially zero chance this would lead to a major incident.

    The big muck muck decided to postpone the launch regardless, because, in his words, "of what the wires were trying to tell me". The wires were trying to tell him that their statistical models concerning production quality were incorrect one way or another. If you quality process is broken, this is something you want to know before you let the big dawg ring in the new year.

    The second question you need to ask is this: is the root cause behind the bug forgivable? Or was the programmer responsible (or just as likely, the culture created by the management team) unable to free itself from a wet paper bag? Does the bug indicate a state of crisis in personal topology assessment? Is this the first visible black buboe in a software release candidate rapidly progressing toward death rattle?

    Forgivable bugs are bugs created when programming to a poorly documented API, which leaves out important cases, or gives you false of conflicted information. Especially if "I don't trust this edge condition" is found in the program comments and some sane defensive coding strategy was employed to mitigate this.

    The economic angle is a dangerous meme, because it lets incompetent management off the hook by allowing them to triage incompetence, and in particular, to ignore process failures, and the failure of team culture, both of which point back to management itself. We all know how well that worked out for NASA. This wasn't fixed until lives were lost.

    Given a choice, I prefer to treat small bugs as canaries in the coal mine.

    Another point. Obscurity is a fragile defense. Oops, the senior climate scientist just launched a month-long computation at E3 with the wrong initial parameter because of an obscure user bug three levels deep in an advanced sub-menu.

    I'm more forgiving if the feature was only added because an important, yet lame customer demanded a feature that should never have been added in the first place, because they were too lazy to realize they are trying to use the software in the wrong way (but we've always done it that way). It's darn hard in practice to perfect the wrong basic approach.

    In many other contexts, the obscurity of the function that blows up is directly proportional to the importance and gravitas of your first customer who trips over it. Does this person take the economic view (small bugs are expensive to fix, so I'm better off using a buggy piece of crap) or does he do what your management doesn't: evaluate the competence of the organization who produced the bug, from a psychology of extreme prejudice towards incompetence? I know I'm usually PEPTIC.

    A triage culture lacking a robust root cause determination (e.g. five whys) is deep into the management zone "run, baby, run".

    Does this economic wisdom boil down to anything more intelligent than the maxim that "if you can smell the fuel leak all the way back to mission command DON'T press the big button"? Yes, there's a natural priority in the order of things to first rooting out egregious incompetence. Then the serious work by serious people begins.

    There's no better quality culture than one were every minor lapse of competence sails directly and efficiently back to its rightful owner. In the five whys culture, every defect generates a list of rightful owners, all the way up the chain. Now you're really getting somewhere. Along with that, it's nice if everyone buckles down to fix their corner of the problem rather that groping around for plausible yet ultimately failed excuse perspectives.

    1. Re:triaging incompetence by Vellmont · · Score: 2, Interesting


      The economic angle is a dangerous meme, because it lets incompetent management off the hook by allowing them to triage incompetence, and in particular, to ignore process failures, and the failure of team culture, both of which point back to management itself. We all know how well that worked out for NASA. This wasn't fixed until lives were lost.

      If you're writing code for NASA, or say the medical industry, I'd agree. But 99.9% of the developers out their are writing code that nobody is ever going to die because of a bug. If you tried to apply the same standards to business software that you do to Nasa or medical software, nothing would ever get done.

      As far as a "culture of incompetence" is concerned, and triaging bugs, I don't see the two as terribly connected. There's always going to be bugs, and some of them are going to be minor. This will happen even if you have the best developers in the world. Accepting bugs doesn't mean you give up on quality, or don't look to improve your process. It can actually be PART of that process. You assume all bugs come from "incompetence" or "process failure", or something wrong with the system. That's just silly. People aren't perfect. Hell, machines aren't perfect. The perfect is the enemy of the good, as the saying goes.

      --
      AccountKiller
    2. Re:triaging incompetence by azgard · · Score: 1

      I agree. I was going to reply in the same manner, but probably not as good as yours, thanks.

      That's the problem with bugs. The small UI bug may be caused by underlining wrong state of the program, which may also cause crash or loss of data. So unless you know almost exactly the cause of the bug, you really don't know how serious it is (especially true for mysterious bugs - if a message overflows a message box, then you probably know the problem). If you know, on the other hand, it may be economical not to fix it right now.

    3. Re:triaging incompetence by Anonymous Coward · · Score: 0

      Machines, by definition, are perfect. If a machine does something that didn't meet requirements, it's a fault of the designer, not the machine.

  54. Ahh, reinventing the fart... by Moraelin · · Score: 1

    Ask Toyota. But there is no need to despair. Toyota software researchers or anybody else who writes safety-critical applications should read this: How to Construct 100% Bug-Free Software. It can be done but we will need to change to a synchronous and reactive software model.

    Ahh, the joys of the Dunning-Kruger effect: being too unqualified to realize one is unqualified.

    The author of that blog post basically reinvented Stress testing (yes, software which can replay input sequences and even variations thereof, and compare the results to expectations, already exists and is used), but is too ignorant to understand that it exists, or why it's not a complete silver bullet. Hence he thinks he invented how to write 100% perfect software.

    Well, so far that would be just ignorance at work. Too ignorant to realize ignorance.

    But when he's sufficiently full of it to post stuff along the lines of "Academics can kiss my ass" when they disagree, now _that_ moves it to the realm of plain old stonking stupidity.

    --
    A polar bear is a cartesian bear after a coordinate transform.
    1. Re:Ahh, reinventing the fart... by Anonymous Coward · · Score: 0

      You're the fucking moron. Stress testing is not the same as what the author of that piece is talking about. Stress testing does not guarantee anything in a non-deterministic, non-reactive software model.

    2. Re:Ahh, reinventing the fart... by Moraelin · · Score: 1

      You're the fucking moron. Stress testing is not the same as what the author of that piece is talking about. Stress testing does not guarantee anything in a non-deterministic, non-reactive software model.

      Ah, right, I guess all these years we've been using a model that was just randomly doing stuff with no cause or reason. Someone better hold a seance to tell Turing about that fundamental flaw in his machine. Oh, wait, he's one of those academics who should kiss your ass, right? ;)

      --
      A polar bear is a cartesian bear after a coordinate transform.
    3. Re:Ahh, reinventing the fart... by Anonymous Coward · · Score: 0

      My mistake. You are a fucking ass-kissing moron with an inferiority complex. LOL.

  55. You can ship solid software by Anonymous Coward · · Score: 0

    That is nearly bug free. The "trick" is to have well defined interfaces and to write tests at unit, integration and program levels that exercise every line of code with boundary conditions. When you find new bugs, add them to the tests, then work to make the tests you added pass without breaking anything else.

    You can even do things like looping the tests and profiling your program to make sure it's performance is as good as it can be at every level.

  56. more excuses from bad coders by Michael+Kristopeit · · Score: 1

    there are NO excuse for software that offers features that don't function properly.... who implemented the feature? they didn't test it first?

  57. features versus bugs by BradMajors · · Score: 1

    If it is OK for some obscure features to have bugs, then this is an indication that these features are not really needed. The solution is neither to fix or not fix bugs in this feature but rather to remove the feature entirely.

  58. craftsmanship in code by cdn-programmer · · Score: 1

    When I first started programming they liked to compare programming to building a house. I had to point out that its not like building a house. With programming you can start from the top and go down and you can start at the bottom and go up and you can start at the east, west, north and south too. You can build the parts in any order.

    However there is an aspect of programming which is akin to house building and this is the idea of the framing carpenters and the finishing carpenters.

    Who here wants to use a framing carpenter and his techniques of chopping off a 2x4 with a hand help skill saw to the techniques of a finishing carpenter laying a hardwood floor who uses a $1000 sliding compound miter saw?

    You see every one of those cracks and bad cuts cannot be fixed later. The whole floor has to be torn out and done right.

    In house building the miss-cuts behind the drywall often won't be seen unless the job is so badly done that main support beams are left out - and I've actually seen this done!

    In programming the cracks will become apparent. These will be things like error codes not checked and code to handle unlikely cases not being tested. In windows 95 for instance we found that one could shut a SCSI disc drive off while the operating system was accessing it and there were no errors or warnings... it just went to normal end of job! Now that is crappy coding if anyone asks me!

    It is much cheaper to write software to do the job right the first time. This makes later debugging much easier to do because the rest of the system can be trusted.

  59. A bug they won't care about? by MyBrotherSteve · · Score: 1

    " It's buried deep, and when the user hits it, he says 'huh,' clicks a button, and then goes on his merry way... having a few users hit some bugs they won't care about." For commercial software that people are paying for, this line of thought is a bit of a misnomer. if that user took the time to go down to that 3rd level menu item, then for THEM, it DOES matter, and they won't say 'huh', they're going to be pissed & wondering why that company would add a feature into the program that doesn't work right. I think the challenge that people in our (I.T.) industry have, is that they don't always realize that most people do not think like we do about software. WE realize that it can't be absolutely perfect, and we understand what programmers do and have to deal with. A normal user who is a plumber, or a teacher, or a doctor, or a student will be less than understanding about functionality that does not work properly. So, it's not about fixing every bug and that it will cost way too much to fix it; it's more about that software companies should look at fixing every bug that they DO know about, and if it looks like that cost will be way too high in comparison to the number of paying customers that might want to use that feature, then they should look at perhaps removing that feature until such time that it can be added back in and also work properly.

    --
    Cheers! - Steve from MyBrotherSteve.com
  60. craftsmanship in code part 2 (damn varnish error) by cdn-programmer · · Score: 1

    It is much cheaper to write software to do the job right the first time. This makes later debugging much easier to do because the rest of the system can be trusted.

    So here is a story on one of my programmers. The company was under tight deadlines. That was their own damn fault because the previous 6 consultants couldn't figure out how to write a single line of code on their watch. Of course they didn't tell us when they hired us! Go figure?

    I told my project team: Check every error code - without exception! I don't care how tight the deadlines are - I'll buy you guys the time and I want tight code! We were building a major database and I didn't want it full of garbage because of crappy code!

    Everyone agreed.

    A month later one of my programmers was having trouble getting some code to work. She just couldn't find the problem! So she brought the code to my office and we started going through it. Return codes were not tested! I asked why? She said she didn't have time. I told her she did have time and told her in the project meeting the month before I specifically said we do have time. I asked her to put in the code to test the return codes and run the program and come back to me.

    Off she went.

    2 hours later she was back and said she couldn't understand why her program was saying the database could not be opened. I looked at the call to open the database. It was correct. So then I looked at how the variable that held the name of the database had been set up. There was a typo. She went off to fix it and had it done in about 15 minutes and the program had been re-run and tested by then and it worked. We were able to complete testing in a day or so and it went into production.

    My point is this. It was less than 2 hours work to test the return codes but because she was cutting corners we lost more than a month of project time! Not only this the company was expected to pay her salary while she spun her wheels pointed in the wrong direction due to her shoddy code.

    It simply does not save project time to write sloppy code. I've seen a lot of sloppy code in my day too!

  61. Re:That guy is a crank by Anonymous Coward · · Score: 0

    Check out his free energy rants, and other quality postings which involve denouncing science and insulting every forum that mentions his blog in a bad light. He could be a professional troll for his day job, but this is the internet.

  62. So how about Oracle and Borland by cdn-programmer · · Score: 0, Flamebait

    Oracle shipped their database ported to Dos. I don't use their products anymore. This is what they did.

    In SQL*FORMS one could define a field and indicate that is its numeric. One should not be able to type in "ABCDE" in an numeric field. Indeed if you did then SQL*FORMS trapped the error. However SQL*FORMS also allowed a trigger to be set for the field. If the trigger was set they disabled the error trap! That software was so buggy it was almost impossible to use! In the next version they had the error trap enabled but they changed so much other stuff that I had to re-write the code. It does not feel good having to go to the client and advise that after months of work the product cannot be delivered and that they will have to wait months longer for the next version and hope for the best!

    Borland shipped C++ for OS/2. Again - a system full of crap.

    IBM had so many problems with OS/2 that there were many things that could not be made to work! One was networking between windows NT and IBM OS/2. FTP transfers would just fail. No errors and no warnings.

    Then IBM had the great "feature" in OS/2 that on a dual monitor system one could open a "DOS" window on on the VGA side. The other side was 8514. If the focus was in DOS then OS/2 windows on the 8514 ran. If the focus was in an OS/2 window then the DOS window not only froze - they blanked it out too!

    When Microsoft brought out NT 4.0 OS/2 got the boot! Funny - OS/2 didn't make it in the market place. I had a tech support contract with IBM back then as well! Another thing that was funny is that NT ran command line OS/2 code better than OS/2 did. So how did IBM benefit from their buggy code?

    Here's one Microsoft pulled off. In their Fortran for Dos compiler we found a serious bug. I don't know what triggered it but the compiler would remove certain "if" statements. I managed to find it by looking specifically at the machine code and sure enough the instructions were not emitted. I submitted a report to Microsoft and went to the client and fortunately I was dealing with engineers who did know something about programming. I showed them via the debugger that the code was not there! We figured out a way to get that specific "if" statement working... but we were dealing with 100's of 1000's of lines of code! How does one check what other "if" statements might have been discarded by that crappy compiler?

    So over the next year I checked up with Microsoft every few months. Eventually they told me to buy the new version. I did and when it arrived the first thing I did was to check to see if the bug had been fixed. It wasn't! They never did fix it that I know of. Eventually we got to move off DOS into windows. So I ordered that version. I found the package actually contained two (2) compliers. One was for 16 bit DOS mode. The other was for windows mode. They were incompatible with each other. I gave up. I have never programmed windows in my life! I do not use it! I did run NT for a while but never wrote any "windows" code. I use Linux today and OpenBSD and that stuff works!

  63. Support Contracts by zlel · · Score: 1

    Where I am, bugs, half-baked functions and missing features allow expensive software contracts to keep development teams alive. As soon as software become stable, customers tend to start killing off support contracts. Well, a little pain, is good for the soul. In this case, the user's pain, for the developers' soul.

  64. Inherently Suspicious by Anonymous Coward · · Score: 0

    I've always been inherently suspicious of people who claim to be programmers and then recommend articles like this. Instead of reading the fucking article, why don't you go fix some of your fucking bugs? ;)

  65. The same economics as being a unicorn rancher by ClosedSource · · Score: 1

    After all, they're both mythical beasts.

  66. Re:That guy is a crank by Anonymous Coward · · Score: 0

    He pisses you off, doesn't he? LOL.

  67. yeah by jdc18 · · Score: 1

    That is why i always leave bugs, it is not because i am a sloppy programmer

  68. Perfection can be bad for business by Anonymous Coward · · Score: 0

    My code does its basic job so well, nobody wants to pay for upgrades or maintenance.

  69. I had "one of these" years ago by flatulus · · Score: 1

    I had a software package to which I was adding features and there was one nagging, subtle bug that kept me chasing my tail for a couple of weeks.

    I was fairly junior in my career, so you can imagine how I felt when the VP of Software Development called me in for a chat. He impressed on me how it's really not practical to hold up a product shipment for some "little bug". There will always be "little bugs", and I needed to get over it and move along.

    I accepted this sage advice (and counted myself lucky that it stopped at that).

    With no particular effort on my part, and quite ironically, I stumbled upon the cause of the bug about a week later and fixed it. I never mentioned to anyone that I had in fact fixed the "not worth bothering with" bug. But secretly I was pleased that my work would not suffer from the mandated compromise.

    Of course, this is just the bug I "knew about." :-)

  70. Economics of bugs by Anonymous Coward · · Score: 0

    Why is it that software is one product in which bugs are acceptable? What if other products were this way?
      - Sorry, the car will not shift into 5th with the radio tuned to FM the rear pasenger window down halfway, and the armrest up, you have to put the armrest down to go on the highway.
      - Sorry, we don't serve coffie on the 3rd tuesday of the month, please come back tommorow.
      - Sorry, this dictionary does not include the letter p. lease use another word.

    I understand that programmers are pushed to continually do more with less, and still get the product out, but every industry is this way. Only software has a cheap mechinism for improvements to be incorporated after release (patches, updates, versions, etc). In other products, the cost to correct errors is very high (recalls, discounts, or scrap), and are borne by the supplier, not the users. In software, the costs are borne by the users, not the suppliers, and so there is an incentive to release suboptimal products.

    PC computer games have a low cost to the supplier to fix after release, and so there is an insentive to release on specific deadlines. On the other hand, consele games have (traditionally) had a higher cost to fix (impossible, prior to the newest generation of consels) after release. There is a long history of PC games being practically unplayable at release, and some are never adequatly fixed, whereas is is very rare in which there are significant problems with a consel game.

      - Masters of Orion 2 PC (Misiles incoming should we raise sheilds captain? No, lets wait until we lose one death star class ship, before we raise shields or open fire)
      - Enter the Matrix PC (don't enter that room)
      - Empire total war PC (It sure would be nice to finish a game in that dosn't just crash, but the error is at least 20 turns back in the saved game file, so you just can't go back and try again)
      - KOFOR2 Xbox, then PC (I will give you this one, at least it did not crash).

    The only way that this is shifted back to the supplier is through "goodwill". Until users demand bug free software, and shift the costs back to the developers, this will not change. From the posts above, there appears to be split on this issue, with some programmers accepting the need not to use up goodwill, and others stating that bugs are a fact of life.

  71. In Soviet Slashdot... by Anonymous Coward · · Score: 0

    Wouldn't it be "fristbr0n"?

    dom

  72. Misses the point: fix bugs for the future too! by Grey+Haired+Luser · · Score: 1

    If you're trying to ship quality software, you don't just _fix_ bugs,
    you treat each one as a learning experience, a mini-laboratory of
    "what went wrong" here. You don't just fix _this_ bug; you adjust
    your processes/standards/whatever else so that this bug can never re-occur.
    You also find out where _else_ this bug may have manifested; often
    in slightly different ways. It's unlikely to be the only exemplar of
    this type of bug in your system.

    Just doing a cost/benefit analysis saying: nah, unimportant, don't fix
    it is stupid. _This_ bug may be unimportant, but it may exist somewhere
    else where it is important, or someone may write the same bug tomorrow
    where it will be important.

  73. That's not what I'm talking about by Moraelin · · Score: 1

    You seem to misunderstand my point. Yes, you'll never have a perfect system. But if you aim for anything less, you'll hit even lower.

    And experience... well, I admire your optimism, but it was some pretty experienced teams that produced some of the worst bugs and vulnerabilities in history. The OS/2 Warp install bug which produced a non-bootable system when upgrading, for example, that was a major killer for IBM's hopes of market share. It wasn't done by some newbie inexperienced company.

    Or as a more tame example, I've spent saturday night on Star Trek Online trapped on the Sol spacestation, because there wasn't a universe any more outside the space station. Eerily reminiscent of the "Remember Me" episode of The Next Generation, but I don't really think the devs were aiming to recreate that experience in STO. The servers for everything else than the space stations had crashed. They had been unstable all day too. There weren't many happy customers on Saturday, and it might just have lost them a chunk of subscriptions. It doesn't take too many of those to negate any savings from not testing thoroughly and generally from not fretting too much about finding and fixing everything.

    That wasn't an inexperienced team. We're talking about a company who's made 3 MMOs so far. But they judged wrong. Or rather, as good as any wild uninformed guess about the unknown. Plus, again, they had aimed low (as Cryptic usually does) and unsurprisingly they hit even lower.

    I don't believe there is any relevant experience which will prepare you for categorizing the bugs you didn't find.

    --
    A polar bear is a cartesian bear after a coordinate transform.
    1. Re:That's not what I'm talking about by Vellmont · · Score: 1


      But if you aim for anything less, you'll hit even lower.

      That's just your personal observation about yourself. Other people are certainly fully capable of aiming for and achieving the goal they set out to achieve.


      And experience... well, I admire your optimism, but it was some pretty experienced teams that produced some of the worst bugs and vulnerabilities in history.

      You're over generalizing my comment. Experience will tell you which bugs are the ones to fix and which bugs are the ones best ignored. It's not going to tell you about the bugs you don't know about.

      It wasn't done by some newbie inexperienced company.

      Companies don't write software. People do. How do you know this bug wasn't created by a newbie inexperienced developer? You don't. Again, you're taking what I said out of context. I'm talking about people, not companies.

      It doesn't take too many of those to negate any savings from not testing thoroughly and generally from not fretting too much about finding and fixing everything.

      You'll never find and fix "everything". The thing you seem to miss is that time taken fixing some minor glitch in a texture somewhere is time you that could have been spent fixing some horrible bug like the one you're describing. Software has a lot of bugs, some of which you might never even identify as bugs because you just came to expect the wrong behavior as the right behavior.

      --
      AccountKiller
  74. I couldn't afford anything less... [Engineer] by Decker-Mage · · Score: 1

    While I was in uniform, I couldn't afford to do anything less than perfect software. When the potential cost of an error on my part was the loss of life or limb by an individual, or group of individuals, and the penalty for it was a sentence to Ft. Leavenworth, Ks., being guarded by pissed-off US Marines, or possibly even death, that concentrates the mind wonderfully [to mangle a quote]. I think this is a major difference between in approaches that I see throughout this discussion. To wit, penalties.

    Not once in the ten years that I was coding for the military nor in the two decades following (and yes, the software is still in use, typical of the military, and works just fine despite OS changes) was an error ever found. Therefore, it is possible to write (at the least near-) perfect software. However, this isn't just about just the penalties.

    None of this was easy although it actually took me and my team far less time to successfully complete our projects than is typical of other teams and projects that I've seen over the years. That is almost entirely due to the fact that we did engineering rather than ego-driven 'development', i.e. we took already existing, provably (mathematically) correct algorithms and data-structures with a heavy dose of built-in error checking in the form of state-machines, what I took to calling design by contract (strictly constrained, enumerated, and validated inputs & outputs), and extensive inline documentation especially for compiler or OS bugs of which we found more than a few for which fixes had to be encapsulated (hopefully for later removal).

    I specifically bring up the time savings since, at first, it didn't seem that way as we easily spent three times longer in the actual design phase (architecture, data-structure definition, algorithm selection, language(s) and tooling selection, etc.) yet the actual coding phase was just a few days and testing also only took days to identify the previously mentioned OS and compiler errors. This allowed more time to be spent on requirements collection (at least a week of hands on, anthropological interview style with the potential users) and user training during the installation and turn-over phase. The total project time was just a few weeks, at most, and these were neither unambitious nor small projects. It did take demonstrated, markedly positive (multi-million dollar ROI), results to convince 'management' that having people staring into space, scratching on legal pads, with stacks of books, and tapping the CompuServe fora (these were the pre-web days) was a good thing. Furthermore, we could often restructure a work-flow or the entire application in a few hours and they were doing exactly that with one app I had created just a few weeks before the door hit my ass as I was being (medically) discharged from the service. All my work yet the modifications (a total reversal of work-flow) was happening in mere hours and they were having fun (yes, fun) doing it.

    However, I find it highly unlikely that we'll ever see these efforts in the 'real' world given a culture of (barely) 'good-enough', and no liability for fitness let alone correctness {RTF License/User Agreement}.

    --
    "[I]t is a wise man who admits the limits of his knowledge or skill, and that pretending either causes harm." --Terry Go
  75. Summary by fulldecent · · Score: 1

    >> "This article takes the interesting perspective that leaving bugs in software is good — little ones, at least. This quote is particularly insightful: 'How do you know whether a bug is big or little? Think about who's going to hit it, and how mad they'll be when they do. If a user who goes through three levels of menus, opens an advanced configuration window, checks three checkboxes, and hits the 'A' key gets a weird error message for his trouble, that's a little bug. It's buried deep, and when the user hits it, he says 'huh,' clicks a button, and then goes on his merry way. If your program crashes on launch for a common setup, though, that's a big bug. Lots of people will hit it, and they will all be pissed. ... The cost of fixing all the bugs in your program and then being sure you fixed them all is way too high compared to the cost of having a few users hit some bugs they won't care about."

    So... in other words, meh

    --

    -- I was raised on the command line, bitch

  76. severity levels by Anonymous Coward · · Score: 0

    One shop I worked in assigned each 'issue' a severity level from 1 to 4:

        1:
            - program crashed
            - loss of user-entered info
            - wrong answer given and it wasn't obviously wrong (from customer's point of view)

        2: obviously wrong answer, no workaround

        3: obviously wrong answer, workaround available

        4: minor issue, such as documentation typo, consistency of UI, etc.

    The 'how easy' to trigger aspect of the issue was only informally considered when prioritizing issues w/in a level.

       

  77. Microsoft? Is that you? by freaker_TuC · · Score: 1

    Are you Microsoft in disguise, demanding all firstborn on the planet?

    --
    --- I am known for the ones who want to find me on the net. Is that a privacy risk or a privilege? One might wonder..
  78. Oh - bugs-pray! by freaker_TuC · · Score: 1

    And I got bugspray, because it makes bugs pray!

    --
    --- I am known for the ones who want to find me on the net. Is that a privacy risk or a privilege? One might wonder..