Slashdot Mirror


Why (Most) Software is so Bad

Rivard was one of several to point out that MSNBC says software sucks. My opinion is that in software fields where the monetary gap between market-leader and second-place is large, we should expect bad software. Good design, good execution, good debugging all take time, but users can't see under the hood -- and wherever information is scarce or not readily traded among consumers, the free market bogs down. (Note what the article says about McAfee VirusScan.) So companies that don't plan on releasing a crummy 1.0 and fixing it later go under. That's just the way some markets work; if you're a coder or engineer who doesn't like that, find yourself a job in a niche without that monetary gap. Anyway, the really stunning thing is that, of all the media outlets, MSNBC points out that just one of Microsoft's poor design decisions has cost consumers $8.75 billion, and wonders why nobody has sued. Update: 06/18 14:10 GMT by J : Readers point out the story is a reprint from Technology Review (one of the few good magazines I get -- but this issue hasn't arrived yet :).

Rivard continued his writeup with an interesting point of view, saying that while we all know software sucks, we just accept it:

"Even though 'plenty of reviewers, pundits, hackers and other outsiders' will point out problems, often intentionally left in the product, no one has brought a liability suit against the makers of the known-to-be-vitiated product -- because the software gestapo (the End User License Agreement) has been 'able to avoid product liability litigation partly because software licenses force customers into arbitration' of poorly designed pith.

"There is a light at the end of the tunnel, believe it or not, and it's Bill Gates. Microsoft suspended coding for two months to seminar on bugs and how to fix them. Gates told his employees he wanted to make 'reliable and secure' software Microsoft's 'highest priority.' If you don't buy Gates' ad-hocking promises of redemption there are other solutions, like creating a programming language that forces good code; going back to the days of intense peer-review, instead of relying on compilers; and intense planning, past the bungling paradigm of the bar napkin."

65 of 794 comments (clear)

  1. Alright... by Anonymous Coward · · Score: 1, Insightful

    MSNBC points out that just one of Microsoft's poor design decisions has cost consumers $8.75 billion, and wonders why nobody has sued

    Alright, let's sue 'em then...

    1. Re:Alright... by rogerz · · Score: 5, Insightful

      Insightful, huh?

      How about some basic economics:

      Value = Benefit - Cost.

      If, indeed, Code Red cost $8.75billion (and I'd like to see the analysis that arrived at that figure), that cost was incurred in the process of using Outlook. Presumably, the consumer derived some benefit from using Outlook, at least in their judgement they did.

      In any product liability lawsuit that does not result in human death or injury, one would have to account for all aspects of the economic equation.

      --
      If humans are mostly water, and beer is mostly water, then humans must be mostly beer.
    2. Re:Alright... by ergo98 · · Score: 5, Insightful

      Indeed, it should be the market that decides, and not the courts : The market is the reason that North American automakers were forced to dramatically improve their quality (because the Japanese automakers were far ahead of them, and the market started voting for quality with their pocketbooks), and the markets are the reason why people pay a huge premium for IBM laptops. These capitalistic forces are amazingly powerful in getting what people really want, and the only time they fail to work is when someone with a pet issue tries to circumvent market-forces to get their own personal beliefs imposed on everyone through the legal system. It isn't surprizing to see the "sue em!" claims from many of those who already have forsook Microsoft software: These are the type of authoritarian people who believe that because it's not right for them, therefore it shouldn't be right for anyone else.

      The irony is that most people, the average Joe and Jane out there, have shown that quality of software is very low on their list of purchasing criteria (which is how software like "ICQ" has never been non-beta...why bother ever calling it production code when millions of people will download it anyways). Given the choice, the market has stated time and time again that features will always trump quality, and that time to market often beats quality.

      Sidenote: My own philosophy is that I spend about 90% of QA time code auditing and refactoring, and about 10% of the time doing runtime testing. I find that this is exactly the opposite of many organizations which push runtime testing as the method of evaluating code. To me runtime testing is no different than doing a compiler syntax check: It's an incredibly weak, time intensive, limited case way to assure the quality of your code, and should at most be used to evaluate tha the compiler and dependant third party code is of a good quality.

    3. Re:Alright... by ergo98 · · Score: 3, Insightful

      I disagree entirely. Ralph Nader's book brought about a revolution in the public's eyes, and any legislation was politicians trying to choose the colour to paint the shed : They followed the trend rather than led it. ABS, electronic stability control, side impact beams, traction control systems, side airbags, have nothing to do with legislation, and everything to do with consumer's saying "yeah, safety matters". Volvo exists primarily based upon their safety standard. The law almost always lags rather than leads.

      The "little incentive to offer new features" is ridiculous. There are dozens of extremely large auto companies, all dying to eat into each other's business.

    4. Re:Alright... by sjames · · Score: 3, Insightful

      It isn't surprizing to see the "sue em!" claims from many of those who already have forsook Microsoft software: These are the type of authoritarian people who believe that because it's not right for them, therefore it shouldn't be right for anyone else.

      That is only partially true. The problem is externalities. For example, Joe admin and his friends decide that security is not a high priority for them. Now, when code red and the many DDOS slave programs end up running on thgeir box, Jane admin who chose quality is still bombarded with Code red attempts, or DOSed off the net.

      In other words, as long as it's not on the public net where it can become my problem, I don't care what other people want to run. However, If I am going to have to deal with the consequences (DDOS, gobs of code red attempts, dozens of emails from various outlook viruses flooding mailing lists, etc), I expect some minimum standard to be met.

      Think of it like FCC regulations. Radio emissions aren't regulated for the sake of the device's owner, but for everyone who lives near the owner who didn't get any input into the choice of brands.

  2. MSNBC by Jucius+Maximus · · Score: 4, Insightful
    "Anyway, the really stunning thing is that, of all the media outlets, MSNBC points out that just one of Microsoft's poor design decisions has cost consumers $8.75 billion, and wonders why nobody has sued."

    If you look through the Slashdot archives, MSNBC has historically been one of the loudest mainstream (read: not theregister.co.uk) MSFT-criticisers. This is typical of them.

  3. Re:M$ by Clay+Mitchell · · Score: 3, Insightful

    No, if you ever hit the Windows Update page, you see they fix a lot of stuff. Now, the fact that they HAVe to fix stuff is the problem. I develop software for a living, and we beat the living hell out of it before it goes to production. We have all kinds of tests, regression scripts... I realize we're not doing OS, but the principle's the same. Test it before you toss it out the door.

  4. Remember Fred Brooks? by joib · · Score: 4, Insightful


    If you don't buy Gates' ad-hocking promises of redemption there are other solutions, like creating a programming language that forces good code; going back to the days of intense peer-review, instead of relying on compilers; and intense planning, past the bungling paradigm of the bar napkin."


    "There's no silver bullet" -Fred Brooks, a long time ago.

    1. Re: Remember Fred Brooks? by Black+Parrot · · Score: 3, Insightful


      > "There's no silver bullet" -Fred Brooks, a long time ago.

      Ah, yes -- the mantra of people whose favorite language is known to promote sloppy programming practices or otherwise correlates with buggy code.

      There's no silver bullet, in the sense that switching languages won't make all your problems go away, but that's hardly the same as saying that choice of language won't make a difference.

      --
      Sheesh, evil *and* a jerk. -- Jade
    2. Re:Remember Fred Brooks? by Hard_Code · · Score: 3, Insightful

      "There's no silver bullet" -Fred Brooks, a long time ago.

      No, but there are many many little normal ones ;)
      Seriously, "little" things like languages that espouse safety and clarity add up.

      --

      It's 10 PM. Do you know if you're un-American?
    3. Re:Remember Fred Brooks? by shoppa · · Score: 3, Insightful
      "little" things like languages that espouse safety and clarity add up

      These aren't little things - they're ways of fundamentally changing the way programming is done. I see highly trained C programmers spending days to write a program that parses a complex text file, when a high-school student who knows Perl (or just Awk) can do the same job in minutes. And without buffer overflows.

      Yes, I am being a bit unfair for blaming the tool when it is being misused. (After all, Perl itself is currently written in C.) But using the right tool for the job is incredibly important.

  5. Money gap is irrelevant by Kombat · · Score: 4, Insightful
    My opinion is that in software fields where the monetary gap between market-leader and second-place is large, we should expect bad software.

    I disagree; take a look at other industries. Some of the highest-quality products are produced by the tiny, niche-market manufacturers. The best cigars in the world are not from Phillip-Morris. The finest cuisine on your block is not the mega-corporation with the giant yellow 'M'. The most accurate watches don't come from time-giant Timex. The finest literature on the bookshelf isn't necessarily from the biggest publisher.

    Software is hard to compare to other products. It's intangible. It's complex. There are a million different ways to get "Hello World" onto your screen. Maybe that's the problem?

    Software is also relatively young. Not just in the sense that it has only been around for 40/50 years, but in the sense that the tools evolve so quickly, that it almost seems like every few years, you're working in a completely different manner than before. And it takes time to become familiar and comfortable with the paradigms associated with your environment. Just when you've got a system worked out, everything changes again.

    Before, the customer wanted a library of CGI scripts to run their e-commerce website. Now that've got a handle on scripting design patterns, the customer wants EJBs. By the time you learn what to expect to go wrong with EJBs, the customer will want a cell-phone interface to their inventory.

    Sometimes, I'm amazed software works at all.

    --
    Like woodworking? Build your own picture frames.
    1. Re:Money gap is irrelevant by soegoe · · Score: 2, Insightful
      I disagree; take a look at other industries. Some of the highest-quality products are produced by the tiny, niche-market manufacturers.

      True in the material world, but also true in the software industry; it just depends on the type of software. There isn't a market for high-quality word processing software (as long as you don't count DTP), but there's definitely a market for HQ vs. "consumer level" databases (read Access vs. Oracle / DB2), rendering/image editor (read Windows Paint vs. ... vs. Maya) etc.

      In those areas, there is a clear distinction between cheap, mass-market products and high-quality niche products. You get what you're ready to pay for.

      On the other hand, on the OS market, the highest quality is available for free...

    2. Re:Money gap is irrelevant by Bingo+Foo · · Score: 2, Insightful
      It's the same reason Mac users stick with Macs, and why I think that Apple's latest marketing campaign isn't going to accomplish much. Although it would be great if it did.

      Well, one reason why software sucks is that programmers often don't consider their audience. Gnome et al., might be pretty l337 under the hood, but the applications present an inconsistent interface to the user. Even if Gnome apps were all written in C instead of some in C, some Python, C++, Ruby, etc., it wouldn't make a difference. To contrast with MacOS, Cocoa apps are written in many languages but it took discipline and attention to detail to get a uniform interface. I think too often (undisciplined) programmers are willing to expose some feature of how an app was programmed to the user, instead of working out the laborious triple problem of:

      1. Back end data representation, storage, and manipulation
      2. Front end user experience
      3. Whatever it takes to fit these together
      Usually, Either (1.) gets all the attention and then a front end is kludged on, often using an improper (from the user's standpoint) representation of data, or (2.) someone drags and drops a UI togehter that they allow themselves to be constrained by when writing the guts of the app. Either way, the front end and back end are too coupled, and sonething suffers because of it.

      It would be as if data that comes out of quicksort were presented to the end user of the app as a tree, since that's what the algorithm uses, instead of a list, which is the proper structure of the data from a human point of view. (Of course, nobody would be that gauche, but it makes a fine analogy, and what would a slashdot post be without an analogy?)

      It's apparent to me that creators of MacOS software recognize the importance of (2.) and are actually willing to do (3.) in order to have appropriately powerful (1.). That's why I'm switching from Linux to MacOS. If others are sick of messing, fiddling, and screwing around with their desktop machine in the pursuit of true usability like I am, then Apple's latest ad campaign captures the Zeitgeist and will be a raging success.

      --
      taken! (by Davidleeroth) Thanks Bingo Foo!
    3. Re:Money gap is irrelevant by reflective+recursion · · Score: 4, Insightful
      Software is also relatively young. Not just in the sense that it has only been around for 40/50 years, but in the sense that the tools evolve so quickly
      It is very ironic, the tools and methods in use today and the data formats in use. There is a saying that goes something like this: "Those who do not know Lisp are doomed to reimplement it." What have we learned lately in new programming tools and languages? From Java and C# we learn that garbage collection is a Good Thing(tm). From Perl we learned that quick throwaway programs (prototypes) can be extremely useful. From SGML to HTML and finally XML we learned that having a simple representation is the best way to represent malleable data (away from documents, back to symbolic expressions, or S-expressions).

      Now if only we could pursuade people that parans aren't as evil as they first look...

      One thing many programmers haven't gotten which quite a few Lisp'ers have is this: data is data. How the data is contained is irrelevant. What is done or can be done with the data is the most important. What tools you use to move data to other forms of data doesn't matter. There is also a very fluid nature to Lisp (i.e. code is data), which is very eye-opening (especially for those asm/C/C++ coders out there).
      --
      Dijkstra Considered Dead
  6. Software's so bad... by shren · · Score: 5, Insightful

    Software's so bad because it's still handcrafted, and the interchangable parts don't. Cars sucked too when when they were done the same way. OSS isn't the solution. The solution is for Computer Engineering to someday become as rigorous as other areas of Engineering.

    --
    Maybe the state's highest function is to grind out insoluble problems. (Zelazny, Hall of Mirrors)
    1. Re:Software's so bad... by RalphSlate · · Score: 4, Insightful

      It's also so bad because the technology (i.e. languages) keep changing rapidly and dramatically. This isn't the case of someone developing a better hammer, this is like someone developing a completely new toolbox full of tools every 2 years. People need 6 months to get completely up to speed on how to use these tools properly, but there's never enough time to actually train someone (i.e. not just a 1 day course) on how to use them.

    2. Re:Software's so bad... by xtal · · Score: 5, Insightful

      This is one of the better comments on this thread. Until manufacturing figured out an assembly line that worked, understood proper tolerances and specifications, put in quality control - lots of other things sucked too, and sometimes sucked worse than software does today. It's a wonder some of the early internal combustion engines worked at all.

      People who write software should take a piece of learning from those who write the code that becomes digital integrated circuits. Engineering those designs is just that - engineering - because a bug here or there is usually a very serious matter. Tremendous amounts of time are spent verifying your design works correctly. The same thing is true with most embedded systems as well, although those lines are getting blurred with system-on-chip development.

      Anyone who calls what is passed off for the majority of commercial, "professional" software development an engineered product is kidding themselves.

      --
      ..don't panic
  7. Forcing good code? by kafka93 · · Score: 5, Insightful

    "like creating a programming language that forces good code"? I doubt it. It's my impression that even where languages do enforce various checks - perl in taint mode, for example - there are always ways around it or issues that the code can't check. After all, a significant proportion of "bugs" aren't faulty code per se, but correct code that is based upon incomplete or incorect assumptions and design.

    The fact is, there are well-researched, well documented means of achieving quality control in development. They're simply not practiced by many because the implementation overheads are just too great. Many coders don't plan their code adequately, don't document their code adequately, and don't test their code adequately. However, this isn't necessarily a 'bad thing' -- frankly, in many circumstances it's just not that important if a few bugs sneak through which can be patched at a later date. As is always the case in such matters, security/stability are sacrificed for convenience and speed of development. And that's not necessarily a bad thing, especially in an industry where a product can be superseded or otherwise rendered obsolete even before its bugs become too much of a problem. (Although I'd admit that there are dangers in taking this for granted, as seen with the y2k issues..)

    We should expect bad code because we expect code that rolls out quickly and at a low budget. We should expect bad code because most coders don't want to spend their time testing and documenting, and because most companies don't want to spend money on dedicated testers or on implementing rigid development processes. And we should expect bad code because even bad code can work 'well enough' to keep most people happy most of the time.

    1. Re:Forcing good code? by AVee · · Score: 5, Insightful

      While what you say is true, it's not only testing and documentation that is lacking. Good design is, IMHO, at least just as important and often overlooked. The actual coding of a program is a lot easier and less error prone if everything that has to be done is defined beforehand. It also makes the testing easier, because a good design will tell exactly what to expect under certain circumstances. But most programmers, myself included, tend to start writing code as soon as possible. This is often encouraged by management people that want to see results. But they don't understand a design and only believe you've made progress when they see something working, not when you show them a design wich makes it possible to implement everything within a week...

  8. It's Time by elsegundo · · Score: 4, Insightful

    To me the largest factor in determining whether the 1.0 release of something will be acceptable is time.

    Given enough time for proper design and testing, a 1.0 release could be acceptable, but companies hiring consultants do not want to pay for the time, and companies that produce software for the general public have to rush products to market to beat company X, whose competing product is due for release, and (more importantly?) they need to please their stockholders.

    Once in a while you get a Mozilla-type thing that takes forever, but puts out somthing worthwhile with 1.0.

    --


    The revolution will be televised. Blackout restrictions apply.
    1. Re:It's Time by wilhelm · · Score: 2, Insightful

      Having worked for a couple of the second type (the shoot from the hip type), I would suggest that the engineering-oriented firm has the right idea.

      My big project was a commodity trading application, one in which many millions of dollars of trades and futures would potentially pass through. When we started, the clients had NO idea what they wanted; they actually had us copying the interface of another piece of software. When we got about halfway through the copy, the changes started, and kept on coming, even through the testing phase. The finished product (one year late, almost to the day) had had so many changes, it bore almost no resemblence to the original program we were copying (probably good, from a getting-our-ass-sued standpoint :).

      The worst part was that the owners of my company didn't want to spend any time in testing. They never needed to do much more than a couple days' testing on any of their other projects (mostly web programming), so they had no idea why this project need so much. I got as much testing in as I could, and isolated some obscure cases, but there were probably still more lurking in there.

      I left that company a long time ago, and have no idea if the project ever went anywhere. I kinda hope it did, considering the amount of work I put into it. The clients' domain is no longer registered, even though my former company still lists them as a client (under the non-working domain, heh), so I guess it was all just wasted effort. As the parent post suggested, it was a disaster waiting to happen.

  9. Responsibility and liability by jchristo · · Score: 4, Insightful

    I believe that we are seeing the increasing development of issues that were first coming to light in the late 90's, when the Y2K problem was starting to be recognized as a problem for society at large. As the economy comes to rely more heavily on properly functioning software based systems, the push to make the designers and constructers of these systems responsible for them. Too often in the community the various proposed approaches to design and implementation (now being expressed as the battle between methodologists and agile methods proponents) obscure the basic need to build the right systems, in the best known fashion. This is, at heart, being willing to accept responsibility for what has been promised. If the community will not do this, then legal sanctions will be imposed which force the issue.

  10. Re:M$ by zangdesign · · Score: 3, Insightful

    How does one test against every possible configuration of every possible computer that could conceivably run one's OS?

    Microsoft keeps finding bugs - that is true. Some of them are extraordinarily serious - that is also true. But it is impossible to find every bug the first time, or even the hundredth time out.

    Remember, they are up against people who are actively searching for exploits. This is not your average user we're talking about finding a hole in the system.

    On the whole, Microsoft does a somewhat overpriced, but erratically decent job of doing the tasks I use it for.

    --
    To celebrate the occasion of my 1000th post, I will post no more forever on Slashdot. Goodbye.
  11. Software NOT Different by 4of12 · · Score: 4, Insightful

    Just like cars, refrigerators and houses, the quality of what you purchase is not perfect. And you should not expect software quality to be perfect any more than you expect your car to be perfect. The more money you pay, the more quality you get. It's an asymptotic approach where increasing quality costs a lot more money.

    Just because of a long-standing close relationship with mathematics, people buy into the idea that software should be as ironclad as a theorem.

    It just ain't so.

    Real software becomes complicated, much in the same way that PDE's governing real physical phenomena become complicated. Small pieces of software can be verified for correctness pretty easily, but complicated interacting pieces of software rapidly will exceed your resources to check for behavior under all circumstances.

    There are so many ways for it to behave and misbehave that closure is a process of endurance, enumerating and testing as many options as possible under as many likely and important conditions that you can think of.

    At some point, you decide that you've reached an acceptable level of quality (does our regression tests and stays up and running for 99.99% of the time for the sample of typical users) and release the product.

    [Bill Gates is another matter altogether. I think he's responsible for some distortion of the software marketplace and, thereby, responsible for software not needing to be up to higher standards. That said, however, even without his influence, software will never be up to perfect standards.]

    --
    "Provided by the management for your protection."
    1. Re:Software NOT Different by sphealey · · Score: 4, Insightful
      Just like cars, refrigerators and houses, the quality of what you purchase is not perfect. And you should not expect software quality to be perfect any more than you expect your car to be perfect.
      Get a refrigerator from 1950, another one from 1970, and one from 2001, and set them side-by-side. Make sure each one is the basic model, with no fancy gee-gaws or "futuristic controls".

      I submit to you that the 2001 refrigerator is approaching perfection. Thermodynamic efficiency is approaching theoretical maximum, reliability is approaching 99.99999%, sound is down to essentially nothing, and the price in real dollars is about 1/10 that of the 1950 model.

      Why? Because refrigerator makers (like auto makers) made a committment to improving, and attempting to perfect, their product.

      Now, you can say that software hasn't been around as long as refrigerators, which is probably true (although it has been around since 1940, and the quality of what was done in the 1970s is often better than today's). However, the profit margin on software is also tremendously higher than that of white goods, and the rewards for management much greater. Yet the software industry refuses to clean itself up.

      Oh well.

      sPh

    2. Re:Software NOT Different by catfood · · Score: 5, Insightful

      But the refrigerator does exactly one thing, and the interfaces are perfectly standardized. It's not programmable, and it's nearly impossible to use incorrectly. The perfect refrigerator is not a moving target. And the money you put into design and quality control in 1970 is still paying off now.

      Hell, if software just had to do what it was doing in 1970, it would be more perfect than refrigerators.

  12. Software is bad because it's not a science by gelfling · · Score: 3, Insightful

    Software likes to think of itself as 'engineering' but it's not. It's not structured, it's not methodical, it's not repeatable, it's not quanitatively quality controlled, it's not maintainable, it's not documented correctly, it's not impervious to new flaws after it's finished, it's never finished.

    Project managers don't, requirements assessments can't, cost estimates are from Mistress Cleo. Nobody understands what success is supposed look like and no one can tell the difference between success and failure.

    It's neither mass produced art nor is it artistic engineering nor is it special or inciteful. It's an ordinary product made by people who have to be extraordinary simply to overcome all of it's other failures. It's the dancing bear - interesting not because it dances so well but because it dances at all. It is a controlled crash.

    1. Re:Software is bad because it's not a science by sphealey · · Score: 4, Insightful
      Software likes to think of itself as 'engineering' but it's not. It's not structured, it's not methodical, it's not repeatable, it's not quanitatively quality controlled, it's not maintainable, it's not documented correctly, it's not impervious to new flaws after it's finished, it's never finished.
      Project managers don't [...]
      Well, it can be (think aircraft control systems). It just generally isn't. Which tells us that there is some reason(s) buyers don't want well-engineered software.

      Those reasons probably are (a) first cost of purchase (b) competitive advantage to be gained by using something "good enough" sooner rather than something perfect later.

      Which doesn't excuse the behaviour of software suppliers, but the question is more complex than it appears.

      sPh

    2. Re:Software is bad because it's not a science by Morris+Schneiderman · · Score: 2, Insightful

      Software design & creation is a craft, not a science. (My first degree in in Physics).

      I have managed the production of software that we provided with a money back guarantee, and none of the companies (which paid large licence fees) ever asked for a refund. It can be done right, if you know how and choose to do so. But I'm not seeing a lot of interest in the production of quality software these days. It would appear that there isn't much call for it.

      As far as the comment, "project managers don't", I'm currently writing a book on how to manage complex projects. Project management involves much more than keeping track of 'hour spent'. Complex projects involve delving into the unknown.
      That requires keen observation & people skills, in addition to judgement, wisdom and flexibility/adaptability. It's really a lot like wilderness exploration.

  13. People don't want good software.... by ThomasMis · · Score: 4, Insightful

    I'm against this notion that people want good software. As a software consultant, who has been involved one way or another in a varienty of fields, I can say with authority that companies want software *cheap* not *reliable*. When companies want reliable and secure they pay for reliable and secure. Companies have an absolutely unrealistic expectations of what can be done in a short and cheap development cycle, yet that's what they demand from their consultants. I have an client (a rather large health care provider) that still hasn't changed the default password to the publically available administration section of their system... which is more common than one would care to think. This is a testiment to how high companies consider security important.

    --
    Check out my podcast: DreamStation.cc Video Game Show
  14. Re:a language that forces good code? by fidget42 · · Score: 2, Insightful

    Actually, Ada does a good job on enforcing good code, but many people ridicule it. It is those features of the language that support good coding pracitces (strong typing, etc.) that are the source of most of people's "issues" with the language. As the saying goes: "You can write FORTRAN in any language." It just takes more effort in some languages than others.

    --
    The dogcow says "Moof!"
  15. Look at how programmers are taught... by zubernerd · · Score: 2, Insightful

    the "code now and fix any bugs latter" mentality is what CS students in their first 2-3 years in a CS program are taught... do you know how hard it is to get a group of people to break out of that mentality. Where I work, you see a lot of lets "code now (with perl) and glue it together and pray that it works, and if there's bugs, apply a quick fix" Which is fine, until you have a complex program such as a data pipeline...
    Also, we have end-users screaming at us for software... they don't care if there are bugs, becuase they assume we can fix them over-night. End-users like software released often and perfect.

    --
    Accentuate the positive, don't waste your mod points on the negative.
  16. Re:Don't use software that sucks. by dlur · · Score: 3, Insightful

    While this is true, I doubt that the Navy ship that was coerced by faulty software to shoot down a civilian aircraft was running Microsoft software. And the operating system still wouldn't be at fault here. This type of thing would be due to faulty design and coding on the part of the weapons targetting systems. This software that probably runs on some sort of Unix system--Software that is most likely unique and proprietary to this ship.

    While Microsoft is undoubtedly the most highly publicized proprietor of poorly written bloatware, there are many others to be held acountable here. This isn't just about operating systems, or office applications. This is a fundamental problem that I'm beginning to see in all software created recently. From game publishers, to shareware, to P2P clients, to proprietary data systems there is a lot of poorly written, and even more dangerous, poorly planned out code.

    Game developers are frequently rushed to the point of putting out a sub-par error-riddled game because the publisher wants the game out on schedule, not when it's ready. We've all seen numerous stories about how the majority of the P2P file-sharing clients are filled up with bloat and spyware. A lot of us have worked for companies that have their own IS department that writes proprietary code for many of the business's apps, and I think a good chunk of us can agree that many of those apps are poorly written and not very well designed.

    I don't know what the solution is myself to this problem, and I don't think Bill Gates's plan to create a programming language and compiler that will resolve all these errors will work either. I think that this will only lend towards more reliance on the compiler to do the coding for you. Only a good Software Engineer is going to know which search routine to use in different instances, or how to write a proper algorithm for the proper circumstance. Software compilers, until they develop intelligence on par with humans, will not be able to do this for us.

    I think the only solution is to go back to our roots and examine the way we teach and train the upcomming batch of computer science students. Teach them not to rely on the compiler to fix their mistakes for them, but instead to thoroughly plan out the code they're about to write (on more than a napkin preferably), use the fundamentals of programming to pick the proper routines, use modular design to produce a better product, and also to write code correctly the first time. Think of it like this (if any of you hunt that is), when aproaching your prey in the wild with a bow and arrow as your weapon of choice you must be sure of your shot, and be sure that your first shot counts or you may not get a second one. I think software designers need work towards making sure their first shot counts. Do it right the first time, and don't rely on the equipment to do it for you as only skill will prevail.

    --
    Duris MUD - The best pkill MUD. Ever.
  17. Well, what do you expect? by Cereal+Box · · Score: 5, Insightful

    In other engineering disciplines, there is little room for error and your mistakes are readily apparent -- you screw up, and you'll probably wreck a few million dollars worth of equipment during testing or kill someone when the product ships. Software engineering, on the other hand, allows the mediocre on the team to hide behind truly talented individuals.

    Code doesn't work? No big deal, just fiddle around and recompile. Still doesn't work? The other guy will probably fix it. Product's shipping and the problem still isn't fixed? Eh, who cares? It's not going to kill anyone, and nobody will notice.

    It is precisely because no one can "see" the shoddy workmanship of programs that such behavior exists (and I'm not saying open source programs are immune to this -- patching a crappy open source program is akin to patching up a crappy car engine with duct tape and staples). All those slackers who couldn't code a binary tree to save their life and were generally mediocre college students are writing the software you'll be using. Their mediocrity is hidden by the anonymity and zero-accountability inherent in large software projects. Essentially, they're doing the same thing in the real world as they did in college -- slack off and hope nobody notices.

    This, folks, is why colleges need to implement tougher CS curriculums. This is why you need to be able to write code on paper. This is why colleges insist that you don't collaborate on projects in lower-level CS classes. This is why there shouldn't be curves that allow mediocre students to graduate with a CS degree when they should have been weeded out during their freshmen or sophomore year.

    I'm almost finished with my CS degree, and it's depressing, even at this level, how few students there are who really have an understanding of and interest in computer science. Most of the students enrolled in CS at my school have never coded before college. The most popular reason for choosing CS? "I used to make webpages, and I figured it would be easy." No joke. Of course, this sort of behavior isn't strictly limited to CS -- I've met more than a few EE students (freshmen, admittedly) who couldn't identify basic electrical components, didn't know Ohm's Law, and chose EE because "I used to take apart telephones and put them back together, so I think electronics is fun." Inevitably though, these clueless students who enroll in other engineering disciplines tend to migrate over to CS since it's not as "balls-to-the-wall" difficult as say, EE or ME.

    In short, software "sucks" because our colleges are allowing mediocre students to slip through the cracks into the professional world. Personally, I feel that the CS curriculums should tighten up a bit and put more emphasis on solo projects (and moderately challenging ones, at that) and writing code on paper at the lower levels. A message has to be sent to those students who want to be engineers but don't really have what it takes that CS is NOT an "easy major". Perhaps then it might not be the haven for slackers that it has become.

    1. Re:Well, what do you expect? by Fastball · · Score: 3, Insightful
      In other engineering disciplines, there is little room for error and your mistakes are readily apparent -- you screw up, and you'll probably wreck a few million dollars worth of equipment during testing or kill someone when the product ships. Software engineering, on the other hand, allows the mediocre on the team to hide behind truly talented individuals.

      What a bunch of self-congratulatory, arrogant bullshit. Only a student can come up with this kind of geocentric philosophy on programming. You are not a unique snow flake. You are part of the same rotting, organic, compost heap that makes up the rest of nature. Can I get you a cup of hot cocoa to make it feel better?

      If you think the intellectual pyramid of programming is bottom heavy in college, wait until you cash your first paycheck. One of two things will happen at that point in your life: 1) You have an epiphany that no matter how skilled you are, other people, far too deep into the fog to know what a binary tree is, will determine how well your work actually turns out, or 2) You will cast yourself as an agent of change, lay down stringent guidelines for how things should be done, and everyone else will ignore you in order to meet deadlines.

      Either way, you will be miserable and burn out in no less than 2 years after graduation.

      This, folks, is why colleges need to implement tougher CS curriculums. This is why you need to be able to write code on paper.

      If you want to spend time trying to out do Dijkstra or develop the better finite state machine, stay where you are. Academia is for you, more than you know. If, however, you want to create solutions to problems, other people's problems, their business problems, then sit down at the table and have some humble pie.

    2. Re:Well, what do you expect? by swillden · · Score: 3, Insightful

      Naturally, the demand for CS graduates would become greater than it already is, leading to more students pursuing CS, leading to more very capable graduates filling said demand, leading to higher quality software. What's the problem here?

      Okay, screw the socratic stuff. I'll just lay it out.

      What would happen is that businesses would be unable to get enough CS grads to do what they need done. Also, salaries for programmers would continue to rise, making much software too expensive to build with degreed CS people.

      So, businesses would turn to other sources. Overseas, if necessary, but since that is often impractical, they would mostly turn to vocational schools. You know, the "You too can lose that dead end job and become a programmer in only 18 months" kind of programs.

      You see, you're confusing cause and effect. The low standards are the effect. The cause is that developing good software properly with well-qualified people is just too danged expensive. There's too much software that has to be written. Business has pushed the schools to turn out more software engineers because they need them. Schools have responded, that's all.

      I'm massively oversimplifying here, of course. I'm ignoring the fact that there's not much incentive to be a CS professor, and the fact that a top CS grad is still far from being a good engineer and that good project leads are even harder to find than good programmers (since they have to be good, experienced programmers *and* understand the business world *and* be able to communicate), and that good software project managers are really tough to come by and a whole host of other issues.

      The key, though, is to understand that the schools' attempts to pump out ever larger volumes of CS grads is the effect of the high demand, and that reducing the supply will only force that demand to be supplied elsewhere.

      Fundamentally, the software industry is faced with a nearly insoluble problem. We're trying to build more, faster, better, with less and less because we're in the process of rapidly computerizing our whole society. There's just too danged much work, no magic bullets to be found, and much of our software, frankly, doesn't *have* to be all that good.

      --
      Note to ACs: I usually delete AC replies without reading them. If you want to talk to me, log in.
  18. Re:They left out an important issue -- open source by jeffy124 · · Score: 2, Insightful

    Well, that IS how they teach people to do it in college...

    Any school that does that should lose their accredidation. Reality is that no school does that nor would any teacher advocate that. The key idea is teaching the student the difference between a compiler error (ie, missing semicolons) vs. a run-time error (adding 1 instead of subtracting 1).

    I'm in college now (will be a Senior in September), the freshman are taught C++, and one of the first few lab sessions involves being given some short code (written by the prof) that compiles correctly, yet contains a logic bug of some sort. Likewise, the textbook contains a discussion along similar lines, including that famous quote from MIT that says something to the effect of "We were amazed by how often we had to go back and fix errors in code that we wrote"

    --
    The One Rule Of Chess You'll Ever Need: Don't play someone who carries a kit in their bookbag.
  19. Developers are only half to blame by Zamfir · · Score: 3, Insightful

    While there is plenty of truth to the problems of lack design, poor coding practices, etc. there are other factors - just as important - that contribute to the state of software today. many companies have product plans that are put together a year(s) or more in advance, and there is tremendous pressure to meet those dates. rush your time to market and quality is going to suffer every time. thus, buggy commercial software is often the responsibility of executives as much as developers.

  20. It's not just 1.0 versions.. by RailGunner · · Score: 5, Insightful
    It's not just 1.0 versions of software that suck, in at least one case (because I worked there) it's later versions.

    As a developer, I've seen this happen first hand, but in most cases to blame the engineer is incorrect. In my case, pointy-haired boss types pull a deadline out of their asses and expect the Engineering team to hit the deadline. What happens then? Well here's one quick anecdote.

    The company I used to work for decided in February of last year that we would ship version X.2 (where X is greater then 4) of our software package at the end of June. Only problem was, there were still approximately 10,000 known bugs, and the only reason to ship in June was to announce the release at the company sponsored trade show. That, and there wasn't a single engineer asked for an esitmate, unless you count the moron owner who thought he was a developer and was notorious for being way too aggressive in estimates (among other bad habits, like not even building his code before checking it in to the source control system).

    Clearly, there was no chance in hell we were going to hit the deadline. Management's solution? Mandatory unpaid overtime. 15 hours a week. All requests for vacation were denied until the product shipped.

    To make a long story short, 2 developers quit (myself being one of them), 2 were laid off because they didn't have a new version to sell because X.0 was such a piece of garbage for a lot of the same reasons.. and the company finally trotted out version X.2 to very little fanfare with 3000 known serious defects still not addressed.

    And, like X.0 before it, it's a POS - a piece of shit. Engineers get burned out when they are overworked just like anyone else, and are forced under threat of termination to make poor decisions to keep their jobs. Management then oversees the creation of a poor product and then are completely oblivious that they are the root cause of the problem. Instead, the development department gets blamed and in this case the director got canned. (When really all he did was take his marching orders from the owner. No authority to make decisions, and yet they held him accountable.)

    The truly sad thing is, all this can be avoided if management would just back off and let developers do their job without micromanaging and shoving their nose to the grindstone, spending the investment capital to pay your employees overtime when appropriate, staffing up your Quality Assurance department (5 Analysts testing code put out by 10 engineers is not enough by a long shot) and not releasing it until it's ready.

    One excellent software release can make your company very rich. One poor software release can kill your company. (And in the case of the company I used to work for, I must admit I hope that happens. The world would be a better place without that third rate company run by a fourth rate pompous jack-ass developer who thinks he's above you just because he went to an Ivy League school, and you just went to the local University.)

    And don't even ask me to name the company or the product, I won't, I still have close friends that work there. Even if I do wish they'd quit drinking the Kool-Aid..

    1. Re:It's not just 1.0 versions.. by estoll · · Score: 3, Insightful

      Sounds way too familiar. My company made the plunge into .NET last fall for a product that is shipping this week. I was brought on to lead the development; however, was given absolutely no control over the design of the application. The project was lead by a group of people who have never done web design a day in their life and they were making the design decisions. When something goes wrong or we hit a roadblock, the developers get blamed but management doesn't realize that the fact that they won't let their developers spend 5 minutes on design or planning is the main cause for all the problems.

      In my opinion, the reasons there is bad software is 99% management's fault.
      1. They think they can make decisions on how to write software when they don't know anything about it. I even know a manager that has a secretary read/write his email because he can't use a computer. He has a monitor on his desk with a color printout of a web browser taped to his screen as a joke (no kidding).
      2. Requirements gathering needs a lot of improvement. How many times are the requirements written by the same managers I just described above? The managers don't understand how or why these requirements are even necessary and when you ask them to elaborate or get more information from the customer, they don't think it is necessary. They just make something up, tell you some BS, and never ask the customer. In the end, the developers have to go back and change everything and management gets pissed when it takes twice as long to make a huge functional change than it did to put it in in the first place. They don't understand why and once again, the developer gets blamed.
      3. Management thinks developers are stupid. They don't look at their developers as experts in the field, they look at them as grunts just implementing their product. When a grunt asks a question or makes a suggestion, management turns their back and sticks their nose in the air. What could a developer possibly have to say that means anything to their bottomline?
      4. Management never asks their developers for an opinion. They consistently make estimates based on buzzwords instead of asking their development team for input. How could a manager with no development experience possibly make an estimate without knowing what has to be done?

      IMO, there needs to be a layer between management and the development team or management needs a degree in computer science. If a manager doesn't understand what it means to develop software, how can they expect to support their team and manage the project?

      In the end, management thinks their development team is incompentant because the project didn't go smoothly and thd developers get burned out because they aren't allowed to use their skills and are forced to brute force a piece of shit product.

      Has anyone successfully overcome these obstacles with management? What is the course of action to make management realize what they are doing wrong?

      --
      http://www.askthevoid.com
  21. Re:M$ by eaolson · · Score: 3, Insightful
    How is it possible that on the same PC I have a 70 day uptime with linux?

    Perhaps, because with linux you have a system designed by people not concerned with cost-effectiveness?

    No, I'm not trolling. There is a considerable difference between people who write code because they enjoy it, and people who code because they are attempting to market a profitable product. (Abusive monopoly-ness notwithstanding.)

    It takes an infinite amount of time (i.e. money) to make a product perfect. Therefore, any for-profit business must operate in a mode that allows them to release a product that is good enough to sell, but not so good it is perpetually in development.

    As an old boss of mine used to say, "The enemy of the good is the better."

  22. Re:M$ by borgboy · · Score: 3, Insightful

    How is it possible that I have PC servers with better uptime statistics than production AS/400 boxes? How is it possible that RedHat raises a Signal 11 when I try to install it on the same workstation that has never blue-screened XP? Anecdotes are useless.

    --
    meh.
  23. Re:M$ by zaphod110676 · · Score: 3, Insightful

    But the industry has dooped people so well that they believe there is really nothing wrong when software fails. They believe that it is just the way it is, that they should hit the reset button and get on with life.

    Product testing costs money. The customer will buy it even if it is defective because 1. They don't know they have a choice, and 2. They don't really care that there's a problem. If a customer will buy it anyway why spend more money on testing? It reduces the bottom line and you can always fix the problems people actually complain about later.

    Many companies today care little about integrity or the satisfaction of their customers as long as it doesn't have an effect on profits. In the software industry the cost of producing a product with fewer defects is greater than that of having a possibly unhappy customer.

    --
    To Do: 1. Take over world 2. Pick up Milk and Bread on the way home
  24. That's not what freddy meant and you know it by Anonymous Coward · · Score: 1, Insightful

    Look,

    All he's saying is that changing languages ain't going to fix the problem.

    Ya wanna know why?

    Because the problem isn't one of compilers, or ironically of technology.

    Its an attitude and approach problem. Its the lack of peer review of architecture and design that is the problem.

    Let me put it in a form that even you could understand:

    Take the smartest, best programmer in a room. Let me come up with a solution to a non-trivial set of requirements using whatever language you think "helps".

    I guaran-g*ddamn-tee it that the program will suck. It may suck obviously, it may suck subtley, but it will suck.

    That's because one person isn't smart enough. Albert Einstein didn't figure it all out. Its through peer review of design and architecture that you get results.

    And the magic number is 3. Three smart architects or designers will change the world. One smart guy will just hurt himself and do something that has a high suck quotient.

  25. Re:M$ by juliao · · Score: 4, Insightful
    Somehow, most of the bugs we've seen lately have very little to do with the congifuration of the computers on which the OS runs.

    In the case of IIS exploits, for instance, it has nothing to do with it whatsoever.

  26. Kombat's Law: by Bastian · · Score: 5, Insightful

    Kombat's Law:
    Before, the customer wanted a library of CGI scripts to run their e-commerce website. Now that've got a handle on scripting design patterns, the customer wants EJBs. By the time you learn what to expect to go wrong with EJBs, the customer will want a cell-phone interface to their inventory.

    Observation on Kombat's Law:
    Technologies become fashionable soon after they are introduced, usually when the libraries are still version 1.0 or one-point-epsilon.

    Related observation on the software industry:
    It's standard practise to push a buggy pile of kludges still in need of major debugging out the door to meet overly optimistic deadlines and call it version 1.0.

    Sum conclusion of it all:
    We're all fucked.
    Those who like to use exciting new gizmos are even more fucked. Those with bosses who are attracted by shiny objects are the most fucked.

  27. Seems obvious enough to me... by Otter · · Score: 3, Insightful
    Developers make what users want. When was the last time you saw a bug in the code running your microwave oven? In some contexts, desktop computer use being a primary one, users value new features over small changes in stability and consistency. And that's what they get. A couple of weeks ago, Microsoft came out with a new version of Office.X, fixing a lot of bugs in the original version. Do I wish they had held off on releasing it until all those fixes had been made, leaving me without a native OS X word processor and spreadsheet for a year?

    On the other hand, in applications where stability and predictability are far more important than new features, software quality is excellent.

    Automotive metaphors for computing are almost always useless but since the article relies on one -- cars may run reliably, but the AM/FM radios they put into them are frequently useless. Does anyone complain that the automotive industry included them for decades, instead of waiting until cassette/CD players were available?

  28. Re:what poor design decision? by egreB · · Score: 1, Insightful

    How about Outlook's great features of executing unkonwn code on its own? How about the great security built into the entire Windows "operating system"?

    Hm..

    And why did not Red Code attack, say Macintosh or *nix-users? Dunno. It can't have anything to do with software design, could it?

  29. Software development is not manufacturing by BigTom · · Score: 3, Insightful

    Will people stop spouting off about needing production line reliability in software development.

    The software equivalent of car manufacturing is stamping a CD. It's very reliable. What software developers do is design, not manufacture.

    The problem is that they ship half baked and unfinished designs (that they call products) without really thorough testing and refinement.

    Have a look at the concept cars from an automobile design shop. How reliable and safe do you think they are? Its only after a couple of years of prototyping and testing that they have a design that they would risk manufacturing.

    The problems with software stem from manufacture being too easy, not too hard.

  30. People get what they pay for by MountainLogic · · Score: 5, Insightful
    The auto industry could build a car for under $3000 , but it would not sell. Who in the western world is going to buy a tin box on a lawn mower for a car. These same companies could build large, long lasting, quality, safe 150 MPG cars that we would all love to own, but who is going to pay $500K for a SUV made from graphite and titanium?

    Software companies could build a rock solid word processor or PIM , even MS, but no one will pay for it. We all scream that the retail price of MS Office is far too much. The corporate world looks at the per seat cost of MS and say, "I wish we could switch to something less expensive." Every product has a price point and software has a very low price point.

    The odd part of the problem is the marginal cost of production. As we all know, once the development is done it cost next to nothing to produce. Once a producer has a product that the market will pay for there is little incentive to keep droping millions into making it much better. We would all love to use perfect" software. If "perfect" software can only be done using "traditional" engineering approachs such as is used in aircraft design that means putting massive teams on a word processor. Each team does one function including the code, hand checking the machine output from the compilier, checking it's performance againsta massive design document. We all know the story of how this kind of effort almost sunk IBM. Computer science has progressed to the point where massive effort should be able to be implimented, but no one would be willing to pay for it.

  31. Re:M$ by robhancock · · Score: 2, Insightful

    How is it possible that the stability of the Linux kernel is related to this discussion whatsoever? That amount of uptime is not impossible with Win2000/XP..

  32. Not surprising considering... by weave · · Score: 4, Insightful
    How can we be surprised, when Microsoft has been heavy pusher of the LACK of need for a formal university degree. Why spend 4 years in a Computer Science program when you can spend a few grand, take a crash course, and get your MCD or MCSE certificate in a few weeks?

    In fact, I remember Gates several years ago bragging about how he prefers not to hire CS grads because they come out of school with too many limitations programmed into their brains.

    Yeah, limitations, like how to write good code, how one should avoid side effects in functions, write black box functions, learn how to develop testing functions to push a full range of possible inputs to functions to test them, how to document properly, etc, etc.. You know, all that stuff that cuts down on the number of lines of code per day a programmer pumps out...

  33. Re:M$ by battjt · · Score: 5, Insightful

    How does one test against every possible configuration of every possible computer that could conceivably run one's OS?

    You design around it. 3rd party drivers are a constraint for MS. Drivers do not have to run in ring-0. Microsoft chose for drivers to run in ring-0 and we pay for it with crashes.

    Joe

    --
    Joe Batt Solid Design
  34. Re:CS, not SE by Capt_Troy · · Score: 4, Insightful

    We were taught a ton of quality control, testing, and design in school. In fact, design and testing were taught at the major portion of software development. We spent most of our time designing and testing our code than we did writing it. We also did studies on the effects of poor programming and the responsibilities a programmer has in relation to his/her code. I can't speak for every CS program, but I know that these were the core aspects of mine.

    You are right though, once I got a job in the real world I found that these virtues were lost in most companies, and the importiance of the training we received in CS classes were dismissed as academic jargon and a waste of time. I saw a lot of people developing software without even an engineering degree of any kind! And the notion that as long as your code isn't in a position to harm a person's life, so what if it has bugs, is rampent...

    So I think the problem is not in the teaching, but that a lot (surely not all) of the employers dismiss the talents that their employees learned in school simply because they think the "real world" works differently and that their experience is more importiant that formal teaching.

  35. I love subtle ads by drew_kime · · Score: 3, Insightful
    Some software companies are responding to these criticisms by revamping their procedures; Microsoft, stung by charges that its products are buggy, is publicly leading the way.

    But I thought they were asking us where we wanted to go today.

    --
    Nope, no sig
  36. Hmmm....; by einhverfr · · Score: 3, Insightful

    You are complaining about $8.75 billion.

    Here is something more to consider:
    From the article:
    The potential risks of bad software were grimly illustrated between 1985 and 1987, when a computer-controlled radiation therapy machine manufactured by the government-backed Atomic Energy of Canada massively overdosed patients in the United States and Canada, killing at least three. In an exhaustive examination, Nancy Leveson, now an MIT computer scientist, assigned much of the blame to the manufacturer's inadequate software-engineering practices. Because the program used to set radiation intensity was not designed or tested carefully, simple typing errors triggered lethal blasts.

    Despite this tragic experience, similar machines running software made by Multidata Systems International, of St. Louis, massively overdosed patients in Panama in 2000 and 2001, leading to eight more deaths. A team from the International Atomic Energy Agency attributed the deaths to "the entering of data" in a way programmers had not anticipated. As Leveson notes, simple data-entry errors should not have lethal consequences.


    No shit.... Since when should such a machine not have safety mechanisms in place to keep this from happening? Doesn't it seem obvious that one should do SOME sanity checking on the final result when someone's life is at risk?

    Would a mechanical or electrical engineer allow this sort of thing to happen? Why should a software engineer?

    --

    LedgerSMB: Open source Accounting/ERP
  37. Quality is not free by Kefaa · · Score: 4, Insightful

    Quality is important, but how we use software is more important in our buying decision. They made a good point that given the plus side of the equation, most software is worth what you pay for it. Otherwise, people would not buy it.

    Quality however is not free and the consumer must, in almost all business equations pay for it. In the case of dropping a Space Shuttle on Atlanta, our willingness to pay for additional quality controls is going to be much higher than testing a text editor.

    Using the automotive analogy, I want my car to go 250,000 miles without any upkeep (oil changes, filters, etc.) The diffence in the engineering is that no one considers the auto example reasonable but they do with software for which they are paying 1/20th the price.

  38. Re:Out of touch with reality by Anonymous Coward · · Score: 1, Insightful

    > To me, these comments seem utterly out of touch
    > with reality.

    Well, no. OSS vs. closed source is an implementation choice/philosophical decision. It's not a design difference.

    And that's what the original author is talking about: a fundamental change in the design process. We're kidding ourselves if we think the hacking and slashing that we call "the design process" at many companies is any kind of engineering process. Software quality will not increase until that's addressed.

    > For example, Microsoft's Internet Explorer has
    > 18 unpatched security bugs

    Yeah, and I when I run Mozilla on Linux after I open three tabs I can't time in the damn URL field...and I can't close tabs...and I always go back to IE.

  39. Re:Bill Gates as a Poster Child by kpetruse · · Score: 2, Insightful

    Well, yes and no. I've been using MS products for years and sometimes what they lose in stability they make up for in ease of use. I've had hours of fun trying to do simple tasks in Unix (Solaris 2.6) and wondered why finding such simple settings as where an IP address is set has to be so tough, when in NT all I have to do is right click on "My Computer" and find the network settings there.

    I've also just started using Linux and am baffled as to why things like updating video drivers has to be such a pain, when with Win98 all I do is double click on an .exe file, click on a few "Ok"'s and reboot and all is well with the world.

    MS have made computers easy to use for the average Joe. Unix and Linux haven't. All that lovely stability means nothing when an average user can't carry out a simple task.

    Sure, I agree that the stability and security of MS products suck. The stability issue could have been fixed in XP, but wasn't (far too much XP rests on top of all those old bugs in NT). The security problems could be fixed with better coding, but we all know that there are also plenty of bug in other OS's, and protocols (SMTP anyone?).

    Don't get me wrong, I love Unix for the control and stability I get from it (and where I work, all the serious back-end stuff runs Unix), but for users who need decent apps with consistent front ends, it's got to be MS. And I say that with sadness in my voice, because this stuff could be done so much better, but isn't.

    As an aside, let's also not forget that many problems we see on MS OS's is partly due to dodgy programming of third party apps. Of course, these problems shouldn't result in a BSOD, but blame where blame's due...

  40. I don't mean to go off on a rant here but. by bons · · Score: 3, Insightful

    Let's start off by getting through the obvious. I'm a developer, a purchaser, and a beta tester.

    The first truth of software development is that customers demand software immediately. They are not willing to wait for bug free versions to come out, or more accurately, those willing to wait are not nearly as vocal as the ones who want it now.

    And the beta test, well, that's just a nightmare in itself. Between the number of beta testers who break NDA agreements, the ones who give their friends a copy of the beta test, and the ones who couldn't write down how to duplicate a problem if their life depended on it, it's amazing any progress is made at all during the beta test.

    And all of this hinges on those peices of closed source software that the new software has to interface with. Finding out that Windows doesn't like you code is one thing, but chasing down some driver is much worse. And the people who write drivers and Operating systems have it just as bad, testing with released closed source products and hoping they work.

    Yes, there is no silver bullet, but there is a large clip of small bullets that we need to learn how to start firing. We need test cases, documentation, standard interfaces, a complete removal of "hidden features" (unofficial functions that software developers rely on), and most importantly, a customer base that can all agree on a balance between "now" and "right".

  41. Time compression, decision making... by dasmegabyte · · Score: 3, Insightful

    The problems associated with software production are unique in the world of engineering, and are mostly due to the compression of time we used to call "Internet Time." Consider the difference between software engineering and, say, civil engineering, i.e. bridge building.

    1) The basic way bridges work have not changed in some time. Suspension bridges all work on the same basic principle. Software, on the other hand, is constantly changing from a theoretical standpoint. In the four years I've worked as a programmer, I've moved from procedural programming to client-server programming to web programming back to procedural (only this time with an object oriented tip) and the outlook is to move into a new paradigm. That's like designing a bridge for six months, then working on a tunnel, then moving up to a tressle.

    2) Hardware is constantly changing -- meaning that APIs are constantly changing to add features and products that use those APIs have to change as well to keep "up to date." A bug in the hardware would cause a bug in the api which would cause a bug in products that use it and so on. In the bridge building world, there are only a few materials and it's easy to see if there's a flaw in them. If you've got a hunk of frayed steel cable, you don't try and wrap it with something to offset the error...you throw away the cable and the vendor eats the cost.

    3) In the world of software engineering, the only engineering that occurs in most companies is low level, under the hood stuff. Basic usability design is often provided by non engineers -- marketers and well meaning product managers. This is a bit like relying on the guy who tells you what color to paint the bridge to make structural decisions. Marketers may know what sells, but they don't know what makes good software. And this is one of the main reasons for the dot com bust.

    Now, nobody's proved that Time to Market is a factor in product success. In fact, waiting to do something right often proves much better. Apple dropped the ball on usability with the first rev of the Newton, and three years later a more mature Palm destroyed the proposed market for PDAs. Windows based PDAs are finally reaching the point of stability, speed and robustness that they will take the ball and run with it -- after nearly 4 years on the market.

    Good software takes time and elegant design. Nuff said.

    --
    Hey freaks: now you're ju
  42. Buffer Overflows by infohord · · Score: 2, Insightful

    While I do not have any numbers to support this, it would seem that most bugs and particularly exploits today are do to buffer overflows. This is a prime example of where programmers have not learned anything from the past.

    THERE IS NO REASON WHY BUFFER OVERFLOWS SHOULD EXIST TODAY. WE HAVE THE TECHNOLOGY TO FIX OVER 60% OF THE BUGS. WHY ARE WE SO STUPID?

    I took C++ classes after learning Visual Basic and Java. After learning about pointers I realized why software is so shoddy. We have the technology to prevent buffer overflows, partially in better compilers, interpreted languages and partly in better object oriented programming languages.

  43. You can't have it both ways... by Daetrin · · Score: 2, Insightful
    Like they said in the article, people will complain that there are all kinds of unneeded features. They'll also complain that it doesn't have the exact features they want added.

    Likewise, you'll hear endless amount of bitching on the net about how X piece of software has been delayed again, yet when they finally give up and stop fixing bugs and release it, people will complain that it has bugs and needs to be patched. I wonder how many of those complainers are the same people who were complaining about the delay as well?

    Like jamie said, if companies kept the projects in shop long enough to fix _everything_ they'd probably go bankrupt.

    Good planning helps somewhat, but you really only have time for that at the begining of a project. And almost as soon as you finish planing and start working management starts demanding changes based on testers' responses or because of some new thing that a competitor added to their product.

    --
    This Space Intentionally Left Blank
  44. Re:M$ by borgboy · · Score: 2, Insightful

    Claiming that its stability problems come solely from the "multitude of hardware configurations" is baltently false. In my anecdotal experience, however, properly configured, properly administered WinNT/Win2k/WinXP (WinPlayStation is just DOS with a pretty menu and a 32 bit API) machines - servers and workstations alike - enjoy the same uptime and stability as any other platform we run at this company. Likewise, complaining because one OS is more stable than another on a particular hardware configuration is a little silly if you haven't bothered to reference the Hardware Compatability List to see if you're even supported.

    --
    meh.