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."

794 comments

  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 ranulf · · Score: 2, Funny
      MSNBC points out that just one of Microsoft's poor design decisions has cost consumers $8.75 billion

      Hmmm.. Ain't MSNBC owned by Microsoft? Talk about the left hand not knowing what the right is doing...

      (Anyhow, I'm sure Windows has cost consumers a lot more than $8.75 million...)

    2. 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.
    3. Re:Alright... by Anonymous Coward · · Score: 0

      There is a small difference between million and billion.

    4. Re:Alright... by egreB · · Score: 1

      Well, MSNBC is a news source. They're supposed to be kind of objective. I wouldn't like it if Microsoft told them what to write and what not to write.. Reminds me of control over news sources in a European country 'round 1930-1945..

    5. Re:Alright... by Mark+Pitman · · Score: 1

      Not that it's a big deal, but Code Red affected IIS servers, not Outlook.

    6. Re:Alright... by Anonymous Coward · · Score: 0

      You poor, naive soul. "MSNBC is a news source. They're supposed to be kind of objective."

      While that's a quaint bit of faith, it's also not at all reflective of today's media.

    7. Re:Alright... by Anonymous Coward · · Score: 0

      Because the people who have enough at stake to have actually LOST this much have better things to do with their time than pursue frivolous lawsuits. (Such as raking in more money.) Also many of these companies probably produce their own software and don't want to set a precedent.

    8. Re:Alright... by einhverfr · · Score: 2

      Well, MSNBC is a news source. They're supposed to be kind of objective.

      Sure... But I am always surprised at how much positive press Linux gets from MSNBC (more than CNN, for example), so I wonder how much they are trying to compensate so they can appear objective.

      --

      LedgerSMB: Open source Accounting/ERP
    9. 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.

    10. Re:Alright... by IamTheRealMike · · Score: 2
      Actually I was surprised to find out that this value referred to the cost of Code Red. I'd have thought the instability of the Windows 9x line has cost business far far more than any virus. And this time, you can't really say "well that's okay because they got a lot of benefit from Windows", because people have been making stable operating systems for years.

      In theory, companies could have switched anytime to another product, in which case the "Value = Benefit - Cost" equation applies, but due to the market lockdowns MS has in place, it was realistically a case of use Windows or you can't use computers, which will make you uncompetitive.

      I'm no lawyer, but I'd have thought that companies would have been quite within their rights to claim that Microsofts monopoly has indirectly cost them billions through lost time while Windows reboots, loses work and so on.

    11. Re:Alright... by tgibbs · · Score: 1
      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)
      Boy, that's a funny example. Improvement of automobiles, particularly with respect to safety-related issues, was driven largely by legislation and the courts, not by the free market (remember Ralph Nader and "Unsafe at Any Speed"?) The failure of the automobile industry to offer the safety options that we now take for granted at any price (until forced to do so by liability and legislation) is one of the most dramatic failures of the free market. What it illustrates is that in a market dominated by a few large companies, and where the economic barriers to entry by new companies are nearly insuperable, there is often very little incentive to offer new features. And if a features isn't available at all, there is no way the market can "vote" for it.
    12. 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.

    13. Re:Alright... by El+buen+guiri · · Score: 1

      costs of $8.75 billion?...bullshit, Code Red actually saved my company money, because they had to disconnect the interent, therefore no one was browsing slashdot, etc., therefore some work was done for a change

    14. 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. M$ by Maverick+TimeSurfer · · Score: 2, Funny

    Micro$ofts problem is that they forget the "and fix it later" part.

    --
    Never underestimate the power of human stupidity.
    1. 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.

    2. 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.
    3. Re:M$ by ishark · · Score: 3, Interesting

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

      How is it possible that on the same PC I have a 70 day uptime with linux?

    4. Re:M$ by Anonymous Coward · · Score: 0

      >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.

      What do you think a TESTING department is for?

      'tis their job to find bugs.

      ...damn I hate testing..

      --dhrusis

    5. Re:M$ by qorkfiend · · Score: 1

      Sheer dumb luck?

      Maybe not. But software bugs, for the most part, only show up in cases of exact circumstances. Maybe you haven't been doing anything Linux doesn't like.

      Keep in mind, too, that M$ is also in business to make money, and to make money, they have to sell products. Linux is open-source, so they're less tempted to put a buggy version out on the market.

    6. Re:M$ by Anonymous Coward · · Score: 0

      Newsflash: Linux has bugs. Its just that you don't see them yourself on your box.

    7. Re:M$ by Drizzten · · Score: 1

      I've never timed it, but my Win2k machine has been up for weeks at a time with no problems. I think it depends more on how you use your computer than an assumed intrinsic shittyness of the system you're on. Computer geeks tend to have the knowledge and skill to keep their machines going. Their parents, calling every weekend to plead for their help to fix their latest screw-up, don't. =)

      --

      "All mankind is at the mercy of a handful of neurotics". - Norman Douglas
    8. 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."

    9. 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.
    10. 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
    11. Re:M$ by dup_account · · Score: 1, Troll
      How does one test against every possible configuration of every possible computer that could conceivably run one's OS?

      If you are writting an OS, then it is your responsiblity to write it correctly. If you can't do that, then you should get out of the business.

    12. 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.

    13. Re:M$ by Graspee_Leemoor · · Score: 2

      "I've never timed it, but my Win2k machine ..."

      Look at the status of your network connection in dialup and networking in control panel and it will tell you how long the connection has been up, which will probably be how long the pc has been up for too.

      graspee

    14. Re:M$ by JordanH · · Score: 1
      • What do you think a TESTING department is for?

        'tis their job to find bugs.

      "Program testing can show the presence of bugs, but never show their absence." - Edsger Dijkstra, 1972

    15. 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..

    16. 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
    17. Re:M$ by TheBrownShow · · Score: 1
      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.

      I wouldn't necessarily think that the software industry has "dooped" people, I think it's just the way things evolved.

      When people first started using computers for everyday things, it was so amazing and new that they figured: "Well, this computer stuff is new, it can't work flawlessly all the time...this reset button seems to fix things, let's give it a press!"

      Also, a little off the topic, but I don't think it's really fair to compare computers to cars, if I could just hit a reset button on my Geo and start over, I'd be a happy man - though my mechanic wouldn't.

    18. Re:M$ by Anonymous Coward · · Score: 0
      How does one test against every possible configuration of every possible computer that could conceivably run one's OS?

      Microsoft's problems aren't as you describe; they don't need to test each and every possible combination of hardware and software.

      As a sanity check, look at the results that the *BSDs and Linux groups end up with. In general, if a program works on one target system at all, it tends to work as well as it did on the original.

      Microsoft has one (1) target platform and ships a limited set of supporting drivers. Everything else is an application...and it is on the *application level* that they are most often shown to have problems. Part of this is by design; the applications and OS aren't as isolated from each other...so you end up with system-wide problems. Security also isn't inforced like it is under Unix...and in many cases it isn't even a consideration.

      Microsoft is guilty of ignoring problems because they don't have to address them. People still buy thier products -- regaurdless of design or stability. Where's the motivation?

    19. Re:M$ by poot_rootbeer · · Score: 2

      ...it is impossible to find every bug the first time, or even the hundredth time out.

      True, but certain types of bugs are more preventable than others. There's no reason a buffer overflow should exist in any professionally written code these days.

      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.

      If dedicated hackers are capable of discovering these bugs, then a dedicated QA team should be capable too.

    20. Re:M$ by dumbArtMajor · · Score: 1

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

      Build the hardware as well, as Apple does. :)
      Of course, even then, they're on OS X 10.1.5...

    21. Re:M$ by egghat · · Score: 1

      While this is modded as Funny, I think that they main reason, why they don't fix it, is simple: They don't get money for fixing. They get money for releasing upgrades with new features (and new bugs).

      Possible solution: Software-leasing/renting. With the right to choose between x-office-with-the-latest-bells-and-whistles and y-office-i-know-it-and-it-has-zero-bugs. I'm sure, that many will pick y-office. That might be the time, the software industry starts thinking about bug free software, because it might pay off.

      Bye egghat.

      --
      -- "As a human being I claim the right to be widely inconsistent", John Peel
    22. Re:M$ by MrResistor · · Score: 3, Interesting

      I hit the Windows Update page fairly regularly, and unfortunately Microsoft doesn't see fit to include such things as the IE6 security patches there. I have to know they exist, which I only know from reading /., and go searching for them. I thought IE was part of the OS? I can download IE6 Punjabi menu support from Windows Update, why can't I get a fscking security patch there? Perhaps I could just reinstall IE? No dice, Windows has detected that I already have IE6 installed.

      I'll believe that Microsoft is actually fixing stuff when they start including IE security patches on the main Windows Update download page. I'll believe that they have a commitment to trustworthy computing when they give me an update tool as simple to use as SuSE's YOU. That's right; when a company with $40 billion in the bank can keep up with a company that's had to lay off 90% of their US work force, I might start giving them some respect. Until then "trustworthy computing" is a bunch of marketing hot air.

      --
      Under capitalism man exploits man. Under communism it's the other way around.
    23. Re:M$ by jamesoden · · Score: 1

      > 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.

      You mean code testers?

      enough said...james

      --
      Have you tried UNIX today, its most satisfying...
    24. Re:M$ by ceejayoz · · Score: 2

      Yeah, I'm sure you regularly debug 45 million line programs.

    25. Re:M$ by Midnight+Thunder · · Score: 2
      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.

      The truth is tomorrows computers will be more stable for this very reason. If Microsoft, and others, are running drivers in ring-0, it is because of speed. By running in the kernel space your drivers are going to respond faster, though the trade off is stability if one of your drivers has a bug in it. IIRC OpenStep had protected memory for it drivers, but Darwin ( the MacOS X kernel ) did away with this to increase response times. With tomorrows computers being faster, the advantage of putting drivers in the kernel space will be lost and at that point we will probably start seeing protected memory for drivers and also running somewhere in ring-1+.

      --
      Jumpstart the tartan drive.
    26. Re:M$ by wisemat · · Score: 1

      I have to agree.

      Personally, I use linux as my primary system, and I prefer it for a lot of reasons. But I still use windows for gaming, and they force me to use it at work, and it does what I need it to. Not as well as Linux does IMHO, but it does it.

      And I think most of the crashes people encounter are user errors. Win 98 is not Linux, I've never had it run for weeks and weeks on end without a crash, but if I turn my work computer off at night and boot it in the morning, I can normally get through the day with no major crashes, and I seriously abuse my system at work.

    27. Re:M$ by zangdesign · · Score: 2

      Well, I see there is no wiggle room in your little world. The same could be said about driving, parenting, or in fact just about any other human activity as well.

      My point is - it's meaningless. Define correctly written OS. I'll bet that it is probably impossible. The most you can say about a software product of any kind is that if it is correctly written, it will perform its function correctly with a reasonable margin of error.

      Now the term "reasonable margin of error" has a different meaning depending on whose doing the definition. A software coder has a different meaning for it than a bridge builder or an aircraft designer.

      You've apparently chosen the most harsh definition. Are YOU capable of living up to that standard, ie., is everything you write bug-free from the release point onward? How do you know?

      --
      To celebrate the occasion of my 1000th post, I will post no more forever on Slashdot. Goodbye.
    28. Re:M$ by Anonymous Coward · · Score: 0

      Or just go to a command prompt and type "uptime". I just did that on the Win2K box here at work (up 3 whole days!). Uptime, not just for Unix anymore!

    29. Re:M$ by NanoGator · · Score: 3, Informative

      I have a Win2k box that's been up for about 60 days now. It's a home-brew PVR.

      I've watched an NT server box running IIS stay up for a good 90 days. The only reason it's not longer is that we had to shut it down to move it.

      I think it really depends on how ya build it. The biggest instability is caused by hardware. If your hardware has fatal drivers, don't expect it to run for very long.

      My main entertainment computer (also Win2k...) has an uptime of over a week. But I play the shit out of games like Quake. When I don't play those games, my uptime's seriously longer.

      Everybody knows that Windows has a lot more games than Linux. :P

      --
      "Derp de derp."
    30. Re:M$ by NanoGator · · Score: 2

      "If you are writting an OS, then it is your responsiblity to write it correctly. If you can't do that, then you should get out of the business. "

      Heh I passed this comment around the software engineers this morning. Thanks for providing us with a laugh at your expense. :)

      They are of the opinion that design evolves. When the platform gets more complicated, the problems to anticipate geometrically rise.

      With that said: At least Windows can smoothly be installed on nearly any machine out there. I have no doubt that Linux is great, but I couldn't even get the video drivers to go past 640 by 480, even though my laptop's card was supported.

      --
      "Derp de derp."
    31. Re:M$ by Anonymous Coward · · Score: 0

      Linux has the same problem. Their solution was also non-technical -- they encourage users not to use 3rd party drivers.

    32. Re:M$ by Anonymous Coward · · Score: 0

      I've never seen a IE fix that didn't eventually appear on Windows Update. They don't put the 0-day stuff there, but that's probably mainly because they have a history of funky 0-day patches (usually not IE stuff, but IIS patches affecting obscure Exchange functions, etc).

      Besides, 99% of the IE/OE attack shit that's in the wild aims at bugs fixed 2-3 years ago.

    33. Re:M$ by Beliskner · · Score: 2
      I just serviced a Win2k HP netserver 2000 in RAID-1 configuration. Uptime: 6 months (15 APC power failure warnings that nobody had noticed). Halfway through clicking away I said, "Uhhh, oh yeah do you log these power failures?" and she said, "What power failures?".

      When I asked the secretary where her server was and she looked at me weird and said, "But... NOBODY goes into the server room, they came and fitted it, and then told us NOT to touch it" as if it was Freddy Kruger's damn basement or something. I've seen this phenomenon with *nix boxes, but never with Windows until today. Seeing in the log "screensaver has been active for 12000000 seconds" (4 months) on Win2k is an unprecedented experience. I need a double vodka.

      Win2k is better than WinXP, screw Micro$oft's planned obsolescence programme.

      --
      A caveman dreams of being us, the incalculable power and riches. We dream of being Q, then what?
    34. Re:M$ by Jeff+Binder · · Score: 1
      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.)
      But M$ coders write code because it's their job, not because they're trying to increase their company's profits as much as possible.
    35. Re:M$ by mbessey · · Score: 2

      IRC OpenStep had protected memory for it drivers, but Darwin ( the MacOS X kernel ) did away with this to increase response times.

      That's not correct, drivers have always run at the highest privilege level in that family of operating systems.

      The only PC operating system that I know of that ran drivers at a lower privilege level than the kernel was Novell Netware.

      Actually, Netware allowed you to set the privilege level for individual drivers, so you could run "trusted" drivers at a higher privilege level for better performance.

      Unfortunately, running hardware drivers at a lower privilege level doesn't solve everything. You need to engineer the whole OS such that it can respond appropriately to driver failures.

      In many cases, there isn't enough information kept outside the driver to completely reconstruct the state before the crash (and no guarantee that retrying the operation won't cause another crash).

      -Mark

    36. Re:M$ by ebh · · Score: 1

      Two words: Stock options.

    37. Re:M$ by MrResistor · · Score: 2

      Are you checking the Windows Update site intended for Admins, or the site intended for home users? There has not been a single IE security update on the user site since before the first IE6 uberpatch. There are far too many Windows boxen being used in a non-admin environment for this to be forgivable. If the average person can't click on the Windows Update icon in the start menu of their home/small business PC and download all the security patches for software integrated with the OS from the default update site, all Microsofts lip service about "Trustworthy Computing" amounts to jack shit.

      --
      Under capitalism man exploits man. Under communism it's the other way around.
    38. Re:M$ by albanac · · Score: 1

      Data is not the plural of anecdote.

      ~cHris

    39. Re:M$ by Fred_A · · Score: 1
      With that said: At least Windows can smoothly be installed on nearly any machine out there.


      I have a machine that had an uptime of roughly 6 minutes in Windows 98 (a K6 233, would bluescreen even when just sitting there). Here is the same machine now (and no, I didn't change anything):

      0 root@homefree ~ > uptime

      12:06am up 33 days, 10:51, 2 users, load average: 0.07, 0.02, 0.00


      It's my LAN nameserver, mailserver and NAT box, so it's not extremely busy. Still I've never had a problem with it.

      On the dozens of machines that I've setup, I've always had more problems getting Windows to run than Linux. Always.

      So as they say, your mileage may vary.
      --

      May contain traces of nut.
      Made from the freshest electrons.
    40. Re:M$ by NanoGator · · Score: 2

      Heh no offense, but a 'K6 233' wasn't exactly top notch quality, heh.

      Kudos for Linux for being reliable there, obviously MS could learn from them in that case. I do have one question, though: Did all the hardware you had in it work, or did you have to make a functionality compromise?

      Also, I should have clarified: I will not defend the 9X platform at all. It's CRAP. I'm a very happy 2K user.

      It's not my intention to roast Linux, so please don't feel like I'm setting you up to argue with you. Just curious, really. I'm joining the Linux world soon, my office is switching it's engineers over to it.

      --
      "Derp de derp."
    41. Re:M$ by Dyolf+Knip · · Score: 2
      But M$ coders write code because it's their job

      Yes, but according to various sources software teams at M$ are run in such a way that they are all of them trying to beat each other by releasing working code the fastest. Therefore, documentation is glossed over, testing gets done to the bare minimum level, and overall code quality gets the biggest shaft of all.

      And while it's easy to say, "Oh, just reward the team that brings in the best code instead", the article was quite correct in that, apart from Linux processes (ha ha), there's no eay way to test the 'goodness' of a piece of code.

      --
      Dyolf Knip
    42. Re:M$ by Fred_A · · Score: 1

      Well, the K6 CPUs never were top of the line but they worked and were inexpensive.

      And all the hardware in that box worked, didn't change a thing on that machine. I really have no idea why Windows failed so spectacularly on it. It should have an update of about 80 days now if I hadn't once swiched it off instead of another machine that was next to it (ooops, there goes my uptime :))

      Regarding Windows 9x, the only use I have for it is games, so crappy as it is, as long as it can hold together for 3 or 4 hours that's all I ask of it. Games are expensive enough that I don't want to spend extra in a better Windows OS that I wouldn't use anyway. :)

      But I agree that if I actually had to use Windows, I'd probably go for 2k. I don't like the Fisher Price interface on XP anyway.

      --

      May contain traces of nut.
      Made from the freshest electrons.
    43. Re:M$ by Beliskner · · Score: 2
      start seeing protected memory for drivers and also running somewhere in ring-1+.
      Not gonna happen. As soon as the drivers are taken out of kernelspace and you get a performance hit, tomshardware will come down on you like a ton of bricks. Heck they even get excited about 0.5% speed increases. I wish they would say "Yeah it's 30% slower on the benchmarks than everything else but it's the most stable so I'll give it a 10/10
      --
      A caveman dreams of being us, the incalculable power and riches. We dream of being Q, then what?
    44. Re:M$ by Beliskner · · Score: 1
      In many cases, there isn't enough information kept outside the driver to completely reconstruct the state before the crash (and no guarantee that retrying the operation won't cause another crash).
      True, then don't reinitialise the driver, just cause a kernel panic then kill the driver, unless of course it's tty. I can imagine someone coming up with an API standard for this sort of communication between the kernel and an outside driver.
      --
      A caveman dreams of being us, the incalculable power and riches. We dream of being Q, then what?
    45. Re:M$ by d2002xx · · Score: 1

      It's a good idea, but I don't believe M$ will do that.

      They release "upgrade" which mixs bugs, bug-fixs, new-features, then people must buy it for bug-fix but also buy new bugs. And next time when releaseing upgrade, people need to buy it again, ...... No wonder they can be the leader of market, they're geniuses!!

    46. Re:M$ by Anonymous Coward · · Score: 0

      A K6-233 would have been considered mid-range when Windows 98, so how can that be a problem. As it happens, I'm writing this in Windows 95 (SE) on a K6-233. Although thats only because the Athlon is dead (Hopefully not much longer, yay!) and there isn't room on its tiny little hard drive to squeeze in the three different Operating Systems I work with. X/KDE/Most everything useful had to go from Linux to fit it all in. Bah :/

    47. Re:M$ by ishark · · Score: 2

      Anecdotes are useless.

      I don't know if you are intentionally or not missing my point. I know that one case is not statistics (just like statistics will not make your PC crash less), but it seems to me that if you move away from anecdotes my point becomes even stronger.
      Look in which market (desktop/server/embedded) is linux really "fighting" with windows (suggestion: 95% of the desktops are windows :), or check the number of different architectures linux runs on (on my pc that's 'ls /usr/src/linux/arch/'). Windows may be nice and good, but claiming that its stability problems come from the "multitude of hardware configurations" is blatantly false.

    48. 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.
    49. Re:M$ by AB3A · · Score: 1
      Conventional industry such as automobile manufacture discovered in the 1980s that Q/A inspections don't work. You have to build it in from the start.

      The problem is that the architects of the code are often sloppy. Programmers working under inefficient or unstable architechtures write sloppy or broken code. Why is this so much of a surprise? The reason the open source community often does better is because they have a far more precise view of their objectives; and they're not telling others how to write code, they write it themselves.

      Another reason open souce often does better is the same reason that small businesses can often run circles around larger businesses: There is less organizational inertia, there are very few sacred cows, and only those who have a good understanding of what they're doing get to participate.

      --
      Nearly fifty percent of all graduates come from the bottom half of the class!
    50. Re:M$ by Thatman311 · · Score: 1

      The point is the company gets the money either way because you are leasing the software.

      --
      Silly Rabbit...Sig's are for kids.
    51. Re:M$ by Anonymous Coward · · Score: 0

      I suspect there are people in M$ who love to code
      as much as people in RedHat, etc.

  3. Re:Anyone else notice the irony? by jamie · · Score: 1
    "By irony, I mean that jamie discusses good coding practices, but is part of slashcode, one of the ugliest coded projects known to man?"

    Yeah, yeah... do as I say, not as I do. :)

  4. 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.

    1. Re:MSNBC by Peyna · · Score: 3, Interesting

      It's not real uncommon for this sort of thing to happen. Our local newspaper was bought out by Gannette(sp?) a little bit ago, and the editors let them have it for a long time by publishing articles about how terrible they were and how they were going to ruin the newspaper. (IMHO they have ruined it. Story/Advertisement ratio on each page is about 1/6).

      --
      What?
    2. Re:MSNBC by Cryptosporidium · · Score: 2, Informative

      This is not an MSNBC written article. If you look closely, you will see Charles C. Mann of Technology Review credited. In fact, I have the article sitting on my desk. The article is on the front cover of the July/August 2002 issue.

    3. Re:MSNBC by lindsayt · · Score: 3, Interesting

      MSNBC is in one of the best positions to criticize Micro$oft - since the US theoretically has a free press, M$ really can't censor their own (or perhaps I should say their 0wned) media outlet. If they did so, one of two things would happen: 1) A public outcry of monopolistic muscle, or 2) people would just slowly start recognizing other channels to have more unbiased news, and NBC, with or with the M$ attached, would fall from significance.

      The net result is, M$ doesn't want to gamble that. It makes them look good if M$NBC criticizes them because it shows they're not using their money and power to censor the press. So their journalists get to express their views openly.

      --
      I did not design this game/I did not name the stakes/I just happen to like apples/And I am not afraid of snakes-AniD
    4. Re:MSNBC by thud2000 · · Score: 5, Interesting

      The key to the article is the last section, which talks about remedying the bad software situation, describing massive class-action lawsuits as "a bad idea whose time has come." MS knows that it could live through a class-action suit of this type. Would your favorite open-source project survive being sued back into the stone age? I think this article is an attempt to get public opinion stirred up to the point that UCITA laws - which include things like mandated warranties on software products -seem like a reasonable solution, and thus make life more difficult for MS's competition.

    5. Re:MSNBC by ocbwilg · · Score: 2

      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.

      While it is certainly critical of Microsoft, the articles goes to great pains to praise all the things that MS is doing to improve the security and reliability of their products. What they didn't criticise is that after their two months of bug fixing they are STILL being hit with massive, exploitable bugs in their software.

    6. Re:MSNBC by fruey · · Score: 1
      So their journalists get to express their views openly.

      Yeah right. Reverse psychology, hello. They put a little nugget in from time to time to make you think it's "free" press, and then they can gain your trust. What was the next tech story they talked about?

      --
      Conversion Rate Optimisation French / English consultant
    7. Re:MSNBC by inkfox · · Score: 2
      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

      Close, but no cigar. MSNBC has been openly critical of software approaches, but largely silent and forgiving of anything tangible. You'll find them endorsing whining about software practices, but not so much about Microsoft's marketing and legal tactics. You won't find them rallying for the current lawsuits the way the other media are.

      --
      Says the RIAA: When you EQ, you're stealing bass!
    8. Re:MSNBC by Bingo+Foo · · Score: 2, Funny

      You apparently understand the karma cap much better than you understand the sig limit.

      --
      taken! (by Davidleeroth) Thanks Bingo Foo!
    9. Re:MSNBC by Anonymous Coward · · Score: 0

      The ownership of MS-NBC is 50% Microsoft 50% General Electric. When they start reporting on General Electric, then we'll know they are objective.

    10. Re:MSNBC by Anonymous Coward · · Score: 0

      Everybody hates their boss.

    11. Re:MSNBC by fruey · · Score: 1

      I could care less about the sig limit, I can't be bothered to keep changing it ;-)

      --
      Conversion Rate Optimisation French / English consultant
    12. Re:MSNBC by ryanvm · · Score: 2

      Would your favorite open-source project survive being sued back into the stone age?

      Uhhh yes.

      Realistically, who could you sue that would kill Apache? The best you'd be able to do is stop one person or organization from distributing it. Of course since it's open source somebody else will just distribute/sponsor it instead.

      Am I wrong?

    13. Re:MSNBC by leifb · · Score: 1

      Would your favorite open-source project survive being sued back into the stone age?


      Yes.


      1: What did you do this weekend?
      2: Submitted some patches on >.
      1: I thought they were sued out of existence after >.
      2: They were. So they sold all their assets to a group in Brazil and forfeited the cash to court.
      1: What assets? It was an open-source project!
      2: Well there was the code...
      1: GPL'ed code? That's not worth any money!
      2: I know. That's why the claimants only got a dollar fifty all together.
      1: What about the group in Brazil? What are they doing with the code?
      2: Letting all the developers for the submit code and continue to work.

    14. Re:MSNBC by wdr1 · · Score: 3, Interesting

      "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.


      MSNBC didn't really criticize them. They reprinted an article that in turns quotes a consultant talking about MS's poor judgement in making it easy to run applications via email (and thus paving the road for the I Love Your virus and it's ilk.) That's quite a few degrees of seperation from them running an editorial stating MS should be sued from their 8.75 billion screwup. (Which they should be. It'll be interesting to see if a class-action law suit is ever filed, as it's probably not too late.)

      It's an easy mistake to make, especially when Jamie, Timothy, or Michael post a story. (IMHO, they tend to use slashdot as a ranting board with ill-concieved ideas as they would otherwise find themselves rightly ignored or dismissed.[1] Witness that ~69.5% of the story Jamie posted was just drivel from someone who is neither a qualified economist, entrepreneur, or software engineer, yet important enough to justify *NOT* being a simple follow-up comment, but up there with the story.)

      Anyway, It's well worth clicking through the story though, to get the straight scoop. Sure, you may not be the first post, but any comments you do make will be better informed, and you'll make slash a better community for it.

      -Bill

      [1] I know, I know, anything negative about an editor is a troll of flamebait. Mod me down. *sigh*

      --
      SlashSig Karma: Excellent (mostly affected by moderatio
    15. Re:MSNBC by blibbleblobble · · Score: 2

      Which would best survive being sued for shoody software?

      (a) A company with $6 billion in cash (yes, cash), and several hundred full-time lawyers, which shows no signs of complying with US laws despite many months in court with the government suing them

      (b) A group of 3 teenagers in differnet countries, with $20 between them?

      Bonus question: who'd be more likely to continue selling the same unfixed software even after their fine?

    16. Re:MSNBC by Kupek · · Score: 2

      No, that's just not what happens. Read The Media Monopoly for a great analysis of corporate ownership of the media. Media feels pressure from coproate owners, advertisers or sponsors all the time.

      I should also mention this has nothing to do with the "free press." If company A owns media outlet B, company A can pressure B all it wants.

    17. Re:MSNBC by Anonymous Coward · · Score: 0

      When Company A starts buying political influence so it can pressure (legally) company C (which is independent of Company A and a competitor to Company B)...

    18. Re:MSNBC by Kupek · · Score: 1

      Then you have potential for monopoly charges - but that still is outside of the First Ammendment.

    19. Re:MSNBC by DiscoBiscuit · · Score: 1

      anyhow how could you sue GPLed code? It disclaims itself from fitness for purpose or any other sort of consequential damages doesnt it?

  5. this article is... by b_pretender · · Score: 1, Flamebait

    a) Preaching to the choir.

    b) Old news, I've read most of it elsewhere.

    c) a thinly veiled Microsoft bashing coming from within.

    d) fodder for Slashdot's editorial slant of objective stories.

    1. Re:this article is... by baldass_newbie · · Score: 0, Redundant

      You forgot:
      e) all of the above.

      --
      The opposite of progress is congress
    2. Re:this article is... by Anonymous Coward · · Score: 0

      ...and just like Radio or television, no one is forcing you to read this site. If you do not like it please move on.

    3. Re:this article is... by Anonymous Coward · · Score: 0

      He's probably the kind of guy that complains that pornography exists in 7-11's.

    4. Re:this article is... by Anonymous Coward · · Score: 0

      e) the "man's" secret agenda.

      Signed,

      Conspiracy Brother

  6. a language that forces good code? by Smallest · · Score: 2, Funny

    now there's something i'd like to see. maybe it could enforce algorithms, understand design specs and anticipate customer mind-changes, too.

    i think the next version of C# is suppoed to do all of this, with some kind of XML voodoo scheisse.

    -c

    --
    I have discovered a truly remarkable proof which this margin is too small to contain.
    1. 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!"
    2. Re:a language that forces good code? by Vagary · · Score: 1

      I know it's hard to believe, but some languages can actually enforce better code. There are at least three features which give developers this opportunity:

      1. Strong Typing so more errors are caught at compile-time.
      2. Exception Handling so those not caught at compile-time can still be dealt with properly.
      3. No Side-Effects because this makes it much easier to prove program correctness; IOW: "enforce algorithms [and] understand design specs".

      Haskell implements at least two of these features, however it is much slower than something like C#. For a company to change its devotion from cheap code to good code would do more than any mere language change. A dedication to good design would also alleviate some of the difficulties resulting in dynamic customers.

    3. Re:a language that forces good code? by Vagary · · Score: 1

      Sorry, make that all three. However Haskell is weak when it comes to modular designs that allow customers to smoothly change their requirements. :(

    4. Re:a language that forces good code? by JPriest · · Score: 1

      I also read somewhere that microsoft will be adding a new language to .NET called F# with "some kind of XML voodoo scheisse."

      --
      Saying Java is nice because it works on all OS's is like saying that anal sex is nice because it works on all genders.
    5. Re:a language that forces good code? by Anonymous Coward · · Score: 0

      No overloading of operators (The infamous if(i=1) in C, or the overloading of > in C++, for example).

      Strong typing sounds nice in theory, and does catch some compile time errors, but in the end you have to allow the coder to transmute between types at some point (That 8bit Unsigned Integer is no good if I can't compare it to a 16bit Unsigned Integer somehow), and you can't trap runtime errors with strong typing alone (The compiler doesn't know that the unsigned short you're using as a counter will overflow)

    6. Re:a language that forces good code? by Mr.+Slippery · · Score: 2
      I know it's hard to believe, but some languages can actually enforce better code.


      The problem with these bondage-and-discipline languages is that when you make it impossible to do dumb things, you also make it impossible to do brilliant things.

      It has been oft-observed that you cannot successfully apply a technological solution to a social problem. The problems of inadequately-trained programmers, over-commitment on features, overly "aggressive" schedules, failure to follow good practices like code reviews, and so on, will not be solved by changing our tools.

      --
      Tom Swiss | the infamous tms | my blog
      You cannot wash away blood with blood
    7. Re:a language that forces good code? by PythonOrRuby · · Score: 1

      Also, consider Eiffel, which allows for all of those things, plus makes it possible to very tightly control which classes have access to which features(procedures, functions, attributes) of any given class. Eiffel also has rather nice pre and post-condition syntax, allowing, in theory, for all bug-causing conditions to be discovered before a function or procedure actually does anything. (throw an exception if someone tries to create a BANK_ACCOUNT object with an initial balance that's less than 0, for instance)

      I suppose the fact that It draws a strict line between functions and procedures could also be seen as a good thing, though that one does feel like it's gets in the way.

    8. Re:a language that forces good code? by r_c_chapman · · Score: 2, Informative

      Most of the C130J Mission Computer Software (which is cited in the article) is written in SPARK - a
      highly secure, annotated subset of Ada.
      - Rod Chapman, PxCS

    9. Re:a language that forces good code? by Analog+Squirrel · · Score: 1
      > The problem with these bondage-and-discipline languages is that when you make it impossible to do dumb things, you also make it impossible to do brilliant things.

      However, for the most part, in large scale software projects, doing "brilliant things" is not all that desirable either. In my experience, most of the "brilliant things" that a "bondage-and-dicipline" language makes impossible are synonymous with "wierd, tricky things" which are inherently bad for software readability, and therefore software maintainability. If you're a lead software engineer at, say M$, and you have a nice design to be implemented, when you get the code back from the programming team, you expect to see what you've designed. If you're using a good language, most of the performance issues will be ironed out in the compiling/optimizing stage.

      I don't want to make it sound like I'm 100% for these languages - my weapon of choice is C(followed at a distance by Fortran), but I have the training and experience necessary so that I don't get bitten too often by the "wierd, tricky things" the language lets me get away with.

      --
      I'd rather be flying
    10. Re:a language that forces good code? by Anonymous Coward · · Score: 0

      First, there is no link between "Strong typing" and "catching errors at compile-time [or better yet, some error-checking-time not necessarily linked to compilation]. "Strong typing" simply means that supplying the wrong types to an operator will cause an error rather than some undefined or accomodating behavior. What you are talking about is referred to as "static typing". Hence, Haskell is a strong, statically typed language. Common Lisp is a strong, dynamically typed language. (And no crap about how dynamic typing is a subset of static---if you believe that you haven't considered all the effects of dynamic typing).

      Second, there is no reason why a Haskell compiler shouldn't be faster than a C# one---it has more information about the program and can generate more efficient code as a result. Take a look at the optimizing OCaML compiler for an example.

    11. Re:a language that forces good code? by ncarey · · Score: 1
      Some languages do enforce 'good' code (for some definition of good code). Haskell and/or Ada aren't one of them, though. What really helps enforce quality code is Bertrand Meyers' design by contract, implemented elegantly and simply in the language Eiffel http://www.eiffel.com. You can read more about what I'm discussing in Betrand Meyer's seminal book, Object-Oriented Software Construction (1250+ pages, $US 80). If you do any kind of software development, it should be required reading. It's that good. In a nutshell, design by contract calls for the formal and precise specification of and the enforcement of object/method behaviour in the executable source code itself. These are the mechanisms:
      • preconditions. A precondition is a rule defining what constitutes valid state when the method is invoked (e.g., The parameter passed in to the called method must be non-null and fall within the domain 3,5,7 or 9.) The caller (client) warrants that all preconditions are true when the method is invoked
      • postconditions. A postcondition is similar to a precondition: it is a rule defining valid state following execution of the method (e.g., The value returned by the method will be non-null and a positive integer between 500 and 1000 inclusive.) The supplier (called method) warrants that all postconditions are true on return from the method.
      • invariant.An invariant is a rule asserting that the stated condition will be true at all times during the execution of the method (e.g., At no point during the execution of the method will the internal stack pointer belonging to the method exceed the stack size.) The supplier warrants that all invariants will hold true during method execution.
      A violation of the contract is an immediate and fatal exception, at compile time if it can be trapped there or, if it can't caught by the compiler, at runtime (unless trapped of course. Eiffel has unique and high-quality exception handling.) It gets better, though. Eiffel enforces subcontracts -- subcontractors (subclasses) are, within limits, bound by the original contract as well.) Think of this as assertions on steroids.
      --
      N. --
    12. Re:a language that forces good code? by aebrain · · Score: 2, Informative

      A good link to the benefits of using Ada and SPARK on the C-130J and other projects is at Crosstalk, the Journal of Defence Software Engineering.

      This is the umpteenth time I've quoted this link, or one like it. Maybe one day people will read the goddam literature and not keep on making the same mistakes in the same old way. The Facts - not religious opinions, unsubstantiated assertions or even unverifiable anecdotes - are out there.

      Sorry, got carried away there. We need more light, less heat. But people - not some ubergeeks with Supernatural powers, just your standard geeks - have been making software that works first time, every time for years now. Every time you fly on a modern airliner, you bet your life on it. And it's a good bet. We know how to do it. We've proved it, repeatedly. It's just that no-one seems to listen when we tell them that they can do it too, just by doing things in a different way. One that (at least in manufacture) costs less too. Testing's another matter.

      --
      Zoe Brain - Rocket Scientist
    13. Re:a language that forces good code? by JPriest · · Score: 1

      link here

      --
      Saying Java is nice because it works on all OS's is like saying that anal sex is nice because it works on all genders.
    14. Re:a language that forces good code? by Fanatic_J · · Score: 1

      Maybe it would surprise you to know that there are software development projects focusing on understanding programming,design and implementation concepts involving user learning...

  7. 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 Anonymous Coward · · Score: 0

      Oh please tell me there is still a Lone Ranger.

    4. Re:Remember Fred Brooks? by Titusdot+Groan · · Score: 1

      This should be moderated redundant.

      Fred Brooks' point was that the next great language or the next great paradigm or the next great whathaveyou won't solve your problem.

      You need to have the proper language, good design, good people, time, management commitment etc. etc.

      Kind of what the article was saying.

    5. 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.

    6. Re:Remember Fred Brooks? by newerbob · · Score: 1
      For those of us who have been around the block, the promise of a new programming language that will fix everything is naive and laughable.

      Remember Java? It found it's niche as a toy/teaching language and as a subititue for Perl (which got a bad rap!) for web middleware.

      Remember USCD Pascal? That was write-once run everywhere?

      Remember those 4gl languages like Prolog?

      Remember PL/I?

      Remember RATFOR?

      Remember ALGOL?

      --

      --
      Ask the Ya-Hoot Oracle Anything!
    7. Re: Remember Fred Brooks? by maw · · Score: 1
      In one of the essays in TMMM, Brooks broke down the difficulties in software development into two basic categories: the incidentals and the fundamentals.

      The incidental difficulties can be solved by using better languages, better development environments, better planning, etc. The fundamental challenge, though, remains the difficulty in designing large systems were many parts written by many people need to interface together.

      Brooks then posits that attacking the incidentals, while worthwhile in its own right, doesn't solve the problem, and will not make an order of magnitude improvement in the way software is developed.

      Having said that, I'd love to see him proven wrong - and I bet he would too. One thing Brooks also hints at is that solving many incidentals might yield an order of magnitude improvement, which would help a lot, although software development would remain very hard.

      --
      You're a suburbanite.
    8. Re: Remember Fred Brooks? by Tablizer · · Score: 2

      (* 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. *)

      In my experience there is a tradeoff. Languages that tend to do more "static typing" do catch stuff that interpreted (dynamic) languages may not or not as early, but dynamically languages are often (potentially) easier to read because there is less code devoted to formalities and conversions. IOW, they reduce bugs by making the code smaller and easier to review by eye IMO.

      It is like chosing between a thick helmet that blocks your view of some dangers, but protects you from bonking, or wear no helmet so that you can see and move more nimbly to avoid the dangers.

      What I would like to see is pre-processors for dynamic languages that flag "suspicious" stuff, but don't outright prevent running. This may allows us to get the better of both worlds.

    9. Re:Remember Fred Brooks? by descubes · · Score: 2

      As a person who actually tries to do something about it, I can testify that inventing a development environment fostering quality is difficult. What's more, you need to address more than quality at the "low level", as the MSNBC article pointed out. The reason for bad quality is explosive growth in software complexity, and that is where you need to hit.

      My approach is something I call "concept programming." Roughly speaking, it's the idea that code needs to represent your ideas accurately. The main source of bugs is the fact that programmer concepts don't match with what the tools actually do. A typical example is the C array. There are so many buffer overflows just because a C array is *not* an array. It's a pointer plus an offset. An array has a bound, a pointer plus an offset doesn't. Concept programming allows you to realign the two.

      As another illustration of this, consider printf() style function. Isn't that amazing that we have lived for so long with something that allows totally bogus references, and goes out of the way to make it hard to check?

      Form is so important, actually, that it was worth creating a new language, called XL. Consider for instance the code that would be required in C or Java to implement the equivalent of the following XL code:


      // A generic 'Max' and 'Min' function taking an arbitrary number of arguments
      // of any type with a less-than operation

      // Condition for a type to be 'ordered': being able to write A < B
      generic type ordered if
      with ordered A, B
      with boolean Test := A < B

      // The Max and Min of a list with one element are that element
      function Max(ordered X) return ordered is
      return X
      function Min(ordered X) return ordered is
      return X

      // The Max and Min with more than one argument are created from
      // the Max and Min with one less argument
      // 'result' is the implicitly declared result of a function
      function Max(ordered X; other) return ordered is
      result := Max(other)
      if result < X then result := X
      function Min(ordered X; other) return ordered is
      result := Min(other)
      if X < result then result := X

      // Examples of use
      procedure Test() is
      with real R := Max(1.0, 3.0, 5.0)
      with integer I := Min(1, 3, 4, 5, 6, -1)


      What are the chances that your C or Java code would just contain mistakes, or fail in some corner case, simply because you had to workaround the lack of features allowing you to code the concept in the first place? For you C++ users, notice how the generic argument is checked before use, making sure that Max(Z) where Z is a complex actually fails to compile, even though the less-than operator is never used while instantiating this single-argument case...

      XL is not vaporware either, even though it's far from complete. The code above does compile today. Hey, it's even open source. Now, guess how many contributions I received on this project in its two years of existence? (Hint, it's often confused with the letter "o" ;-)

      --
      -- Did you try Tao3D? http://tao3d.sourceforge.net
    10. Re: Remember Fred Brooks? by TWR · · Score: 2

      "In my experience there is a tradeoff. Languages that tend to do more "static typing" do catch stuff that interpreted (dynamic) languages may not or not as early, but dynamically languages are often (potentially) easier to read because there is less code devoted to formalities and conversions. IOW, they reduce bugs by making the code smaller and easier to review by eye IMO."

      This might be provably false with a not-too-difficult study. How is it easier to read a language that doesn't tell you the types of the variables up-front? How is it better for the compiler to not be able to flag invalid uses of type?

      Less code doesn't make things more readable. Which is clearer for the AVERAGE programmer, looking at unfamiliar code:

      a = (x==0)? 5 : 10;

      or

      if(x == 0) {
      a = 5;
      } else {
      a = 10;
      }

      Dynamic, untyped (or weakly typed) languages are bad. Pre-processors are bad. Managing memory by hand is bad. And programmers with an "I am a genius" mentality are the worst problem of all.

      -jon

      --

      Remember Amalek.

    11. Re: Remember Fred Brooks? by Anonymous Coward · · Score: 0

      The CMUCL compiler (named Python, by the way) does this. It also offers efficiency notes. Dynamic languages don't have to be interpreted, even if ones like Python-language and Perl are. And CMUCL even offers interactive compilation and development, as do most CL environments.

    12. Re:Remember Fred Brooks? by TWR · · Score: 2
      Remember Java? It found it's niche as a toy/teaching language and as a subititue for Perl (which got a bad rap!) for web middleware.

      Um, no. You try to build Enterprise Java Beans in Perl. Or, if you don't like EJB, how about JDO? Messaging server? Web server?

      Java is doing quite well as a non-toy language. The fact that it is also an excellent language for teaching OO programming is partially because it is not a toy.

      -jon

      --

      Remember Amalek.

    13. Re: Remember Fred Brooks? by Black+Parrot · · Score: 2


      > In my experience there is a tradeoff. Languages that tend to do more "static typing" do catch stuff that interpreted (dynamic) languages may not or not as early, but dynamically languages are often (potentially) easier to read because there is less code devoted to formalities and conversions. IOW, they reduce bugs by making the code smaller and easier to review by eye IMO.

      Let me start by saying that I don't have any particular grudge against dynamic type checking: when given a free choice of language of implementation, my second most common choice is a DTCing language.

      But there are a couple of points that need to be made about DTCing languages.

      First, DTCing languages depend on the programmer to remember to do the type checks wherever they are needed, and programmers are the weakest link in programming projects (well, excluding managers and customers). I would guess that forgetting a check is essentially random, depending only on the individual programmer and the day of the week. So for a given programming team the rate of forgets is going to be essentially constant on timescales greater than a week. The result is that the number of forgets is going to be proportional to the size of your project. And unless your test suite is guaranteed to trace out every path through the code, the number of type errors that ship to your customer is going to be proportional to the size of the project. Compare this to a language that demands strict type definitions and static type checking, where the number of type errors that ship to your customer is zero.

      Second, re this -

      > IOW, they reduce bugs by making the code smaller and easier to review by eye IMO.

      I disagree with both those assertions, and thus with the conclusion that DTCing languages reduce bugs. Re the first assertion, sure, you get to leave out the type definitions, but you have to sprinkle your code liberally with dynamic checks instead -- probably resulting in more code when you have a big program that uses lots of types. Re the second assertion, I find that rigorous type definitions actually make code easier to read, because all the complex type definitions and variables' types are declared exactly once each, after which you can think of them as abstractions when you are reading the rest of the code.

      So what I find is that I only use the DTCing language for small one-off tasks such as doing a quick but non-trivial calculation, rarely more than a page of code, few data types, and data entry by myself. For big, or even medium-sized projects, I feel like I come out hours ahead by using a strait-jacket language that busts me at compile time when I neglect to say what I mean and mean what I say.

      > It is like chosing between a thick helmet that blocks your view of some dangers, but protects you from bonking, or wear no helmet so that you can see and move more nimbly to avoid the dangers.

      IMO it's more like deciding whether or not to take along a mine detector when you know you're entering a minefield.

      > What I would like to see is pre-processors for dynamic languages that flag "suspicious" stuff, but don't outright prevent running.

      Yeah, that would be nice, but I don't see how it would be possible. What's "suspicious" if you don't tell the compiler/interpreter what to expect? And if you do tell it what to expect, you're doing exactly what STCing languages require.

      --
      Sheesh, evil *and* a jerk. -- Jade
    14. Re: Remember Fred Brooks? by Black+Parrot · · Score: 2


      > These aren't little things - they're ways of fundamentally changing the way programming is done.

      IMO the single most important thing we need to do is to quit thinking of ourselves as programmers and start thinking of ourselves as problem solvers.

      Once you've solved the problem, writing the code is a straightforward (albeit tedious) task. Unfortunately, there's a myriad books and classes teaching "how to program", but not nearly so many about "how to think out a problem".

      I have previously worked as a TA for CS classes, and it always amazed me how many people would bring in three pages of code intended to solve a five- or ten-line problem, and even though their code might compile perfectly they obviously didn't have the slighest idea about how to go about actually solving the problem. (Indeed, as often as not they didn't even understand the question yet.)

      And though it's easy to dismiss this by saying that those people shouldn't have been in CS and probably never finished, I'm sad to say that the same problem is rampant in industry as well, except there the same kind of people are put in responsible positions on very large and complex projects.

      At any rate, back to what you said, once you know the solution to the problem you can easily pick the language -- and algorithm -- most suitable for telling a CPU how to carry out that solution. If people would learn to think of their jobs in those terms, I suspect software would immediately start getting better.

      --
      Sheesh, evil *and* a jerk. -- Jade
    15. Re:Remember Fred Brooks? by Anonymous Coward · · Score: 0

      The only thing PL/I was good for was pain. It's the union of all the worst "features" of FORTRAN and COBOL.

      There's no way in Hell that dog could possible be promoted as an improvment over anything -- even assembly.

    16. Re:Remember Fred Brooks? by Anonymous Coward · · Score: 0

      does XL have a pointer plus offset? Because if it doesn't then users will have to implement it, ineffiently, and probably introduce bugs.

      How do you catch min max error based on dynamic input?

      Does it enforce proper file i/o based on what *would* occur to the programmer if he had thought of it before the hacker did?

      How does it handle environment variables?

      What if a non XL application writes into it's buffer space?

    17. Re:Remember Fred Brooks? by Anonymous Coward · · Score: 0

      BEGIN

      INTEGER
      I;
      ARRAY
      ARR[0:25];

      I := 5;

      REPLACE ARR BY "HELLO, WORLD: ", I FOR * DIGITS;

      DISPLAY ( POINTER ( ARR ) );

      END.

  8. Hey Jamie by Anomolous+Cow+Herd · · Score: 0, Flamebait
    You sure are one to be talking about other people's bad coding practices, aren't you? What with you being the maintainer of SlashCode, one of the ugliest programming projects I've ever had the displeasure to read through, it's only appropriate, I suppose.

    I mean honestly, I've seen some of the potheads in my freshman CS courses write more coherent code than that. If you had been taking my class, I would have failed you.

    --

    "I don't know that atheists should be considered citizens, nor should they be considered patriots." - George Bush
    1. Re:Hey Jamie by AdeBaumann · · Score: 1

      Slashcode's source is open. please show us what you mean by improving on it.

      --
      I gave up sigs almost a year ago.
    2. Re:Hey Jamie by Anomolous+Cow+Herd · · Score: 1

      Are you kidding me? I'm not going to waste my valuable time improving someone else's drunken mistake! I have better things to do.

      --

      "I don't know that atheists should be considered citizens, nor should they be considered patriots." - George Bush
    3. Re:Hey Jamie by SirSlud · · Score: 1, Offtopic

      No, obviously you have more important things to do with your time, like pester the slashdot crew, without which you wouldn't even have a place to assert your programming superiority and flaunt the value of your time.

      Please. Put up or shut up.

      --
      "Old man yells at systemd"
    4. Re:Hey Jamie by Anonymous Coward · · Score: 0
      Hope the Holland MI burger king is hiring

      Lots of luck. Holland's Lifesaver Candy factory just closed down. Now the whole Malda clan is out of work.

  9. 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 Peyna · · Score: 2

      While the local cafe might make one hell of a sandwich, more people are going to eat at McDonald's even if they are side by side, because they are more familiar with it, and don't care if it is going to kill them because they know what they are getting.

      This is the case with a lot of software already. People know what to expect Microsoft, whether or good or bad, and are comfortable with that. You through something new at them, and a lot of people will jump, but not that many. We like what we are familiar with, and that's why people stick with Windows.

      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.

      --
      What?
    2. Re:Money gap is irrelevant by CaptainZapp · · Score: 1
      The most accurate watches don't come from time-giant Timex

      Maybe they even manufacture the most accurate watches in the world (which isn't such a feat in the quartz watch age), but that's not the point at all.

      If you buy a really, really expensive watch it's probably less accurate then your 40$ Swatch since it is hand crafted. It might have an automatic winding mechanism, but probably no battery. By definition it's less accurate then a quartz watch.

      But, if you pay 5 figures for a watch you want something unique and rare and special and you probably are rich enough to not care if it's two minutes off in the first place.

      I generally agree with your point, it's just not always so easy to tie the quality of a product with it's performance.

      --
      ich bin der musikant

      mit taschenrechner in der hand

      kraftwerk

    3. Re:Money gap is irrelevant by micromoog · · Score: 2
      The author's point is that where competition is high (read: products are similar enough to be competitive), quality suffers.

      In all of your examples, competition is not an issue. Timex is not interested in competing with the finest tiny Swiss watch shops.

      Basically, high complexity combined with heavy competition leads to flaws in both design and implementation.

    4. 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...

    5. Re:Money gap is irrelevant by Anonymous Coward · · Score: 0

      > it almost seems like every few years, you're working in a completely different manner than before.

      Hmmmm. Let's see. In, or around 1990, I recall porting CAM software to a BSD derived boxen with the brand new X11 on it. At one point I recall having a particular app running in the debugger, it's purrty graphical output, looking over the source in several other windows, and looking at the man page in (yet another) window it figure out why some @^#%& system call wasn't working.

      If I change the virtual screen as I type this, care to guess what I might see?

    6. 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!
    7. Re:Money gap is irrelevant by Anonymous Coward · · Score: 0

      Mod this up! Cheers!

    8. Re:Money gap is irrelevant by Peyna · · Score: 1

      If I could run MacOS X on my PC I would at least give it a try, but I've got too much money already invested in hardware.

      --
      What?
    9. Re:Money gap is irrelevant by anonymous_wombat · · Score: 1
      It has been pointed out many times, both from the context of computer security and from software engineering in general that software purchasers won't pay for quality. This is not just true of software, as McDonalds, Ford, Budweiser, etc prove.

      Yes, it is impossible to completely test software because of the number of execution paths. With modern object-oriented software development technology, it is possible to do a much better job than we are doing.

      At my current job, the CEO is a medical doctor who doesn't know anything about software development. That is why he is insisting on high quality. It is a pleasure to have the opportunity to work for someone like that. An experienced software manager would never allow the amount of testing that we are doing before going to market. That is a sad commentary on the software industry.

      It is also a sad commentary on the consumer. If a company consistently makes buggy, insecure software over decades, people should stop buying it. Until that happens, nothing else is going to change.

    10. Re:Money gap is irrelevant by Anonymous Coward · · Score: 0

      And we all joked here at work about ISO9000 when they were trying for certification. We were told that "it doesn't matter if the actual product is junk, it only matters that every one of them is produced in a documented manner, precisely like every other one".

    11. Re:Money gap is irrelevant by Anonymous Coward · · Score: 0

      What in the world does this bit of conventional wisdom have to do with the post it was a reply to? Or, for that matter, the article?

      To clarify it a bit more: the article was asking why software quality (in terms of bugs and security holes) is so low. The editor speculated that this was due to a large gap between the market-leader and the second-place competitor (perhaps [0] implying that money leads to quality)

      The original poster on this thread was responding to that claim, and provided examples of areas where quality and market share are not well-correlated (in his/her opinion) You replied
      that...people don't care whether software is good because it's familiar? A nice opinion, but given that the original poster made no claims about whether people used the better product, it seems like a complete non-sequiter. (indeed, since the point was that the market leader is often not the leader in quality, the original poster implicitly made exactly the point you're making)

      (hmmm, the frontpage thinks I'm logged in, but the comment form doesn't. Go figure)

      Daniel

      [0] I wonder if maybe the suggestion was that the market leader can afford to slack off and use their weight to crush opposition (who then no longer have the resources to make good software) in this situation.

    12. Re:Money gap is irrelevant by mjh · · Score: 2
      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.

      Doesn't this prove the point? That when there's a large monetary gap between the leader and the also rans, that the leader has no pressure to produce quality? In other words, it's competition that drives quality. If there's no competition, shouldn't we expect lack of quality?

      --
      Key to financial independence: Spend less than you earn. Save and invest the difference. Do it for a long time.
    13. Re:Money gap is irrelevant by Peyna · · Score: 2

      The original post did make issue of quality vs. what people buy. Their comments about Phillip Morris and Cigars, etc. Think about it, McDonald's is crap, and we all know it, yet billions and billions still buy their food. Why? Why is it that something so crappy, even though we all know it is crappy, and can get something better across the street, we still go there? Because we know what it is. We know what to expect, and that is more important to us than quality.

      Basically, I want to know why it is that we will accept something of a lower quality, when we KNOW that something better exists, even at a competitive price? The only reason I can think of for this is because we are more familiar with the item of lesser quality. We only believe that because they have millions and millions of dollars and have sold so many that they can't be wrong. (If it's okay the masses, it must be okay for me?) Past success says nothing about quality, just that they were somehow able to sell a product, regardless of its true merits.

      --
      What?
    14. 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
    15. Re:Money gap is irrelevant by antijava · · Score: 1

      I hear this all the time. I thought PC's were dirt cheap (I always hear this compared to Mac prices anyway). How much cash can you sink into a $800 machine anyway? External peripherals probably have a good shot of transferring to a Mac. Anything that doesn't...sell it on E-Bay.

    16. Re:Money gap is irrelevant by God!+Awful · · Score: 2


      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.

      Not that I disagree with your conclusions, but this premise is pretty sketchy. Every product you cite (except the literature one) is an example of a luxury item. Luxury items are things that people blow money on. When a company is buying a per-seat license for a software tool, they have to think about the bottom line. Also, the software market is different from these other markets because the cost to develop software is far greater than the cost per unit.

      -a

    17. Re:Money gap is irrelevant by Jason_Knx · · Score: 1

      The actual equipment, may be cheap but the time, data invested is not. Software cost, be it monetary or percieved value for what it does. The other thing is an $800 machine may just be a CPU, monitor, crappy keyboard and mouse, and maybe some cheap speakers. There's hosts more peripherals that may be cheap individually but adds up in cost collectively.

    18. Re:Money gap is irrelevant by Anonymous Coward · · Score: 0
      Now if only we could pursuade people that parans aren't as evil as they first look...

      What's a paran?

    19. Re:Money gap is irrelevant by st.+augustine · · Score: 2

      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.
      I think that's sort of the point. Small niche players have an incentive to produce quality products, because they're going after the small segment of the market that is willing to pay more for quality. Dominant players have less incentive -- they've already got their current market share with their current quality level, so why should they change? Particularly if they have other things going for them -- strong brand identity (making customers less likely to want to switch), deep pockets (allowing them to win a price war), or vendor lock-in (making it hard for customers to switch) -- that make it difficult for a small player to use quality as a differentiator to eat into their market share.

      GM may not make the best cars in the world, but they do (generally) make the cheapest in their market segments, and they have a strong base of loyal customers that value the idea of owning a Chevy or a Pontiac more than they value fit and finish or MTBF. It's only in the last ten or fifteen years, with European and Japanese competition across all market segments, that they've been kicked into paying attention to quality and reliability.

      (Of course, if the Big Three had the ability to exclude Honda and Toyota from the Interstate Highway System, it would be another story. )

      --

      -- Some things are to be believed, though not susceptible to rational proof.
    20. Re:Money gap is irrelevant by ti1ion · · Score: 1

      I'll give you another one. We eat McDonald's food and we use Microsoft software because they are convenient. The same things that we complain about (ie. opening files automatically) have been designed to be easy and fast to use/consume.

      We eat at McDonald's because we don't have much time for someone to make us a great sandwich across the street. Just line up, wait 5 minutes even if there are 4 people in line ahead of you, and then order. Done. We use Windows because we don't have time to set up a PC with Linux. Just plug and go. So Windows crashes and has bugs, but when you just want to see a movie/read e-mail/listen to music/burn a cd it is faster and more convenient to get things going on Windows (for the majority of users).

    21. Re:Money gap is irrelevant by reflective+recursion · · Score: 2
      er, that should be "parens," for "parentheses."

      Example Common Lisp code:
      (defun my-function (x)
      (* (+ x 1) x))

      (my-function 2)
      --
      Dijkstra Considered Dead
    22. Re:Money gap is irrelevant by edbarbar · · Score: 1


      I don't think these are analogous.

      Why is an escort not as "nice" as a jaguar? Because the Jaguar has special leather seats, etc. In other words, due to the materials and manufacturing (which bumps up the cost).

      Why do you like the Beef Wellington better than the hamburger? Better design, true, but mostly better manufacturing process and materials. MC Ds could hire a bunch of chefs and make Beef Wellington, but MC Ds food is designed to lessen manufacturing costs.

      Why would someone else's software be better? Better design, not manufacturing. While there may be some niches/personal preferences, in general one of two pieces of software that do the same thing is going to be better.

      There is no manufacturing differentiation.

      --
      Ed Barbar, President and General Manager, Furnit USA
    23. Re:Money gap is irrelevant by Junior+J.+Junior+III · · Score: 2
      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.

      But software is different. The finest quality physical commodities come from smaller companies because they're too rare to be sold in mass quantities. Either the materials or the craftsmanship doesn't scale well to mass production.

      In general, giant companies thrive on efficiency, the smaller ones on premium quality and discriminating customers.

      But once you craft a high quality piece of software, it's a simple matter to duplicate as many copies as you want. It's not like building the 25,000th copy of a CD is any harder than the second. But with a luxury car, like a Rolls Royce, that 25,000th car (if they even made that many, which they don't) would require just as much effort and expense as the second.

      --
      You see? You see? Your stupid minds! Stupid! Stupid!
    24. Re:Money gap is irrelevant by Zurk · · Score: 1

      software does work because processes are put in place to allow it to mostly work. they can be refined however.

  10. as a developer by dallask · · Score: 2, Interesting

    Im working with 2 other developers and one source of fundage.... the client.

    I has been an enormus task to get the software: A) bug free B) functional C) better than the compitition in a year.

    There are problems, and there are alot of thing that I would like to do different.... but its just not possiable...

    I can only hope that it does well after release. but it makes me wonder what I could have done with more fundage...

    --
    The Code Ninja is swift with his tool, precise in his delivery, and deadly accurate in his execution.
    1. Re:as a developer by Anonymous Coward · · Score: 0

      > to get the software: A) bug free B) functional C) better than the compitition in a year.

      Duh. Pick 2.

    2. Re:as a developer by Anonymous Coward · · Score: 0

      Maybe if you had adequate funds you could have done better? I think you can get that "fundage" stuff cleared up with a good antibiotic.

  11. 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 Anonymous Coward · · Score: 0

      The solution is for Computer Engineering to someday become as rigorous as other areas of Engineering

      Remember, IT started as a support function providing information services to businesses. From the management POV, software development is a subordinate support function, not a primary engineering activity. The executive who drives across the bridge every morning wouldn't dream of rushing the engineers building the bridge. But he will bitch and moan (and heads will roll) if it takes a little longer to do the software right. It's a power-trip thing.

    3. 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
    4. Re:Software's so bad... by Anonymous Coward · · Score: 0

      Do you mean the adolescents will have to drop their "My code is art! You can't tell me how to code!" tripe?

    5. Re:Software's so bad... by JaredOfEuropa · · Score: 2, Interesting

      True. Someone once said software engineers are like craftsmen, but they should be more like production line workers (nasty as that sounds...)

      A problem I see is a lack of common work practices and coding standards. Sure, there's quite a few standards out there, but there are perhaps too many, and new ones are devised almost weekly it seems. When a programmer joins a development team, how often is that programmer already familiar with the team's coding standards and work practices? Not very often, even when the people involved all work for the same software company.

      Programming still needs to mature as a profession. A thing that stands in the way of that is the lack of good senior programmers, who are allowed time to coach and structure the way the juniors work. Yes, even in the current crappy economic situation, there's still a shortage of such people, both on the job market and within companies. Reasons:
      - "Senior programmer" is not a viable career in many companies. Such people become designers or managers. It certainly isn't a sexy profession, many people look down on it even in technically oriented companies.
      - The shortage of good programmers is such that those few are often too busy coding to concern themselves with coaching and work practices. Also, companies are often unwilling to invest in this and make sure that the senior programmers have time to spare for these things.

      Until programmers are taught and coached properly on the job, they are left to discover things for themselves and take a wild stab themselves at developing something resembling good working practices. This way, the profession of software development will not mature.

      --
      If construction was anything like programming, an incorrectly fitted lock would bring down the entire building...
    6. Re:Software's so bad... by Anonymous Coward · · Score: 0

      It might not just be about rigor either. Its more in the idea of interchangable parts and standardizing them. Functions for doing similar things are written over and over by legions of programmers each day. In the same development team you could probably find 3 versions of a function to parse the year out of a mm/dd/yyyy date.

      In other industries these "functions" are standardized and for the most part centralized. You have nuts, bolts, screws, washers that are exactly the same in specification even if 30 different companies are using them to assemble cars, doors or airplanes.

      This type of thing needs to be done for software. And at the moment the only way I can think how is by having a centralized system where standardized functions are stored. Instead of writing the date function over again when you need it, you go online and download the files for it, such that EVERYONE is using the same exact code. ITs really about the attitude of the programmers more than anything. Before the standardizing of screws in the US , they were hand made and difficult to use. Interchangeable parts simply didnt exist. When screws were standardized however, interchangablity became possible. Only when a critical mass of people begin to adopt such practices will software attain the rigor or other industries.

    7. Re:Software's so bad... by MountainLogic · · Score: 2
      I disagree. Good design methodology is not the same as good mfg. methodology. SQC is not going to do much to improve software design. The will to improve the product WILL improve the product.

      By will I mean corporate will such as proper staff that is not over worked (>40 hour weeks and real 6 week vacations). As a good start I would suggest doubbling you staff levels and use the extra staff to work on long term libraries.

      You may not always get what you pay for, but you seldom get more than you pay for.

    8. Re:Software's so bad... by shren · · Score: 2

      Right. But what *is* a design for a computer program? Most designs I see are pseudocode, which is begging the question, or pretty diagrams with fuzzy clouds that look like a kid was drawing a stick man and started going crazy with the limbs.

      How are people going to be designing computer programs in 30 years? I'm sure that they will be doing a lot of design before coding. What will those designs look like?

      What is the difference between a unicorn and a picture of a unicorn? What's the difference between a cpu and the design of a cpu? How can these principles be brought to the software?

      Somewhere, someone's doing a phd thesis on this.

      --
      Maybe the state's highest function is to grind out insoluble problems. (Zelazny, Hall of Mirrors)
    9. Re:Software's so bad... by Mr.+Slippery · · Score: 1
      The solution is for Computer Engineering to someday become as rigorous as other areas of Engineering.

      The problem is that in software "engineering", the problem is usually one that hasn't been solved before.

      When civil engineers design a new bridge, they're repeating a solved problem. Software "engineers" seldom get to do that - once the problem is solved enough times, it ends up in a library somewhere. E.g., thanks to STL I will probably never write linked-list routines again. Our software "toolbox" keeps growing.

      Ten years ago, writing a simple web browser would be a major project; now HTML renderers and HTTP libraries are standard components. Meanwhile, building a bridge is just about the same sort of task it was a decade ago.

      --
      Tom Swiss | the infamous tms | my blog
      You cannot wash away blood with blood
    10. Re:Software's so bad... by deebaine · · Score: 2

      I'm not sure I see the analogy. Yes, your Honda passes down an assembly line, allowing robots to slap on new parts. But the edge of automotive technology does not involve assembly lines. F1 cars don't have mass-produced engines; Ferraris don't either. Both seem to work pretty well in spite of that. Admittedly, you wouldn't really want to drive either one to the local grocery store, but I submit that if Ferrari wanted to build a station wagon, they could probably build a pretty decent one.


      As for the rigor, you are dead on. The question has been how to get users to demand reliability. But the onus will always fall on us as the engineers to deliver it.


      -db
    11. Re:Software's so bad... by Anonymous Coward · · Score: 0

      Actually, the "manufacturing" part of software is automated, and almost flawless - it's the design part that takes the time.

      In engineering, a "design" refers to a description that, if followed properly, results in the product. The design usually goes through many iterations of modelling, diagrams, making prototypes and modifying the design until the product works.

      In software, we tend to see the source code as the product, but in reality, it's the same as wiring diagrams or blueprints - it's a design. The creation of the final product (compiling) is automated so flawlessly that we don't even see it for what it is anymore - in some cases, it's combined with the execution so appears nonexistant.

      The process of writing software can only be improved by recognizing that writing software is a process of design, not the creation of the final product in itself.

    12. Re:Software's so bad... by Anonymous Coward · · Score: 0

      F1 engines are the end result of mass produced engines. In each and every one of them is the experience gained through producing millions of motors.

      Ferrari still produces thousands of vehicals each year. They still use an assembly line in which parts are fitted to the vehical. Granted these are higher tuned parts than what you would find on your typical Honda.

      You can take any component from a vehical and tune it specifically for your own purposes. It is possible to put together software the same way, however you cannot always tune the software components to your specific purpose.

    13. Re:Software's so bad... by Anonymous Coward · · Score: 0

      I beg to differ.

      While Engineering certainly is an important part in a software project there are other important aspects.

      For starters, Management (included a global initial planning) is more crucial by far. What good is a perfect bridge if it unites unpopulated areas? This is not Engineering; you could link this even to Geography and Social Sciences, but it is not technical at all.

      Also, some system aspects are purely architectural and any project should follow the "measure of man" -- to me, it's very difficult to express that "5 plus or minus 2" reality in engineering terms.

      Many projects are bad in spite of excellent engineers! People hire the best of the class believing they will guarantee a happy-ending, only to discover the idea was bad, Marketing targeted the wrong people, specifications were badly documented, Engineering was great, Distribution was braindamaged, Sales gave 100% discounts and the user didn't understand, didn't care or even didn't know the product.

      In other words Engineering is essential, no doubt -- care about Engineering a bit beyond what it's needed and see your business sink.

    14. Re:Software's so bad... by Anonymous Coward · · Score: 0

      I've heard the idea of applying engineering principles to software design and I believe it is technically possible. However, it would be very expensive and any company attempting it would go out of business before finishing their product. (I am referring general software, not areas where high reliability is an extreme priority such as flight control systems and medical equipment)

      My own view is that software is as reliable as a customer is will to pay for it to be reliable. The reason why MS products are not reliable is that the customers don't make reliability a priority. One thing MS is really good at is knowing what sells.

    15. Re:Software's so bad... by Hard_Code · · Score: 2

      It's hard to do this when both the materials and technology you are working with change daily. We don't even have an agreed upon set of materials with which to create software. Plus, software doesn't really have a natural "lifespan". It's relatively easy to replace a car with newer technology: it breaks down, and you go to the dealership and get a new, better model with newer design and materials and technology. There are no other dependencies. Software on the other hand has TONS of dependencies. You can't just "upgrade" a flight system running on some code from the 80s like you can a car.

      --

      It's 10 PM. Do you know if you're un-American?
    16. Re:Software's so bad... by HiThere · · Score: 2

      This is one of the standard comments. It's so close to being correct, and yet it totally misses the point.

      In engineering, you take a plan, play with it, adjust it, build a scale model, stress test it, apply rules of thumb for scaling, and end up with a product. Under most conditions, you then test the full scale product, revise the design a few times, and then build lots of them.

      In software the design *is* the product. Everything else it done pretty much the same, but when you come to the step of "build lots", what you do is build one, and then copy it a **HUGE** number of times. This is the mistake. If a car has a mistake, then usually it will be detected before too many have rolled off the production line. (The exceptions are called "recalls".) If software has a mistake, it isn't found until a **HUGE** number of copies have been built. So what they do is issue a patch. Software companies issue patches with a lot more frequency than car makers issue recalls for two main reasons:
      1) It's a lot easier to issue a patch than a recall.
      2) Each software product is **LOTS** different from every other.

      Both the hardware and the software have libraries of parts, but the hardware is largely an assembly of the parts from the library, and the software is a lot of custom code, and some libraries. The parts that are assemblies from the libraries rarely have any problems. The problems come in the "new stuff". But the "new stuff" is what the program does!

      The only solution is **LOTS** of testing. But testing is expensive, in both time and money. So companies tend to cut this short. (Well, so do open source projects. At the 2.39xx kernel Linus finally said [approximately]: >)

      This is why software has so many bugs. Because it isn't tested enough in enough environments. After it has been, you get the stability of library code. Or of compilers, where at least you know what bugs the recent releases have (though not those of the "most recent" release).

      It's not a question of handcrafting. Everything is handcrafted, if you look at it at the right level. And every new design has problems. The question is "How much new design do you want to allow in your product?".

      With Free Software you have the option of using the older version where you know what the bugs are, or moving to the new version with the new features. Unfortunately, with commercial software you often can only choose the most recent version. The costs in supporting multiple versions are too high for companies to bear, particularly since they aren't making any money off of it. (In my mind this is a silly mistake. It would be much more sensible to have support be available as an extra cost option, perhaps by subscription.)

      In all cases there is a conflicted goal. On the one hand, the software tries to do everything, and on the other hand it tries to be reliable. But adding more features inherently conflicts with reliability (not correctness, reliability).

      --

      I think we've pushed this "anyone can grow up to be president" thing too far.
    17. Re:Software's so bad... by MagikSlinger · · Score: 4, Interesting
      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.

      You're half right. OSS isn't THE solution, but is part of a larger class of solutions. The reason mechanical and other forms of engineering could evolve into reliable disciplines is the ability to freely and openly communicate between the practitioners. With an industry wide peer review, everyone can analyze someone else's work, share their insights with everyone and everyone can benefit because that new technique or design can be incorporated by others into their work.

      Shortly after the WTC attack, the American Civil Engineers society put together a panel of engineers to analyze the failure, and provide a report to the entire civil engineering community. When was the last time any proprietary software company did that? In fact, we've seen how these companies use lawsuits to squelch any such activity.

      Openess, peer review and the ability to freely share information, lessons and strategies is what sets the other engineering disciplines apart from software engineering.

      --
      The bitter lessons of a veteran coder: http://bitterprogrammer.blogspot.com
    18. Re:Software's so bad... by evilpenguin · · Score: 2

      I have thought long and hard about why software doesn't get better. I have been down the same line of thought as this poster. It is certainly true that manufacturing improved when we began using standardized and interchangable parts in a regularized industrial process. I'm not preapred to say whether or not software design can be subjected to the same process -- that is, are software solutions actually unique to circumstance, or can they be regularized into "parts" -- but I can say that industrialization wouldn't have happened the way it did if company A owned the "intellectual property" of the #10 machine screw and company B owned the intellectual property of the lag bolt and company C owned the intellectual property of the spark plug. What if company A, B & C's profitability came solely from the fact that only they could produce those products, not because they were hard to make, but because they had a legal possession of an idea?

      This is what the software industry is today. Companies owning screws, wheels, nails, and charging high prices because of the artificial shortage of technique. Why didn't manufacturing remain this way? Because patents expire. There is no doubt that patent system in the U.S.A. has gone nuts, giving out ridculous patents on absurd "non-inventions," but these patents still have the virtue of expiration. In "hardware" at least, patents give you the desire to innovate ("I can make mony before my idea is stolen") AND they "promote the useful arts" by making sure that the idea becomes public. If you patent, you must disclose. So, over time, every one of these basic parts became a commodity.

      Look at Microsoft's (and the rest of the software industry, but Microsoft is far and away the largest remaining entity in the software industry) behavior in contrast: Hide, keep secret, protect intellectual property at all costs. Vigorously persue any infringement. Keep that #10 machine screw at $20 each instead of $0.02.

      Now, I'll admit this may not be quite fair. An operating system or a word processor is certainly more complicated than a #10 machine screw, but switch to the internal combustion engine as the mataphor, and I think the argument holds up and is a bit more sound. If only one company had the rights to the ICE, we would not have the auto industry we have today.

      I think the only hope of having interchangable software "parts" is Free Software (and obviously the GPL is the most powerful form of this, but any license that means the source I have today and my rights to modify and use it can never be taken away should have this effect to greater or lesser degree).

      We also have to take an interest in politics. We have to fight the recent spate of laws that would extend the life of intellectual property. As Lawrence Lessig points out, intellectual property is not (presently) regarded in law like other property. All intellectual property is consitutionally required to expire -- to become part of the public domain. The trouble is IP holders have extended the life of copyright already, and are looking to do it again. Patents are being extended to algorithms and business methods, which I find startlingly unprecedented and it has led to ridiculous patents.

      Commodity software. Interchangable software "parts." It will never happen in present legal environment. Expect software to continue to suck. Except, perhaps, for Free Software. (Plenty of which sucks, by the way, but I think the valuable and useful stuff doesn't, and that's the point. When I first downloaded Linux (in 1992) it sucked. It crashed all the time. None of it worked. That didn't last long. Apache couldn't do much more than serve static pages when I first used it. That didn't last long. Wine couldn't run solitaire when I first used it. Now, I run Quicken on it and I don't have to use Windows any more. Some obscure tools that are never taken up will continue to suck, but that's okay because they aren't used.)

      Anyways, whether I'm right or wrong, technology hasn't been as exciting as this since the microprocessor first started being turned into computers by crazy hoobyists like my old man me in the mid-1970s. These are exciting times.

    19. Re:Software's so bad... by Anonymous Coward · · Score: 1, Interesting
      People who write software should take a piece of learning from those who write the code that becomes digital integrated circuits.

      Tremendous amounts of time are spent verifying your design works correctly


      There you go.
      If we were to spend that amount of time verifiying the software design, software would be better.

      Somehow, I think that anyone involved in software development or design or testing already knew that.

      But to quote from the review: So companies that don't plan on releasing a crummy 1.0 and fixing it later go under.

      Given a choice between using a program now that almost works, or waiting another 2 years for the competetion to produce one that really works, most people will pick the one that's available. Then in 2 years, if the competetion hasn't gone out of business they produce a program that is reliable. But meanwhile the first program has fixed most of it's reliability issues and introduced new features. Yes, those new features are buggy, so the overall stability of the product really hasn't improved. But you can still do more with it than with the old, slow, feature-poor but reliable competetion.
      Guess which company ends up bankrupt?
      Welcome to market-driven development.

      On the other hand, if you want to produce completely reliable non-market driven open source software, go ahead. There's nothing to stop you.

    20. Re:Software's so bad... by Jason+Earl · · Score: 2

      The reason that Engineers can be rigorous is that they can take their gizmos apart and see how they work. Engineers also can freely "borrow" designs from other Engineers. Every mechanical engineer can take a good hard look at the design for the Tacoma narrows bridge and see what went wrong. As long as software engineers have to trust "black boxes" to do what the label says we will never be able to match the reliability of mechanical and electrical systems.

      Cars would still suck today if you couldn't open up the hood on your car and poke around at the engine. Most engineering successes are incremental, but software folks generally end up building their new program from scratch without being able to rely on the many strengths of past implementations. Free Software allows you to build on a tested open foundation.

    21. Re:Software's so bad... by FrankDrebin · · Score: 1

      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.

      Your analogy is intriguing but has some obvious flaws. Software development is fundamentally different than mass-production of cars, or any other hardware, because software has near-zero cost to copy and distribute. Building thousands of cars with the same tightly-controlled parts is economical because the production costs per unit are huge. Henry Ford's success at mass production was due mostly to the fact that he made good cars that were cheaper than the competition, especially in volume.

      While I agree that better methodologies and more rigorous development practices can result in better software, the market is working against this. With cars, a cheaper product means mass production, assembly lines and as such quality control and tight tolerances of the parts. Since a CD of software is not "assembled" separately for each customer shipped, the unit costs are very low, and there is simply not the market incentive to move to the model you mention.

      --
      Anybody want a peanut?
    22. Re:Software's so bad... by dthable · · Score: 1

      More programmers are not going to solve the problem. Under your theory, I could triple my staff and then my libraries would be great. It just doesn't work that way in real life. I always need to cope with diminishing returns.

      Instead of hiring more average programmers, we should look for the small group that really understands what a good design is and understands how to use different methodologies to get the job done...of course, many more programmers wouldn't be programmers then.

    23. Re:Software's so bad... by dthable · · Score: 1

      If you're one of the unfourtant saps in the business world of programming. Look at some of the most common languages used for developing applications:

      * C - since 1970s

      * C++ - since 1980s

      * Java - since 1992

      * COBOL - since god knows when

      These languages have become foundations to professional development because they don't change every two years. It's not like someone just inventing a new pseudo-scripting language and then trying to pass it off as the greatest thing in the world.

      PS. I don't include VB as a professional language. Anytime the parser need to change to accomidate new libraries and technology, you're too damn close to the solution.

    24. Re:Software's so bad... by dthable · · Score: 1

      It is possible to put together software the same way, however you cannot always tune the software components to your specific purpose.

      That would be your components lacking rohbustness and expandability. It's just like real life. My Honda has some stock parts that no matter what I try, I won't be able to tune them outside of the spec. Again, we need to train developers to think about these kinds of reuse and stop chasing the hot new technology.

    25. Re:Software's so bad... by druse · · Score: 0
      You're making a common assumption here: that writing software is comparable to building bridges. Last months issue of the Communications of the ACM had a good article (registration required, but I think it's available free) by Wei-Lung Wang on the subject. He (she?) argues that that writing software is more similar to the work of a mathematician than an engineer.
      ...engineering operates within the framework of the immutable laws of nature. These laws dictate the realm of engineering possibility, and engineers work by designing and constructing within the bounds of these laws. Their permanence and universality allow engineering principles, which signal the boundary of what is safely possible, to be established...
      ...Software engineering, on the other hand, has no fixed framework in which to operate... ...unlike the world of engineering, there are not immutable laws to violate...
      ...These implications reflect the mathematical nature of software, and are sympomatic of the limits of the engineering approach. As a mechanism for information computation, a piece of bug-free software is essentially a mathematical function is some system of axioms...
      ...In this light, the work of building software is a mathematical exercise within two distinct phases: the determination of the set of information requirements (the parameters of the function); and the creation of a mathematically rigorous function that meets these requirements...
      --
      "To blow recursion, you must first blow recus
    26. Re:Software's so bad... by mcdirmid · · Score: 1

      All languages are about the same and are pretty static. Java and C# aren't that much different from C++ or smalltalk. One just needs to learn a few programming paradigms in college: imperitive, functionaly, OO, logic, etc... and whatever "new" language comes along will just look like an "old" language with very few different twists.

      The only people I know who complain about languages too quickly are the ones that never really studied programming languages before--they just know specific languages like Java or C++, they never really studied underlying programming language concepts before.

      Given any new language and a reference manual, 1 day to learn it SHOULD be enough!

    27. Re:Software's so bad... by RandomPeon · · Score: 2

      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.

      First of all, they cheat. Physical engineers build rather robust safety tolerances into their products. A bridge with an advertised weight limit of 10 tons is most likely capable of carrying much more than that. How much more is something that you don't want anyone to know, lest they try it. In certain calculations, the safety factor is normally an order of magnitude.

      I have no idea how you can get the same form of cheating in software. If a user asks for data on order #1234, returning order #1235 is just as bad as returning #4321.

      Second, they're willing to throw away designs that don't work. My significant other has spent years designing an industrial material that looks like it's not going anywhere. There's no shame in this, nobody gets fired, they just realize it didn't work. If they employed the engineering/management priniciples of software they would take what they've got and hand it off to marketing, in hopes they could sell it anyway while the development team tries harder to make it work.

      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.

      If only it were that simple. As quite a few people have pointed out, hardware designs are orders of magnitude simpler. And the problem domain is so much smaller, limited to a single device. The inputs are finite and have no higher meaning to worry about. Some things which are easy in hardware, like CRCs, are hard in software.

      The software that most resembles hardware is is the low-level libraries. They have a defined task to preform, the task never changes, the task is bounded in size. If you have a task that requires several libary routines you chain them together and pass the results from one as arguments to the next. And low-level libraries tend to be rather bug-free.

      And it's expensive to design state-of-the-art hardware. The really high end of hardware, CPUs, has very few contenders. It's just too damn expensive for a competitive market.

    28. Re:Software's so bad... by Anomie-ous+Cow-ard · · Score: 1
      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

      You're overlooking one slight problem: we're not allowed to do that. I suspect this comes from the economics of the situation: If a chip design has bugs, it costs quite a bit of money to change the manufacturing process, make replacement chips for everyone with the buggy chip, conduct recalls, and so on. If a program has bugs, it costs next to nothing (just labor) to change the source and recompile, and next to nothing (a little bandwidth) to put a "service pack" online and tell everyone to download it.

      Thus, manglement decides they can afford to release programs with bugs. They ignore the engineers, and actively hinder their efforts when someone comes up with the latest bell or whistle. They don't even base the deadlines on how long the code will take to produce, they base them on "we want this for our trade show!" or whatever other crap they'd like. And they get away with it because it doesn't really cost them anything to fix the bugs. If the engineers complain too heavily, they tend to get replaced.

      Stick your IC designers with the management strategy above, and see what you end up with (besides bankruptcy, of course).

      I'd also like to see a complexity comparison between a chip design and a major software product... I don't know enough about chip design to do more than guess.

      --

      --
      perl -e'$_=shift;die eval' '"$^X $0\047\$_=shift;die eval\047 \047$_\047"' at -e line 1.

    29. Re:Software's so bad... by JordanH · · Score: 2
      • 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.

      This has got to be one of the worst analogies I've heard this week. This is just so wrong headed on so many levels that I hardly know where to begin.

      First, the software that most people write is largely based on many many layers of interchangeable parts.

      Second, the comparison is so bad because autos have design and implementation lead times measured in years, while most software projects are far more fluid.

      Software that is manufactured like cars (like Windows, for example) is highly automated with fewer actual options. The software manufacturing process is more rigid and more repeatable than anything car manufacturers ever do. Actually, automotive design is just about as handcrafted as software design is. The car manufacturers run up mock-up cars, and that's a hand-crafted process. In manufacturing, the software process is actually more automated. Machines spit out burned CDs into cases, cases are loaded into boxes and shipped to warehouses.

      Software design and implementation is a much more fluid process, where new requirements are constantly integrated and user feedback causes sometimes radical changes.

      Even when massive redesigns are necessary, the interchangeable parts between projects are often more interchangeable than anything you see in auto design.

      For example, if you find your application requires an upgrade to a big RDBMS for it's data store, this is often possible with not that much rework. In automotive terms, that would be like changing the engine out of a sports car for a huge truck diesel. Not feasible.

      Software design and implementation is a creative Engineering process. So is auto design and implementation, for that matter. People have attempted to automate these processes for years and have had some success. You can't take the Engineering out of it. It still involves analysis and creative thought, not just plugging modules together and making a final product.

    30. Re:Software's so bad... by xtal · · Score: 2

      If only it were that simple. As quite a few people have pointed out, hardware designs are orders of magnitude simpler. And the problem domain is so much smaller, limited to a single device. The inputs are finite and have no higher meaning to worry about. Some things which are easy in hardware, like CRCs, are hard in software.

      Maybe, maybe not. I've been involved with very large and complicated hardware projects. I've also been involved in some very complicated software projects, and had success and disaster in each. The whole industry is moving to try and pack as much as possible onto a single chip, microcode, software and all. There is a completely different mindset that I've experienced working in software than working with hardware designs - and that's just it - the problem space is not simpler as you said, but it is much more -focused-. If you come to a HDL designer with marketdroid speak and fluffy cloud diagrams, you're going to get laughed at, because months will be wasted unless there is a very clear document detailing exactly what you want done. Such levels of detail would be called ludicruous in the software world, but they're also why software is so much better when completely done over: The problem space is much more focused and defined. (see the whole Mozilla affair).

      If the software is too complicated, find a way to break it into smaller pieces, and then make those smaller pieces bulletproof. Build up until the system breaks, then solve that - rinse, lather, repeat. That's what the unix philosophy resolved around - smaller programs that could be made to work together, each piece solving some limited problem set and doing it extremely well. This is what goes on inside a digital design; it is also what I see in successful, solid software projects. IMHO.

      Maybe I'm outta touch with reality.. but then again, I went from doing software to embedded systems and FPGAs because I couldn't handle the "Development cycle" I was being exposed to, and what was laughably being called "software engineering". To each their own.

      --
      ..don't panic
    31. Re:Software's so bad... by chris_mahan · · Score: 1

      Well, there needs to be a separation of duties.

      Instead of having 4 programmers work on that gnarly DLL, you have 1 (or 2) work on it. The other 2 work on ANOTHER gnarly DLL.

      You do make a good point about design. I say that if the problem and solution cannot be articulated on paper (or whiteboard with colored markers), then no amount of coding is going to work correctly.

      --

      "Piter, too, is dead."

    32. Re:Software's so bad... by olethrosdc · · Score: 1

      Well, having worked for a company doing System-On-Chip stuff, and having seen and worked with both firmware code and some of the hardware, I can assure you that they do not adhere to strict engineering principles as much as one would like.

      True, there is significant testing before a chip is done and is sent off to the market, but it is never quite enough - probably because the whole design is never 'engineered' - sometimes it is just a pile of hacks. Poor engineering happens at all levels. Software, firmware, VHDL, IC-layout, PCB-layout & component selection. It is unfortunately true.

      However that is not true for all companies. Some stuff I've seen from WindRiver for example (which produce a multi-platform embeddable OS) are prime example of good, clean, C code with a rational, modular and *testable* design.

      Makes you wish more companies worked like that.

      --

      I miss my rubber keyboard.(Homepage)

    33. Re:Software's so bad... by A+coward+on+a+mouse · · Score: 1

      Unadulterated bullshit.

      You could not be so naive as to believe that every product of the other engineering disciplines is subjected to peer review. Some civil engineering products might fit your characterization, but you can't deny there's a non-trivial number of trade secrets being hidden from competitors/customers in every engineering discipline.

      --
      If you mod me down, I will become more powerful than you can possibly imagine.
    34. Re:Software's so bad... by KatieL · · Score: 1

      You miss an important point of understanding the problem with the software industry.

      We HAVE an assembly line. It's the thing that copies the CDs...

      Making a million identical things is something we can do - the car assembly line is for doing that.

      We can even customise them slightly. Look there's a blue car, there's a red one... look there's a computer with Windows and Word on it, there's one with Windows and VC++...

      Software design is NOT like the hand-building of cars. It's like the process of designing the cars the assembly line builds. And THAT process still sucks. Look at the number of recalls of models to fix things in the design, at the number of cars that don't sell because they have quirky new features that just don't appeal.

      Wanting software design to be an assembly line process without creativity is akin to saying that car design should always produce a design for a silver-grey four-door Mondeo for an assembly line to copy a lot.

    35. Re:Software's so bad... by MagikSlinger · · Score: 2
      You could not be so naive as to believe that every product of the other engineering disciplines is subjected to peer review. Some civil engineering products might fit your characterization, but you can't deny there's a non-trivial number of trade secrets being hidden from competitors/customers in every engineering discipline.

      Not to the extent that software engineering does. You forget that in the more tangible engineering disciplines, they have patents that protect them so keeping everything under wraps as a trade secret is not only pointless, but counterproductive[1].

      Even if there is something that is of a "highly sensitive" nature, within a company there is a peer review system. The vast majority of code is not examined by others to spot basic errors or faulty design decisions. I've worked in "trade secret" electronic design companies, and they are way more open with their competitors and the industry as a whole. Don't believe me? Go to a good technical library and gawk in horror at how many "trade secrets" electronic engineers, chemical engineers and automotive engineers share in their trade magazines.

      And what happens when there's a major incident involving your design? If your chemical process blows up a plant, or your new car design causes sudden acceleration, how long will you be allowed to keep your trade secret hidden from the review of your peers? That was the main thrust of the article: when software goes bad, no one calls in the software equivalent of the NTSB.

      [1] In the tangible industries, a patent is a way to get your invention out in the marketplace and let other people pay you royalties for using it. I know it's hard to believe, but patents aren't just about squashing your competition.

      --
      The bitter lessons of a veteran coder: http://bitterprogrammer.blogspot.com
    36. Re:Software's so bad... by Normalpathic · · Score: 1

      In addition, the article conveniently fails to mention the multitude of automotive recalls that are instituted every year.

      And, I'd guess that more people die due to automotive flaws than due to software flaws.

    37. Re:Software's so bad... by swillden · · Score: 2

      People who write software should take a piece of learning from those who write the code that becomes digital integrated circuits... Tremendous amounts of time are spent verifying your design works correctly.

      You've just proven that it's even harder than we thought. All non-trivial IC designs have bugs too, and they're far simpler than any substantial software project.

      --
      Note to ACs: I usually delete AC replies without reading them. If you want to talk to me, log in.
    38. Re:Software's so bad... by Kz · · Score: 1
      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.

      I've heard this argument lots of times... but cars aren't so standarized either. Can you take a Mazda suspension bridghe and put it into a BMW? If you argue that you can swap components between two cars of the same brand and model, you're confusing design and production.

      In the car industry, the design teams reconsider almost every aspect of a new model, only sometimes reusing a motor or direction system. That's a lot like building an application and reusing just some libraries (like QT, or STL)

      The production line, where cars are built, all identical is like the CD pressing and packaging process. If i want to reinstall a system from the CD, it doesn't matter if I use my original CD, or yours, if it's the same version, they're identical.
      --
      -Kz-
    39. Re:Software's so bad... by kesuki · · Score: 2

      As nice as the automobile industry comparison is, I prefer the airplane industry. Afterall early flight pioneers would strap on a pair of wings made out of feathers and expect that to make them aerodynamic anough to fly. Plus cars need to start moving at a good clip to crash baddly, airplains need only dive off a cliff, with the intention of getting enough windspeed to fly. Carts are also simple to operate, and airplanes more complex. PCs are more like aircraft. That and a modern system sounds more like a jet aircraft taking off more than it sounds like a car.

    40. Re:Software's so bad... by ShaneWh · · Score: 1
      Fixing a bug now costs N times less than fixing it later. Object Oriented helps a lot, but the problem won't go away.

      I know "duh", but its a logical explanation which no one posted!

      -- Moto - Be Concise.

  12. K.I.S.S. by martin · · Score: 2

    As the army boys (and gals) say...

    Keep It Simple Stupid

    Today's programs (and O/S's) are horrendously complex so this in it self is a problem. Sure there are other problems, but the more complex a system the more likely it is to fail.

    1. Re:K.I.S.S. by chaserfromva · · Score: 1
      True, but at what point does the industry turn around and follow this mantra? Can it turn around and develop a simple, effective product, or are we too far down the spiral toward chaos?

      The article asks why no one is suing these companies for bad products, yet answers itself: The customers are demanding newer products/features/gizmos. Another example the article gives is that like mechanical/electrical engineering, developers constantly refine their product. Until customers priorities are re-focused, the resources of software companies will focus on refining the features/gizmos rather than the stability and quality.

    2. Re:K.I.S.S. by martin · · Score: 2

      That'll be expectations (set by us the developers then).

      People expect software to do everything, but it's got all flashy with features etc. Remember back at Uni with the 80/20 rule...

      If you compare with auto engineering there are versions out there of the product. The no-frills product with no Anti-lock brakes, electric windows (cheap, but functional) then the version with all the toys on it electric everything (more expenensive). It's very rare to find software like this - only Visio springs to mind.

      Also 'traditional' engineering can make use of 'stock' parts (brake shoes, radiators etc) that are well known and easy to slightly customise. How much of today's software industry follows to code re-use model????

    3. Re:K.I.S.S. by jellomizer · · Score: 2

      The growing complexity of programs is what I think is the main cause to all these problem. Programers are so fixed on making there program perform super fast so they often will sacrifice stability to get there. So things like imbedding WebBrowers to the OS and having everything integrated just causes more problems. Using a series of simple programs that comunicate over a pipe or socket is easer to program and easier to fix because that way you can just fix one program and not a tighly integrated piece of code. Sure you will loose some computer performance due to the redesign but next year when you get faster hardware the speed problem is fixed. Why is Unix and Unix like OS more stable then windows. A major reason is that it is not integrated and it runes off of a lot smaller programs. If your vidio card dies it dosent mean the end of your computing it just means you need to find a dumb terminal.

      --
      If something is so important that you feel the need to post it on the internet... It probably isn't that important.
    4. Re:K.I.S.S. by martin · · Score: 2

      Super fast??????

      yeah right, have you seem the actual stuff thats gets executed in a totally inefficient manner? I know very few programmers you use speed tricks (apart from maybe RDBMS guys who usually have to rely on their database admin to sort the SQL out anyhow).

      Gone are the days when programmers actually wrote stuff (esp in the Visual studios purported by M$). You don't program you drag and drop and let the GUI do the rest - hence total crap gets written. This also applies to the GUI web page generators. Give me vi/an editor anyday.

      The reason why Unix is more stable is 'cos its modular to a greater degree then 'doze. Plus 30 years of design have gone into the thing.

    5. Re:K.I.S.S. by Anonymous Coward · · Score: 0

      > Today's programs (and O/S's) are horrendously
      > complex so this in it self is a problem.

      So is the engine in your car. It works pretty well...probably "crashes" much less frequently than your computer.

    6. Re:K.I.S.S. by mspring · · Score: 1

      It's the 'K' in K.I.S.S. which is the hard part: If you got a sufficiently simple and elegant module, chances are high that the not-so-experienced fellow engineer will understand the module and will add whistles and bells to it until the module is completely screwed up.

    7. Re:K.I.S.S. by Anonymous Coward · · Score: 0

      Haha, this is funny. 30 years of design have gone into it. Sure. 30 years of "lets preserve the same old dumb C API which causes buffer overflows and stupid breakages to occur because its the application developers responsibility to supply the correct arguments and handle errors in our amazingly stupid fashion (errno anyone?), because it's how we've always done it!"

      30 years of "we're too fucking lazy to implement a decent OS, therefore we've implemented Unix again."

      Give me a break

    8. Re:K.I.S.S. by Anonymous Coward · · Score: 0

      so what? How many variations are there on the internal combustion engine anyway? If all we had in the way of software was an email client, then I would imagine that we would have a really good (and stable) email client.

  13. 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 Anonymous Coward · · Score: 0
      And the tragedy is that if people did care, if developers did work to design as well as possible within the available schedule, and documented their decisions, then in time they would learn and all that design and documenting would no longer be neither hard nor time-consuming -- it would be as natural as breahing. People can achieve wonders if they only do the work and strive for their ideals. I find it sad how many people simply don't even try to improve their abilities.


      I don't mean to imply that I am a particularly wonderful coder -- I am not -- but it really irks me when I am seen as a bit weird for trying to find elegant bug-free solutions to coding problems, instead of just doing the least work possible.

    2. 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...

    3. Re:Forcing good code? by spsheridan · · Score: 1

      Quoted from above:
      "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."

      Your premise here is that we should accept bad code. I'm sorry, I don't see why I should have to spend my good money on bad products. The main problem here is that the industry LEADER (M$) delivers bad code. They've set the bar low, and very few companies are challenging that bar. I guess, these days, my choices are either:

      1) Be a GURU and use *nix, spending LOTS of time learning how the TOOL works so I can use stable applications. Poor trade for MANY instances, a good one if you happen to like computers.

      2) Be a user with consumer level software that is deisgined with failure in mind.

      Hopefully, option 3 is coming soon.. a consumer level software base that is stable and user friendly. I'm tempted to check out OSX but I'm still so anti-MAC..

      And this is a huge problem. Until someone creates option 3 all the option 2 producers simply compete on the COST of their product for development and marketting. When there is an honest competition for QUALITY... well, that's when things get interesting. And.. maybe this is why we have laws against monopolies.

      I still reject that we, as consumers, have to EXPECT shoddy software. I can expect lower frills, fewer functions, but not poorer quality.

    4. Re:Forcing good code? by Anonymous Coward · · Score: 0

      Designing everything ahead of time only works if everything is known ahead of time. If you are going to produce a piece of large commercial software, that is possible. If you are going to produce a piece of software for internal use to a company, or an open source project, not all of the requirements are known. Linux was not completely designed ahead of time.

      Good software engineering requires flexibility of design. Those who try to design everything ahead of time often leave out the flexibility part because it would be more efficient not to make it flexible. Every large project that I have been involved in has followed the recommended procedure for documenting the software ahead of time has fallen into this trap.

      Therefore, coding right away is not necessarily a bad thing, as long as flexibility and upgradability is the primary design consideration.

      Software is evolved, not written.

    5. Re:Forcing good code? by Wraithlyn · · Score: 2

      "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."

      While this IS completely true, I have found you CAN get some additional time for planning if you bring it up right away. Next time you're discussing the timeline for a software project with the suits, say something like this:

      "Well, remember how we had to spend X days fixing and rewriting parts of Project Foobar after initial coding? That's because we rushed into it without adequate time for proper planning. We should do it right this time, we need to spend Y days carefully designing the system ahead of time, before we begin programming."

      As long as Y < X, you will get the planning time budgeted. But then, you had better put your money where your mouth is, design a clean system, and implement it efficiently.

      --
      "Mind, as manifested by the capacity to make choices, is to some extent present in every electron." -Freeman Dyson
    6. Re:Forcing good code? by TRACK-YOUR-POSITION · · Score: 2
      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.

      Don't look at it as an all or nothing thing--if you've got a programming language that catches catagory X, Y, but no Z and programming error, and another language that catches none of those, the former language is still going to be more useful. The more bugs the programming language finds, the more time developers have to find bugs that programming languages can't find.

      Remember, everytime you see a security bug due to a buffer overflow, remember that this bug, and all bugs like it, can be completely eliminated with a better choice of programming language, but will continue to plague you no matter how thorough your testing, debugging, documentation, or anything else they tell you in a software engineering class--human beings are totally fallible, and given enough code to write, they WILL fail. It's just a matter of time.

      Not to mention that a newer programming language can greatly simplify the task at hand--which reduces the number of bugs (less code == fewer bugs) and leaves more time to find those bugs.

      As long as people think it's okay to use C, C++, or perl in code were bugs matter, software WILL keep sucking, forever.

    7. Re:Forcing good code? by Anonymous Coward · · Score: 0

      Since when is *nix such a wonderful platform for good code? If I recall correctly, the C API for *nixes has been the cause of an uncountable number of errors. Unix is the lazy OS implementor's OS; they put the onus on the software developer to not make mistakes.

    8. Re:Forcing good code? by chromatic · · Score: 1

      Perl has buffer overflows? In my mind, it's one of a class of languages particularly immune from that sort of thing. Did I misunderstand your example?

    9. Re:Forcing good code? by TRACK-YOUR-POSITION · · Score: 2

      Whoops, no, didn't mean to imply that. But perl has it's own set of strange gotchas that compromise your system, and in general, while it makes code easy to write, also makes it difficult to read--which of course means more debugging time required.

    10. Re:Forcing good code? by botik32 · · Score: 1

      Could you be more specific about the compromising gotcha's?

      [snip] also makes it difficult to read--which of course means more debugging time required.

      Umm difficult to read depends on who wrote and who is writing. I often find perl code easier to read than c/c++ although I have been programming c/c++ more than perl.

      how is this:

      # find customer id
      $custid = $input =~ /.+CUSTID=(\w+)$/;

      more difficult than:

      pos = strstr( input, "CUSTID=" );
      if( pos > 0 ){
      pos1 = pos+7;
      while( (input[pos1++] > 'a' && input[pos1] < 'Z') || (input[pos1] > '0' && input[pos1] < '9') );

      }
      custid = new char[ pos1-pos+1 ];
      strncpy( custid, input+pos, pos1-pos );
      custid[ pos1-pos ] = 0;
    11. Re:Forcing good code? by p3d0 · · Score: 2
      I think "forcing good code" means giving Fred Brooks' uber-programmer the ability to establish automatically-enforced rules to keep the lesser programmers in line.

      Now, if I could just figure out which kind of programmer I am...

      --
      Patrick Doyle
      I mod down every jackass who puts his moderation policy in his sig. Oh, wait a sec....
  14. When It Comes to Software by bgs006 · · Score: 0, Offtopic

    Or anything else, for that matter, ignorance can be bliss.

  15. The joke's on MIT Technology Review by ajp · · Score: 5, Interesting

    This article is out of the July/August MIT Technology Review. My copy of the magazine proves their point in an ironic fashion.

    The zip code I live in covers two cities, let's call them Appleville (tiny village) and Apricotland (large, sprawling concrete wasteland.) I live in Apricotland which is asciibetically second (based on the third letter.) Note that the first two letters are the same. MIT TR's mailing system lists me as living in Appleville. Why would it assume that zip code 12345 is the smaller village instead of the sprawling metropolis?

    Yup. Buggy software. I could--as anyone reading ./ probably could--isolate the bug in ten minutes given the source. Likely it assumes that either the first city is valid or that the likelihood of two cities beginning with the same two letters in the same zip code is too small to consider.

    The joke's on you, MIT.

    1. Re:The joke's on MIT Technology Review by catfood · · Score: 2

      Or, more likely still, the Postal Service has decided that, damitall, if your zip code is 12345 you live in Appleville.

      USPS place names don't map precisely to "real" place names, but they're valid for mail delivery purposes.

    2. Re:The joke's on MIT Technology Review by jmischel · · Score: 1

      Don't be too quick to judge MIT, as they probably outsource the fulfillment.

      Also, don't be too sure it's the software that's the problem. Many data entry systems allow the operator to input the ZIP code. The city name is displayed either in an edit box or a drop-down list where the operator is expected to verify it, and change it if not correct. This could be (and likely is) a simple case of operator error.

      (Imagine that coming from me, who thinks most software sucks rocks.)

    3. Re:The joke's on MIT Technology Review by marauder404 · · Score: 1

      What does the Post Office say your city is when you enter in the ZIP Code?

    4. Re:The joke's on MIT Technology Review by Elbereth · · Score: 2

      Score:5, Interesting? Come on. This isn't that interesting. I thought he was going to say something like, "The joke's on you, MIT! I live in Orangeflux!"

    5. Re:The joke's on MIT Technology Review by ajp · · Score: 1

      I realize that MIT didn't pay a post-doctoral candidate in Minsky's lab to type in my address. This doesn't matter. (Actually the whole zip code thing doesn't matter, but then little that appears in the ./ comments section matters much.)

      What does matter is that they are employing buggy software in their product. I don't care if Microsoft wrote it or if it was custom-coded by EW Dijkstra. They're shipping their product with errors introduced by buggy software (or buggy people.) If the windshield wiper fluid in your Ford doesn't spray no one cares if the wiper fluid pump was actually designed and manufactured in Ethiopia. It's Detroit's problem, period.

      What I found amusing--and you might have to read this sentence three or four times to get the big words right--is that the magazine which says "Why software IS SO BAD (and how to fix it)" on the cover also has a bug on the same cover. If you're a little irony-challenged this morning, go back to bed.

    6. Re:The joke's on MIT Technology Review by nivedita · · Score: 1

      I think what most people are trying to tell you is that it isn't actually a bug, because according to the USPS, you _do_ live in Appleville as far as mail is concerned. I.E. if it were addressed to Apricotland, the postal service would have a harder time figuring out where to deliver it. This may be counter-intuitive, but that's the way it is: for me, for eg. my phone company thinks I live in one town and the post office thinks I live in another. It's not a bug until the TR actively screws up and mails the mag to your twin who lives in Appleville instead of to you.

    7. Re:The joke's on MIT Technology Review by PurpleBob · · Score: 2

      The address thing doesn't sound like a serious problem, but MIT should learn when not to outsource.

      They give incoming freshmen an online writing test. During the June test, the site went down. Instead of the page where you could submit your essays, you would get - a .NET error message.

      When the site went back up I noticed a credit on the page noting that the software was written by Microsoft.

      Meanwhile, other online tools that prefrosh have needed to use - the ones that were designed at MIT and run on Athena - have been rock solid.

      --
      Win dain a lotica, en vai tu ri silota
  16. 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 Anonymous Coward · · Score: 0

      apparently you haven't seen the list of bugs which were marked for further consideration after the 1.0 release.

    2. Re:It's Time by sphealey · · Score: 3, Interesting
      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.
      Over the last 8 years I worked for 2 different companies. One was a 100 y.o., engineering-oriented organization. Whenever undertaking any significant new project, they did the kind of detailed, complete, time-consuming analysis that you describe, followed by a similarly thorough implementation. That company still exists and is doing OK, with a reasonable if not spectacular profit margin.

      The second company didn't do any of that. When a decision needed to be made, they spent about 10 minutes looking at it, then made a choice. Rather than doing detailed project plans, they would constantly reassess and make direction changes. Their belief was that it was far better to do something and start getting feedback than spend too much time in analysis. This company also does pretty well, with a higer profit margin than the first.

      Which approach is better? I don't know, but it was quite a culture shock going from one to the other! However, one thing is for sure and that is that people who are wedded to the "analyze-project manage" way of doing things (think PMI) are firmly convinced that the "fire - ready - fire - reaim" method is nothing but disaster waiting to happen. I am no longer so sure.

      sPh

    3. 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.

  17. misuse of copyrights? by redtoade · · Score: 1

    "but users can't see under the hood"

    perhaps this is why software is bad moreso than anything else?

    When you copyright a book: anyone can pick it up, read a few paragraphs and compare it to another book. The reader can decide for themselves whether one book infringes on another's copyright, which one is "better" and can add that information to his/her accumulated knowledge. It's an OPEN copyright!

    But when you copyright software: you get a (collection of) function(s) that you can run on your machine. A tool that you use. There's very little learning here... no using it as a foundation to the next level (like learning to add is a step towards learning to multiply). The user can't compare the program to other programs except through the GUI. He/she can't tell whether it infringes on another progam's copyright, and all (comparable) programs pretty much look the same. Not to mention that when it crashes... no one knows why.

    Yes this is basically the open software vs closed debate. BUT, I don't understand this "welding the hood closed" approach that software copyrights are allowed to take. You don't see many books on Amazon with their pages glued together?!

    1. Re:misuse of copyrights? by pauljlucas · · Score: 1

      Your argument is simply the open vs. closed software debate; but you're confusing it with copyright. Copyright has nothing to do with open vs. closed. Open-source software is often copyrighted. Ever hear of the GPL?

      --
      If you reply, do so only to what I explicitly wrote. If I didn't write it, don't assume or infer it.
    2. Re:misuse of copyrights? by Christianfreak · · Score: 2

      Your analogy doesn't work for two reasons.

      1. You don't open a book and immediatly see what went into creating it (the first draft, the printing, the distrubution etc.) You see the finished products, where as with software when you see the code you see the unfinished things as well and at least some of the steps it takes to go from that code to word processor on the screen.

      2. Users don't care whether software ... or books for that matter, infringe upon copywrite. They care if the book is good or if the software is installed on their computer already so they don't have to think to install it. I suppose if some default software (such as word) ever got bad enough that users might switch but for now it does mostly what it claims to do without too much headache so it gets used.

      I understand the closed-source camp's desire to keep the hood closed, they feel its easier to duplicate the process or use their own knowledge against them. The problem of closed source will go away when we stop seeing "intellectual property" as property to be bought and sold when it should just be shared.

    3. Re:misuse of copyrights? by Waffle+Iron · · Score: 2
      Your argument is simply the open vs. closed software debate; but you're confusing it with copyright.

      Maybe the two issues should be more closely coupled. Historically, patents and copyrights granted the inventors and authors monopoly over some of their works in exchange for disclosing the works to the public. The public can then use the works and learn from them (possibly for a fee).

      Providing copyright protection on binary-only software does not fit into this original model. The public can use the work, but there is very little that can be learned from it. The copyright in this case does not serve to advance knowledge, which negates one of the main reasons copyright was created in the first place.

      Perhaps copyright protection should be reduced or eliminated on binary-only software.

      Remember, copyright concerns publication of works; it is not supposed to be a vehicle that helps you keep your trade secrets secret. Keeping trade secrets would be more appropriately done by negotiating (and actually signing with ink) contracts with your customers before giving them possession of your secret binaries.

    4. Re:misuse of copyrights? by redtoade · · Score: 1

      "Ever hear of the GPL?"

      um... yeah. The GPL is a way of using copyright laws against themselves. Exploiting a loophole as it were. It is in no way the TYPICAL use of copyrights in software.

      My interpretation of the GPL is "to copyright something in such a fashion that it can't be copyrighted."

      :)

    5. Re:misuse of copyrights? by redtoade · · Score: 1

      you're looking at it from the perspective of the publisher... which may or may not be the correct way to interpret copyright law.

      For instance, "what went into creating it" shouldn't have anything to do with the copyrighted material itself. You're not copyrighting the effort or the services... you copyright the product: a tangible item that can be touched, felt, sniffed... etc...

      The publisher's efforts prior to product is completely meaningless. Copyright doesn't cover any of that. It's not "protected," at least not directly. I'm not sure why you think that anything outside the actual printed word of the book is copyrightable.

      "Users don't care...infringe upon copywrite." That's not the point. The ability for ANYBODY to determine whether one book infringes on another's copyright is not the same as whether or not the typical user cares.

      Copyrighted software (99% of the time is CLOSED software) claims copyright infringement and then places the burden of proof on the judicial system itself. Not so with books (or music or architecture, etc...) Are these companies required to submit a copy of their copyrighted source code to the government? I have no idea, but I'd bet that the answer is no. So companies are able to accuse people of copyright infringement WITHOUT HAVING ANY PROOF! Not to mention that the closed system allows companies to hide behind copyright when users demand quality. They don't produce source code because they are protected by law! Current interpretation of copyrighted source code is that it's illegal to distribute without the owner's permission. That's crazy! Copyright law should only forbid unauthorized production for profit... but should allow for open recognition of who's product is who's. Like the branding of cattle.

      Obviously, I believe that if the government is going to give "protected status" to anybody, that it should get something back in return. And there is no way that the "welded hood" system benifits anybody but the software companies... it is government sponsored and it allows for very crappy programming without any accountability.

    6. Re:misuse of copyrights? by redtoade · · Score: 1

      what he said. (your post is refreshing.)

      I would be interested in finding out from where copyright law originally came. It's in the constitution... so perhaps the Federalist papers have some insight as to how copyright law was originally intended to be implemented?

      BUT, freedom of speech and the freedom of the press are AMENDMENTS! Therefore, they take PRECEDENCE over any and all constituional law that came before them. There is nothing wrong with copyright and patent law EXCEPT where it conflicts with these amendments. When conflicts occur, copyrights need to take the back seat.

      And I guarantee you that somewhere in history this discussion took place between the Federalists and Anti-federalists. There must be SOME evidence of correspondence between the two on this subject. But where?

      An essay on historical freedom vs copyright would make intersting reading. (hint, hint)

    7. Re:misuse of copyrights? by Anonymous Coward · · Score: 0

      > BUT, I don't understand this "welding the hood
      > closed" approach that software copyrights are
      > allowed to take.

      The hood on your car ain't welded shut. Were you able to figure out how good the car was before buying it just by opening the hood?

      We need to be able to depend on software w/o "opening the hood."

    8. Re:misuse of copyrights? by redtoade · · Score: 1

      "Were you able to figure out how good the car was before buying it just by opening the hood?"

      pretty much so... yeah. (Of course it helps if the car is running.)

      the way software welds the hood shut, you can't even tell if there's an engine inside... let alone how well it runs! For all you know there's a chipmunk in an exercise wheel and tape recorded engine noise under there!

    9. Re:misuse of copyrights? by pauljlucas · · Score: 1
      to copyright something in such a fashion that it can't be copyrighted
      That's an erroneous interpretation. GPL'd software is copyrighted just like anything else that is. You are not free to take GPL'd code, change one line, and call it yours. GPL is not Public Domain.
      --
      If you reply, do so only to what I explicitly wrote. If I didn't write it, don't assume or infer it.
    10. Re:misuse of copyrights? by redtoade · · Score: 1

      I didn't say that it was.

      Copyright imples ownership. GPL pretty much makes the question of ownership moot. You can still claim that the software is yours, but who cares? Other than credit from your peers and the ability to change the license in the future (unless your source code contains someone else's GPL stuff), what exactly does your copyright give you?

    11. Re:misuse of copyrights? by pauljlucas · · Score: 1
      ... the ability to change the license in the future ...
      That's a big ability. What more do you think it should give in order to be a "real" copyright in your mind?
      --
      If you reply, do so only to what I explicitly wrote. If I didn't write it, don't assume or infer it.
    12. Re:misuse of copyrights? by redtoade · · Score: 1

      we're passing each other going opposite ways in our trains of thought here...

      I was thinking that copyrights had evolved into this "misuse" where people gain ownership of ideas. And that's not my understanding of the original intent of copyrights.

      Copyrights were to give holders protection from competition. Not exclusive rights to something intangible.

      It makes sense to me that when profit is involved, the government grants TEMPORARY monopoly status to an inventor/publisher in order to protect said idea from pre-established competitive forces. Too many times "those who were here first" will squash a new idea simply to avoid competition. So from a business aspect, it aids the economy for the federal government to protect the more general "free trade environment" by granting specific temporary restrictions on it. A sort of culling the herd of freedom as it were.

      But outside of the business world, copyrights should have abolutely no meaning. Let's look at the U.S. Constitution (Article I, Section 8, Clause 8):
      "(The Congress shall have Power) To promote the Progress of Science and useful Arts, by securing for limited Times to Authors and Inventors the exclusive Right to their respective Writings and Discoveries;"

      I've described in detail my interpretation of "promote the Progress of...", which is not necessarily the only or the correct interpretation, but is OPEN for discussion. However, notice that the article does not mention the words trademark or patent. Both concepts are implementations by the legislative branch and reinforced interpretations of the judicial.

      Of course there is the first amendment:
      "Congress shall make no law... abridging the freedom of speech, or of the press; "

      Amendments take precedence over the main body of the constitution. There should be no question then that congress CAN NOT restrict the free movement of ideas. The creation of the trademark office (which is in itself an interpretation of Article I and NOT a direct implementation) is unconstitutional wherein it conflicts with the free expression of ideas amongst the general poulace. Of course the supreme court has the final say on the constitutionality of legislation, not myself. But it seems to me to be an OBVIOUS argument.

      As to the ownership of ideas, I often make the comparison to the mid 1800s and the Sioux indians. The white man came across the Mississippi and said, "we own this land." And the indigenous people were completely bewildered by this concept. I'm sure you've heard the story before... owning the land was like owning the sky, the air, the summer...

      I find it humorous that people have evolved the concept into ownership of even less tangible things like "ideas."

      So that being said, I see the GPL as a way to use copyrights themselves in such a fashion as to protect source code from the worse misinterpretations of copyright law. You use this "ownership" idea against itself... in effect filling in the owner field in the application before someone else can, but never intending to use it for anything.

      On the other hand, I'm not naive... I understand everyone has their own interpretations.

  18. No they don't... by corian · · Score: 1

    Rivard was one of several to point out that MSNBC says software sucks ... MSNBC points out that just one of Microsoft's poor design decisions has cost consumers $8.75 billion, and wonders why nobody has sued.

    Several pointed this out???

    MSNBC does not say software sucks. MNSBC is a content re-provider, printing a piece by journalists, Charles Mann, who was writing for (Copyright © 2002 Technology Review) Technology Review magazine.

    The opinions expressed by blah blah are not necessary representative of blah blah MSNBC.

    Jeesh.

  19. I couldn't read some paragraphs of the article... by C+A+S+S+I+E+L · · Score: 2, Funny

    ...because of a bug in the JavaScript which prevented the menu selections from working. Clearly this wasn't tested properly.

  20. 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.

    1. Re:Responsibility and liability by AVee · · Score: 2

      Thats where the customer should take action and think about what sofware they spend money on. They should demand to be able to test the software and/or return it when it doesn't suits there needs. (Almost) nobody buys a car without a test drive and without warranty, but people keep buying software they can't return after opening the package and keep agreeing to all kinds of EULA's.
      I remember reading an old MS EULA (DOS 5?) that specified explicitly that any promises made buy MS or its resellers were not giving you any rights and should be ignored. According to that EULA you whould not have any rights, even if they sold you empty floppy disks.
      Software will get better when people stop paying for crap. As long as they do, you will always find people producing crap.

  21. They left out an important issue -- open source. by mesozoic · · Score: 3, Interesting

    "If it doesn't spit out an error message, it must be done correctly, right?"

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

    I'm disappointed that this article didn't mention open source even once. The process of writing an open source project is much different from that of a proprietary piece of software, and (as far as I'm concerned) the open source method is much better equipped to deal with things like sloppy code. But to the average computer idiot who reads MSNBC, this article makes it seem like all software systems are going to kill U.S. Marines and crash ambulances into each other.

  22. How software gets bad by pointym5 · · Score: 5, Interesting

    1. Smart (or dumb) guys form startup around good idea. Version 1.0 gets written in a frenzy of caffeine and beer, riddled with bugs because it has to be delivered before the money runs out.

    2. Mistakes made in version 1 are sworn off as version 2 is designed. Version 2 is built by the swell of 2nd-generation coders, hired as fast as possible and sent to work unsupervised by the overworked 1st-generation engineers.

    3. Version 2 is delivered with all the good ideas on the surface, but implemented by less-than-excellent coders.

    4. Widespread adoption funds much additional hiring. Anything vaguely mammalian is hired to fix bugs and work on new features and new products. Most 1st-generation engineers leave with their money. Product design and development is run by people who don't know what they're doing.

    1. Re:How software gets bad by Anonymous Coward · · Score: 0

      many years later, mozilla 1.0 is released!

    2. Re:How software gets bad by maiden_taiwan · · Score: 1
      1. Business person promises the CEO that the amazing software will be deployed in September.

      2. Business person tells the technical staff about the project in August.

    3. Re:How software gets bad by zaphod110676 · · Score: 1

      Welcome to my world........

      --
      To Do: 1. Take over world 2. Pick up Milk and Bread on the way home
    4. Re:How software gets bad by PaganRitual · · Score: 1

      yeah, and then when the new monkey tries to climb the ladder to grab the banana, he gets attacked by all the other monkeys ... why? cause thats the way its always been done ... what were we talking about again ???

  23. 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.

    3. Re:Software NOT Different by sphealey · · Score: 2
      Hell, if software just had to do what it was doing in 1970, it would be more perfect than refrigerators.
      Except that I have spent the last six years implementing ERP software that isn't as well-designed and doesn't do the job as well as equivalent MRP II systems from the early 1970s! I would actually say that software quality has regressed quite a bit since 1980!

      sPh

    4. Re:Software NOT Different by adagioforstrings · · Score: 1

      The more money you pay, the more quality you get.

      Be careful when you say that increasing quality costs more because that's not entirely accurate. Remember in the 80's, Toyota and many other Japanese car manufacturers took a huge chunk of the automotive market from the Big Three because they could produce QUALITY vehicles for LESS COST than could the American companies. There have been many books written about the cost of quality. It's definitely not as simple as MONEY=QUALITY.

    5. Re:Software NOT Different by bbowman0 · · Score: 1

      The process of software development is not developed efficiently yet. We (programers) are in a relatively young form of work as compared to the (real) engineering sciences. We may be special and high-payed now, but that is simply becasue it is so new. In reality, we are just the blue-collar workers of the next century

      --

      One Nation:
      Under God
      Under Allah
      Under Zeus
      Under Satan

      OR

      One Nation Indivisible
    6. Re:Software NOT Different by catfood · · Score: 2

      You're missing the analogy.

      The fact that the system you're working on had to be redesigned at all is unique to software. Refrigerators today still do the same thing, in the same circumstances, and in the same environment as they did decades ago. If you were making refrigerators you wouldn't be starting over yet again this year with refrigerator-dot-NET, nor ten years ago with the 32-bit refrigerator, nor twenty years ago when they started asking for refrigerators that were compatible with the new PC-based kitchens.

      It's not that quality is going backwards. It's that quality is always starting over from the beginning, because "they" keep changing the background on us.

    7. Re:Software NOT Different by Anonymous Coward · · Score: 0

      No but typically money>=quality. For a give macro-economic cost (not just the $$$ you pay at the check-out) you can only get so much quality. In your car example it was the case that the Big
      Three money >> quality. The competition pushed down into the money > quality region and kicked butt.

    8. Re:Software NOT Different by sphealey · · Score: 2
      We can agree to disagree if you like. I did understand the analogy. I am not saying it is totally wrong. However, two points to consider (a) cars and refrigerators are far more complex than the average consumer believes. That cars from 1985 seem to perform their function flawlessly is a result of lots of hard work by lots of dedicated people (b) in many cases, new software performing the exact same function as its 1980 counterpart (purchase orders and bills of lading have not changed their basic form since 1500 AD or so, and BOLs from 3000 BC are easily recognizable by shipping clerks in 2000 AD) does not work as well as the older stuff.

      sPh

    9. Re:Software NOT Different by Enzondio · · Score: 1

      I fear that you are making the same mistake the article made. Equating quality of product directly with reliability, or lack of bugs. While I recognize that these are VERY important factors in the quality of software, they are not the only factors.

      Software also has to do something useful. And if you don't want to go out of business, probably something more useful than the last version.

      If software companies tried to do what car companies (or refrigerator companies for that matter) do (i.e. offer a slightly improved version of pretty much the same product) year after year they would inevitably fail, probably very quickly.

      Users demand newer, better, faster software. They're not going to be happy to continue to pay for incremental upgrades to the software they already have (and a company can't make money putting out free updates and not making new products). Imagine trying to sell a new version of office, citing the fact that it loaded 0.5 seconds faster and didn't crash under several specific sets of circumstances that the user has probably never even run into.

      One advantage that the other more tangible industries have is that their products wear out more readily. I'm going to have to buy a new car eventually even if I am happy with my current vehicle and the next model isn't any better. The only reason I should need to buy new software is because I'm either unhappy with my current software or the new software offers SIGNIFICANT advantages over the old.

      In short, direct comparisons of the software industry and the refrigerator industry do not work out.

    10. Re:Software NOT Different by sean23007 · · Score: 2

      The more money you pay, the more quality you get. It's an asymptotic approach where increasing quality costs a lot more money.'

      Yup, that's why Windows is so much better than Linux: because it costs so very much more. Oh, wait. That's a really big hole in your argument. Linux costs nothing and is better than Windows. The users pay for user-friendliness, not stability. If the users all paid for stability, then their computer just wouldn't crash while they found themselves completely unable to use it, they swore at it, and they went out to buy Windows.

      The point is that software is completely different. You don't get what you pay for. Paying more does not necessarily get you a better product. A $45 hammer is almost always better than a $12 hammer, but software is like the $400 hammer whose real value is utterly undeterminable.

      --

      Lack of eloquence does not denote lack of intelligence, though they often coincide.
    11. Re:Software NOT Different by sphealey · · Score: 2
      If software companies tried to do what car companies (or refrigerator companies for that matter) do (i.e. offer a slightly improved version of pretty much the same product) year after year they would inevitably fail, probably very quickly.
      In fact, that is exactly what vertical-market software vendors (think midrange ERP) do. Once they have the customer locked in, they sit back and collect the 15% yearly maintenace and "upgrade" fee from now until Doomsday.

      Except that they generally forget about the "improving" side of the equation. And they often leave the same bugs intact from version to version, while adding new features to "delight" their customers.

      sPh

    12. Re:Software NOT Different by Pfhreakaz0id · · Score: 2

      Yeah. People ask me all the time why they have problems with their computers. Because computers are COMPLEX. I remember using this piece of shareware that tracked registry changes and it could also track all registry activity through a boot in Win9x, nt, and 2000. The help file said have plenty of HD space because a typical 2k boot had between 120,000 and 150,000 registry reads/writes!!! That's a lot of things to go wrong. The more I learn about the PC/Windows Hardware/software cludge, the more I'm amazed it works at all. There's so much legacy crap in there glued together. Hack, upon hack, upon ugly hack.

    13. Re:Software NOT Different by Corporate+Troll · · Score: 1
      Same here....I was on a project (much less complicated than yours) that "needed" to replace an Electronic Document Management system out of fear for the Y2K bug. Well the existing applicationg using diskless XT stations as clients and a small Novell server for storage was working perfectly. You know those text-based clients with lots of shortcuts, ideal for the users (secretaries).

      Now enter the Y2K bug and "someone" decides the system is obsolete and wants it replaced. Replaced by Windows NT Server running Oracle, clients running Windows NT workstation with a custom Delphi application and of course the documents should be stored in the Word format in the database (Yuk!). That's not the only problem: the nice secretaries wanted *exact* the same shortcuts as the old application, yet it had to be a full-blown windows application. You imagine the mess...
      It works quite well, but I'm still ashamed of some of the bugs and kludges they have to live with. Yes, occasionaly I have to do maintenance on it because I still work for the company that made the product. (Back in 1998/1999)

      Note that the more I think of it, we should have chosen a Unix platform with Oracle, a simplified markup language for the documents and lots of X-Terminals for the secretaries. But of course, back then fresh out of school I didn't dare to tell what I thought to my superiors.

      Oh, and I bet that the XT/Novell application would still work despite the 1900 date representation: they make reports and on the old reports they just printed the last two numbers anyway...so 2000 would have displayed as 00. Nobody would have noticed. ;-)

    14. Re:Software NOT Different by Lumpy · · Score: 2

      so can you please tell me why the hell my word processor needs to have a programming language, graphic layout, and multimedia extensions??

      My refrigerator doesn't have a microwave, toaster oven, vaccuum and a stereo in it.

      Software suffers because Idiots try and cram everything into one application.

      Maybe it would be perfect if we would let one program do one job.... like it is supposed to do.

      --
      Do not look at laser with remaining good eye.
    15. Re:Software NOT Different by nivedita · · Score: 1

      An ugly hack is not complexity, it's poor engineering.

    16. Re:Software NOT Different by Anonymous Coward · · Score: 0

      [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.]

      Lotus Development Corp and Wordperfect Corp were churning out defects long before Microsoft was even considered competition.

    17. Re:Software NOT Different by Anonymous Coward · · Score: 0

      (b) in many cases, new software performing the exact same function as its 1980 counterpart ... does not work as well as the older stuff.

      Of course, in 1980 you bought your ordering software from IBM for $300,000. In 2002, you buy it from Joe VB/Access for $1000. If you look at something like WalMart or amazon.com, you would be very very very hard pressed to ordering systems that sophisticated in 1980. What was good enough for Sears and K-Mart back then results in bankrupcy now.

    18. Re:Software NOT Different by tooler · · Score: 1

      Just like cars, refrigerators and houses, the quality of what you purchase is not perfect.

      Just like Carroll Smith says in "Engineer to Win," if you were a member of my race car team and said that, I would fire you. I would expect my engineers and technicians to strive for perfection, not just say "We can never reach perfection, so don't get mad if something goes wrong." I would expect excellence because a catastrophic failure could kill the driver of the car.

      Expect more. Get it done.

    19. Re:Software NOT Different by Anonymous Coward · · Score: 0

      I think a big difference here is that you don't try to get your refrigerator to do different stuff over time. Most systems I have worked on replacing are being replaced because the old system, while occationally doing what it was suppose to do quite well, could not easily be changed to do new tasks. Eventually it became too much of a pain to maintain the old system, and that's when they decided to build a new one.

      And I think a big part of why newer systems don't perform as well is due to second system syndrome. It would be nice if the replacement system could be allowed to only do the same functions as the original, and then add on new functionality over time (which will hopefully be easy since you designed this one so much better...). But in my experience, the new system has to do all the new things from the get-go, many of which are not well defined (a lot of the requirements are for things they "would like" but haven't really thought out).

      I think I had some more points, but lunch is settling and shutting my brain down... :)

    20. Re:Software NOT Different by Enzondio · · Score: 1
      Except that they generally forget about the "improving" side of the equation. And they often leave the same bugs intact from version to version, while adding new features to "delight" their customers.

      You're saying exactly what I'm saying. Instead of focusing on fixing bugs they concentrate on adding features because that is what the client wants.

      Also, you ignore that adding more features is (or at least can be) an improvement on the product. And, in general, adding features is required to stay competitive. If you have two companies, one that consistently delivers the same product with mainly bug fixes and minor improvements and another that concentrates on adding new whiz-bang features moreso than fixing bugs then right or wrong the second company will likely succeed.

      Quality of a product can be viewed in many different ways, and the decision makers are likely not looking at it in terms of most secure, most stable, least number of bugs, etc. I'm not saying it's right I'm just saying that's how it is.

    21. Re:Software NOT Different by boa13 · · Score: 1

      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.


      Fast-forward ten years in the future. The 50's fridge is still working, the 70's fridge shows its age, the Y2K fridge has already been replaced. Why do we live in a civilization where soda cans last for hundred of years and refrigerators die in a few?

    22. Re:Software NOT Different by ftobin · · Score: 2

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

      Exactly, which is why /bin/true is rock solid, and also approaching 99.9999% perfection.

    23. Re:Software NOT Different by Karellen · · Score: 2

      Software _is_ different.

      If I wrote a word processor, and had between 1950 and now to write it, you better belive the new version would be better than the 50-year old version.

      The problem is that people think that software is software, and that if you can write a word processor, writing a spreadsheet is exactly the same, which is absurd.

      It's like taking a fridge engineer, the best in the business, and telling him:

      "Yes, we like your fridges very much. You're a great engineer. We've heard great things about ovens. Please build us an oven. Oh, and as you've had all this experience with building things, your oven should be better than your fridge".

      "I should warn you, I've never built an oven before."

      "So? you've built a fridge. They involve building stuff don't they? With metal and plastic and insulating material and electricity? Hell, they're even both used for getting food to a certain temperature - it's not like we're asking you to build a bridge or anything (although that's what your next project will be)".

      "Well, there may be some similarities, but there are a load of differences to overcome, most of which I don't know about yet, because I've never tried to build an oven. Materials perform differently under different temperatures, and I've never actually stress-tested them myself over long periods of time in high temperature conditions because I build fridges..."

      "Rubbish. Just get on with it. We'd like a prototype in 2 months, and if it's good enough, we'll replicate it a million times and ship it."

      "But..."

      "And when you're done with that, you can make a start on this 'bridge' project I've read about. Sounds fascinating. As an engineer, I'm sure you'll find it really easy."

      --
      Why doesn't the gene pool have a life guard?
    24. Re:Software NOT Different by catfood · · Score: 2

      Funny but, uh, true.

      Which also goes a long way to explain why Linux and the *BSDs are so stable, relatively speaking. When the interfaces and requirements change slowly and predictably, quality improves. Moving targets are hard to hit.

      Much of what we consider "Unix-like" behavior has hardly changed since the 1980s. This is a feature, not a bug.

    25. Re:Software NOT Different by sphealey · · Score: 2
      If I wrote a word processor, and had between 1950 and now to write it, you better belive the new version would be better than the 50-year old version.
      There is very little in Word XP that is needed to process words that wasn't also in WordPerfect 5.1 (text version). Or Electric Pencil for that matter. Graphical table cell layout and merge is nice, I guess. Other than that, as a "power user" I make use of about 1.5% of Word's features. So I have to disagree with you a bit there.

      sPh

    26. Re:Software NOT Different by Reziac · · Score: 2

      I'd add something to that observation:

      In 1950, the refrigerator was a relatively newfangled item; some people still couldn't afford them. But those that were made were pretty damn good quality, fairly efficient (slow motor, thus quiet and very low use of electricity), and they ran for an average of 25 to 30 years.

      In 1970, everyone had a fridge, and prices had come down (in real dollars) to the point that they were affordable. But except for some top of the line brands (commeasurately expensive), most of them were crap, with a lifespan often reckoned in single digits, and they were fairly expensive to run.

      But by 2001, the quality and cost-to-run issues have been addressed, so we're seeing 1950's base quality with 2001's technological advances. As a result, fridges are cheaper than ever in real dollars (adjusted for inflation) and the best they've ever been.

      I'd say that software is still in the 1970s era of development -- everybody does it, and costs have come down, but quality has suffered because of the way the marketplace works.

      Hopefully as time goes on, we'll see software reaching the 2001 era of development (in fridge years :)

      --
      ~REZ~ #43301. Who'd fake being me anyway?
    27. Re:Software NOT Different by goliard · · Score: 2
      But the refrigerator does exactly one thing, and the interfaces are perfectly standardized. It's not programmable
      Yet.
      --
      -*- Any technology indistinguishable from magic is insufficiently advanced -*-
    28. Re:Software NOT Different by alcmena · · Score: 2

      Yes but software has no moving parts to wear out. So if the application is perfect, who would buy version 2?

      With a fridge, microwave, or toaster oven eventually the parts do wear out and you buy a new one because the old one no longer functions. Software companies must keep adding new features (and thus, adding new bugs) because if they didn't the software company who tried to perfect one application would sell zero copies of the next version and would have no future income.

    29. Re:Software NOT Different by malfunct · · Score: 2
      I submit to you that if we never added a new new feature or new hardware support to a software product, it would be approaching perfect by now after about 6 complete code rewrites with incremental bug fixes on the codebase.

      Unfortunately people want thier new mega-cool camera-soundcard-back scratcher to work and have a billion uber apps to use it.

      The fact that software companies are in the business of making new features is half of why we have bugs. The other half is because people expect that for the next eternity that their old broken software will run right next to new fancy at the same time. I think windows would drop 75% of its security holes and 80% of its crash bugs if it dropped all legacy support.

      --

      "You can now flame me, I am full of love,"

    30. Re:Software NOT Different by Karellen · · Score: 2

      Hey, I said if _I_ wrote a word processor over the course of 50 years it would be good. I have no control over how good other people's word processors are. I'm sure there are plenty of people out there who used to build lousy fridges too.

      :-)

      Fortunately, my job involves writing code and documentation. For that I don't need a word processor, so I'll probably never scratch that itch and write one. Just give me a nice text editor, and I'll be happy. Fortunately, a quite a few very good text editors already exist, and _are_ a lot better than their original incarnations.

      K.

      --
      Why doesn't the gene pool have a life guard?
  24. Why Software is Bad by peterdaly · · Score: 2

    I believe commercial software is bad because the companies and programmers have no real incentive not to make it so. I believe part of the problem is not the gap between the market leader but the gap in the corporate org chart where the techies meet the technots.

    The level of people that SHOULD care about high quality don't understand enough. Not only to they not push for high quality code, but the push the other direction entirly.

    Scale of big vs. small means nothing. I have seen some fairly high quality open source projects with a programming team smaller the their commercial competitors secretarial pool.

    -Pete

  25. propaganda by intermodal · · Score: 1

    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

    Does this sound like hidden Microsoft propaganda to anyone else?

    --
    In SOVIET RUSSIA... erm...NSA AMERICA, the Internet logs onto YOU!
    1. Re:propaganda by uncoveror · · Score: 1

      Yes. This article was a thinly veiled ad for Microsoft.

      --
      The Uncoveror: It's the real news.
  26. My company got sued .... by Anonymous Coward · · Score: 0
    I worked for a company several years ago that did get sued by their customers. I was glad! They sold their software directly to corporations - Insurance. They charged a million up front and then anywhere from a quarter to a half million a month for a licensing fee.

    We were given unreasonable deadlines - as with every project I've been on. When I mentioned that the aggressive deadlines were unreasonable, I was told that I "had a bed attitude" or "I didn't belong here". Never the less, we produced complete shit while we were working our mandatory/voluntary 80 hour weekd. (They told us that we didn't HAVE to work that much, but if we didn't, it would affect our reviews. Some people didn't and they were later on laid-off.)

    The company was able to bury the costs of the law suits in their books and hide it from their stockholders - sigh.

    I hate this most, though. Every project I've been on had these unreasonable deadlines. Don't managers get it? Rushing around only produces crap.

    1. Re:My company got sued .... by wilhelm · · Score: 1

      Don't managers get it?

      Nope, they don't.

      Part of the problem seems to be that there are precious few managers who have been moved up through the programming ranks, and actually have programming experience, so they have no comprehension what the programmers are actually doing.

      Check out the book "Death March" by Edward Yourdon. Some interesting insights in there.

    2. Re:My company got sued .... by Tablizer · · Score: 2

      (* Every project I've been on had these unreasonable deadlines. Don't managers get it? Rushing around only produces crap. *)

      Perhaps somebody already repeated it around here somewhere, but:

      "If you want it badly, that is exactly what you will get."

  27. Everyone says software sucks..... by HowlinMad · · Score: 1

    but what are you personally doing about it? Everyone can help to make software better, from documentation to testing to actually coding. I find that most people bitch (including me), but then they don't end up doing much about it. A lot of software's terribleness lies in our hands.

    1. Re:Everyone says software sucks..... by reallocate · · Score: 1
      Why? Is there a universal obligation fo everyone to learn software engineering and pitch in, giving away substantial, marketable skills? Should we all stom Redmond, grab the source, and retire to the MS campus for gargantuan code review sessions?

      As a simple consumer of software, I am under no obligation to help make it safe, better, or bug-free. I exchange something of value for software -- money and time. (Let's note that this applies to open source, as well. Just because I can download some code doesn't mean it is not cost-bearing.) In return, I expect something that works. If it doesn't, I don't expect to have a EULA waved in my face, or to have an open source advocate assert that my use of open source code makes me a member of some imagined communal undertaking encumbered with an obligation fix the bloody thing.

      Software producers have the obligation to "make it better", not software consumers.

      --
      -- Slashdot: When Public Access TV Says "No"
    2. Re:Everyone says software sucks..... by HowlinMad · · Score: 1

      Thank you for proving my arguement. You expect it to work, and if it doesn't? More than likely, you will contact the company in some manner (call tech support, visit their site, etc.) and try to fix the problem. By doing this you are making their software betterfor they will be fixing bugs you find. So like I said, everyone has a role.

  28. 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.

    3. Re:Software is bad because it's not a science by gelfling · · Score: 2

      Have you read James Perrow's "Normal Accidents"? A treatment of systems so complex that failure is built in and guaranteed.

    4. Re:Software is bad because it's not a science by AJWM · · Score: 2

      Software likes to think of itself as 'engineering' but it's not.

      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.

      Bingo!

      For some idea of what real software engineering implies, take a look at, for example, RTCA's DO-178B, the guidelines for airborne systems equipment software (a quicky intro can be found here, a project to make these steps easier for open source), or at MIL-STD-498 or IEEE 12207.

      These aren't about algorithms or programming languages, they're about the process and the documentation thereof. Development plans, requirements documents, design documents, coding standards, test plans, etc, etc. A ton of boring paperwork -- exactly the sort of thing that goes into the design and construction of any other critical piece of engineering, be it a building, a bridge or an aircraft. (Of course, following one of these doesn't guarantee correct software, but it does make it more likely, and does provide the information to determine where the error first cropped up (code, design, specification, etc) if something goes horribly wrong.)

      Of course, all that is expensive in terms of time and salaries, and frankly for much software it just doesn't matter. How often is it life-threatening if your word processor crashes, even if it wipes out your document when it does?

      OTOH, it can be easily argued (post 9/11) that anything that compromises the security of or rapid dissemination of critical information could be life threatening -- so perhaps the above standard processes ought to apply to any software used by governmental organizations...

      --
      -- Alastair
    5. Re:Software is bad because it's not a science by Anonymous Coward · · Score: 0

      No, I haven't read James Perrow's book, though I am familiar with the issues he raises and some of the case studies he presents. Thanks for letting me know about the book. I'll see what I can learn from it.

      Morris

    6. Re:Software is bad because it's not a science by gymbrall · · Score: 2, Funny
      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.

      I think I got something very similar to this in an email about how friends are friends forever or something....

  29. TV is critical?? by stereo_Barryo · · Score: 2, Interesting

    Unbelievable that we should take seriously the complaints of TV, which drowns us in commercials, covers us with misinformation and biased reporting and is soft on corporate abuses until they reach the Enron-like level that can't be ignored.
    While all software contains bugs, and it may be impossible to root out all bugs in adequately complex programs, most software does it job almost all of the time. My word processor processes words, my spread sheet spreads sheets of numbers and my browser allows me to browse. These are MUCH more reliable than TV!!

  30. 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
    1. Re:People don't want good software.... by mrdogi · · Score: 1

      To paraphrase (and also from a poster I've seen)

      "We produce solutions that are perfect, fast, cheap. Chose any 2"

    2. Re:People don't want good software.... by Anonymous Coward · · Score: 0

      > with authority that companies want software *cheap* not *reliable*.

      BZZZT. Nice try. *bean counters* [1] want sofware this way. How's you're authority on code controlling something controlling a CAT scan machine?

      [1] ok, I origanlly wrote some derogitory comment invovling pin-head and words with 4 letters.....

    3. Re:People don't want good software.... by Anonymous Coward · · Score: 0

      Good, fast, and cheap -- pick any two (quoth a good friend of mine). Most companies unwittingly choose the last two, disregarding the "good" part.

    4. Re:People don't want good software.... by bilbobuggins · · Score: 2
      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.

      Im sorry, but this is _wrong_. This is not the client not caring about security, rather this is a testament to just how much blind faith people have in software systems.
      My experience has been that people not directly involved in software development, bosses and project managers included, have a wide eyed and innocent perception of software that in can do anything and never messes up.
      The corollary to this is their unreasonable expectations of your development cycle.
      As far as they're concerned they press a button and something they don't understand does something else as if by magic and they get their result.
      I guarantee the minute someone guesses that guys password he's going to blame you for a bug in the software, without ever considering that he might somehow be invloved.

    5. Re:People don't want good software.... by sangdrax · · Score: 1

      User: "Ofcourse! Everyone knows hackers get in through security holes. Everyone knows these are present in software you buy (our IT expert told me this; he reads IT news sites you know). So if someone hacks the system, it isn't /my/ fault. I haven't even touched a setting!"

    6. Re:People don't want good software.... by WildBeast · · Score: 2

      I do the same work to, and many people ask me if I could remove the password protection.

      Sorry but you're way off. People couldn't care less about security.

      Last night I was telling my cousin how all his Kazaa, AudioGalaxy, etc. software contains spyware and he didn't care at all.

    7. Re:People don't want good software.... by PowerMacDaddy · · Score: 1
      I can say with authority that companies want software *cheap* not *reliable*.

      Okay, but if your theory holds true, then howscome Linux, FreeBSD, or any of the free operating systems aren't ruling the OS world, hmmmm? Why haven't major corporations dropped Microsoft products en masse so they could save millions of dollars on per-seat fees for Windows and Office?

      My theory? Too many companies define their operations in terms of the competition, and turn into mass lemmings as result. "Well, Widgets Inc. is using Windows, and they're the current market leader, so we'll just do what they're doing. After all, if they're the market leader in our industry, they have to be doing something right, right? Besides, no one ever got fired for buying Microsoft." So now we're stuck with this abortion of an OS running on the majority of the desktops, because no high-up in the corporate food chain has the balls to flip Microsoft the bird, regardless of their crap-ass bug-ridden software.

      I mean shit, if a software company suddenly saw its sales drop 50% in a 6-month period, I would think they would take that as a wake-up call to fix their crapplications. But until a large number of people get fed up with M$'s shit software and start using something else, I'm living in fantasy land.

    8. Re:People don't want good software.... by Anonymous Coward · · Score: 0

      Knowing some people who actually work on CAT scanners, I'd say their employer's answer is "cheap AND reliable -- and whichever you don't deliver on, is YOUR fault".

    9. Re:People don't want good software.... by Anonymous Coward · · Score: 0

      I think the real line is:

      "fast, cheap, correct -- pick any 2"

  31. an interesting article, but... by AdamBa · · Score: 4, Interesting
    It's a good overview of current gripes about software, but the article is mish-moshing a lot of things together. For software, it talks about embedded control systems, operating systems, compilers, medical machines, and web servers. For what constitures a bug, it talks about bloated code, ugly code, inefficient code, badly designed code, buffer overflows, bad algorithm implementation, incorrect handling of badly entered data, and of course the ultimate in cataclysmic chaos -- an app that generates unnecessary Windows messages. For how to fix things, it mentions component-based design, exhaustive review of source code before compiling, better initial planning, better programming tools, highly-typed languages like C#, better measuring tools, and never deferring bugs. For the goals that should be aimed for, it talks about usability, reliability, cost effectiveness, and maintainability.

    So that's all fine and dandy, but it's not like you can just take one from each column and have something that makes sense. For example, were bugs in an operating system due to inefficient code that would be fixed by component-based design with an eye towards cost effectiveness? Well, uhhh, maybe, I think.

    It didn't help that so many of the people quoted had no idea what they were talking about, and the ones who did had their quotes taken so far out of context that they made no sense. It seems a lot of people who never worked at Microsoft know how Microsoft develops software. Oh well.

    It would make more sense to talk about a particular class of software and bug and then discuss why it is there. E.g. why do Microsoft systems products have buffer overflows. Even then you would get a bunch of different answers.

    - adam

    P.S. Comment first posted by me on Techdirt.

    1. Re:an interesting article, but... by TRACK-YOUR-POSITION · · Score: 2
      It seems a lot of people who never worked at Microsoft know how Microsoft develops software. Oh well.

      And it seems a lot of people who do work at Microsoft can be trusted to tell you whether or not they're doing a good job.

  32. Re:They left out an important issue -- open source by HowlinMad · · Score: 1

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

    Thats not necessarily true. I am a college student now and I just finished a tough course in advanced data algorithms. Our programs were graded heavily on if they did what they were actually asked to do. It was not so important how it did it, but rather that it obtained the correct results. (The projects were assigned in such a way, that making smart intelligent software made you work easier in the long run.)

  33. Your Word For The Day... by JLyle · · Score: 2, Funny

    Software engineers know that their code is often riddled with lacunae, and they have long been searching for new technologies to prevent them.

    From Dictionary.com:

    lacuna n.pl. lacunae
    1. An empty space or a missing part; a gap: "self-centered in opinion, with curious lacunae of astounding ignorance" (Frank Norris).
    2. Anatomy. A cavity, space, or depression, especially in a bone, containing cartilage or bone cells.

    1. Re:Your Word For The Day... by Cowculator · · Score: 1

      No empty space? I can end the search right here: s/\s//g

      I knew I should have been writing denser code. Time to stop writing Python code and go back to programming in something more properly formatted, like Brainf*ck...

  34. How Easy To Criticize by NoHandleBars · · Score: 2, Interesting

    In the spirit of "the glass is half full", Steinberg recently released a new version of their music software "Cubase" and, on the very day it was available, released the "x.1" patch. Yes, some of you "the glass is half empty" people will say they should have waited on the major release, but I say this is a step in the right direction.

    And until we're all running the exact same hardware I think we're going to have to settle for "less than perfect" from the software industry. When there's a bug with every sound card on the planet I fault the software company's lack of testing/research. When it doesn't work with a sound card only 116 people on the planet own, it's still listed as a "bug" and, lumped together with the other statistically insignificant "bugs" looks awful when reported together.

    Finally, to all these estimates of how much $$$ "bad" software is costing....How much would it cost WITHOUT the software? Do you really want to jump in the WayBack machine and return to the glory days of a totally manual world where every problem was described as, "It's somewhere in the secreatarial pool?"

    --
    +-+-+-+-+-+-+ "I don't know what's wrong with you, but I'm quite sure it's hard to pronounce."
    1. Re:How Easy To Criticize by EvlG · · Score: 3, Informative

      Patches like this come out because the company does QA after signing off on the master copy sent for duplication.

      Its like this. You sit down a few months before release and determine what bugs MUST be fixed before you can go into duplication. Then you also determine what bugs you will fix in the first patch, which will be available within the first week or two of release. These are less critical fixes. Then you also determine what to work on after that.

      Its a matter of priority - if they delay the release to fix all the bugs, users get unhappy, and eventually go to competing products.

    2. Re:How Easy To Criticize by sgage · · Score: 2

      "And until we're all running the exact same hardware..."

      I wonder... has there ever been a formal study done on the relative bugginess of Mac vs. Wintel software? Although there are different Mac platforms, there are still far fewer combos than in the Wintel world. I wonder if this manifests itself in reliability.

      This is not a troll or anything - I haven't done anything with Macs in years, and I just don't have a sense of it.

    3. Re:How Easy To Criticize by Zamfir · · Score: 1

      i can just see the obvious boring replies from the anti MS zealots on this one but.... when windows XP started up the "Send the error message to microsoft" dialog box on crashes they found that something like 1/4 of all crashes reported were due to crappy drivers from a video card company (i've got my guesses but i'll keep them to myself). so, more hardware and more device drivers produced by more companies is going to equal a greater possibility that consumers will make a bad choice and end up with an unreliable system.

  35. exactly! by Jucius+Maximus · · Score: 2, Informative
    "At Microsoft, he says, corporate customers often demanded that the company simultaneously add new features and stop adding new features. "Literally, I've heard it in a single breath, a single sentence. 'We're not sure why we should upgrade to this new release -- it has all this stuff we don't want -- and when are you going to put in these three things?' And you say, 'Whaaat?'" Myhrvold's sardonic summary: "Software sucks because users demand it to.""

    This sums up the state of ICQ. I stuck to 99b for a very long time, then tried 2000a to alleviate the connection problems and then dumped it for trillian. If they had developed from 99b into what LICQ has instead of their AOLised crap, maybe I would have kept with the official client.

    1. Re:exactly! by Peyna · · Score: 1

      The only thing that would make trillian better is if it were GPL'd or something, then we could hack away at adding the functionality we want, such as like what netmeeting has to offer in the way of video and voice comm. (and windows messenger's voice echo cancellation stuff is very cool if you've ever used it.)

      Really, those are the only features I see that other clients offer than trillian needs to. Although, I've been using trillian at home and work for about a month and am very happy (especially with this compact skin I've got, all the others took up waay too much space.)

      --
      What?
    2. Re:exactly! by Jucius+Maximus · · Score: 1
      "Really, those are the only features I see that other clients offer than trillian needs to. Although, I've been using trillian at home and work for about a month and am very happy (especially with this compact skin I've got, all the others took up waay too much space.)"

      If you like trillian so much, then make sure you donate to the project!! (Paypal and amazon credit card system accepted.) I sent them $15. This makes me feel good because Cerulean Studios, the creators trillian, appreciate this much more than, say AOL would for ICQ development.

    3. Re:exactly! by Peyna · · Score: 2

      I like to know what my money is going towards. I would need to know exactly what the money is going to be used for, and by whom, and sort of plans they have for the future before giving them any money. Same goes for any charity or business I give money to. Tell me what you are going to do with it before you ask for it. (i.e. 50% operating costs, 50% wages for employees) whatever.

      --
      What?
    4. Re:exactly! by Jucius+Maximus · · Score: 1
      According to their site, it is for development costs and web server costs. But they don't give a numerical breakdown and they don't specifically way what development costs are involved (i.e. Software? Programmer Salary? Hardware? Snacks for testing teams?)

      But that is good enough for me.

  36. What about MSNBC? by Anonymous Coward · · Score: 0

    I find the automatic assumption that, journalistic integrity goes out the window (no pun...) the second that there's a merger, very odd. I have to say, I haven't seen any reason to think twice about NBC's news yet. Is the MS-paranoia getting out of hand, or are we just conditionned to reading one-sided "Editorials for Nerds. Stuff that we think."? *Sometimes* journalism isn't about ramming a political message down people's throats....

  37. 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.
    1. Re:Look at how programmers are taught... by borgheron · · Score: 1

      At the University I went to we were urged to do a careful design, *then* code. At different Universities you'll see different attitudes.

      The "code now and fix it later" attitude is a prevalent approach in commercial software companies which are:

      a) Only interested in making a buck and
      b) Don't give a damn about whether it's "done right" just so long as it "sort of" works so they can sell it and
      c) have revenue schedules to meet which drive the, sometimes unreasonable, deadlines developers must meet which may result in corner cutting.

      The result is incomplete, poorly tested, or just plain bad software.

      GJC

      --
      Gregory Casamento
      ## Chief Maintainer for GNUstep
    2. Re:Look at how programmers are taught... by UncleFluffy · · Score: 2

      I know at least one university that had a "3 compiles" policy. You got to run your code through the compiler only 3 times, and whatever you had after that was what you were evaluated on.

      It's kinda scary, but I suspect it teaches people to think and design carefully, rather than just "beat it with a stick until it works" - which seems to be the way a lot of software is built.

      --

      What would Lemmy do?

  38. If you asked an arhietect..... by oliverthered · · Score: 2

    to design you a house,
    then when he was almost done, said that the walls must be made from foam.
    ....except the one on thats in the swamp....
    ....and now that you've disigned one house, it shoudln't take you long to do a few more...
    ..and did i say there has to be a high speed rail link between them...It must travel faster than the speed of sound, but never hit any animals that happen to wander on to the track.
    ..and can you make that house bomb proof....
    whys that house got walls made out of foam?

    --
    thank God the internet isn't a human right.
    1. Re: If you asked an arhietect..... by Anonymous Coward · · Score: 0

      why the fuck does every dipshit who doesn't know anything about any other field assume their miniscule area of acquaintence is some super-special ultra difficult exception to every rule and that everyone else only has to snap their fingers and build perfect houses, and hey, they do it all the time!

      there is not one computer program (or office suite + operating system) that is more complex than a house or a bridge or a car or whatever the hell you want to compare it to.

      And guess what? House plans are changed in mid-construction. Sometimes the ground under one wall of the house becomes a swamp just before your done painting the trim. And architects don't build houses with a clone army of structural engineers/master craftsmen mind-melded to them. Sometimes you have a unskilled mexican laying insulation who exposes electrical wires and doesn't tell anyone about it. Sometimes a fuckwit of a government inspector forces you to do things that are not only structurally unsound, but against code. Sometimes you have to build a second story where the first story doesn't support it.

      When you build software programs that file my taxes and and do it better than my accountant based on my solitaire games, and establish contact with aliens by processing all of the seti@home stuff on my 486 in the time it takes to post 2 rants on Slashdot (you've got at least 2 minutes and 20 seconds), then you can get back to me about the high speed rail.

      Don't even talk to me about "anything" proof.

      Oh, and doing a few more...try 'man cp' asshole.

  39. SLASHDOT TO GO BANKRUPT!! by egg+troll · · Score: 0, Funny

    In A.D. 2002

    =>

    Bankruptcy was beginning

    00
    00=>00
    00

    CmdrTaco: What happen ?
    CowboyKneel: Somebody set up us the economy
    CowboyKneel: We get financial report
    CmdrTaco: What !
    CowboyKneel: Main screen turn on
    CmdrTaco: It's You !!
    Creditor: How are you gentlemen !!
    Creditor: All your linux server are belong to us
    Creditor: You are on the way to chapter 11
    CmdrTaco: What you say !!
    Creditor: You have no chance to survive sell your stock
    Creditor: HA HA HA HA ....
    CowboyKneel: Taco!
    CmdrTaco: Sell off every 'thing'
    CmdrTaco: I know what I doing
    CmdrTaco: Sell 'thing'

    --

    C - A language that combines the speed of assembly with the ease of use of assembly.
  40. Creating a language that forces good code by unformed · · Score: 2

    is like creating a car that doesn't crash.

    Oh wait, you can do that; it just means it won't run.

    So I think it explains itself.

    1. Re:Creating a language that forces good code by Anonymous Coward · · Score: 0

      Wrong. There are many languages where you are guaranteed by the type system that a program will never crash. Just because you are too lazy to take advantage of this technology is your problem.

    2. Re:Creating a language that forces good code by unformed · · Score: 2

      take for example, this program, which displays the number*2:

      int main() {
      int i;
      cin >> i;
      cout mult_by_two(i);
      }

      int mult_by_two(int x) {
      return x * 3;
      }

      It's not going to crash, and it'll compile fine, but it's plainly --wrong--. You can -not- create a language which prevents bad coding, until you create a system which can interface your computer with your f*cking head.

    3. Re:Creating a language that forces good code by Anonymous Coward · · Score: 0

      If you read what I wrote, you would see that the key word is "crash". Sure your code may not meet the specification, but if you use the right language you are guaranteed the program will never crash. I think you would agree guarantees that software will not crash is a huge improvement over the present state of affairs. Programmers could then concentrate on problems like the one you point out, rather than unpredictable heisenbugs that are the result of antiquated languages stepping on memory that doesn't belong to them.

    4. Re:Creating a language that forces good code by unformed · · Score: 2

      Wrong. A program not crashing when there's an error is more destructive than a program crashing when there's an error.

      Why?

      Because then they give out incorrect data, and in the case of servers, become vulnerable to security exploits. A DOS attack is much less dangerous than a root-exploit, and if a program continues running even after an error has occurred, it is much, much easier to exploit.

      And all programs can crash, regardless of what language they're written in. Good programs crash cleanly AS SOON AS an unrecoverable error is discovered.

      Speaking of which, why not name what language you're talking about?

    5. Re:Creating a language that forces good code by Anonymous Coward · · Score: 2, Informative

      When I say can't crash I mean that it is impossible for the processes memory to become corrupted. This actually improves security. If the security problem is purely logical, it wouldn't crash anyway, so your argument does not hold. Now if you mean that a problem should exit when it detects an error condition, fine. But that is not the same as a program "crashing".

      In any event, this for example means that any code written in type safe language will never be susceptable to buffer overflow attacks.

      I didn't name a specific langauge because there are many languages that have these properties. C, C++ , C#, Perl, etc. are not among them. Some languages that do have these properties are SML, OCaml, Ada, Modula, Haskell, and Mercury to name a few .

    6. Re:Creating a language that forces good code by Anonymous Coward · · Score: 0

      In case anyone cares, I should have among other things, written "process' memory" and "that a program should exit".

    7. Re:Creating a language that forces good code by America+Uber+Alles · · Score: 0

      No, you can't guarantee that the logic is correct, but you can add checks to ensure your functions are behaving correctly:<BR>
      <BLOCKQUOTE>
      mult_by_two (x: INTEGER): INTEGER is
      do
      Result := x * 3
      ensure
      double: Result = x * 2
      end
      </BLOCKQUOTE>

  41. in the immortal words of Triumph... by mlibby · · Score: 1

    "no, i'm sorry, the correct answer is 'who gives a @#$@?'"

    in spite of the mix-up about which part of the Greater Fruitbasketland area you live in, you obviously still receive your magazine. hooray for ZIP codes.

    [just defending MIT's honor (just kidding... i'm sure the addresses/mailings are handled by some separate contractor)]

  42. why this kind of article is great. Re:MSNBC by leuk_he · · Score: 2

    At the very bottom of the page:

    MSNBC is optimized for
    Microsoft Internet Explorer
    Windows Media Player


    Reminds me of the GPL bashing story that was hosted on a linux machine.

    1. Re:why this kind of article is great. Re:MSNBC by uncoveror · · Score: 1

      Did you notice how much time this MSnbc article spent singing the praises of Microsoft's efforts to fix software problems? It doesn't even mention in passing any other companies trying to fix these problems, but takes stabs at Oracle and Network Associates. This article was about 30% real news, and 70% an ad for Microsoft.

      --
      The Uncoveror: It's the real news.
  43. what poor design decision? by AdamBa · · Score: 2, Funny
    How was Code Red a "poor design decision" on Microsoft's part?

    - adam

    1. 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?

    2. Re:what poor design decision? by AdamBa · · Score: 2
      Code Red was a buffer overflow exploit as far as I know, not an Outlook executing code problem. And what does this have to do with the security architecture in Windows?

      Code Red didn't attack Mac/Unix because it wasn't designed to.

      - adam

    3. Re:what poor design decision? by cball2k · · Score: 0

      ...geee, could it be that the virus writers targeted a microsoft product, could it be that those same virus writers prefer *nix and thus don't write virus's for it, could be...

      virus's have been around longer then microsoft, and most were writen for UNIX, now they have the "I HATE MICROSOFT" bandwagon to spur their writing to attack MS software...

      the statement of blaming the application writer for the virus writen by the VIRUS WRITER, is the same as blaming the gun for the shooting, instead of blaming the PERSON that pulled the trigger...

      ...the problem is the virus writer, not the OS or the APPLICATION...

      --
      karma, hah...
    4. Re:what poor design decision? by NanoGator · · Score: 2

      "How was Code Red a "poor design decision" on Microsoft's part?"

      Because everybody knows that Jolt has more energy.

      --
      "Derp de derp."
    5. Re:what poor design decision? by egreB · · Score: 1

      Sorry, I thought Code Red was a Outlook problem. Anyway, my point still stands - the software attacked has design flaws. The security architecture in Windows kind of reflects the security design on most of Microsoft's products, IMO. There must be a reason for why Microsoft's products is clearly the most attacked product range. *nix has its share of problems, but not as many. Worms (or viruses or whatever) like Code Red, which attacks IIS, we see all the time in a more or less expanded degree. AFAIK, there has been no worms that has caused as NEAR as much damage on any other platform than Microsoft's.

    6. Re:what poor design decision? by Anonymous Coward · · Score: 0

      Please do us all a favor and shove your bullshit excuses up your ass. Every single email virus is due to Microsoft's stupid design decisions. They're Microsoft's fault just as much as the virus writers'. Code Red et al are due to sloppy Microsoft coding. Exonerating Microsoft is completely fucking absurd, and everyone who isn't an astroturfer or a troll knows it. Finally, care to present some evidence that all those virus writers use Unix? Me, I'm betting most of the macro virus script kiddies use Windoze, as they're almost as mentally incompetent as you are.

    7. Re:what poor design decision? by AdamBa · · Score: 2
      I agree 100% there is bad design in Microsoft software -- letting Outlook run executables by default (and the fact that you only have a black/white choice of doing so or not doing so), the fact that most people run as a user with high privilege, etc. And, it's also true that Microsoft has some problems, particularly with how testers are evaluated and the developer-tester relationship, plus not making their source available, that leads to more buffer overflows (and more damaging ones) than other software.

      It just so happened, however, that the example linked to and described as "poor design" was actually a bug. That was all I wanted to point out.

      - adam

    8. Re:what poor design decision? by kz45 · · Score: 1

      Please do us all a favor and shove your bullshit excuses up your ass. Every single email virus is due to Microsoft's stupid design decisions. They're Microsoft's fault just as much as the virus writers'. Code Red et al are due to sloppy Microsoft coding. Exonerating Microsoft is completely fucking absurd, and everyone who isn't an astroturfer or a troll knows it. Finally, care to present some evidence that all those virus writers use Unix? Me, I'm betting most of the macro virus script kiddies use Windoze, as they're almost as mentally incompetent as you are.

      Then linus should be to blame when people's systems get fucked over due to a SYN attack. (which I might is still a problem with many unices, even with syn-cookie protection).

    9. Re:what poor design decision? by Anonymous Coward · · Score: 0

      No, dipshit, the people who designed the TCP protocol are responisible for that one. Or were you planning to blame Linus for Windows' vulnerability to SYN floods? Any stack which implements TCP is going to be vulnerable to SYN floods without using SYN cookies or some other band-aid solution. You're going to have to try a little harder to find a stupid security decision that Linus actually made. Since that would require you to exercise your feeble brain, I don't expect to actually see you come up with any proof, since you've never bothered to before.

      The stupid design decisions which have allowed email viruses to cause billions of dollars worth of DoSs, on the other hand, are entirely Microsoft's. No other email client/server/OS is vulnerable, unless they've been stupid enough to implement VBS macros for compatibility, along with the various other anti-security decisions Microsoft made.

      Fucking lying cretin.

    10. Re:what poor design decision? by kz45 · · Score: 1

      No, dipshit, the people who designed the TCP protocol are responisible for that one.

      I might add that BSD doesn't have the SYN attack problem.

      The stupid design decisions which have allowed email viruses to cause billions of dollars worth of DoSs, on the other hand, are entirely Microsoft's. No other email client/server/OS is vulnerable, unless they've been stupid enough to implement VBS macros for compatibility, along with the various other anti-security decisions Microsoft made.

      if we're going to start shifting the blame, how about on the real culprit...the person who wrote it.

  44. 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.
  45. That is their only reply for several reasons by Anonymous Coward · · Score: 0

    1) Slashbots cannot fix problems themselves.

    2) We productive members of society have better things to do than to look at POS slash code. Slashbots don't.

    3) They, subconciously knowing #2 but dare not admit it to themselves, feel that they shut us up with that mantra. After all, we DO have better things to do.

  46. The joke is probably on the Post Office by analog_line · · Score: 5, Interesting

    Knowing a bit of how mass mailings work, specifically how you figure out who is where through zip codes, the actual city that gets printed on things mailed to you in that fasion is determined by checking the Post office database, usually through a program such as AccuZip.

    Lots of times, the city the post office has you in isn't the city you actually live in, but it will get to you all the same, because the Post Office can't assign multiple municipalities to a single zip code. They probably picked the small town because it didn't have any other zip code, or whatever criteria they have. Don't blame the software for something that isn't it's fault. It's just doing a query based on the official database.

    1. Re:The joke is probably on the Post Office by FortranDragon · · Score: 2

      Lots of times, the city the post office has you in isn't the city you actually live in, but it will get to you all the same, because the Post Office can't assign multiple municipalities to a single zip code.

      ZIP codes are based on Post Office locations. Thus a particular ZIP code can be assigned to multiple municipalities.

      I used to have to deal with this problem when 'geocoding' addresses for a mapping program that dealt with Real Estate locations. You simply can not be sure in all cases that a ZIP code maps to a particular city or county.

      --
      "All the darkness in the world can not quench the light of one small candle."
    2. Re:The joke is probably on the Post Office by A+coward+on+a+mouse · · Score: 1

      The Post Office most certainly can assign multiple municipalities to a single zip code. Do a search at the usps on ZipCode 01002. You'll find that it is valid for Amherst, Cushman, and Pelham, and known to be in use (incorrectly) for South Amherst.

      --
      If you mod me down, I will become more powerful than you can possibly imagine.
  47. how complex are cars vs. operating systems by AdamBa · · Score: 2
    First of all, Microsoft software does stay up for 99.99% of the time for a sample of typical users -- typical users who don't aggressively look for remote exploits.

    Anyway, I am wondering how complex a car would be considered vs. an operating system. For example is an OS roughly as complex (therefore as hard to get right) as a car...or is it more like 10 times as complex...or maybe 100 times as complex? I would say it is more like 100 or 1000 times as complex.

    Remember cars aren't perfect either. Almost every car Consumer Reports tests has a few "sample defects" in it (something they could have worked out in the manufacturing process with more time/money/care/design), plus they have "bad design" (unclear controls, etc), and some of them have real "bugs" (occasional stalls, hunting for a gear), and then some have real major bugs that result in recalls.

    - adam

    1. Re:how complex are cars vs. operating systems by qorkfiend · · Score: 1

      A car is made up of many moving parts, all put together to make a car. An operating system is made up of many functions, all put together to make an operating system.

      But keep in mind that a car was not built to drive other cars.

    2. Re:how complex are cars vs. operating systems by Anonymous Coward · · Score: 0

      What part of a OS makes it more complex than a car? It seems to me you have too high a view of the software industry, because cars are roughly the same complexity as far as I can tell.

    3. Re:how complex are cars vs. operating systems by sgage · · Score: 2

      " First of all, Microsoft software does stay up for 99.99% of the time for a sample of typical users -- typical users who don't aggressively look for remote exploits."

      I am a consultant that supports lots of Windows users, and I'm here to tell you that the above statement is bullshit.

    4. Re:how complex are cars vs. operating systems by AdamBa · · Score: 2
      It's not a particular part, it's just the number of parts.

      How complex is an engine...maybe as complex as a virtual memory manager? Who knows, just an example. But the engine is one of the most complicated parts of a car, and a VMM is just one of many complicated parts of an operating system.

      You can also think of what a car can do. A car can be used to drive people down a road. Now compare that to all the things an operating system can do.

      - adam

    5. Re:how complex are cars vs. operating systems by HeyLaughingBoy · · Score: 1
      Anyway, I am wondering how complex a car would be considered vs. an operating system. For example is an OS roughly as complex (therefore as hard to get right) as a car...or is it more like 10 times as complex...or maybe 100 times as complex? I would say it is more like 100 or 1000 times as complex


      Bear in mind that cars have computers. While most of those computers aren't running anything more complex than a state machine, some of them are running real, bona fide Operating Systems. So, in light of that, consider your question again. When was the last time your car's engine management computer failed?

      Software can be engineered to extremely high standards of quality, the problem is that most of the stuff we're complaining about (office automation) has to meet reliability requirements less stringent than a child's toy, so most S/W houses ship the first working thing they can. When people *REALLY* start complaining -- deaths in large numbers attributable directly or indirectly to software, or massive business losses due to security breaches or software crashes, only then will there be a real outcry for high quality. Until then we're pretty much just preaching to the choir.
  48. 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: 2

      In short, software "sucks" because our colleges are allowing mediocre students to slip through the cracks into the professional world.

      Wrong.

      Let's try the Socratic method.

      Suppose all of the CS departments suddenly cracked down, and only the most capable students could graduate? What would happen then? Keep in mind that the demand for software would not decrease.

      --
      Note to ACs: I usually delete AC replies without reading them. If you want to talk to me, log in.
    3. Re:Well, what do you expect? by Cereal+Box · · Score: 1

      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?

      Now, I've neglected to mention the role management plays in crappy software, but that's only due to my lack of firsthand experience in that area. Still, I think boneheaded CS graduates have their own place in the equation. Why can't CS curriculums do a little more weeding out? There's plenty of demand for the things EEs and MEs do, and EE and ME are much more stringent curriculums than CS and yet no harm has come from that.

    4. 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.
    5. Re:Well, what do you expect? by Cereal+Box · · Score: 1

      A very good response. Thank you. If I could moderate this article I'd give you a few points.

  49. 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.
  50. Companies will die by Colossus202 · · Score: 1

    Lots of smaller applications companies that are just hanging on right now will die if strict standards are put in place.

    Development companies are already in trouble: fewer applications are being built and sold today, there are no new "killer app" categories and Microsoft tends to embrace and extend any new features customers might want. Lots of companies are just making it by.

    Do they deserve to die? Many do, since they're being run just as badly as the article states.

    But I wonder how many will survive. Will we just get a few huge BigCo's that have the deep pockets for the kind of remedies suggested? Won't be as interesting to be a software engineer then, I think.

  51. Is anyone suprised now? by ebuck · · Score: 1

    I'm sorry, but unless I'm severly mistaken the author seemed to think that C# prevented the coding of certain errors.

    I'll give C# it's due, it does prevent some very basic coding errors, but with it's backward compatibility enhancements (aka raw pointer artithmetic) it's not nearly as foolproof as it could be, but that's missing the issue.

    The answer does not lie withing language A or B (heaven bless all who know B). The answer lies in an engineering practices that design software for maintainance. Such processes are only in their infancy and are usually ill-adapted to dealing with the ton-of-code(tm) that already exists in the market.

    I like the newer engineering practices that are coming down the line, but how can I apply them to my 10 year old project with a mix of C / Fortran / SQL / C++ / sh / csh / Tcl / Tk / VBasic which was designed emphasizing output over maintenance?

  52. Ever wondered why the article... by borgheron · · Score: 1

    seems to stick just to MS products for it's examples? I don't know about you guys, but I've only seen software which locks up and takes my whole machine with it from MS.

    The only time GNU/Linux ever goes down is when I shut it down.

    GJC

    --
    Gregory Casamento
    ## Chief Maintainer for GNUstep
    1. Re:Ever wondered why the article... by muon1183 · · Score: 1

      GNU/Linux is actually crashable. I did it recently while trying to set up XWindows. The keyboard locked up, the mouse flew to the top-right corner of the screen, and everything decided to stop working. Had to restart the entire computer.

      --

      There's no sig like SIGSEG
  53. an article by MSNBC? by kipple · · Score: 2

    ....what is that, some kind of sense of humour? I mean... it is MicroSoft NBC, right? Are they facing reality or what?

    --
    -- There are two kind of sysadmins: Paranoids and Losers. (adapted from D. Bach)
  54. Forcing Good Code by Anonymous Coward · · Score: 0

    "there are other solutions, like creating a programming language that forces good code;"

    Is this on the line of "get rid of GOTO, it is evil"? What we don't need is a programming language that forces everyone's idea of "good code" on everyone. We need programming languages that are flexible enough to handle different programmers and different tasks.

  55. 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.

  56. "Cause" and "blame" culture by PhilHibbs · · Score: 1
    In the last 15 years alone, software defects have wrecked a satellite launch, delayed an airport opening for a year, destroyed a Mars mission, killed four Marines in a helicopter crash, induced a U.S. Navy ship to destroy a civilian airliner, and shut down ambulance systems in London, leading to as many as 30 deaths.
    And if there had been no software, what would the situation have been? None of the above would have happened - but there would be no Mars missions, no satellites, dramatically reduced air travel (not that that's entirely a bad thing), etc.- ie. software didn't just cause problems - it enabled all the situations in which a tiny number of problems occurred. It's the same with sueing a hospital - if the hospital hadn't tried to treat you, you'd probably be in a box anyway, so they didn't usually make the problem worse. Of course sometimes they do make it worse, but failing to make it better should not be a litigable situation. Especially not in a public health system like the UK.
  57. MSFT valiantly leads the way by GT_Alias · · Score: 1
    Microsoft, stung by charges that its products are buggy, is publicly leading the way.

    Leading the way where? Speak of the blind leading the blind...

    And here I was thinking *BSD's whole principle was solid, (mostly) bug-free code. Guess they aren't "publicly" leading the way, so they don't count.

  58. Force authors to disclose! by Britney · · Score: 2
    When an author produces a book, what is presented is not the source but the interface.

    You can read all my screens, printouts and help pages, but you don't need to see the code to use the application.

    In the same way, you don't get to see authors' notes and earlier drafts.

    What you get is what you see.

    --

    --
    (if you're still looking for the point, it was back there, in the post. </sig>)
    1. Re:Force authors to disclose! by Rivard · · Score: 1

      Yes, but when an author writes a book that is non-fiction he usually has souces, citatations and peer-review. He usually has a plan (an outline) and an editor who tells him what needs fixed.

      What we see in this article is that the software writers have too little or none of these things: they don't have peer-review (only consumers' trials and errors), they don't have an outline (only envelopes), they do not even have an editor at the end (only a pretty cardboard box to be filled), nor do we have an index to see how they came to their conslusions (only a README.txt of possible conflicts and a headache).

  59. great article (not!) by blueskies · · Score: 1
    Incredibly, Humphrey says, the design for large software projects is sometimes "nothing but a couple bubbles on the back of an envelope."

    Excuse me? I don't know how everyone else does large software projects, but I don't know of any company that designs these large software projects on the back of envelopes. This article is a flawed, and dumb article about software engineering. Software is getting better not worse (ok, that's argueable. But software development proceedures are getting better). Sure we can rip on Microsoft's applications, but how many projects were 12 million lines of code in size 10 years ago? Most software they discuss is relatively new software. Old tried and true software is really quite solid. Has vi every crashed on me? Not once. Bleeding edge software is quite complex. What do you expect? There is no silver bullet, but as the profession grows, more and more tools are developed. We currently use Quantify to profile our C code and Boundschecker to check for memory leaks and dangling pointers. These tools continue to get better and better. The main problems the article harps on stem from poor development processes. Books such as "Writting Solid Code" and "Code Complete" cover much of these issues.

    And of course the arguement that open source produces quality code through peer review is not even mentioned in the article.
  60. 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 Anonymous Coward · · Score: 0

      And don't even ask me to name the company [...]

      Does it begin with "Micro" and end with "soft"?

    2. Re:It's not just 1.0 versions.. by Anonymous Coward · · Score: 0

      Sounds more like Novell Groupwise.

    3. 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
    4. Re:It's not just 1.0 versions.. by Zamfir · · Score: 1

      this are all really good points. estimating work on any large software project is extremely difficult and almost always just comes down to guessing anyways. a developers estimate isnt necessarily more meaningful than a managers with no hands on development experience, if that manager has lived through enough projects to estimate effectively enough. developers notoriously under estimate

    5. Re:It's not just 1.0 versions.. by estoll · · Score: 2, Interesting

      I do agree with you about developers underestimating; however, I find that developers underestimating is a direct result of management not giving the developers enough time to plan a project. When a project hasn't been planned, it is nearly impossible to forsee all the obstacles ahead for baseing an estimate. On the other hand, if the project was fully designed on paper and documented before anything was implementated, the implementation would go much quicker and there would be a base document for developers to look back on.

      Think about building a house. It is nearly as complex as building a software application; however, would you ever let a construction team start building your house without having a set of blueprints? This is my point. How can management tell their team to start buildling without taking the time to draw up the plans. I can understand managing a project without having the development experience but in that case, that manager must know enough to let his/her team take the time to do the job the right way, including design and implementation.

      And to further my point about requirements gathering. The manager usually gives an extremely vague spec to the engineers. In terms of building a house, this spec is usually along the lines of--
      Requirements--
      1. Kitchen
      A. Sink
      B. Refrigerator
      2. Living room
      A. Windows
      B. Fireplace
      3. Bathroom
      A. Sink
      B. Toilet
      C. Shower
      4. Front door
      A. Door knob

      The developer would look at a plan like this and ask--
      What about?
      A. Bedroom
      B. Lights
      C. Plumbing
      D. Electricity
      E. Roof
      F. Walls
      ETC

      When you ask these questions, the manager is like, yeah of course we need all those and looks at you like you're stupid and says the foundation better be done by next week (which isn't in the spec mind you).

      Now, why can't we spend a little more time thinking about this project and actually design it before jumping in? And why can't management see that they are the root cause of problems on a software project? The main reason is because software development isn't something you can see. When you build a house, you can go on-site and look at everything that is going on. With software, all you can do is scroll around a text window trying to decypher code. Maybe, it shouldn't be the job of the manager to evaluate progress on a project. Maybe managers need to utilize their lead developers better and actually listen to them for a change.

      --
      http://www.askthevoid.com
    6. Re:It's not just 1.0 versions.. by Anonymous Coward · · Score: 0

      what was the last "x.2" release of anything from MS?

    7. Re:It's not just 1.0 versions.. by elandal · · Score: 2
      Mandatory unpaid overtime. 15 hours a week.

      I knew that US was weird, but is that even legal?
      OK, Europe is kind of conservative, socialist, slow-moving beast, and while in some cases Finland may be 'advanced' for a European country, in some other cases it might not be so.

      However, while I don't like all the restrictions and legal concepts related to work in Finland, I do understand reasonings behind them - whether I agree or not. And I do agree that unpaid overtime should not be legal. Oh yes, it's done quite a lot, but it's no more legal for that. Mandatory overtime is not legal, either.. Except for one special case ('hätätyö' - roughly translates to "people will die and the company will go bankrupt if You don't do this now!") where the employer may recall people from vacations where possible and so on, but in that case it's automatic +100% plus whatever required additional payments apply (natinal holidays and sundays are in most fields +100%, as is night unless otherwise agreed when the field is such where night-jobs are the norm).

      Exceptions for overtime pay exist, but are limited to management and specialists who may, in their contracts, have provision where overtime is compensated in the basic salary and no extras that would apply for standard employees will be paid.

      Then again, if overtime is "suggested" to an employee and he doesn't want to, while the employer legally can't force overtime or fire the person for not working overtime, there are enough ways to get rid of "un-cooperative" people that it can be done. Such practice fast leads to not getting good pesonnel, though.

      Oh yes, 15h/wk would in about 8 weeks get to the 'yearly overtime limit' and in some 8 more weeks (with standard issue permit by govt) to the maximum yearly overtime limit allowed by the law without special permits - and even with permits, I think maximum yearly overtime is 320h. Which is, afterall, some 19% constant overtime - or quite a lot.

      For clarification: I've worked unpaid overtime every now and then. Mostly it's just working a little bit longer than standard workday and not marking up the extra 0.5-1h or so.. What I don't do is: extra days (eg. 6-day weeks) or long days (>10h) without extra compensation, however I'm mostly happy to compensate by getting days off for the hours as counted - for as long as the situation doesn't get out of hand ("no, not this week either, and not the next, and.. say, howabout in september...?") at which point I'll take the cash, thank You very much, and no, I won't be here on saturday this week, and not the next either, until I get a guarantee for at least a long weekend sooner than in september.
    8. Re:It's not just 1.0 versions.. by RailGunner · · Score: 2
      Sadly, yes, I was a "salaried exempt" employee, so I did not get overtime pay all.

      And I fully understand the nature of the software industry, and how in some cases you need to put in extra effort to get something done to land a sale, and I have no problem with doing that for a week.

      The problem at my old job was that we were on 15 hours a week of mandatory, unpaid overtime with no vacation requests accepted for 10 months, and I finally got a new job and quit after 8 months... which is partially my fault for not getting a different job sooner.

      In case you're wondering... I'll never work salaried again. I'm now an hourly contractor, so not only do I make more money, but if I work overtime I get time and a half for it. I also get 12 days of vacation a year - and they can't fire me without a months notice unless I do something illegal. It's not for everybody, but I'm much happier as a contractor then I ever was as a slave.

  61. You forgot 5 and 6 by Art+Tatum · · Score: 5, Interesting
    5. Fixing most of the problems requires fundamental architectural changes that would be expensive and would take two or three years (a la Mozilla). Being a for-profit corporation, you can't afford to wait that long or spend that much money.

    6. Fixing even the shallow defects would break backwards compatibility and the customers all swear they will go to your competitors.

    1. Re:You forgot 5 and 6 by Anonymous Coward · · Score: 0
      WARNING! Mr. Art Tatum isn't the guy who plays the piano.

      He's some dude that thinks the Boy Scouts of America should have nuclear weapons!

  62. Contraraian view by smittyoneeach · · Score: 2

    People say software is bad because they are arguing a strictly technical view.
    My observation of software projects in FAA and DOD realms is that the projects are focused on
    maintaining a problem, not solving it.
    Sure, the code itself blows chow; but the software accomplishes its mission of
    employing the maximum possible amount of people.
    All this disgruntlement is indicative of immature perspective.

    --
    Get thee glass eyes, and, like a scurvy politician, seem to see things thou dost not.--King Lear
  63. Bill Gates as a Poster Child by 4iedBandit · · Score: 1
    There is a light at the end of the tunnel, believe it or not, and it's Bill Gates.

    I should know better by now, but it still knocks me for a loop that popular media still idolizes Gates and Microsoft. In the same article where they state that Microsoft has cost consumers billions they go on to say that Microsoft will be their savior!

    Give me a fscking break!

    This is the same problem that's gone on for years. Microsoft has been so successful at integrating themselves into the psychie of America that no one thinks there could ever be an alternative. Here's what we have to thank Microsoft for:

    • The Blue Screen of Death.
    • Lousey human interface design.
    • Draconian EULA.

    Thanks to Microsoft crashing computers and daily reboots are accepted as normal by the public! How many Slashdotters can testify that they've had to reboot servers because Management, clueless though they usually are, has bought the idea that servers just have to be rebooted every now and then to function? I sure as hell can. Software crashes and Operating System crashes mean that something is wrong! Fix it damnit! But the first thing Microsoft will have you do if you call them for support is reboot your server. "Oh, you're using that version of Windows? That's your problem, the latest version is so much better." I hear this so often it make me want to puke. Give me a stable OS the first time around. Give me stable applications the first time around. Up time should be measurable in months, not hours. Thank you Microsoft!

    Don't tell me that the software is too complicated, that's just an excuse for bad practices. I've got an installation of NetBSD running at home that's been running ever since I moved in. Don't tell me that Free OS' can do this because they aren't full featured. I've got an OS X box which is in the same boat. Uptime measured in months and it's a commercially available OS.

    Face the music people, interface design counts and Microsoft has always been behind the curve. Apple's studied it an their results show. Adding a plethora of widgets does not make a good interface. Moving those widgets around constantly means that people have to relearn every new release. Consistent interface design counts. Most people are users, not geeks. They just need it to work reliably and repeatably. When systems work reliably and repeatably you don't have to think about how you do your work, you can just do it.

    Finally, the next revolution that Microsoft is bringing the masses, software leasing. No you don't own the software and if you don't continue to pay them money annually your software stops working. Your data will be held hostage. Let me repeat that, your data will be held hostage! If you want access to your data, pay up. Sound far fetched? It's not. This is the direction they've been moving the whole time.

    You want to know what steams me the most? It's our fault. Yeah, that's right. The geeks in the trenches. Most of us just accept what comes out, thinking that we don't have a choice but to submit. What a bunch of fscking sheep. Get involved with your management and make yourself part of the decision making process. If you let yourself be rolled then you will be. If you submit to bad software then who's fault is it really?

    Is this a rant? Definitely. Is this a troll, possibly. Do I believe I don't have to submit to, or thank, Microsoft for anything? You bet your fscking life I do. No one holds my data hostage.

    Gates and Microsoft are not the saviors. They are part of the problem and as long the public lets them get away with it, they will.

    --
    "The avalanch has already started, it is too late for the pebbles to vote." -Kosh
    1. Re:Bill Gates as a Poster Child by SirSlud · · Score: 2

      The problem is that American culture raises people to worship the false idols .. the successful capitalists, which, according to some, made good products, but more often 'played the game right' (not even a reference to the quality of product their company created!) or 'exploited consumers'.

      But just watch. American culture encourages worshipping the successful, and assuming all those in have-not situations (or 2nd best, for that matter) suck! There's not much that can be done about this - America itself must do many questionable things to remain #1, and so it would be contradictive for its people and voters to believe anything but #1 was the best way. Thats why MS could go around lighting people on fire, and they'd still be held up as 'the best way to do things' and 'the most likely saviour' when it comes time for us to eat our deserts. They have the most money, and for reasons of safety and security, people will side with them and assume that the downsides of their software are either unavoidable or, even more laughably, that their upsides outweigh their downsides.

      I don't see this changing anytime soon, unfortunately. Apple is subject to a huge stigma for being 'elitist', Joe America's most hated trait, and Linux is still too complicated for the Average User.

      The best part is there might be a fictional 4th, 5th, 6th option that may have existed had people not been so quick to defend MS's full and zealotous use of the advantages capitalism gives to those who've already achieved power and leverage. Success seems to breed laziness, and MS is a good example of that .. not that they were ever top notch to begin with, but they've been able to afford to pull wool over peoples' eyes for years, and since they are #1, people are all too happy to assume that its for a good cause.

      --
      "Old man yells at systemd"
    2. 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...

  64. Shades of grey... by alaffin · · Score: 1

    A lot of people complain about how buggy software is. And I will stipulate that yes:

    (a) Most software produced has scads of inital 'bugs' oozing out of every oriface you can think of.

    (b) It's partially due to the fact projects are rushed and coders tend to be careless (My favorite phrase: "Oops... I was supposed to put a semi-colon there")

    But I think that if you check it out, alot of these so called bugs are due to people misusing their computers (or someone else misusing their computers). What percent of all bugs that need to be patched are "security holes" that are exposed by people who enjoy trying to break into someone elses system?

    A lot of people come out and say that we wouldn't tolerate so many problems in our cars/airplanes/nuclear reactors. Tell me, when was the last time that having ones tires slashed was blamed on the guy that made the car? Or how about car bombs? Are they a defect? How about the guy who gets drunk and drives the car? People die in these cases, but the problems are caused by the end user, not by the programmer.

    Programmers are partially at fault. Big business and the drive to survive everyone else is at fault. But lets not forget that most problems start with the nut behind the keyboard.

  65. strangest quotes in the article by AdamBa · · Score: 2
    Microsoft's popular Visual Studio programming software is an example, to Downes's way of thinking. Simply placing the cursor over the Visual Studio window, Downes has found, invisibly barrages the central processing unit with thousands of unnecessary messages, even though the program is not doing anything. "It's cataclysmic. ... It's total chaos," he complains.

    HUH? Sending too many messages is a problem. Wow. Amidst all the Outlook viruses and buffer overflows, that's the first I heard of that. This guy must have an ordered life.

    "The attitude today is that you can write any sloppy piece of code and the compiler will run diagnostics," says SRI's Neumann. "If it doesn't spit out an error message, it must be done correctly, right?"

    I've never met a single programmer with that attitude since I was in Intro CS class.

    Just as houses are built with standardized two-by-fours and electrical fittings, component-based programs are built out of modular, interchangeable elements: an example is the nearly identical menu bar atop every Windows or Macintosh program. Such standardized components, according to Wallach, are not only good engineering practice, they are "the only way you can make something the size of Microsoft Office work at all." Microsoft, he says, was an early, aggressive promoter of this approach -- "it's the single best engineering decision they ever made."

    No real idea what he is talking about, anyone else?

    . The most widespread example is Windows itself, which Bill Gates testified in an April session of the Microsoft antitrust trial simply would not function if customers removed individual components such as browsers, file managers or e-mail programs. "That's an incredible claim," says Neumann. "It means there's no structure or architecture or rhyme or reason in the way they've built those systems, other than to make them as bundled as possible, so that if you remove any part it will all fail."

    It baffles me when people claim this shows no design in Windows. Gates did not say if you took out the email program it wouldn't work, just that if you took out IE it wouldn't. That's because it was designed that way.

    At Microsoft itself, according to Amitabh Srivastava, head of the firm's Programmer Productivity Research Center, coders are working with new, "higher-level" languages like C# that don't permit certain errors.

    No idea what the PPRC is (new name for the marketing department maybe?), but trust me Windows XP is not being re-written in C#.

    "The mindset of the industry is to treat quality as secondary," says Cem Kaner, a computer scientist and lawyer at the Florida Institute of Technology. Before releasing products, companies routinely hold "bug deferral meetings" to decide which defects to fix immediately, which to fix later by forcing customers to download patches or buy upgrades, and which to forget about entirely. "Other industries get sued when they ignore known defects," Kaner says. "In software, it's standard practice. That's why you don't buy version 1.0 of a program."

    Deferring minor bugs is standard practice. Otherwise software would never ship. So what does he want? Nice paranoid idea though that bug deferral meetings are actually fiendish plots to generate future revenue with updates and patches.

    - adam

  66. Re:Force good code ... get rid of Code Artists by Anonymous Coward · · Score: 0

    Many years ago a programmer told me "I express myself through my code." I've since seen and heard something similar in most coders. Running a software project is like herding cats. So many "artists", so few engineers. When you get rid of the artists you'll see solid code. When you get artistic engineers you'll get awesome code.

    And how do you do all that? Start a self-regulating body (with teeth) like any true profession. Doctors have them. Real engineers have them. So why don't software engineers put their own together.

  67. I need to be at a computer. by pauljlucas · · Score: 1
    This is why you need to be able to write code on paper.
    I agree with everything you wrote except the above quote. If I do say so myself, I write really good code, not only correct and functional, but well formatted and documented. (You can see for yourself.)

    But I don't write code well at all on paper. I can design code in my head or on a white-board, but to actually write the code, I need to be at a computer just as I would imagine that many composers need to be at a piano.

    --
    If you reply, do so only to what I explicitly wrote. If I didn't write it, don't assume or infer it.
    1. Re:I need to be at a computer. by IndependentVik · · Score: 1

      But I don't write code well at all on paper.

      Those interested in reading more discussion on the merits of writing code without a computer should refer to this Ask Slashdot feature from earlier this month.

      --
      I'd suggest you don't use Slashdot as your only news source, or you will suffer permanent brain damage.
    2. Re:I need to be at a computer. by xenocide2 · · Score: 1

      Actually, a certain famous composer whose name I've forgotton actually kept writing good music after he went deaf. Not much reason to use a piano after that. I suspect that your need to write code at a computer is psychological; you've always written code on a computer and now its highly associated with your ability to write code. Its like my little brother: when he got a TV in his room, for the first 6 months or so, he used to fall asleep without turning off the television. Now he can't sleep without it on. There's a psychological term for this sort of association, but I've forgotten it as well.

      --
      I Browse at +4 Flamebait

      Open Source Sysadmin

    3. Re:I need to be at a computer. by Anonymous Coward · · Score: 0

      that was Beethoven, and you may be right, it may be psychological. but then i doubt if a coder would stop writing code, if he is marooned on an island with no comps. kinda like "beethoven effect"

    4. Re:I need to be at a computer. by Wiener · · Score: 1
      ..whose name I've forgotton...
      ...I've forgotten it as well.

      The name for what you have is "senility" ;)

    5. Re:I need to be at a computer. by Anonymous Coward · · Score: 0

      I agree that putting code on paper is a stupid idea (I imagine that the posted meant the design and not the code). Stopping to think about the design before you type one letter of code is a very good practice. If you are going off of a well thought out design, the coding part isn't that difficult and updates and improvements on that code are much easier.

    6. Re:I need to be at a computer. by pauljlucas · · Score: 1
      I suspect that your need to write code at a computer is psychological
      Nope. It's simply far easier to do: to edit (cut, paste, reorganize). If I forget to declare a variable, I simple open a line and insert it. On paper, I have to scribble in the margin. After several such scribbles, the paper is a mess and I can't easy see the structure any more.
      --
      If you reply, do so only to what I explicitly wrote. If I didn't write it, don't assume or infer it.
  68. Contrarian view by Anonymous Coward · · Score: 0

    Please forgive bug in parent Subject: line.

  69. Software Life Cycle by Neil+Watson · · Score: 1

    Someone once told me:

    Software doesn't just appear on the shelves by magic. That program shrink-wrapped inside the box along with the indecipherable manual and 12-paragraph disclaimer notice actually came to you by way of an elaborate path, through the most rigid quality control on the planet. Here, shared for the first time with the general public, are the inside details of the program development cycle:

    1. Programmer produces code he believes is bug-free.
    2. Product is tested. 20 bugs are found.
    3. Programmer fixes 10 of the bugs and explains to the testing department that the other 10 aren't really bugs.
    4. Testing department finds that five of the fixes didn't work and discovers 15 new bugs.
    5. See 3.
    6. See 4.
    7. See 5.
    8. See 6.
    9. See 7.
    10 See 8.
    11. Due to marketing pressure and an extremely pre-mature product announcement based on over-optimistic programming schedule, the product is released.
    12. Users find 137 new bugs.
    13. Original programmer, having cashed his royalty check, is nowhere to be found.
    14. Newly-assembled programming team fixes almost all of the 137 bugs, but introduce 456 new ones.
    15. Original programmer sends underpaid testing department a postcard from Fiji. Entire testing department quits.
    16. Company is bought in a hostile takeover by competitor using profits from their latest release, which had 783 bugs.
    17. New CEO is brought in by board of directors. He hires programmer to redo program from scratch.
    18. Programmer produces code he believes is bug-free.
    19. See step 2

  70. This is a flamebait by WildBeast · · Score: 1, Flamebait

    Go ahead, remove my karma points, I don't care. I've had enough already of those idiots who keep wanting to sue everyone for anything. And if MS will actually concentrate more on security and stability instead of features and fun, then I'll go get myself a Mac. I prefer using a somewhat buggy Windows 2000 instead of a perfectly stable and secure Windows 3.1.

    Besides, no software is perfectly secure. Perhaps they should concentrate more on suing the crackers.

  71. Reminds me of this famous MS bug vs US Navy by forged · · Score: 2
    For some reason, the article reminded me of the incident with Aegis missile cruiser USS Yorktown that took place back in 1998.

    "The ship had to be towed into the Naval base at Norfolk, Va., because a database overflow caused its propulsion system to fail, according to Anthony DiGiorgio, a civilian engineer with the Atlantic Fleet Technical Support Center in Norfolk."

    Find the complete article here: Windows NT Cripples US Navy Cruiser.

    So, closed source, anyone ? :-)

  72. Excellent Article by Aknaton · · Score: 1

    I really enjoyed reading this article.

    I think that it points out something that we all know: If there is one good thing about free/open source software, it's peer review of the source.

  73. It's not a science by Anonymous Coward · · Score: 0
    t'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.

    And whose fault is that?

    Face it kiddies, when lawsuits for software quality start becoming commonplace, you'd better be able to speak the language of software engineering, quality control, configuration management, coding standards, documentation, and so forth.

    And if you think software is the one product in the US that will remain immune to litigation, please tell us why you're so deluded. Because nothing else has ever remained immune.

  74. this is confusing by RealisticWeb.com · · Score: 2
    I don't get it. Your first paragraph was making several comparisons from software to other industries, and I was about to reply and say that it's apples to oranges, but then in your next paragragh you contradict yourself by saying software is hard to compare to other products! To me that is the thing to keep in mind. You can't compare a sandwich to complex software. If you could then why is it that the open source community has yet to come up with a game that even comes close to competing with things like Diablo II or Jedi Knights II? Or why is it that GIMP is years behind the current Photoshop? I agree with the original statement that we should expect bad software when the money gap from market leader to second place is large. The big company has the money to pay a team of people to work on a project 24/7. The small company is only going to have one or two guys that are going to try to turn out somthing that looks simmilar, and the OSS people are going take thier lunch hour to reveiw some code, and not get anything real done. Writing good software, especially when you talk about graphic related, takes time, and time is money. Therefore the big company will have more time.

    <disclamer> I don't feel that microsoft nessisarily applies here because of the constant poor quality, I'm mainly talking about companies like Macromedia, Adobie, and the major game developers </disclamer>

    --
    Sigs are out of style, so I'm not going to use one...oh wait..
    1. Re:this is confusing by bluGill · · Score: 2

      why is it that GIMP is years behind the current Photoshop?

      For starters, GIMP is years younger than photoshop. I remember using photoshop 1.0 in the early '90s. Gimp is still at version 1.2.3 (latest stable). Perhaps you should compare photoshop 1.0 and Gimp 1.0.

    2. Re:this is confusing by Anonymous Coward · · Score: 0

      For what I do (net admin) a kde desktop has been superior to a windows boxen for a long time, and most users are the same way.

    3. Re:this is confusing by Anonymous Coward · · Score: 0

      Um, gimp's behind photoshop because very little has been done on it in the past several years. The writers aren't paid to work on it, you see.

  75. The documentation. by Greg+Merchan · · Score: 2

    From what I've seen, when it comes to documentation, whether it be long or short, (most) developers do not:
    have it,
    know where to get it,
    want it,
    read it,
    understand it.

    Maybe this has something to do with why (most) software is so bad?

  76. Kinda ironic..... by i_want_you_to_throw_ · · Score: 1

    That MSNBC is criticizing the "MS" in MSNBC.

    Could MSNBC really be the "fair and balanced" newschannel that others claim to be?

    Probably not.....

  77. A Fix to the Problem by medcalf · · Score: 2

    It would have been nice if the article had delved more into licensing programmers as engineers and the associated affects on liability. In the absence of licensing, liability would be a nightmare.

    However, you could create a legal (ie, government-granted) license to engineer software. If the design, as well as some proportion of the testing and coding, of a program were done by licensed engineers, that program would be able to carry a certificate to that effect. You could also exempt from liability programs that made the source code available for review before user purchase of the product.

    The government would require, as part of the law, that after some date all government software purchases would be of certified software only, or of open source software that had been reviewed and tested by a licensed engineer, who accepts liability for the product.

    The market would quickly take care of the issue. Since only software carrying the certificate would be subject to legal liability, companies would simply not deploy software in critical areas if it did not carry this certification, and software that did carry the certification would be forced by the liability to get better. Also, developers would only be subject to liability if they claimed the certificate, so that amateur projects would not be subject to liability.

    These rules in combination, and better thought-out than I have presented them here in outline, would tend to make software better, as either the program would be open source (and thus peer reviewed) or it would be subject to liability or it would be unable to make a reasonable profit (since corporate and government customers wouldn't buy software that was not subject to liability).

    Further, there would auxiliarty benefits as well. There would be more of a push for standard components, because there would be no reason to reinvent them. (Right now, there are profit and market control reasons to do so in many cases.) There would be more examples available for new programmers to learn from. There would be less testing required by companies that purchase software (my company spends about one fourth of its project budget testing the off-the-shelf software used in the project).

    -jeff

    --
    -- Two men say they're Jesus. One of them must be wrong. - Dire Straits
  78. Re:Don't use software that sucks. by Anonymous Coward · · Score: 0

    "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."

    Like Duke Nukem?

  79. 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.

    1. Re:That's not what freddy meant and you know it by TRACK-YOUR-POSITION · · Score: 2
      I will totally fucking guarantee that given X times as much time as X people of equal skill to solve any computer problem, the single person is definitely the way to go, everytime. Stated this way it should be completely obvious.

      No matter how much damn review, extreme programming, or any other crap software engineering types come up with, once you need more than X lines of C/C++ to solve your problem, you are fucked. You will NOT catch every last memory leak, buffer overflow, type error, no matter how many fallible human beings you add to your project, no matter how much certification they all wasted their time getting.

    2. Re: That's not what freddy meant and you know it by Black+Parrot · · Score: 2


      > 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.

      I would agree with your middle sentence, though I would generalize it to "humans are the weakest link in software production".

      So all I'm suggesting with the language bit is to use languages that make the computer do some low-level tedious checking that computers are so good at and humans are so prone to errors at, especially when done in large quantities.

      And as far as I'm concerned, poor language choice is just an instance of your "attitude and approach problem". There are good reasons to use one language over another, but those are hardly ever the reasons you hear people use to justify their choices.

      In other branches of this thread the discussion has focused on static type checking. I wish programmers would learn that rigorous type definitions aren't an unrewarding chore but rather an opportunity. Think of them as constraints embedded in your code. Sure, I'd rather have a general constraint that told the compiler "no bugs, please", but since that appears to be impossible I'm happy to have whatever lesser constraints that are possible.

      In my experience the time spent in type definitions pays off many-fold over the long haul, and better yet they mean I can spend more time thinking about what my program is doing rather than getting bogged down in the details of how it does it. I offload the most tedious details by doing the declarations up front, and then concentrate almost exclusively on the abstract logic of the program. And my bugs are almost always errors in my algorithmic logic; I don't waste a minute tracking down the truly stupid stuff.

      > 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".

      Heh. I see you freudianly substituted "me" for "him". Let's leave it as an empirical question whether you would be the smartest, best programmer in the room.

      > 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.

      This conforms to our ideals -- most particularly to our anti-elitist democratic ideals -- but is it true in practice? If we were talking about highly qualified rocket scientists designing a rocket I would agree that your claim was (usually) right.

      But in the realities of the IT industry, I would guess that for a team of five or more developers the best one is probably an order of magnitude better than the group average, and for larger groups that might extend to 2-3 orders of magnitude. (The SEI only finds about a single order of magnitude between the best and the worst that they test, but remember that they are testing people in SE classes approximately equivalent to graduate level study, hardly a random selection of IT employees. I've worked on projects with people who couldn't be relied on for such trivia as changing the backup tape every day or logging out of their terminal when they went home, and yet they were expected to participate as peers in the development of complex software.)

      At any rate, I seriously doubt that your claim holds in practice in the IT industry. It's a fortunate project that has a team where all, or even half, of the members can contribute to the design instead of distracting the more qualified individuals with idiotic suggestions and writing crap code that ultimately has to be debugged by the gurus because the people who wrote it don't even understand it.

      Also, your claim is a really odd response to my post. I don't think anyone, anywhere, has ever suggested that compilers should (or even could) replace the human creativity that goes into a program. What some of us are suggesting instead is that the compiler should have to do all the 5417-shoveling, freeing humans up to focus on the creative aspects almost exclusively. (Would you rather use a 417-shoveling language, or shovel it yourself?)

      --
      Sheesh, evil *and* a jerk. -- Jade
    3. Re:That's not what freddy meant and you know it by Munrobasher · · Score: 1

      Sure you'll never catch every bug but peer reviews are more effective at catching bugs than end-user testing.

      Rob.

  80. Fat Pigs by wfrp01 · · Score: 2

    There is nothing more disingenuous in this article than Nathan Myhrvold's statement that: "Software sucks because users demand it to." Talk about shifting the blame. Take some fucking responsibility, fat pig.

    Let's do some more quotes, hmmm. From http://users.aol.com/machcu/mspquotes.html:

    The ever-growing size of software applications is what makes Moore's Law possible: 'If we hadn't brought your computer to its knees, why would you go out and buy a new one?'

    -NATHAN MYHRVOLD, Group VP, Microsoft

    The reason we come up with new versions is not to fix bugs. It's absolutely not. It's the stupidest reason to buy a new version I ever heard.

    -BILL GATES

    --

    --Lawrence Lessig for Congress!
    1. Re:Fat Pigs by smithmc · · Score: 1

      There is nothing more disingenuous in this article than Nathan Myhrvold's statement that: "Software sucks because users demand it to." Talk about shifting the blame. Take some fucking responsibility, fat pig.

      Why should he? He's right. Customers buy what's cheap, and available soonest, and works well enough. In general, it seems they're not willing to wait, or pay more, to get better quality. If you are, then feel free to buy someone else's product!

      --
      Downmodding is the refuge of the weak. Don't downmod, make a better argument!
  81. Re:You're one of those "open source community" fag by Anonymous Coward · · Score: 0

    My sentiments exactly. Good call, my friend.

    "I have lots of thinkgeek (TM) shirts and I wear them all the time so people think I'm a Linux god. It's scary when I come across someone who actually knows what he's talking about - then I get very nervous and try to keep out of sight. In my free time, I write horribly ugly and unmaintainable perl because it's the cool thing for 'geeks' to do. I claim to know both C and C++ despite only the most rudimentary grasp of C and no experience whatsoever with C++ (what are templates?) I think that it's cool to write perl and make it look as complicated as possible - not for any good, functional reason, but to impress others who are looking at it. I know absolutely nothing about good software design patterns, and disdain languages like C# and Java for being too high-level (despite never using them). My case is covered with stickers I got from thinkgeek ("FOO" and "UNIX"), so I can show it off to my friends and feel important. I don't have a programming job because I'm nowhere near good enough, but I do work as tech support operator. I tried to convince my boss to replace our company's 200+ machines with Debian GNU/Linux, but he said that users needed a standard set of powerful applications. What a moron! With the source available, anyone in the company can fix problems (or add features to) any program on their machine - I'm sure they have nothing else to do with their time. My boss just has no business sense..."

  82. Get a browser that works and it won't be a problem by Anonymous Coward · · Score: 0

    boo-yah!

  83. Oracle BAD...M$ GOOD! by Anonymous Coward · · Score: 0

    From:

    "When PC Magazine tried in 1999 to run a head-to-head comparison of Oracle and Microsoft databases, Oracle used the license terms to block it"

    Of course...MSNBC wouldn't check the Microsoft Database product...

    From:

    "e. Benchmark Testing. You may not disclose the results of any benchmark test of either the Server Software or Client Software to any third party without Microsoft's prior written approval."

  84. 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.

    1. Re:Kombat's Law: by 1010011010 · · Score: 2

      .... which brings us back to Newton:

      "Fuckage increases with time."

      --
      Napster-to-go says "Fill and refill your compatible MP3 player", which is a lie. It's not MP3. It's WMA with DRM.
    2. Re:Kombat's Law: by mjh · · Score: 2
      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.

      Right. And if you buck this trend you get crucified as being behind the times, or way slow on delivery. Personally, I'm glad that debian and mozilla work hard not to let the pressure for releases impact the quality of their product.

      Cheers, - Mark

      --
      Key to financial independence: Spend less than you earn. Save and invest the difference. Do it for a long time.
    3. Re:Kombat's Law: by stephen_anthony · · Score: 1

      I've always been of the opinion that managers/marketrons push the buggy crap out the door to meet market windows. The fact that the product is buggy is secondary to getting to market. Get someone to buy the thing; bugs&all, and fix the bugs after the sale. After all, while the customer bought crap; dammit it's *our* crap, and we got the $$. And few customers will admit they made the wrong decision and go somewhere else after seeing how bad it is. Steve (pointy-hair hat on)

  85. Litigation by sean23007 · · Score: 2

    One of the possible solutions that was presented in the article was litigation, which, according to the article, is inevitable and coming soon to a software company near you. But one of the problems for the plaintiff outlined in the article is the fact that many of the problems with software that one might sue the company for are highly technical and would require the hiring of expensive computer experts to build their case. I was wondering if Slashdot, a site with numerous computer experts, could help build such a case by providing expert analysis? Obviously there are some problems with that, such as the lack of being present in court, the safety of anonymity, the unfailing bias against anything Microsoft or even anything proprietary (I don't think it goes over well in court when you roll your eyes and say "That's what I've been telling you for years. Idiots." You know what I mean?). I'm not a lawyer, so I can't think of any more problems with it, but somewhere in there is a good idea waiting to be used...

    --

    Lack of eloquence does not denote lack of intelligence, though they often coincide.
  86. People don't care by nuggz · · Score: 2

    I think software sucks because people don't care. They don't consider reliability when evaluating solutions, at least at the consumer level.

    Cars is a great example, in the past they were terribly unreliable, and people didn't care, they still bought them because they wanted the product despite its flaws.
    Now we have consumers who want reliable cars, and they make more reliable cars. This is the way the market works, companies produce what people will buy, when people stop buying unreliable software, the companies will make more reliable software. As long as you keep buying it, why improve?

  87. I dont remember demanding this... by pogle · · Score: 2

    From article:
    "Software sucks because users demand it to."

    Does anyone remember signing that petition? I sure don't. Maybe we should get a counter-petition going and give this guy a clue.

    Last I heard, the demand was for software that did its job, and didn't crash/return errors/suck constantly.

    --
    http://thechubbyferret.net - Ferret pictures and informative links.
    1. Re:I dont remember demanding this... by Capt_Troy · · Score: 2

      Sure, they want software that works, who doesn't? But they also want it in half the time that it takes to develop good software, and once it is complete, they want it to do something different than what was specified in the specs.

      That's the nature of software development though, and something that developers need to be able to work with. Some newer approaches like Extreme Programming take this into effect and allow the developer to modify the scope as the project matures.

  88. 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?

    1. Re:Seems obvious enough to me... by Anonymous Coward · · Score: 0

      But those car radios always worked.

  89. Testing not really the solution by ^BR · · Score: 1

    Most bugs are found by the developers themselve while doing code review, this help if their schedule have time geared toward review and not only coding.

    Then using the right programming langage and the right engineering practice help.

    Most modern langages don't suffer from buffer overflow and have eliminated most memory leaks. Increased support by tools af design by contract and the like will help.

    Good testing practices like those used in JUnit (unit testing) help tremendously too.

  90. Sounds good to me. by MongooseCN · · Score: 2

    To their own amazement, these people have found themselves wondering if the real problem with software is that not enough lawyers are involved.

    The reason most buggy software is put out the door is because it's cheaper to release buggy software and deal with angery users than to spend more time fixing it. I bet if these users started suing and hitting software developers where it hurt, in the pocket, then software companies would start shaping up and putting some more effort into their software.

  91. McAfee Review by Anonymous Coward · · Score: 0

    It sucks!

    There, and no one can sue me because I didn't buy it, I pirated it.

  92. Hear Hear! by Anonymous Coward · · Score: 0

    --just general comments addressed to no one in particular--

    --I'm not a coder, but I am a consumer and user. I have spent cash on computersw since the 80's. This article is right on! There are WAY TOO MANY TITLES out there now. What is needed is far fewer releases of alpha software that is mis-labeled as beta or "stable". It's blatant consumer fraud, and was partially addressed in an earlier slashdot discussion on liabilities and the lame EULA nonsense. Maybe PROGRAMMERS don't mind buggy stuff, but buy a clue, most folks AREN'T programmers and as consumers are getting turned off. Just yesterday I was at an auto parts/repair place, talking to just some "normal folks". NONE of them had anything nice to say about computers or the net in general, even though all of them had been exposed to it in one for or another. Their biggest gripe with computers? THEY DON'T WORK with the software they get. Get it? They DON'T WORK AS ADVERTISED. The one couple I was talking to are keeping their two boys completely away from computers because after one month online they were totally unable to keep their children from even accidentally seeing porn and worse. You can't have any email account and not get spammed with porn and viruses. You can have all the firewalls you want, most folks are still gonna get nailed with trojans. None of those lame filters work, and violent video games are just stupid and a waste of time for children. They don't WANT to be a programmer or a beta tester. And this means the OS AND the apps. BOTH. I know several people who have just given up on computers and closed their internet accounts-the hassle with virus coders never getting arrested and STOPPED, and then buggy programs and buggy OS is just too much. One of those folks was saying how despite having the latest and greatest, they spent serious folding green on both a PC and on apps, including anti-everything- they still had to unhook all the wires, haul their PC into the shop, and pay someone 60$ an hour to fix it-not from the hardware being broken, just bad OS and virii. Why is this still happening in 2002? Really, why?

    I'll answer that, it's because the mindset of the programming community is "nothing is my fault". Well, it IS the programming communities fault! If it's not your fault, how again exactly is it the consumers fault? Because they aren't programmers? Because the average person really has no interest in spending time everyday upgrading and patching? why should they? Would you fix your car EVERYDAY? No? Then why are we as consumers forced into doing that with computers?

    The computer market needs two things, black hats need to go to JAIL for years and years and years, and it's NOT happening and the coding community is HIDING the blackhats in their midst (generally speaking here), (I can guarantee one of you blackhat assholes is reading this you jerkoff) and OS and software companies need to be FINANCIALLY LIABLE for their products working or not working, same as any other product. Stop releasing stuff you know isn't working. And that goes from whopper companies like microsoft all the way to the one guy shop.

    Take it from people who are one way or the other providing your paycheck coders, STOP releasing crap that doesn't work, enough with alpha and beta software. WAIT until the stuff actually *works*, THEN release it. If it means you have to code another month, do it that way. This is called the better mousetrap idea. If you need a programmers guild with some basic common sense minimum guidelines, then do it. You've had plenty of time to get your programming act together, and you have been well paid over the years-again generally speaking. You WILL make money if you can all just develop better stuff BEFORE you release it. Computers and software should NOT have to be upgraded every two days, this is totally bogus. And if you are a blackhat, stop it. And if you know of any blackhats, swallow your ego and pride and TURN THEM IN to the police, enough's enough. Failure to turn in criminals is in itself a crime, didja know that? Well it is in most places/states in the US. And I would bet a years pay every self described "whitehat" out there knows at least one blackhat, and you probably don't do anything to stop them. We as non programmers really don't know who they are, BUT YOU DO. Do your civic duty. If I knew some guy who was raping women, tough luck, I'd turn them in. Or a home burglar. See? It's up to you guys first to help clean up the net and make basic everyday computing better and more secure, not more complex, more buggy, and less secure.

    1. Re:Hear Hear! by Anonymous Coward · · Score: 0

      yes we will do all you suggest. now lets see you write a check for $30,000 for a word processor.

    2. Re:Hear hear! by Fjord · · Score: 2

      Which in my estimation means that the marketing guys aren't doing their jobs.

      I'd say that they are doing their job. The people who aren't are the product managers. At one company I was at, there was a product management department between marketing and development. The product manager's role was to take marketing's wants and development's input on the cost of those wants and figure out a plan to get a product. It worked really well at that company while I was there (don't really know now. It's been 5 years), but if the product managers don't have executive backing, then it could turn into the marketing controlled scenario you describe.

      --
      -no broken link
  93. CS, not SE by Dark+Nexus · · Score: 2

    Part of the problem might be the fact that most of the programmers are Comp Sci, and not P. Eng's.

    I say might be, because I can't speak for Comp Sci programs, but I know what most engineering programs will drill into you as far as standards and quality control. Anyone who has the experience to provide knowledge of what's taught of QC in a CS program, feel free to correct the "might be" part.

    For all of those P. Eng's in software and systems out there, I strongly advise you to NOT sign off on faulty software. In any other field, only the most unscrupulous P Engs would even consider signing off on a project with major flaws.

    And remember: if you're hired as a P. Eng, being fired for not signing off on a project because of quality issues is clear-cut wrongful dismissal (at least in Canada).

    --
    Dark Nexus
    "Sanity is calming, but madness is more interesting."
    1. 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.

    2. Re:CS, not SE by Dark+Nexus · · Score: 2

      You make a good point.

      The problem might be more in the industry, in that CS grads don't have the whole accreditation thing (like doctors, lawyers, etc), and don't have a (well established) professional society and legislation to back them in enforcing QC - they're (much more) at the mercy of the corporation than a P Eng would be.

      --
      Dark Nexus
      "Sanity is calming, but madness is more interesting."
    3. Re:CS, not SE by Capt_Troy · · Score: 2

      Yes, I am all for engineering certifications for software developers before they are allowed to develop software in certian industries. There are too many people programming computers without the proper training, the result is this "sucky software".

    4. Re:CS, not SE by nomadic · · Score: 2

      And half of them post on slashdot and claim that they are just so inherently brilliant that they don't need any, and that a college degree is just a "piece of paper".

  94. The root cause by Anonymous Coward · · Score: 0

    lots of software sucks, because a lot of software companies didnt spend money, time and effort in building a good software QA team. Also, the software QA team are often burned out rushing to test a product at the last minute, plus no recognition for their effort.

    Just look at your organization, when is the last time your software QA team get recognition? more likely, your software development team, follow by sales or marketing

  95. 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.

    1. Re:Software development is not manufacturing by edbarbar · · Score: 1

      I think this is exactly correct.

      If I make a manufacturing error (or if there is a flaw in the materials I use to make that item), only the single item is affected, not all items of that design.

      On the other hand, a design error potentially affects all users of that product, be it a car (remember the Pinto), software, etc.

      The cost of a design error in a car is huge in comparison to most design errors in software. The cost in software: put up a patch (in fact the cost may even be negative: someone else found your bug).

      The cost of a design error in a car: potentially huge, due to recalls, law suits, etc. This is in part due to the manufacturing costs.

      --
      Ed Barbar, President and General Manager, Furnit USA
  96. 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.

    1. Re:People get what they pay for by Anonymous Coward · · Score: 0
      The auto industry could build a car for under $3000, but it would not sell.

      No. The auto industry could build a car for under $3000, but the unions won't make it.

      Have fun sometime and figure out what portion of your new car's price tag is due to labor costs.

    2. Re:People get what they pay for by MMaestro · · Score: 1

      Software companies could build a rock solid word processor or PIM , even MS, but no one will pay for it.

      Well Microsoft built Windows XP and we all knew it was going to be buggy and crash more than an airplane with no engine but people bought it and for over a hundred dollars a copy each. 'Crappy software for large amounts of money?'

  97. Defects rate same - just much more code now by Anonymous Coward · · Score: 0

    The article claims that the defect rate is going up, and software used to be of high quality. Nonsense. The defect rate is the same as it always was - there is simply 3 orders of magnitudes more code these days in a typical application. I would hope that an embedded system made in 1978 with only 512 bytes of instructions ought to work correctly - you can practically assemble it in your head. Reporters - get a grip. People want cheap software, features, performance and reliability - in that order. Market forces have proven it.

  98. 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...

    1. Re:Not surprising considering... by Lord+Omlette · · Score: 2

      Have you been to a Microsoft interview? 4 different interviewers, each one asking a different set of riddles, each one telling you to write your algorithm on a piece of paper while you explain what's going on in your mind.

      Maybe they don't want a college degree, but they're either very picky or they didn't like the way I smelled.

      --
      [o]_O
    2. Re:Not surprising considering... by DarkDust · · Score: 1

      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.

      This time, I have to agree with Bill. My experience is that graduated CS student DON'T write good code, they know to do software design but they don't know how to code. They often are not able to use a command line let alone know the tools !

      My experience with CS graduates is they know Java, some might know a bit C++, but throw C or shell scripts at them and they are lost. Cross plattform coding ? Makefiles ? How to avoid buffer overflows and stuff ? Same story here.

      Give a self-educated coder something he doesn't know and give a CS student/graduate something he doesn't know, I bet most of the time the self-educated "gets" this way faster.

      I don't think CS graduates are dumb or something, but they're educated in different areas than "real" coders, IMHO. The main things that lacks most CS students and graduates is the urge to explore, to try something out, to widen their horizon... and experience, of course ;-)

      But maybe I've just met the wrong CS students/graduates...

  99. Re:The joke is probably on the Post Office (OT) by sid+crimson · · Score: 1

    Knowing a bit of how mass mailings work, specifically how you figure out who is where through zip codes, the actual city that gets printed on things mailed to you in that fasion is determined by checking the Post office database, usually through a program such as AccuZip.


    Also knowing a bit about bulk mailings, the problem could stem from "Apricotland" not having a Post Office.

    In our area, we have a community within another incorporated city's zip code. Anyone within this zip code may choose either city as their home, and mail gets there.

    But mail arrives faster if you spec the correct city or use the Zip+4... because the mail doesn't have to traverse an extra postoffice to get there.

    -sid
  100. These are the Early Days Of Computing!!! by Qbertino · · Score: 1

    I wonder why people - especially IT Pros - often just don't get it:
    The gap between now and an age where computing is a subtatial part of cultural techniques in a way that we can't do without anymore is about as big as the gap between the stone age and the industrial revolution. Aside from the fact that technology evolves "a little faster" now, that is.
    In 100 years people will remember those awkward times when people fought for "Browser Standards" or some other stuff - just like when Tesla and Edison fighting over which type of current is best. Nobody would even consider rasing the debate nowadays - because it would seem (and be ) utterly silly.

    We have Zillions of Standards and Platforms that have such a short lifetime that they will be considered something like experimental sidesteps in 50 years from now. Considering the fact that IT is redefining itself every odd year - just like, lets say, the railroads in the beginning (anybody know how many trackwidths they had back then?) - the discussion about why "Software is bad" or if it's not, is somewhat pointless.

    --
    We suffer more in our imagination than in reality. - Seneca
  101. And companies should encourage that too... by Bodrius · · Score: 3, Interesting

    But it's hard to convince someone trying to make money that their programmers, regardless of previous experience, will not be productive from the first day at work because they need to be coached into the company's own standards.

    They would prefer to have them producing code that works, as soon as possible, even if it means bringin into the code repository their own habits, good and bad, picked from their previous jobs, school or their intestinal tract.

    If a manager at a construction company is building a bridge, it is likely he will not be satisfied JUST because the bridge seems solid. If the bridge looks unlike anything he has ever seen, its structure defies comprehension, and he's not entirely sure the thing stands by anything more than chance or will survive the touch of a maintenance crew, there will be hell to pay.

    On the other hand, if the software works, the manager is probably satisfied.

    This may not have as much to do with the programmers' or managers' discipline, but with two other simple facts:

    a) Everyone knows how a bridge should look, and if it looks any different (new design), they will be extra-paranoid about it. Soon the new design will join the ranks of ways a bridge should look, and there are not that many.
    b) Most of the bridge's features can be seen at first glance, without a peek at the designs.

    On the other hand, concerning software:

    a) No one knows how software should look. There are a million gurus who think they do, with a million different versions. Given a piece of code and an expert, he will be unlike to tell you if it looks solid or not at first glance, so a non-expert will judge by whether it executes or not.
    b) Most of the software's structure is hidden from view in the final product because software is not physical. It's all design. Judging the quality of software, even if you knew what to look for, will depend on a through review of the designs (code) which is as likely to happen as a voluntary visit to the dentist.

    --
    Freedom is the freedom to say 2+2=4, everything else follows...
  102. McAffee Sux by Anonymous Coward · · Score: 0

    I didn't know about the restrictions McAffee imposed on it's user. But since I'm an X-User, I guess that no longer applies to me :). Their firewall seriously slowed down my cable-connection, making me a very unsatisfied customer and instantly switching to Norton, which is good!

  103. y2k is a great example by Anonymous Coward · · Score: 0

    --I was sub contracting to an independent mainframe guy in 1985, he first told me of the y2k deal. He assurred me the new boom in desktop pcs would have it fixed.

    Well, it WASN'T, and programmers cost this countries economy over 100 billion dollars because they KEPT CODING IT IN for 15 more years. ya, ya, I read all the excuses, "my boss wouldn't let me", etc. Phooie, that was a cop out then. More of the "it's not my fault" syndrome.

    Programmers need a guild or a union, and they need to make quality job #1, not just releasing billions of bytes of crap with numbers after it, like bugs_b_us vs. .001b all the time.

  104. console bugs? by racerx509 · · Score: 1

    I'm reminded of another industry that relies on software and hardware. The console gamin industry while slightly different because the hardware is more stable, still has similarities. Just take a look at Nintendo. People may gripe at how they take too long to release software, but they make sure they get it right. If it goes to play testing and a tester says that the software dosn't "feel right", it goes back into developement for another few months. Not to harp on them too long, but take a look at Zelda ToOT. That title took 3 years to make. Conkers BFD took 4 years.

    To be honest, I think its more of a cultural thing than anything else.

    --
    13 year old white supremacists are shitty web designers.
  105. Re:They left out an important issue -- open source by Corporate+Troll · · Score: 1
    The terms you are looking for are Syntax Error versus Semantic Error . I just point it out because you can have a syntax error in a non-compiled language (Basic, anyone recall?), and you can have a Semantic Error without that your program crashes during the dreaded Runtime error.
    This was indeed one of the first things taught at University: syntax error - easy to fix/find and easy to avoid (yet I still forget the occasional semicolon), and semantic error - hard to fix/find and easy to avoid (provided you thought about your design).

    Any school not teaching these idea's, isn't doing any good to it's students.

  106. Re:You're one of those "open source community" fag by SirSlud · · Score: 2

    I guess being a C/C++/CORBA programmer for a living who has in fact contributed to open source projects doesn't mean much. (Actually, I assume you'll just ignore this line, or say I'm lying, or whatever suits your fantasy world.)

    If an avoidance of realistic evaluation is a common Slashbot trait, I can assume the ACs have mastered presumption of character.

    I'm sure the /. code is crap. I dont doubt it. I'm just going to do everything I can to annoy those who criticize labour of loves because they desperately need a reason as to why they have no personal investment in what they 'produce' for a living. If you havn't got anything constructive to say, you're no better than those who construct crap.

    Asides, when we are both taking time out of being productive to sling mud at the walls, its hard to accept that somehow you are productive, and I am not. The difference is, I place my name beside my words. Productivity doth not make the man - the balls to accept accountability for what one produces does.

    --
    "Old man yells at systemd"
  107. Why software is so bad. by ldopa1 · · Score: 2

    I read an article a long while ago in one of the trade mags that talked about this.

    According to the article, software is so bad because it takes legions of software designers/coders to put out the latest version of SoftwareX. The reason it takes legions is that software has become so complex. You used to be able to install Word with a couple of floppy diskettes. Now you need a CD.

    Where did the extra 600 Meg come from? Spell Check, grammar checking, clip-art, spread sheet functionality, clip-art creation software, fonts, thesaurus, templates, auto-correct (like spell-check isn't enough?), macros etc, ad infinitum.

    Developers spend their time writing new functionality, instead of fixing the broken "slightly-less-than-new-functionality." So, why are they doing this? Simple, because their managers are looking at their artificial time table, and saying "We promised this version would be done by (insert artificially generated date here). We need to get it done yesterday." (Side note here: Apparently, to stay competitive, companies need to release SOMETHING new every 6 months. If they don't, they die. Notice the emphasis on SOMETHING.)

    When the development team finishes their newest widget, it heads off to a completely separate team of QA specialists who don't actually understand the interoperability of the new widgets. They miss things. Managers know this but they think, "Well, we can always release a patch later." In really large software companies, this patch is created by an entirely separate team, who had nothing to do with the product's creation in the first place.

    Most of the time, the patch team has to consult with the original development team to create the patch. Unfortunately, the original development team isn't available to talk, because they are creating the next great widget for the patch team to fix in 6 mths.

    Never mind "Help" files.

    It's a complete wonder that we actually get anything that works at all.

    So, why do companies do this? Why does Word have clip art creation capabilites? Why does it come packaged with a Thesaurus and a Dictionary, when they are both online, and Webster's Dictionary is the third best selling book of all time (third to the Bible and Quotations from Mao Tse-Tung, which was compulsory reading for all Chinese from 1966 to 1971, Source)?

    Simple - you asked for it. Companies have spent hundreds of thousands (dare I say millions?, okay. Millions.) of your dollars on determining what you want. You WANT spell checking. You WANT clip-art creation. You WANT better, faster functionality, and you want it NOW!!!!

    That's right, the crappy software is YOUR fault. The &$%@&^'ing OFFICE ASSISTANT is YOUR fault!!

    You have nobody to blame but yourselves. Don't you feel ashamed?

    BTW: If you don't believe me on this - Our company had over 300 phone calls to our internal IT help desk within a week after moving to Win 2000, because we didn't load Solitare on the computers.

    --
    The Dopester
    "Yes, I'm a Karma Whore, but I'm doing it to pay my way through school."
  108. Definition of programmer: by OSgod · · Score: 1

    Real programmers ship. (quote from un-remembered source)

  109. Re:They left out an important issue -- open source by dboyles · · Score: 2

    "If it doesn't spit out an error message, it must be done correctly, right?"

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

    You're right, and it's a shame. In all of the programming courses I've had, the grading criteria are simply "Are there any errors generated?" and "Does the output look correct?" Nobody takes into account that a programmer might have done something sloppily, inefficiently, or even in a way that might be dangerous.

    Programming classes at my university need to concentrate more on programming theory than on correct syntax. We can pick the syntax up along the way, but bad programming style will stick for a lifetime.
    --
    -- "Complacency is a far more dangerous attitude than outrage." -Naomi Littlebear
  110. Perhaps PC software... by praxim · · Score: 1

    I can agree that most of the software I've used on my PC has had at least a few bugs. It's worth noting that I run nothing but OSS/Free software, so this can't be pinned on MS.
    However, most of the software I've used that wasn't on the PC had no obvious bugs. I found one bug in Tony Hawk's Pro Skater 3 that involved a reflection in a window in an out-of-the-way location being rendered strangely. Other than that, there were no bugs. It's really pretty rare for me to find a bug in any video games, actually. The software I use on my Visor is the same. And I've never had my synth give me any problems. Now, obviously, all of these other platforms share one thing in common: they are not moving targets. My PS2 is the same as everyone else's. There are a few models of Visors and Palms, but generally, they haven't changed terribly. And a Korg X5D is a Korg X5D no matter where you go. This, I think, is the major problem with PC software- the hardware and software environments are always changing.
    Anyone that's written software for Windows knows this is a gigantic problem. I wrote a simple program that used the WININET API, and the functions to open a connection worked fine on 98, 2k, and XP, but not at all in ME. The CreateIconFromResource function wouldn't work at all in 2k without installing the service pack. While working on this program, it became painfully apparent why end-user software doesn't always behave as expected.

  111. Kill the "shirk"-ware wrapper and put liability by crovira · · Score: 2

    where it belongs, on the shoulders of the software manufacturer/publisher.

    If anyone goes bankrupt or dies from using your code then YOU are responsible for their fiscal or physical death and deserve the fines, jail time or death penalty that a jury will hand you.

    If you want software quality, you have to wait because it takes the time it takes. Infact, that is the power and promise of open source. By not being dependent on a single source for the software and not being limited by the same source for product design and evolution, software can develop much more rapidly into much more robust products.

    Software created to solve a problem has a chance to evolve into something safe, secure and usable. Software created just to make a killing has a chance of killing somebody.

    You'll have quality software when people can't create it to make a quick buck. That's the power of open source.

    Regardless of how big a pile Bill Gates amassed unethically, ripping off unsuspecting buyers by arm-wisting and back room dealing with the PC manufacturers.

    Cmon. NOBODY WANTS to BUY blue screens of death, no matter how pro-M$ and "Fuck You Steve Jobs and Linus" they might be.

    Not even "Manic Monkey Boy," "Barmy" Balmer particularly WANTS to SELL 'em. But he DOES want the money. He does indeed. He gets wet dreams about his stock market share value.

    But now, to save our lives, we have to make sure that NOBODY can sell BSsOD.

    --
    MSBPodcast.com The opinions expressed here are my own. If you don't like 'em... Think up your own stuff.
  112. Merely a conflict of values by Sloppy · · Score: 4, Interesting

    Popular software isn't reliable, because reliability isn't the highest value. Compatability with a legacy is (e.g. you want to run this application under MS Windows?). Or cheapness (e.g. Do you want to be billed 2 hours of my time (very little testing) or 6 hours (more testing)?). Or having lots of features (Would you like a flight simulator with that spreadsheet?). Or something else.

    When reliability is important, you can have it. But it will cost you. Most people consider the cost to be too high. That's why more people run bleeding-edge Linux, Windows, or MacOS, than OpenBSD.

    And there's nothing wrong with that. You just have to accept/enjoy the power/responsible that goes with the choice that you made, instead of whining that someone else should have chosen for you.

    Irresponsible XP users whining about XP, ispartcularly pathetic. Yeah right, you didn't know what you were getting into. You never heard of this "Microsoft" company before, so you just assumed that they valued reliability over other considerations. Discovering that it was crap primarily intended to play video games and keep MCSEs' jobs secure, was like a cold knife in the back -- such unexpected treachery!

    --
    As copyright owner of this comment, I authorize everyone to defeat any technological measure which limits access to it.
  113. Open Source is a back to roots solution by WEFUNK · · Score: 2

    I don't think "misuse of copyrights" is quite correct, but not being able to see under the hood is a standard argument against closed source. Surprisingly the article didn't directly discuss open source, but I thought the following part was pretty interesting:

    "Not wanting errors to cause delay, coders -- who in the early days tended to be trained as mathematicians or physicists -- stayed late in their offices exhaustively checking their work. Writing software was much like writing scientific papers. Rigor, documentation and peer-review vetting were the custom."

    Nothing that hasn't been said before, but probably something that isn't said enough. Open source, collaboration, and peer review are not new ideas and sometimes proponents do disservice to them by acting as though they are new and revolutionary. They're not - they're a throwback to a time when software was simpler and more robust.

    As programs became increasingly large and complex it became near impossible to take advantage of peer review - you couldn't ask a fellow professional to check your million lines of code. Without a good way to peer review large projects, it makes sense that software became increasingly reliant on a proprietary closed source approach and also became increasingly buggy.

    Using the communicating power of the Internet, along with the growing open source community, programmers (and managers) can now apply peer review and collaboration to these much larger and complex projects. This development should be embraced (and promoted) as a return to the roots of effective programming, rather than as a whole new paradigm. While there are some fundamental constraints to testing programs, we should expect that the proper application of engineering techniques along with this somewhat unique ability to use peer review and collaboration could actually make software more robust than other technologies.

    --
    My next sig will be ready soon, but friends can beat the rush!
  114. Money? Hum. More like lost their way! by SWTP · · Score: 1

    I have seen this for Decades. Not Years but decaded! Every few years there is a scheme to try to make somthing ovious ovious and failes. I have program just about everthing from A to Z more than once. Each is unique and different.

    1) Know what you want and where you are going! You CANT program in the dark or a vaccum. It must be in the mind before its in code. Like a panter or sculpture no ideay nothing on media.
    2) Tell marketing to get its order in early! Else get lost!
    3) Build on solid sections. Not quicksand or swamp. Else you will sink!
    4) Think a few seconds on it. Measure twice cut one.
    5) Value Engeering. Remove all parts not need to function.
    6) DONT OVER-ENGIEER IT! This creates bloat and each line of code can be a bug.
    7) Bandages are for human not programs.
    8) Solid core first. Fluff never!
    9) Programming does not conform to the physical world and cant be times.
    10) Never ask a problem if its a problem. It always lies!
    11) Tie modules through some easy to interface key connections. Complex interfaces creates bugs. Look at a 74xx TTL series chips. A ton of ccompanys make it internally there way but they all interface the same. Simple.
    12) Just because X company has that in their product does not mean you need it. Greed and envey is bad!

    On the last one. I had a program that was simple, elegant and worked. Did not have the ten billion unneeded features the other had. But mind did one thing theirs did not and that it did not fail on the main function the client bought it for! There is too much junk out there that makes a Swish Arm knife look like a piker on functions Esp when all you want is a blade to cut somthing.

    Windows should not be a be all-end all everthing but what it started out to be a std user interface. Not a Swish Army knife with blades for everthing. That is marketing talking over engieering and leads to disaster.

    A car has been engeered to do one function very well in a certain window of opperation. It does not fly, float or darn your socks but gets you from point A to point B. Same for software. A compiler uses this concept. Anything not inside its fence is an error. Simple. Windows... Too much trying to do too much and failling at it core function.

    I recommend two books:
    Mythical Man Month.
    Code Complete.

    Both have solid what works and what does not examples.

  115. Design by Contract by juliao · · Score: 2
    I don't imagine a world where software has no flaws, in the same way that I don't imagine cars or houses without flaws.

    My last car used to go "beep" when it ran low on gas. I hated it. I wished it had a parameter somewhere that I could tweak and make it not beep. But having that parameter would mean increased complexity for the car. And complexity would mean more things to break, more places where bugs could creep in.

    Software engineering is a relatively young discipline. Still, it exists, and it lays down rules and methods for creating software.

    The reason most software has as may bugs as it does is not a matter of not having the tools or the methods, it's largely a matter of not using them.

    Take the smallest piece of software possible, a "hello world" program, for instance. It it takes no input and just prints the string, there are very few places a bug can creep in. Even so, you have to be able to ascertain that you do have a standard output on which to write. But the minute you have to process the command line, you start increasing the complexity of your program, and immediately raise the risk for bugs.

    Many bugs happen at software interconnections. The calling of functions, the invocation of an API, the parsing of inout, the access of files and devices. Why does this happen? Largely, because there is no clear contract on what the caller is supposed to do, and what the called function is supposed to accept.

    One of the largest causes for bugs is lack of a formal contract between every two pieces of software, between every two parts of code.

    Lack of existance, and lack of enforcement. If a function is supposed to return a positive integer between 2 and 8, why does the function itself not validate that its output is always within the range?

    Some languages, namely Eiffel, impose a form of "programming by contract", in which both parties of any software interaction validate their own inputs and outputs, and check each other's, as well. But we can take this a lot further. Capabilities based operating systems. Deep granularity in software capability attribution. If a piece of code never needs to access the file I/O functions, don't let it do so.

    One idea that comes to mind is the notion of a public key based operating system. Issue key pairs to every piece of harware, to every device, to every directory. Then issue key pairs to every program, to every major block inside every program. And then use a broker to validate every program's access to every device. If a piece of code wants to write to memory, it must code the data in its own private key, and access the memory using the memory block's public key. But don't just make public keys available. Grant them only after approved requisition, as you would in a capabilities OS.

    There are many ways to improve overall quality and safety of sofware. most of them already exist. It's a matter of using them. It's a matter of getting powerful buyers to enforce the usage of advanced engineering practices. The government should set the example.

  116. Pressure to Change by yumyum · · Score: 2, Interesting

    I think the article has it right with respect to lawsuits, and the current pass companies seem to have wrt accountability and quality in their software performance. I can envision a future in which companies buy each other's product, beat the crap out of it, and if it fails to perform as advertised, sick a team of lawyers on the offending producer. Think of it as greenmail for the software industry.

  117. Read the book.... by MosesJones · · Score: 2


    The point of "no silver bullet" and "still no silver bullet" and indeed the awesomely brilliant Mythical Man Month is that no one thing will ever be the silver bullet and that the most important thing are the people. Doing one of these things won't help but doing all of them certainly will. Peer review doesn't replace compilers though, its about bugs not semantic and syntactic errors.

    Fred Brooks was and is right, but that doesn't mean the processes of good software engineering are wrong, just that its a combination that will deliver success with smart people.

    --
    An Eye for an Eye will make the whole world blind - Gandhi
  118. er... by sugrshack · · Score: 1
    From the article:

    ...the real problem with software is that not enough lawyers are involved.

    okay, I must have stepped into a new dimension

    --
    I can't believe it's not lard!
  119. Situations by VoidMain · · Score: 1

    This has been one of my longest standing gripes about my profession. I've worked a tiny companies and huge companies, and I have yet to see any one who builds good software. Just like the article states, this is due to the gap concept between first and second place. It also has to do with money issues.

    BUT, to date there really hasn't been any (or very few) instances that would provide a contrary opinion. In this I mean that there have not been two competing companies, one who frantically gets their product to market and the other that spends time on engineering.

    I would go as far as to say that if this happened, and the company who engineered their product better, would probably come out on top, even though they released second. The customer would have more features, more reliable use and probably a better looking and usable product.

    Guess this remains to be seen.

    --
    Brian Pontarelli
    CEO and founder of Inversoft.com : Invert Your Mind
  120. Mod parent up! by whatthef*ck · · Score: 1

    AC makes a good point.

  121. Backup vaporware by markmoss · · Score: 2

    As Microsoft's online Knowledge Base blandly explained, the special backup floppy disks created by Windows XP Home "do not work with Windows XP Home."

    Very, very funny. And rather familiar - MS-DOS 3.x included a backup program which created floppy disks that could rarely be used for a restore.

    That's just plain irresponsible. If you can't get the feature to work right, don't include it!

  122. WTC collapse triggers fireproofing reforms???? by sowellfan · · Score: 1

    I know this doesn't address the software engineering concerns, but this quote from the article sort of ticked me off,

    "In most engineering fields, Pfleeger says, such disasters trigger industrywide reforms, as the collapse of the World Trade Center seems likely to do for fireproofing in construction."

    The fact is, from everything that I've seen and heard, those buildings staying up as long as they did is a *testament* to the fire protection installed in the buildings. I believe they had asbestos covering at least a portion of the metal beams (seems like they had to switch to a different form of insulation at some level, maybe asbestos wasn't allowed anymore?). Regardless, the fact that a building falls down when you run an airliner loaded with lots of jet fuel into it does not speak badly of the engineering practices, and it's sheer stupidity to suggest otherwise. There are lots of reasons to examine fire protection in this country, but 9-11 is not one of them.

    1. Re:WTC collapse triggers fireproofing reforms???? by nutshell42 · · Score: 1
      And don't forget that they collapsed where they stood.

      Imagine two 1200ft building tipping over to one side and burying everything beneath.

      I'm deeply impressed by whoever built them 30 years ago

      --
      Don't think of it as a flame---it's more like an argument that does 3d6 fire damage
    2. Re:WTC collapse triggers fireproofing reforms???? by Russ+Steffen · · Score: 1

      The buildings did perform well under extreme stress, but that doesn't mean there aren't lessons to be learned. For example, the breaking of the floor beams was the trigger for the final collapse. The beams were fireproofed with a spray-on coating, that pretty much departed the building on impact. Fireproofing does no good when it's laying on the sidewalk. Another example - stairwells and elevators all clustered together in the building's core, and all destroyed at once. Only a handful of people who were above the impact floors made it out.

    3. Re:WTC collapse triggers fireproofing reforms???? by sowellfan · · Score: 1

      It is true that only a few people who were above the impact floors made it out. This does not mean, however, that we can or even should design buildings to allow people in that situation to make it out alive (as much as we all would've liked to see them make it out).

      I'm a mechanical engineer working in the building design industry (HVAC design, though I've done a bit of sprinkler design). Building fire protection systems(firewalls, eggress corridors & stairwells, sprinklers, etc.) are designed around the premise of keeping the fire out of egress paths for long enough that people can safely get out of the building. This typical assumes that you are dealing with a normal fire (not thousands of pounds of fuel/accelerant) and that a massive explosion hasn't just ripped through your building.

      From what I know of the WTC case, those planes trashed those egress stairwells so that people from above couldn't use them (does anyone know how the handful of people from the upper floors who did get out managed it?) Regarding the fireproofing coming off of the beams, they still lasted long enough for everyone to get out who had a viable path. When architects put in an egress corridor, I just don't think there is any way that they can start planning for 'What if an airliner hits this building?' or 'What if some nutcase explodes a moving truck-size amfo bomb nearby?'. The costs would be enormous if you were to truly try to make all high-rises events like these survivable, and the benefits would be comparatively small.

      Given 9-11, I think there is no chance that passengers will sit idly by and let someone gain control of a plane. However, even if they did, and even if high-rises were somehow hardened, there are many other less-hardened targets, such as stadiums w/ 80,000+ people. That's why killing the people who would harm us makes so much sense.

  123. Not always the case by dalangalma · · Score: 1

    The disheartening trend for CS to be an "easy major" is not common at all universities... I know that the CS program I am enrolled in at my university is considered one of the very hardest majors available at the school.

    1. Re:Not always the case by markmoss · · Score: 2

      The disheartening trend for CS to be an "easy major" is not common at all universities.

      It depends on whether you are comparing CS to the handful of traditionally tough majors (engineering, pre-med, pre-law), or to all the relatively easy majors (from English to Education). My first year in the EE program at Oklahoma State, I was doing 60-80 hours of homework a week. The classes shrank by two-thirds in that year. That was by plan - you get some important basics in that first year, but the main thing is to ensure that you are never going to neglect checking all the details just because it's getting late, before they teach you the real stuff...

      If there's a CS program anywhere that does things like that, I'd like to know about it. And hire their graduates. The CS classes I've taken (a couple of decades ago) were downright relaxing compared to anything in the engineering school.

    2. Re:Not always the case by chanceH · · Score: 1

      >If there's a CS program anywhere that does things >like that, I'd like to know about it.

      MIT (know from experience)

      Cornell (guessing based on quality of
      graduates I've met .. coulda just got lucky).

      let me know if you need somebody to do remote contract work :) (8 tenths kidding 2 tenths serious).

    3. Re:Not always the case by MountainLogic · · Score: 2

      That's why my department hires EE as our coders.

    4. Re:Not always the case by Anonymous Coward · · Score: 0

      Cornell's CS program was very tough, and I only took a concentration (read: 'minored') in it.

  124. How it really ends by maikeru · · Score: 0

    5. All 2nd-generation coders are laid off and replaced with $1/hour replacements in India. The CEO buys his seventh yacht a few months later.

    Seriously, though, I think the largest problem in software design is that the people who ultimately make the major decisions have no idea what the hell they're doing. The suits issue an edict, and the programmers are the ones left scrambling to cover the big holes left by forces such as common sense and the laws of physics. Software, at least in big business, is ultimately controlled by people who don't understand it. And therein lies the problem.

  125. Taking Responsibility by ChaoticCoyote · · Score: 2

    The article misses a few points, but otherwise gives a good explanation of why software has devolved from engineering to hacking. The primary cause for this state of affairs is a lack of design and testing, and every programmer needs to seriously consider what they do and how it's done.

    Blaming it all on "management", however, is naive at best. Yes, managers want everything now and have no patience for planning beyond the end of their budget or product cycle -- but programmers themselves have a real responsibility for the quality of their work. In too many cases, the professional discipline that was computer programming has devolved into amateur hacking. We take more pride in cute little tricks than we do in writing solid, maintainable code; a pretty user interface may be unusable, but it looks so nice that managers and consumers ignore or tolerate underlying flaws.

    Free software suffers from such problems as well; read the daily mailing lists for the Linux kernel, or the GNU compiler collection, or any large "open" product, and you'll see that many eyes do not necessarily mean better software. Someone finds a "bug" or wants an enhancement, so they dive in, create a patch, and submit it, without any real concept of how the new code fits into the overall product. Ever wonder why so many "free" software projects lack documentation? It's because the programmers are more enamoured of coding than they are of design and writing.

    Not to say that I haven't made my mistakes over the years, or that my software is perfect. In many cases, "mistakes were made" because I was programming as a job, where my paycheck wasn't determined by the perfection of my code. Writing books is no different from writing code for an employer; time pressures and the need "to get to market" supercede any requirements for reliable code. Until we change priorities as an industry, I don't see the quality of software improving. Programmers (like all people) are only as good as their environment and ethics allow them to be.

    1. Re:Taking Responsibility by ChaoticCoyote · · Score: 2
      The answer is clear and conclusions plain: a product will be only as good as the market demands. When the market demands better software, the software will get better.

      I'll grant that consumers get what they expect -- but do we have to give it to them?

      Free software, in theory, is not driven by the consumers you deride -- yet free software projects seem to have an awful lot of bugs, and poor documentation, and many of the other flaws found in commercial works. Using your logic, free software should be bug-free and perfect, given that it is not influenced by commercial concerns -- and it just ain't so. Programmers are a lazy lot, from my experiences; they'll spen all night fine tuning a lovely obscrue hack, but won't spend any time thoroughly designing a project before they begin typing code.

      You say people get what they deserve; I say programmers and management are lazy, and use "customers" as an excuse for writing lousy software.

  126. Not really... by dalangalma · · Score: 1

    Most of the time it's some other process that causes my computer to lock up in Windows (in the rare occurences that it does). I've had many many third-party apps kill my computer and I've subsequently dumped them, while I've never had a total freeze from Windows XP (Granted, this is a new phenomenon). However, I have had several unexplainable lockups (big, full-system lockups) in RedHat...

  127. 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
  128. Re: If you asked an architect..... by leshert · · Score: 2

    There is a tremendous difference that these kinds of analogies ignore.

    Software IS different from non-software engineering, in that it is mutable. You CAN make changes after the fact.

    Some of your points are valid (impossible performance requirements, and users forgetting what they specified), but comparing construction of software to construction of a building is one of the most incorrect (and unfortunately common) false analogies in the trade.

    If you disagree, and you are a coder, programmer, analyst, software architect, or software engineer, I challenge you: for one month, do your job according to the constraints imposed by the world of building construction. I'm guessing I'll get no takers.

  129. That's the WORST reason fuckin' to start up. by crovira · · Score: 2

    That's like sacking a church "just because you can." Just because you have an idea is a LOUSY reason to waste time on it if there's no demand.

    And open the source and welcome people into your consortium rather than pretending that you can do it all and watching your enterprise go tits-up when you find out that you're bad at something or other.

    The pension funds of millions of people have been decimated because some moron, or worse some shifty lawyer-type, comes up with "a bright idea" (like an Enron,) without first checking if its a wise idea and people buy into it without first checking if its a wise idea...

    Everybody was criticizing Warren Buffett for not rushing into the Web craze. He never saw a business plan he could back or a company management team he could respect.

    Do you know how much money Warren buffet lost when it went bust? Zip. Nada nothing.

    Do you know how much he didn't lose because it never made sense to him to take Berkshire-Hathaway finds and sink 'em into the dot coms? He's still a billionaire and rock -steady at it.

    --
    MSBPodcast.com The opinions expressed here are my own. If you don't like 'em... Think up your own stuff.
  130. Reality... by metacosm · · Score: 2

    The article misses a basic concept. People LIKE THE SOFTWARE that they are using. That explains why they are not suing en-masse for stuff like the "I Love You" virus. That explains why they are still demanding more and more features.

    The day they create a law for software development, and the pace of the industry slows, there will be an OUTCRY among customers that they want new feature XYZ. Customers will get the law repealed so they can have the new buggy feature.

    Customers have made a decision with their check books, they have decided that buggy software with lots of features and security holes is more important than secure/stable software.

    Just like the drug problem, this is a DEMAND issue, not a SUPPLY issue. Cutting off/regulating the SUPPLY of crappy software isn't the answer you have to educate consumers so they know why they should want stable/secure software. If you cut off the supply, people will start buying software with the features they want (on the timeline they want) online from places that are not limitted by these laws/regulations.

  131. Wall between journalism and commerce by Get+Behind+the+Mule · · Score: 1
    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.


    I find it really stunning that jamie, one of the Slashdot editors, has posted such a comment. It shouldn't be stunning at all; and if jamie thinks it is, I wonder about the relationship between Slashdot's editorial staff and OSDN (the company that owns Slashdot).

    Presumably, MSNBC wants to be regarded as a journalistic enterprise, and not a marketing instrument for their owners. That means that they must scrupulously and uncompromisingly see to it that the commercial interests of Microsoft and NBC do not interfere with their editorial decisions; if they find it newsworthy to publish reports critical of their owners, then they must do that, and let them suffer the consequences. Anything else would be a scandal, and a devastating blow to MSNBC's credibility.

    Not to say that this doesn't happen to journalistic businesses sometimes, but when it does, it is properly viewed as corruption, and the reputation of that business deservedly suffers. A good example of this is portrayed in the film The Insider with Al Pacino and Russel Crowe. It's about CBS's attempt to quash a "60 Minutes" story exposing the tobacco industry's deliberate efforts to make cigarettes more addictive than they already are, because they feared getting sued, and because (IIRC) their parent company Westinghouse was planning a major deal with Brown & Williamson. CBS was villified for it, and deserved it. I recommend the film highly to anyone interested in freedom of speech and the duties of the press.

    But jamie thinks that such a thing is really stunning. I hope that, despite that, there is a similar wall standing between Slashdot's editorial decisions and the interests of its owner. If someone submitted a story to Slashdot that's critical of OSDN, would they publish it?
  132. How to put any OS product on a "mature" timeline by Bingo+Foo · · Score: 3, Funny

    #define LAG_JUSTIFICATION 6

    while (OPEN_SOURCE_PRODUCT_VER >= COMMERCIAL_PRODUCT_VER)
    {
    OPEN_SOURCE_PRODUCT_VER /= LAG_JUSTIFICATION
    }
    printf("We're only at version %d, Just wait 'till we get to version %d", OPEN_SOURCE_PRODUCT_VER, COMMERCIAL_PRODUCT_VER);

    --
    taken! (by Davidleeroth) Thanks Bingo Foo!
  133. Don't be a freaking idiot by Anonymous Coward · · Score: 0

    Bringing a suit against Microsoft is not the answer. If everybody did that, Microsoft would make damn sure that their software was bug free and that if there were any bugs, that they would have plenty of lawyers to defend themselves. Yeah, a copy of Windows XP would cost $25,000 per copy and the computer age as you know it would cease to exist - but at least you would have stable code. People don't think of the consequences of their actions.

  134. Wow! They love Microsoft! by crivens · · Score: 1

    Wow! I was enjoying the article until they suddenly started saying how Microsoft set a precedant by forcing all developers to stop writing and start testing software. From then on I quickly got the impression that they were trying to tell us how great Microsoft are because they changed their attitude towards bugs.

  135. My Software Does Not Suck! by Vortran · · Score: 1

    The only thing about this message that is a troll is the subject. What I mean is that I have written bushels of software for myself and none of it sucks - because I wrote it for me. I didn't contract myself to write it and I didn't pay myself or sell it to myself when I finished it. I've even written some computer games for myself which I still play.

    The point is that, IMO "software sucking" has everything to do with good engineering and capitalism going together like water and oil. Even with freeware, you still have an economy.

    So what's the answer? Part of the answer is that we (as developers) are in too deep with the commercial world - whether it's out of a need to feed ourselves and our families or because somwhere between the Altair and the Apple ][+ we got greedy and climbed into bed with big business (or big business seduced us). Geeks need money for better hardware.. lots of it.

    The other part of the answer is to write it yourself. That takes money too, but I am here to say that we have far fewer problems with software that we have written for our company from scratch than we do with ANY other systems - off the shelf, customized/modified, coded by contractors, or otherwise.

    So, if you want good software, learn to home brew... and get a brewmeister who knows their stuff. Do I always build brick sh*thouses? No, but sometimes only a brick sh*thouse will do.. and Microsoft isn't going to build one for you.

    Vortran out

    --
    Knowledge is like ignorance.. too much can be just as bad as not enough.
    1. Re:My Software Does Not Suck! by Anonymous Coward · · Score: 0

      sorry, but last week when i Hax0red you and 0wn3d your computer .... I found that all of your software does indeed suck.

  136. Gun to their head by rolofft · · Score: 1

    "...once companies have a gun to their head, they'll figure out a way to improve their code."

    Do programmers in totalitarian states produce better code? Government regulation doesn't ensure quality - in fact, it can give consumers a false sense of confidence.

    If quality were more important than new features and pizzaz to consumers, then software companies would cater to that need. The truth is that consumers don't need, and wouldn't pay for, NASA quality code for personal computers.

    --

    "Give a man a fish and he will ask for tartar sauce and French fries!"

  137. Ever wonder? by zyglow · · Score: 1

    Why do people complain about software?! Sure, Microsoft puts out buggy code. It's an easy platform for virus creators to attack because so many people use it. If you can't stand Microsoft, stop complaining and install Linux!

    --
    http://www.forum-addicts.com
  138. I find it odd that nobody mentioned this: by JustAnotherReader · · Score: 1
    Being a software engineer I find it odd that nobody has mentioned the fact that in most companies the QA department is seen as a cost center, not a revenue producer. I've worked for far too many comnpanies that don't even have a QA department. They will have business requirements, use cases, and even GUI design, but nobody takes those requirements and use cases and turns them into a descrete set of test cases. Far too often the testing is done at the end of the coding process by the same people who wrote the business requirements with no "white box" testing done at all.

    Also, in the companies which do have software QA departments those jobs are seen as "entry level". After all, all those people have to do is use the software to find bugs. Right? Once again, management's lack of understanding of the QA process causes them to under fund and under staff those positions.

    In a perfect world, as soon as the business requirements were released the QA department would start designing a test plan full of test cases which touch each variation of each requirement. And if you want to have an even higher level of confidence then you would higher actual programmers in your QA department. They would write test IN CODE that call each method of each class with all the variations of parameter values and actually unit test individual classes and methods.

    We havn't even touched on the topic of automated testing tools that drive the GUI with pre-programmed mouse clicks and key strokes. You can build an automated script that can test thousands of regression test in hours instead of days.

    But here's the truth folks: As reasonable as these suggestions seem, very few companies implement even a few of them.

    The real reason software sucks is because companies don't want to allocate money and resources to this cost center called "QA". And yet, the sooner a bug is caught and fixed the less the cost to fix it. Once again it's a case of the short sightedness of the corporate checkbook that's the real problem.

  139. I'll tell you why! by newerbob · · Score: 3, Informative
    1. The standards for what constitutes a "software engineer" have been lowered because of the Web.

    2. Companies don't want to pay enough $$$ to hire what really counts---EXPERIENCE---so they hire low-cost H1B programmers instead.

    3. There's rampant AGE DISCRIMINATION so older experinced software engineers stop prorgamming and become managers, or go into other fields.

    I joined an R&D group when I turned 40, after spending years managing software products that have earned billions of $$ in revenue cumulatively over the years. Why? Because I didn't want to be forced into managing products staffed with inexperienced and inexepensive programmers, or be involved with shipping non-glamouous tasks (device drivers, etc) to India.

    --

    --
    Ask the Ya-Hoot Oracle Anything!
    1. Re:I'll tell you why! by Anonymous Coward · · Score: 0

      And don't forget JAVA! That was a step backwards, too!

    2. Re:I'll tell you why! by FirstOne · · Score: 1
      "2. Companies don't want to pay enough $$$ to hire what really counts---EXPERIENCE---so they hire low-cost H1B programmers instead. "

      Amen to that.. Philosopher George Santayana wrote, "Those who do not remember the past are doomed to repeat it."

      Now just how much experience, do you expect too find in a country who has less than 1 computer per 100 people? Answer: Damned little.

      "3. There's rampant AGE DISCRIMINATION so older experienced software engineers stop prorgamming and become managers, or go into other fields. "

      The CEO's/upper management have decided that those older engineers with proven track records are a liabilities rather than assets.

      "I joined an R&D group when I turned 40, after spending years managing software products that have earned billions of $$ in revenue cumulatively over the years. Why? Because I didn't want to be forced into managing products staffed with inexperienced and inexepensive programmers, or be involved with shipping non-glamouous tasks (device drivers, etc) to India."

      Smart move.. But your new profession has also been targeted by the globalists and their H1-B program.
      You might want consider yet another career change..

  140. Then hire good developers... by Capt_Troy · · Score: 2

    Some software sucks these days. I used to work for a company that built sucky software, I quit. But I learned something very important...

    We are still in the beginning days of software development. There is a notion that anyone who is computer literate can program computers. This totally discounts all of the training that one would learn taking CS classes in college. But that fact is largely ignored by many of these companies who jumped on the software bandwagon years ago. As a result, they are slowly discovering what software engineering is all about, but their code is decades out of date in terms of concept and design.

    But just look at some of the developers that hire people appropriately trained, the Shuttle Group at Lockheed Martin comes to mind. These guys do not make mistakes or people die. So they employ good software development practices every CS major learned in school and their code just works. All software should be developed using good practices.

    I believe that the importance of these practices and concepts are slowly being recognized in the field, but there are still a lot of faux programmers out there. As time passes, the people employing software developers will come to know the value of a properly trained developer and software quality in general will go up.

    1. Re:Then hire good developers... by Anonymous Coward · · Score: 0

      That is one hell of an assumption to claim that bad software is because of incompetent programmers. I doubt that the thousands of programmers at Microsoft are fools. If you have ever had a bug go out into production code in your work you can add yourself to your list.

    2. Re:Then hire good developers... by Capt_Troy · · Score: 2

      I make no assumption. Bad developers produce bad code. How can this be false?

      I also make no accusation that Microsoft develops bad software, that bugs never occur, and that the quality of MS developers are poor. But that bad software at it's core is the result of poor design and testing. Well designed code can have bugs, that's fine. These can be fixed easially if the software is well designed, coded, and tested.

      Now if you really want to make a point, post as a user and let your voice be heard. Attacking another post as AC with a Score of 0 holds no weight if you aren't brave enough to stand up to your claims.

      Troy

    3. Re:Then hire good developers... by Tablizer · · Score: 2

      (* But just look at some of the developers that hire people appropriately trained, the Shuttle Group at Lockheed Martin comes to mind. These guys do not make mistakes or people die. *)

      And it is fricken expensive. Plus, they don't overhaul the space shuttle every 3 years.

      I heard that the shuttle software is programmed to spec by 3 different teams. All 3 program sets are runs in parallel. If one of the 3 outputs/results differs from the others, then the majority "wins". (However, for critical spots it may stop if there is a non-match in any one.)

      Clearly, this is *at least* 3 times more expensive.

  141. Reminds me of how moronic some people are by sheldon · · Score: 1, Flamebait

    First, out of curiousity... Did you bother to think about this a bit? Maybe try to understand exactly what might have happened based on your wealth of experience on computer system design?

    Did you consider that they probably were talking about the custom database software and not the OS itself? Or do you complain that the Internet is down whenever your modem fails to dial out?

    http://www.gcn.com/archives/gcn/1998/november9/6 .h tm

    "Human error, not Microsoft Windows NT, was the cause of a LAN failure aboard the Aegis cruiser USS Yorktown that left the Smart Ship dead in the water for nearly three hours last fall during maneuvers near Cape Charles, Va., Navy officials said."

    There's been numerous articles released over the years that all point to CAE Electronics custom software being at fault, yet for some dumb reason morons keep posting this old tale and claiming Microsoft was somehow at fault.

    1. Re:Reminds me of how moronic some people are by forged · · Score: 2
      Allow me to better understand your fresh perspective by rephrasing:

      You're basically saying that because the software sold to the US Navy couldn't handle properly a trivial exception (division by zero) generated after data input by an operator, a US Navy warship was a sitting duck for 3 hours, and that this could have cost the lives of hundred of your peers if the vessel had been at war at the time.

      Who's the moron now .....

  142. Out of touch with reality by Futurepower(R) · · Score: 4, Interesting


    "This is one of the better comments on this thread."

    To me, these comments seem utterly out of touch with reality. I find bugs and insufficiencies in open source software. But generally open source software impresses me as an attempt to do a good job.

    In contrast, Microsoft software seems just sloppy. For example, Microsoft's Internet Explorer has 18 unpatched security bugs (when this was written). These active security risks are different from the recent 15 that have already been fixed. This is sloppiness, not mistakes, and I don't find anything like it in the open source world.

    When I have a problem with open source software, I find that I can get help. When I call Microsoft, I find that, usually, no one with whom I am allowed to talk knows any answers. Right now, for example, no one seems to know how to repair a new, Intel Motherboard, Windows XP installation that won't create a virtual memory paging file. It's buggy, and nothing can be done other than re-install the OS and all the applications.

    If you find a big problem in open source software, chances are that you will communicate directly with the main authors. With Microsoft, I have not been able to get answers. This article says that the Psychic Friends Network is equally as good as Microsoft technical support: Microsoft Technical Support vs. The Psychic Friends Network The conclusion of the article seems reasonable considering my experience with Microsoft. Neither organization has useful answers, but The Psychic friends Network is more friendly and less expensive.

    1. Re:Out of touch with reality by shren · · Score: 2

      In contrast, Microsoft software seems just sloppy. For example, Microsoft's Internet Explorer has 18 unpatched security bugs [jscript.dk] (when this was written).

      Ah, but you miss the point of the discussion. It's not that Microsoft software is better than OSS software, or that OSS software is better than Microsoft software. We all have well established opinions on that matter; it all depends on what is really important to you as to which you like more.

      What we're talking about is that while one paradigm or another may produce better software, surely there's a better way of doing it than either well-traveled road... Some way of doing design where anything designed to a spec will be bug free because the spec is well designed. There have been some articles here in the past that discussed the habits of software houses that build software that can not afford to fail. We need the tools to build all software like that.

      We're not out of touch with reality. You're just grounded in a very specific part of reality - the OSS CSS war. Many closed source shops produce crap code - thus, open source provides an alternative. Open source, however, only guarantees correctness for large projects which hackers are willing to throw thier eyes at. Small projects don't magically fix thier problems just because they're open source. For the purposes of this discussion, however, we don't care either way - we want better principles of design, that can be used for open source and closed source projects.

      --
      Maybe the state's highest function is to grind out insoluble problems. (Zelazny, Hall of Mirrors)
    2. 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.

    3. Re:Out of touch with reality by pthisis · · Score: 2

      We're not out of touch with reality. You're just grounded in a very specific part of reality - the OSS CSS war. Many closed source shops produce crap code - thus, open source provides an alternative. Open source, however, only guarantees correctness for large projects which hackers are willing to throw thier eyes at. Small projects don't magically fix thier problems just because they're open source

      But I can fix problems that bite me. I can only sometimes fix problems in closed-source software, and then it's a kludge, and the fix still often isn't incorporated by the vendor.

      Example: We had a closed-source server product running on Linux that wasn't working in our configuration. With a combination of ltrace and strace I was able to figure out the problem, and I wrote a small shared library to LD_PRELOAD which worked around it. I then sent a bug report in basically telling the vendor which line to fix and how to fix it. They opened a tracking number and haven't been heard from since. No fix and as far as I can tell they don't intend to fix it.

      When I fixed a number of buffer overflows and a tmp file problem in gaim (a couple years ago), the maintainers took them in immediately.

      The difference is huge.

      For the purposes of this discussion, however, we don't care either way - we want better principles of design, that can be used for open source and closed source projects.

      That would be nice. However, software is changing rapidly. The article is a bit disingenuous in pointing at more static industries. As it points out, we put up with buggy software because it's so useful. By including new features quickly, software can become more useful quickly. There reaches a point of diminished returns--there aren't too many new word processor features that would improve productivity more than some bug fixing.

      But applying a rigorous engineering discipline to software development does slow things down, and it's often hopeless because the only way I know of to get useful software is to do iterative development until you arrive at what the user wants and not what they initially said they want. Requirements change so much that you really need an engineering process that recognizes that.

      Sumner

      --
      rage, rage against the dying of the light
    4. Re:Out of touch with reality by shren · · Score: 2

      I want you to shut up about open source. And the time at which I want you to shut up about it, is now, to paraphrase Douglas Adams. Not every thread on Slashdot has to be about open source! Can't you go advocate open source in a thread where someone is actually supporting closed source, or even discussing open source, instead of pretending it's on topic everywhere? Or are you still working towards the karma cap? Good principles of software design are relevant in both models!

      --
      Maybe the state's highest function is to grind out insoluble problems. (Zelazny, Hall of Mirrors)
    5. Re:Out of touch with reality by pthisis · · Score: 2

      I want you to shut up about open source...Good principles of software design are relevant in both models!

      That isn't necessarily true.

      One of the fundamental tenets of _some_ (not all) OSS developers is that "release early and often" is good policy and "many eyes make all bugs shallow"--in essence, the thought is that the primary developer should NOT do second-round QA or bug hunting since disclosure of code and an involved community are a more efficient means of fixing local/implementation (and in some cases, global/design) bugs.

      This is a software design principle highly relevant to the topic at hand. It relies heavily on an open-source style community; it remains to be seen whether 1) it is a VALID design principle; and 2) The same effect can be captured in shared-source systems (Java, Microsoft shared source), internal dogfooding programs at huge companies (as per Sun and SGI especially), widespread public betas, etc. If 1) is a yes and 2) is a no then your assertion above isn't right.

      Turning back from OSS-specific design principles, look at the other point I raised: the reason people put up with bugs is because the software is useful. If adding features increases productivity more than multiround bug fixing (as I believe is often the case), then you're doing the user a disservice by channeling resources into the less productive venue. Eventually you'll reach a point of diminished returns where bug-fixing becomes the area of best ROI, especially in well-understood problem domains (like the word processor I mentioned). But bug-fixing is expensive, and especially when a project's feature set is still evolving you need to recognize that time spent fixing bugs in a feature that may not exist in the next product iteration is potentially wasted.

      If you want to put a name and a more formal writeup on this, google for "Agile Manifesto" and take a look at the articles on the Agile Alliance web site. One tenet thereof: quality is negotiable. It costs money. Customers shouldn't be forced to pay for quality they don't need. Time spent improving quality beyond what is necessary is time that could better be spent elsewhere.

      The methodology certainly doesn't advocate slipshod products or shipping bug-laden code, but it does raise a lot of points about how to best deliver software that helps the end users get their work done in the most efficient way possible.

      Sumner

      --
      rage, rage against the dying of the light
    6. Re:Out of touch with reality by shren · · Score: 2

      You people make my head hurt.

      --
      Maybe the state's highest function is to grind out insoluble problems. (Zelazny, Hall of Mirrors)
    7. Re:Out of touch with reality by Deluge · · Score: 2

      There have been some articles here in the past that discussed the habits of software houses that build software that can not afford to fail. We need the tools to build all software like that.

      The only tools that these shops have is strict discipline, methods, and protocols. Take the company that wrote the space shuttle software. They have something like 10 pages of documentation for _every single line_ of the half-million lines of code in the system. No tools will help make you that meticulous, only your dedication will.

      Alas, as you can imagine it would be rather impractical to apply this methodology to common applications, because of time and/or money.

  143. Pick Four... by broody · · Score: 1

    Cheap commodity hardware, system stability, numerous applications, feature packed applications, support for the latest hardware and software, enterprise level support, cheap.

    Software isn't "bad". Charles C. Mann just wants everything at fire sale prices and whines when he doesn't get it.

    --
    ~~ What's stopping you?
  144. 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
    1. Re:Hmmm....; by Beliskner · · Score: 1
      Would a mechanical or electrical engineer allow this sort of thing to happen? Why should a software engineer?
      Wake up, dude. Houses catch fire all the time because of electrical faults and gas pipeline bursts.
      --
      A caveman dreams of being us, the incalculable power and riches. We dream of being Q, then what?
    2. Re:Hmmm....; by ergo98 · · Score: 1

      Bridges collapse, buildings fall down, boats sink. For all of the talk of the auto industry, it's interesting to see 100s of thousands of autos recalled yearly because of basic design defects that compromise safety (and lead to thousands of accidents when brakes fail, trucks rollover, etc.). Mind you I personally find it hard to believe that the radiation machines would allow for erroneous input, but at the same time anyone can hop into a car and plow it into a group of people : Why aren't the car makers expected to deal with erroneous input in automobiles?

    3. Re:Hmmm....; by ckaminski · · Score: 1

      Because we don't have fly-by-wire automobiles.
      The day we do, I GUARANTEE you that Ford and GM and Honda and Toyota will be responsible for dealing with erroneous input.

      A human being, street conditions, and basic care of the automobile is outside of their control... that irradition mechanism was well within the control of said software.

    4. Re:Hmmm....; by homer_ca · · Score: 2

      "Why aren't the car makers expected to deal with erroneous input in automobiles?"

      The critical controls in an automobile are more or less a universal interface, and everybody who drives is at least minimally trained in their use. Gas, brake and steering are all in the same place. It wasn't always that way. Look at a classic car from the 1920s. Secondary controls like lights, radio, and A/C are different among cars, but still, turning the wrong knob on the dashboard doesn't reroute exhaust gas into the cabin or dump all your engine oil on the ground.

    5. Re:Hmmm....; by Ozymandias_KoK · · Score: 1

      Since fly-by-wire merely refers to how control inputs are processed (electrical impulses instead of hydraulic linkages), you probably mean "when we have computer-driven cars" instead.

    6. Re:Hmmm....; by einhverfr · · Score: 2

      Wake up, dude. Houses catch fire all the time because of electrical faults and gas pipeline bursts.

      There IS a difference-- we have strict building codes to minimize this risk-- with stiff penalties for violations. Maybe we should do this with software.

      --

      LedgerSMB: Open source Accounting/ERP
    7. Re:Hmmm....; by einhverfr · · Score: 2

      Since fly-by-wire merely refers to how control inputs are processed (electrical impulses instead of hydraulic linkages), you probably mean "when we have computer-driven cars" instead.

      Maybe collision avoidance detection will not be a liability, but will a car allow itself to take a hard turn at such a speed to be ensured to flip over? This is what output checking is all about. Of course, it is still a problem, but fly-by-wire could be equiped with speed-limit-enforcement systems...

      --

      LedgerSMB: Open source Accounting/ERP
    8. Re:Hmmm....; by Ozymandias_KoK · · Score: 1

      Again, you are saying fly-by-wire when you mean computer control or restraint. Systems could talk to the actual controls themselves and say "nah, G-limiting, don't do that" but it's not inherent to fly-by-wire itself.

    9. Re:Hmmm....; by einhverfr · · Score: 2

      OK Your point is well taken but consider--

      What these constraints provide is a bug control and QA mechanism-- it avoids bugs like turning the steering wheel to the left while applying the breaks with the headlights on bright and the windshield wipers working makes the car turn to the right and accellerate sharply...

      No, they are not inherent to the system, but they are a very good idea anyway.

      --

      LedgerSMB: Open source Accounting/ERP
    10. Re:Hmmm....; by Beliskner · · Score: 1
      There IS a difference-- we have strict building codes to minimize this risk-- with stiff penalties for violations. Maybe we should do this with software.
      Software companies shouldn't be allowed to waive all responsibility like they do now. Thing is you don't sometimes know who's gonna use that software, and even open source systems are vulnerable like the intermittent FS corruption bug in FreeBSD on shutdown disk usage, I've been hearing about corruption there for a while but I never suspected FreeBSD had a major flaw. Bajesus.

      What would be better than law is new trading standards, you have to tell the customer about how reliable your software is and who is liable. If my car had written on it "this car might explode if you switch on the AC" most people are gonna be real apprehensive and ask a *lot* of questions. Joe sixpack must be forced to ask these questions.

      Don't even talk about software certification e.g. MCSE, urghhhh!

      --
      A caveman dreams of being us, the incalculable power and riches. We dream of being Q, then what?
    11. Re:Hmmm....; by kz45 · · Score: 1

      There IS a difference-- we have strict building codes to minimize this risk-- with stiff penalties for violations. Maybe we should do this with software.

      only if GNU software is under the same laws

    12. Re:Hmmm....; by Anonymous Coward · · Score: 0

      I don't know where this researcher got that information. What actually happened was far more serious, and the end result was that AECL got out of the medical instrument & therapy equipment business because of it.

      Originally AECL stated that the reasons for the overdoses of radiation was due to operator error (input errors). That is not actually what happened. The bug was much more akin to the Pentium floating point bug. There were certain 'correct' inputs that caused an error in the calculations. User input had nothing to do with it.

    13. Re:Hmmm....; by d2002xx · · Score: 1

      But it's hard to do for open-sourced software.

      Even if some commerial companies provide the "service", at least GPL'ed softwares forbid it.

    14. Re:Hmmm....; by Anonymous Coward · · Score: 0

      True, but don't the people administering the radiation doses also require training?

    15. Re:Hmmm....; by JWSmythe · · Score: 1

      Actually, on quite a few vehicles we do.. The throttle is an electronic actuator, and the brakes are manged by an electronic ABS system, which can both apply the brakes harder or force the user input off, usually in pulsed braking or to counteract a slide.

      Some cars use electronic controls to manage how each wheel behaves. Click Here for Chevrolet's Active Handling.

      Lexus, a few years back, even had electronic steering. It wasn't the front wheel controls, but the rear wheels would pivot a varying number of degrees depending on the speed and angle of the turn. It was to improve steering. It wasn't a mechanical linkage from the front.

      There have been electronic automatic transmissions for years also.

      Actually, the only parts that you can be fairly sure are mechical are the steering column and your seat belt.

      Well, correction. How many cars were produced with the "Automatic" seat belts, that would detect the door was closed, and slide themselves up to retain the passenger? :)

      --
      Serious? Seriousness is well above my pay grade.
  145. Halting problem by sangdrax · · Score: 1

    Isn't it proven that it is impossible to solve the halting problem?

    Checking if a program won't hang (hanging is a form of bad code, IMHO) does just that.

    If you can define a model of computation for which this doesn't apply, but which can carry out any algorithmic process, you are probably a millionaire.

    So, "forcing good code" is an illusion for the time being.

    1. Re:Halting problem by balaguru · · Score: 1

      Yes, but you can prove a program is totally correct for some precondition. I'd be interested in knowing if any languages have been developed that require the developer to somehow prove their programs correct with a negligible amount of pain. It's seems possible.

    2. Re:Halting problem by Anonymous Coward · · Score: 0

      You can only prove programs which are mathematically based; ie. functional/applicative ones. Mathematics tends to break down when thrown into a situation involving changes of state, and programming is rife with these. You have to make every possible state variable a parameter to your function, which of course is not practical.

      Personally I think that going ahead and mathematically "proving" a program is a complete waste of time if it is already written out in a functional language---the functional code is a valid substitute (and usually much more sensible) for the equivalent mathematical notation. There is nothing magical about it, though most proponents of "proof carrying code" seem to think so.

  146. Hmmm... so the folks over at Apache owe my company by Anonymous Coward · · Score: 0

    Yes... apache owes my ISP huge. We switched to linux/apache for web serving. Our servers were configured 'industry norm' and closed to the outside and with a secure root. Surprise, suprise when I4viKtus hit our farm and blew out all but two server loads... these are machines that were NOT logged in as root no less. We were down for a week and lost 1/3 of our paying customers while we reloaded over 200 servers. Funny think was that Red was running rampant at the same time, but our patched IIS server never even hicupped thanks to packet filtering and a solid firewall. We are switching back and kicking ourselves in the head over and over... alot of people lost their jobs, especially the supposed linux experts that did the conversion and system images.

  147. It's personality Based by Chacham · · Score: 1

    I think the issue is simple. It's a personality thing. On the MBTI, the final letter is the J/P preference. Js, the judgmental, schedule-minded people do only one thing at a time, and then until they are done. Ps, the perceiving, anything-goes people like to do many things at once, but don't really like to finish things.

    Js are *much* better at programming, and thinking designs completely through. (Especially NTJs) Their code works, and works well. Ps are horrendous programmers, the code is usally buggy, and worst-of-all, they just don't care.

    However, Js don't necessarily end up coding. They becomee the DBAs, or project designers. They are recognized as being better, and put in authoratative positions. However, they are then ignored!

    Ps like to code. Either because its an exciting new area (SP), or because of the new challenge (NP). They recognize Js as being better at design (usually) but are reluctant to listen to them. They see the Js as being authoratative, closed-minded, and taking all the fun out of it.

    In the real world, Ps dominate as coders. They believe anything can be done quickly, and are willing to do a bad job just to get it done (SP, expecially).

    Bill Gates did a fantastic job when he started. Being an ENTJ, his judgemental attitude defined a decent system (MS-DOS). (I wonder what Linux Torvalds is.)

    And that is only the J/P preference. The other big one is N/S. Ns are better at programming, simply because they understand it more. But many SPs see a great market, and use their not-as-good skills there, flooded the market with low quality software. The SJs (Keirsey's Guardians) have been seen in programmming circles, but they usually can't grasp the ideas.

    Many people mention money as an issue about buggy code. And true, many SP managers just want to take whatever works and shove it out the door. I think, however, that the personality of the programmers themselves is much more important.

    1. Re:It's personality Based by JofCoRe · · Score: 1

      I think you make some pretty broad sweeping assumptions :)

      Js are *much* better at programming, and thinking designs completely through. (Especially NTJs) Their code works, and works well. Ps are horrendous programmers, the code is usally buggy, and worst-of-all, they just don't care.

      Au contraire, my friend. As an ISTP that codes, I have to make a comment here. True, some of my code is definately messy (see managerial time constaints below), but it generally works as designed, and I take great pride in my work. Therefore, if my code were buggy, it would be one of my top priorities to fix the errors, since the code reflects on the author. If the quality of my workmanship is bad, it makes me look bad, and that does matter to me.

      In the real world, Ps dominate as coders. They believe anything can be done quickly, and are willing to do a bad job just to get it done (SP, expecially).

      Once again, a broad assumption that has no application to at least my situation. Quite the contrary in fact. One of the things that most bugs me about my current position is the attitude of "we need this done now, so do it quick.". I would much rather take the time to do something right than do it quickly. I believe this is a fundamental flaw in many businesses today. Nobody is willing to put the time that it takes into creating things that will work right. Most of the time, there are managerial pushes to get it done quickly, and so things get thrown together half-assed.

      In that sort of situation, when the management doesn't want to listen to the people doing the work to estimate how long it will take and how it should be done, and would rather do it quickly and sacrifice quality, it's true, I don't care. It's been taken out of my hands, the decision made above my head. I do what they ask, even if I don't agree with it... That's a result of the management pushing to "get it done now", and doesn't neccessarily reflect the programmers' uncaring attitude toward the product. Rather, the programmer does care enough to try to do it right, but since the ultimate decision is not up to them, they are more often than not forced to create quick (and crappy) products.

      --

      Place sig here.
    2. Re:It's personality Based by Chacham · · Score: 1

      True, some of my code is definately messy (see managerial time constaints below), but it generally works as designed

      But how many scripts have you designed yourself, and written from scratch?

      it makes me look bad

      Yeah, but with the beard, you're headed in the correct direction. :-)

      Most of the time, there are managerial pushes to get it done quickly

      And, as I mentioned before, this would be due to have a P as a manager. Especially when its in ESTP, who used to won his own company, and couldn't code decently if his life depended on it.

  148. No no no, that's not 5 and 6 by drew_kime · · Score: 2

    Here they are.

    5. ?

    6. Profit

    --
    Nope, no sig
  149. Comment removed by account_deleted · · Score: 2

    Comment removed based on user account deletion

  150. The tools aren't perfect. by SpamJunkie · · Score: 1

    I'm surprised that no one has blamed the tools developers must use as one source of the problem. Obviously no single thing is to blame for the current state of software. There are quite a few problems, mostly because software development is new and all the kinks in the process haven't been worked out yet.

    I'm mostly just a web developer and most of the projects I work on are quite small, but even so there are several times I've noticed that certain tools - launguages, mostly - greatly influence the quality of the end product.

    I usually write in PHP or Python. Once I had to write a cgi in C (don't ask). I'm no great C programmer so I spent a lot of extra time to make sure it was working right. Despite my efforts the cgi didn't just have a few bugs, it even segfaulted from time to time. None of my PHP or Python apps have ever done that.

    From the article, "Instead of meticulously planning code, programmers stayed up in caffeinated all-night hacking sessions, constantly bouncing results off the compiler." This seems to imply that if a compiler were better at having ideas bounced off it then the code might be improved. I think this is true, as some compliers are more useful. Python for example gives excellent errors, at least compared to PHP. Imagine if a compiler could warn you about potential memory leaks or such? This reliance on the compiler not as a tool but an assistant may be why the pair programming of extreme programming works so well.

    I really don't want to start a language war, but I think there is a strong case for the suggestion that some languages help the programmer produce a more reliable end product. I know that C will be faster than Python, but as the article says, processing power is cheap. If Microsoft really wanted to make their operating system more reliable wouldn't they stop coding so much of it in C++?

    1. Re:The tools aren't perfect. by Anonymous Coward · · Score: 0

      The problem is that you're a moron. How fucking easy is it to write C code that doesn't segfault? Cripes.

    2. Re:The tools aren't perfect. by vinnythenose · · Score: 2

      Segfaults? Sounds to me like you were trying to destroy objects that didn't exist. That's not the compiler's fault, that's yours. How can a compiler expect that your destroy command might destroy something that doesn't exist? C is a loose language. It's designed to give maximum power through minimal limitations. As a result you can have lots of programs. If you're writing something small, use PHP, VB, Perl, Python, whatever, but C/C++ is probably overkill. Something large? Perl, Python, VG, they may not be powerful enough to do what you need. It's a case of finding which tool is better for the job.

      But I understand what you're saying. Right now I'm working mostly in Delphi and I've come across lots of bugs in the libraries and there's nothing you can do except bite the bullet.

      It's a compound thing. Bugs in OS, bugs in drivers, bugs in compiler, bugs in the development environment, and then bugs from the app programmer.

      I think this is a result of capitalism. Don't get me wrong, I like capitalism, but it doesn't work on the best product surviving, it works on which comes out first and has the best marketing. As a result products are pushed to be released before they're ready instead of when they're complete.

      Plus, PCs are too general purpose. If you have one tool for a specific job you have less problems. Look at Unix, generally the tools are small and specific. If it has a bug or doesn't work, your replace it, or it gets fixed and it usually doesn't affect anything else. Once everything is interdependant and complex it's more prone to bugs, and bugs become amplified by compounding them (drivers, os, etc).

      I don't think there's an easy solution for this one...

      --
      --- I used to moderate, then I read the -1 articles and decided having to filter through them was not worth it.
  151. Software Dev is *NOT* like an assembly line!!! by D_Nebuchadnezzar · · Score: 1

    The comparison between the assembly line, and software development is a very very poor one. A better comparison would be between the R&D process that goes on in the auto industry and software development.

    That is: There are concepts that come out at trade shows, some are working, others are just ideas/smoke and mirrors. Then a timeline, a few years if not more, is put into place to turn the concept into a reality. The real product then goes through 6 or more months of testing, before the real product comes out. Once the product is out, changes take place on an annual time scale, and the R&D team begin to show their new concepts. The cycle goes on.

    There are few software shops that take this approach, but their code/product is stable, and robust.

    Problems with this, other companies go straight from smoke and mirrors to product in a few months, ie internet time. They don't allow real R&D to take place to make the product the best it can be, and cause other competitors to rush their product to market.

    If we all slowed down, and were not rushed by marketing types, and could resist those who push for incomplete products to go to market, software quality would improve. However, the idea that it may improve to the point where point/click/drag/drop application development could be a possibility is false, since there will always be a need to do the thining intensive research before hand.

  152. Combination of Business Culture & Featureitis by DonWallace · · Score: 2, Interesting
    Everyone in the developer - company - customer triad is to blame.

    Developers are to blame for creating a "boss jock" culture in the workplace that stresses quick results and sheer brawn over correctness, literacy, and maintainability. Developers are to blame for wallowing in and encouraging over complexity and churn of APIs, platforms, and programming languages. Many developers seem to get their rocks off on "being superior" to each other rather than creating something that is truly usable. Most developers have no conception of the key tradeoff between "fragile" and "simple but robust". Many developers are also to blame for "resume engineering", putting needless complexity into products because they want to justify new buzzwords on their resumes.

    Companies are to blame for having absolutely no quality standards beyond profitability, and for creating sheltered sandbox playgrounds of idiot savant techies (the programmers competing with each other for kewlness) that encourages churn of tools for its own sake. Often, there are no grown adults with an ounce of clue paying attention. Also blame dual track career systems that encourage ghettoization of developers and which grooms the incompetent to lead and manage activities that they are demonstrably not good at (the Peter Principle, or the PHB plague.)

    Consumers are to blame for demanding feature bulk in new products without being discerning enough to notice that the useful, core features are not well implemented. Consumers are to blame for buying and accepting crap with no comment or protest.

    Everyone involved deserves each other. Consumers wouldn't pay the bucks to buy conservatively engineered and reliable software (beyond tiny product niches.) Companies would definitely not fund development of products that didn't have some incredible short term payback potential. Developers won't willingly work on stuff that isn't bleeding edge cool.

    In this equation, everyone involved is pushing on each other HARD to make and ship crappy, fragile, bloated products.

  153. Re:How to put any OS product on a "mature" timelin by ceejayoz · · Score: 2

    bwahahaha... *goes off looking for mod points*

  154. Money by karb · · Score: 2
    We know how to make good software. There are plenty of companies that write life-critical systems that have few or no discernable flaws.

    But it costs a lot of money to do that. And computer software is no different than any business. It's worth it for a business to let 5 or 10% of their customer base leave if that customer base is costing more money than it makes.

    It isn't typically profitable to have a professional mechanic pick up the phone every time you call your dealership (unless it's a luxury place), and it isn't typically profitable to make relatively bugless software. Welcome to the World Of Business.

    --

    Jack Valenti and the MPAA are to technology as the Boston strangler is to the woman home alone

  155. 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.

  156. Doesn't work that way by drew_kime · · Score: 2

    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.

    Users have already paid that. However much they paid for the software, that is the extent of what the seller is entitled to. If a court finds that the manufacturer is liable for defects, they don't get to deduct how "valuable" the product was to the user from the damage caused.

    --
    Nope, no sig
  157. There need to be incentive to write good code. by miffo.swe · · Score: 1

    Today there arent anything that warrants writing comercial code better than "it works, mostly". Until there comes either market advantage of off writing stable secure apps it wont get much better. GNU/Linux, apache and other succesful projects has put the torch on some corporations but not near enough. If they dissapear its buissiness as usual. Liability would be good because fear of loosing big bucks works. Nothing gets your attention lika a magnum pointing at your head. liability wouldnt affect open source since its given away for free. The state of software today is just sad, it could be like hardware, faster and smaller. Imagine an OS that ran faster with each release! Not impossible, look at beos.

    --
    HTTP/1.1 400
  158. Writing Good Code Is Shooting Yourself in the Foot by RAMMS+EIN · · Score: 1

    Besides time pressure, there is another reason why programmers write bad code. If your code does just what it needs to and nothing else, you will have a job next time they want a new feature. Especially if you make sure you are the only one who understands the code. If your code is buggy, you can even be sure to get more work, although that is tricky practice because it harms your reputation. The other two are widely used (and supposedly accedpted) paractice, though.

    ---
    I am not sure what this is, but an 'F' would only dignify it

    --
    Please correct me if I got my facts wrong.
  159. The Missing experimental base in software engineer by 3seas · · Score: 2

    ------ FROM ------

    COMDEX SPRING and WINDOWS WORLD 95
    Power Panel - "What's Wrong with Software Development"
    ** In The U.S. Only **
    $81 Billion = 31% of software development gets cancelled before complete

    $59 Billion = 53% of software development has cost over-runs of 189%

    16% success - project success and failure ratio

    61% customer requested features and functions make it in

    Maintenance and repair is where most of the U.S. dollars are going,
    instead of new, better, easier to use software.

    ---- Overall ----

    Problems - all-around lack of complete documentation and weak training, faulty user input and feed back - self contradictory user request, lack of project leadership between developers and users, management created problems and low quality control standards, feature creep and software size increase, advancing technology rate of change and lack of general standards, solutions around the corner but never arrive and our tools are better than theirs attitude, lack of a value chain structure for value added abilities, failure to produce a functional model before coding and constant remodeling, etc.

    Solution directions - code re-use, object oriented programming, component-based programming, distributed components, better tools, better programming methodologies, leaner software, a splitting of code writer types into two catagories - architects and assemblers, better effort to establish a working vocabulary between developers and users so users can in some way lead development, etc.

    ---- A Few Comments from Panel Members ----

    A culture needs to evolve that respect software engineers as crafts-people. Writing code is not just writing code but like the field of writing where you have technical, creative, documentary, etc., there are different types of code writing. (Authors' note: I agree with this but also realize end users are even more specialized in what they need and do. Respect for the end user needs and abilities is needed even more so. Without respect given to the end user, the software engineer will not be given respect in return.)

    A fundamental change in the programming environment needs to happen that allows the tools to work together more. (Authors' note: the panel member making this comment, did not specify what tools or who the tools would be used by. It was a very general comment pointing to a fundamental programming environment change. A lead in to the concept of componet programming. But, there was no recognition given to the concept of componet software or componet applications. At least not in the sense of being outside of "plugins". Read on!)

    Jokingly - one of the best ways to copy protect software is to put it in a dll, give it an obscure name and put it in the windows system directory. Because you'd never find it. (Authors' note: This does not make it any easier for the end user in keeping their system organized, clean and optimized. This attitude of constraints, though humorous, cost end users alot.)

    The meaning of "intellectual property" became questioned. Did it mean you take the best ideas or something owned? (Authors' note: it was the panel supporting "best ideas" but wouldn't the correct term for this use be "intellectual value" rather than "intellectual property"? What would happen, regarding this, in a court room? The audience member whom brought this up, was a bit angry about the distortion. Her question was: Is it the developers whom are creating the problems? And what are the developers going to do about it? The responce was "that's not the problem!")

    Users shouldn't develope software but know, better than the developers, what they want and need. (Authors' note: users don't have the time to write code, it's not their job or duties!!! I can cut the lawn, I know how, but if I don't have the time, I hire someone. And because I know how to better communicate what I want done, I'll get what I want and know I'll not be greatly overcharged.)

    Analogy used to start off power panel: Getting the right software development tools is alot like dating. And it evolved to something about programmers not being able to get dates, while touching a nerve with a panel member. (I do wonder if Phillip Khan (sp? borland, ever got a girl friend.)

    (Author observation from attending this gathering - alot of good points where brought up from both the audience and members of the panel but it became clear there was no solution being brought forward to satisfy the majority. The audience saw this as it thinned out over the course, as they perceived the power panel struggling for a sales pitch. There where two on the panel not biased due their position, leaving six biased. Microsoft, Borland, Powersoft, Oracle, Software Associates, and IBM were the biased parties.)

    Panel mix - Tools developers, Data Base Developers, Application Developers, Application salvagers, and software consultants.

    ------ AND FROM ------

    SCIENTIFIC AMERICAN - Sept. 1994
    Article - "Software's Chronic Crisis"
    The article covers much the same ground as the above but with a focus and flavor of the magazine. The article also goes more into solution efforts with software development on large scale projects. But finding consistent solutions are still hard to come by.

    Mass-produced PC products makes up less than 10% of the $92.8 billion U.S. software market.

    Mary M. Shaw of Carnegie Mellon University, observes a parallel between chemical engineering evolution and software engineering evolution. However, this evolution has not made the connection between science and commercialization required to establish a consistent experimental foundation for professional software engineering.
    ---

    What this amounts to is the lack of Computer science to develope Autocoding machinery that can be more widely used and further developed.

    Programming is the act of automating complexity, that is made up of simpler things, so that the reuse of it is made easy. Be it for the developer level or the newbie end user.

    The field of programming seems to be able to automate any other field but their own and that results in the limitation of just how much can actually get done in a given time period. Not to mention all the bogus junk it allow to happen.

  160. Good software is hard by samwhite_y · · Score: 1

    If you are involved in a large complicated software project and you write 10000 lines of code then that code will have many conditionals, loops, and branches each of which involved a design or implementation decision. Bad programmers think that not much is involved in those choices, good programmers are still internally debating the choices years later. The more I do software development, the more I believe that there is a general lack of awareness just how difficult it is to write a good useful sellable software program. Every few years there is some new methedology that is going to revolutionize software development (remember when you could find Object Oriented Programming Gurus at every software convention). None of them have a technique for naming a function so that two years later you do not regret the name because a.) it is not specific enough. b.) violates the thematic pattern of other function names. Or c.) no longer precisely describes the purpose of the function.

  161. Re:They left out an important issue -- open source by Anonymous Coward · · Score: 0

    I went to Western Michigan University. There it didn't matter what you coded. Most of the teachers didn't grade anything anyway. If you had an American instructor and you were white you passed. If you had a foreign instructor and you weren't white you passed. Not all of them were this way but many.....

    It was frustrating for those of us who consistently did good work.

  162. Damn the Experts. There Is a Silver Bullet by Louis+Savain · · Score: 2

    Software Is Bad Because the Experts Say There Is No Silver Bullet

    Software is bad because we are doing it wrong. We are doing it wrong because our so-called experts tell us that there is no silver bullet to the problem of unreliability. So now they want to bring in the lawyers and even more clueless experts. It won't work.

    The brains of humans and animals are the existence proof that there is a silver bullet. Complexity wise, there is nothing in the universe more robust and reliable than the brain. In fact, the more complex the brain gets (as it learns), the more reliable it becomes. By contrast, the reliability of software gets worse as it gets more complex. Why is that?

    The primary reason is that software is based on algorithms (threads) whereas the brain is a parallel, signal-based system. The reliability of the brain comes from the strict enforcement of precise signal timing: neurons always fire at the right time, under the right temporal conditions. With algorithmic software, it is virtually impossible to guarantee the timing of various processes, which leads to program decisions happening at the wrong time.

    The secondary reason for bad software has to do with connection types. In the brain, signal pathways are not connected willy nilly. Connections are made according to their types. We should do the same with software. All message connectors should have message types, and all connectors should be either male or female to ensure robust connectivity. Plug compatibility should automate over 90% of software construction.

    The Solution

    We must imitate nature. We must forever stop basing computer programming on the algorithm and we must stop using algorithmic languages. Software should be more like hardware with parallel modules and their input and output connections. One of the reasons that electronic circuits are so much more reliable than software is that timing problems are immediately nipped in the bud due to the inherent parallelism of hardware. The circuit simply will not work if timing is wrong. We can create the right software construction tools to solve the reliability crisis. Damn the experts!

    1. Re:Damn the Experts. There Is a Silver Bullet by Hard_Code · · Score: 2

      I'll have some of what he's smoking...

      --

      It's 10 PM. Do you know if you're un-American?
  163. Enough with the "not a science" angle! by Junks+Jerzey · · Score: 3, Interesting

    I'm seeing lots of comments about how software isn't "engineering" or a "science." Well, I hate to break it to you guys but engineering is just as much hackery as anything else. Yes, there is some science to figuring out how much stress a material can take, but it's not like you can mathematically prove that an airplane is safe. Products are recalled all the time because of oversights and design errors. And planes do crash because of mechanical failures. Aerospace engineers are more afraid of flying than the general populace.

    I see two big problems with modern software. The first is that computer systems are much, much, much too complicated, to where people accept lines like "no sofware can be bug free." Sure it can! How depressing it is that we let that be spood fed to us! But not when you have a huge operating system and huge language libraries and huge OS libraries and huge hardware drivers and so on. Heck, there's more code in one of Nvidia's drivers than in OSes from the 1970s. You see many fewer bugs on less complicated platforms, like game consoles and PDAs. PCs are pretty much a lost cause in that respect, and that's not going to change. One day I hope that we can return to more reliable systems, even at the expense of expandability (who cares about expandability any more?).

    The second problem is simply that most developers don't give any importance to producing reliable software. In the telecom business, there's no way you could getting away without writing comprensive test suites and a huge amount of work from a dedicated testing group. But you hardly see automated testing for any software these days, outside of embedded systems. And you'll see silly newbie developers argue that they need to use C++ to write some silly app because "it is faster," when they actually should be using Python or Lisp instead.

    1. Re:Enough with the "not a science" angle! by kcbrown · · Score: 1
      I'm seeing lots of comments about how software isn't "engineering" or a "science." Well, I hate to break it to you guys but engineering is just as much hackery as anything else. Yes, there is some science to figuring out how much stress a material can take, but it's not like you can mathematically prove that an airplane is safe.

      Well, yes, you actually could, but to do so you'd have to run it through a computer simulation, which is likely to have bugs ... :-)

      Seriously, though, engineering isn't the same as programming computers, and I'll tell you why: because every engineering field ultimately has to answer to the laws of physics. Those laws are well-known and well-understood. When you engineer something, you work backwards from the laws of physics. When an engineer designs a bridge, he takes the requirements (the problem specification) and selects a basic design which fits within the problem specifications. The limitations of various designs are well known because the laws of physics dictate those limitations. The design specifies the form of the individual pieces, but the laws of physics determine the necessary characteristics (strength, weight, etc.) of those pieces. Only if the physical characteristics of one or more of those pieces are beyond our ability to manufacture within the cost constraints is the design unworkable, and that is something that can easily be determined ahead of time. If the bridge breaks in use, it's either because the engineer (probably accidentally) ignored the laws of physics or because the engineer didn't understand the problem space well enough.

      The laws of physics ultimately dictate everything about a physical object. The individual pieces of the bridge in the example above are designed and constructed in precisely the same way that the bridge is: the smaller parts which comprise a bridge part are all subject to the same laws of physics that the bridge itself is subject to, so their suitability can be analyzed the same way.

      And so as a result, you can know with a great deal of certainty whether or not a physical design will break, so it's only when the initial problem specification is wrong, when the laws of physics are not fully recognized and dealt with, or when there are errors made during the actual construction that a manufactured object will unexpectedly fail in use.

      Software is very different: there are no laws of physics that govern the functioning of a computer program. In fact, from the program's point of view, the only limitations it has are imposed either by the computer hardware or by the operating system (and the operating system, being a program itself, has no limitations placed on it other than those imposed by the hardware).

      While this means that the software designer has a lot more freedom, it also means that the software designer has no consistent way to determine whether or not his design functions properly: it's entirely possible for his design to meet the requirements of the problem at hand but to still malfunction when subject to inputs that are unanticipated.

      Which leads to another distinction: the kinds of input to a physical object are limited by the same laws of physics which determine how that object will behave when subject to those inputs. The elements of the bridge are subject to the force of gravity, to the force of the wind, and to the force of the loads put on it by its users, but all of those forces are tightly bound: the force of gravity is a constant, we know that the chance that the force of the winds will exceed some large value is so low that it's sufficient to design the bridge with that value in mind, and the forces that can be placed on it by its users are limited by the density of the materials being pushed across the bridge. And because the forces on the bridge are tightly bound, the forces the individual pieces will undergo are also tightly bound. The laws of physics are unrelenting, so input "bounds checking" is automatic and complete.

      But software is completely different in that regard. The software itself is what creates and polices the limits on its input, and because the software itself is responsible for enforcing many of its own limits, it follows that input "bounds checking" is not automatic and complete, but is itself subject to the same possible flaws that the rest of the software is subject to!

      As a result of all this, creating a piece of software is more akin to creating an entire universe, complete with a set of governing laws, than to creating a bridge or other engineered object, because not only must the creator define the design, he must also define the rules under which it will operate.

      One other thing: because the laws of physics are unchanging, it's possible to construct "standard" objects which can be used to build larger objects. And because the engineering on those component objects has already been done, the engineer can safely rely on their behavior. But the software architect's choices aren't so clear-cut. As I said, software not only must solve the problem it was designed to solve, but must also define the set of rules under which it is to operate. So a "pre-engineered" software component not only defines how it behaves, it defines the rules under which it will operate. Both of these things must be considered when the architect is deciding whether or not to use it, and the latter part can often have a huge impact on the entire project, because the entire project may have to operate under those rules, too. This is why in software it's often easier to just "roll your own" components rather than rely on components which have already been written.

      Imagine where we'd be if most electronics shops decided to design and construct their own base components (resistors, capacitors, etc.) rather than use standard off-the-shelf ones. Imagine if most bridge designers had to design and construct the beams, trusses, cables, etc., used to build a bridge, rather than relying on standard components for those things. Things would be a lot more expensive to design and build, and there would probably be a lot more errors made.

      Perhaps that's an argument for standardized components in software. Nice as that sounds though, I don't think you're going to see that happening, because the curse software designers operate under is also a blessing: the ability to define your own rules means that anything is possible. In the real world, the laws of physics always act to limit what we can do and how we can do it. If we want the freedom to do anything we want in software, we must accept that the price of that freedom is the greater possibility of error.

      --
      Use 'slashdot stuff' in the subject line in any email you send me if you want to get past the spam filter.
    2. Re:Enough with the "not a science" angle! by Anonymous Coward · · Score: 0

      Don't you think that software that's actually in
      production does have some practical physical
      limitations, such as the hardware that it's
      running on? Or that the software might behave
      differently under different conditions? Software
      engineering (as I learned it) seeks to understand
      those problems and find reasonable solutions for
      them.

  164. hate to say it... by Anonymous Coward · · Score: 0

    .. but it all boils down to poor design.

    Even Linux suffers from this, so it isn't just closed-source software... (how many different totally-rewritten VM systems so far??).

    I think it hits the head right on the nose when people talk about rushing a product out the door, or caffienated hackers working obscene hours eliminating compiler errors and getting something that 'seems to work ok' so it can be rushed out as a 'production quality' product.

    Not enough time gets spent on proper *design* in the first place, and as someone mentioned, by the time the flaws in the original design are found its version 2.x and nobody wants to spend the time (money) on a complete rewrite to fix the basic design flaws. At least on this, open-source has an advantage that money isn't involved.. just dedicated programmers (free as in beer).

    In your average company, it all boils down to the bottom line. Sure, we can hire security concious people and QA testers to check the "feel" and consistency of our interfaces (and spelling, God I've seen some atrocious messages -- database repair status: "finish to rebuild index files")... but this all affects the bottom line cost of creating a product.

    You want the best QA environment out there? Well, in reality Linux/Open-source probably has it... but for a company like Microsoft?? Ok, so roll out the alpha release of your *next* product, say Windoze ".NET workstation" or whatever the heck they call it, out to the secretaries and non-technical people in the company. Let them beat up on it and find bugs for a year. Have a team of dedicated "hackers" trying to break into the boxes around the company...

    It disgusts me, personally, to hear microsoft say that Windows (which, excuse me, I thought was supposed to be built on top of a mach-style microkernel architecture) is full of code thats so intertwined that they can't seperate it from the OS. Umm... isn't that what a microkernel architecture is supposed to do is enforce *modularity*???

  165. What does this refer too? by Oscar26 · · Score: 2, Interesting

    From the article

    "In the last 15 years alone, software defects have...induced a U.S. Navy ship to destroy a civilian airliner"

    Will someone inform me as to what the author is implying? KAL Flight 007? TWA Flight 800?

    I'll admit there is plenty of bad software out there, but what about all the benefits software has brought us? And technology in general?

    1. Re:What does this refer too? by Anonymous Coward · · Score: 0

      "In the last 15 years alone, software defects have...induced a U.S. Navy ship to destroy a civilian airliner"

      This was Iran Air Flight 655, shot down by the USS Vincennes, July 3, 1988 in the Strait of Hormuz. It was claimed that the tracking system mistook the airliner for a Iranian F14, and the aircraft apparently ignored repeated warnings to divert its path away from two US warships. No visual contact was made with the aircraft before shooting it down with surface-to-air missiles.

  166. There's another catch though by Sits · · Score: 2

    Amazingly, software facing the public often degrades with time (I'm not talking about bitrot) relative to the fall off of support it has.

    Say I went with OpenBSD 2.8 for my firewall. Now that 3.1 is out patches for problems in 2.8 are no longer actively maintained. Thus in order to protect myself I must walk close to the edge but those have to upgrade the least are the ones who jumped to the bleeding edge of the stable releases since you can go two new releases without having to upgrade.

    Sooner or later something forces you to upgrade.

    1. Re:There's another catch though by Anonymous Coward · · Score: 0

      ... or some piece of hardware that you have is only supported in the newer version.

      ... or they finally fixed a problem that plagued the old version and the fix is only available in the new version.

      It goes on and on.

  167. Re:outlook Should have bugs???? by Anonymous Coward · · Score: 0

    software that looks harmless by itself at the beginning can be a deadly combination with other programs or just by mankind's abillity to destroy evertything...
    Programs should always be checked on bugs and be docuimented to prevent doing harm to other programs.

  168. Sorry... by Art_XIV · · Score: 3, Funny

    I don't have the time for an intelligent comment on this...

    One of our sales people promised that we'd have this project done for the end of June.

    --
    The only thing that we learn from history is that nobody learns anything from history.
    1. Re:Sorry... by jsse · · Score: 2

      One of our sales people promised that we'd have this project done for the end of June.

      Our salesperson promised to complete the the project with 4 people max. Now we have 40+ dudes in a room to rush for the deadline which has been changed 7 times in the past three years. I think if we end up deliver bad codes it's our fault and we should be damned to hell while the salesperson gets credit.

      (Actually he really got promoted last year. We've reason to doubt the sanity of our management)

  169. Re:How to put any OS product on a "mature" timelin by bluGill · · Score: 2

    I wasn't intending to use version numbers as the justification, just a supporting argument. Age was my arguement. IIRC GIMP was started sometime about '96, and photoshop sometime about '88. Odds are I'm wrong with both dates, but the seem reasonable even if wrong.

  170. Worse Is Better..... by Kernel+Corndog · · Score: 1

    Sounds like we're rehashing what Richard Gabriel stated back in the early 90's: Bad software released early seems to outlive software that is engineered completely before it is released (paraphrased). You can take a look at it here for the complete argument.

    Interesting to see how Unix was once viewed in the light M$ is today.

  171. Re:They left out an important issue -- open source by mesozoic · · Score: 2

    Perhaps I didn't make what I was trying to say clear enough. I'm not even talking about logic bugs; I'm talking about sloppy programming.

    Recently I took a course in assembly language at my university, and we were graded solely on performance. Nothing on style, nothing on technique, just how fast your program ran. It was competitive enough, too, that style went out the window -- people would write the most god-awful code imaginable just because it ran faster, and they learned to take that attitude automatically. Whatever works, works, regardless of the consequences.

    Now, granted, most schools do teach their beginners about the merits of style, and some (like mine) even grade the introductory C++ classes on how well they comment their code. Sometimes higher-level classes will give you a higher grade for having good style and structure, but I don't think teachers require it as much as they should. I see a lot of CS majors graduate with the idea that any shortcut is acceptable as long as it produces the desired effect; they wouldn't even consider for a moment that they needed to re-think a badly designed project, they'd just find ways to work around its flaws.

    That, I believe, is what the article was referring to as well, and that's what really causes problems for software -- not logic bugs, but just plain old sloppiness.

  172. White/White - Black/Black by Corporate+Troll · · Score: 1
    (to the AC) If what you say is even remotely true you should report this school. Well, a European would report this school to the authorities....a American would do it the American way: Just sue...provided of course that you could prove your assertions.

    Schooling is about merit and good work, not about skin-colour.

  173. Re:They left out an important issue -- open source by zaphod110676 · · Score: 1

    I agree. All of our assignments were handed in in hard copy form. No one even bothered to run them. You were given a data file and if your program produced correct output for that data all was well. It didn't matter how it behaved with the rest of the infinite number of inputs that were possible.

    I don't even want to get into the level of cheating this encouraged. The worst part was the attitude of many in the faculty. I know someone who brought up the cheating to an instructor and this person actually rationalized it by saying, " Well people cheat in other departments too!"

    I know of another instructor that told my friend to be proud of his 'B' because he earned it. Many of the people who got 'A's had cheated and the instructor seemed to be okay with it. It continues to make me sick to this day.

    --
    To Do: 1. Take over world 2. Pick up Milk and Bread on the way home
  174. hmmm - I'm not a programmer... by Dukebytes · · Score: 1
    I'm not - really (I know its hard for you cut and paste geeks to think that.... :).

    I am a hardware/networking guy. That said. I think that code sucks so bad because all I ever do is THROW hardware at servers to make them faster - and I can do that...

    I know that this doesn't really make sense to a programmer - but when they write code and install it on a box - the complain to me that it's not fast enough. You need more proc's - you need more RAM - you need 2 nics - etc...

    I really think that people should write code on a 386 - then it would work great and run like the wind. Programmers ALWAYS have the fastest machines in the house, always. And I don't think that it should be that way.

    Like I said - I don't write code - so I could be talking out my ass here - but if you guys did have "specs" for writing "good" code and did it on hardware that was about 5 years old - we wouldn't have any problems.

    Now this isn't geared towards home systems - people at home want it all - but server systems is where this needs to be addressed.

    I know that the "standards" (if there are any) for writing good code are pretty loose and there are very few of them - and getting this end of it fixed up would help a lot. But I think that it would be hard to do when there is 7000 languages out there to choose from.

    Not to be a dick - but RFC 1925 #(12) "In protocol design, perfection has been reached not when there is nothing left to add, but when there is nothing left to take away." is the way that programmers should write code. And if you did it on old slow hardware - you would have to.

    Duke

    --

    FreeBSD: Nothing runs like a daemon with a pitch fork.
    1. Re:hmmm - I'm not a programmer... by Anonymous Coward · · Score: 0

      One of my favorite reasons for liking NetBSD... it runs on older hardware like Vaxen and DecStations. Last year they made some changes to the "rc" startup code, and after committing the changes the Vax people complained that the startup time for their systems greatly increased (as in, from one minute to five). Every script that ran forked off a new shell, eating up time... so various alternatives were bantered around to fix the problem.

      Code performance problems are all too frequently "fixed" by just throwing faster hardware at it. My old TRS-80 (1.78Mhz Z-80) booted off *floppy* to a "DOS" (LDOS) command prompt in about 10 seconds. My 933Mhz PIII system at work takes well over a minute to boot into Win2k (to the login screen). Admittedly, there's a lot more graphics to deal with... but still... what do I get out of it? Lets see... TRS-80, Scripsit wordprocessor, Visicalc spreadsheet... PC, Word, Excel. Other than using it as a terminal to our unix machines (ok, my TRS-80 didn't have network connectivity, but I used it in college to dialup to the mainframe at 1200baud), I don't do a lot else. I play CD's (I could bring in a CD player)... and get my email (I had Compuserve on my TRS-80 in 1982).

      The faster computers get, the slower they boot... all due to code-bloat from the OS.

  175. I agree with the gist of the article, but... by d0st03vsky · · Score: 1
    On what are they premising their conclusion that software sucks?

    I don't see any numbers indicating worse-ness or sucky-ness of software, or even how much more complex it's become (and that last point is actually acquireable.) I agree that it probably is worse, but they certainly aren't trying to confirm it.

    It seems irresponsible to base a professional screed on the fact that some trainer starts his PowerPoint presentations with a slide that says "Most Software Sucks".

  176. Whatever ... by thedbp · · Score: 1

    What a waste of server space. I mean, 90% of EVERYTHING is crap. Food, music, art, people, governements, laws, clothes, fast food chains ... why would software be any different? When the market is driven by quantity, not quality (as has been the case since the industrial revolution) most of what you see in ANY field is going to be garbage.

    And I hate to belabor the point, but if you want to see a plethora of nice-looking, intuitive, and usefull apps ... switch to a Mac, baby!

  177. What makes a perfect refrigerator? by shren · · Score: 2

    I submit to you that the 2001 refrigerator is approaching perfection.

    It is perfect. The 1950 fridge is less efficient than the 1970 fridge, which is less efficient than the 2000 fridge. Off the shelf, the 2000 fridge is cheaper to run and keeps things colder.

    The 2000 fridge is also an improvement on the 1950 fridge in one very, very significant way - it breaks sooner. Lighter materials, and lots of stupid little unnecessary components add up to a fridge that will be on the scrap heap sooner.

    What? That's not an improvement? It is if you sell refrigerators. Companies that make fridges sell them.

    --
    Maybe the state's highest function is to grind out insoluble problems. (Zelazny, Hall of Mirrors)
    1. Re:What makes a perfect refrigerator? by sphealey · · Score: 2
      The 2000 fridge is also an improvement on the 1950 fridge in one very, very significant way - it breaks sooner. Lighter materials, and lots of stupid little unnecessary components add up to a fridge that will be on the scrap heap sooner.
      YMMV, but that hasn't been my experience. Since 1990 or so fridges have become far more reliable than anything I remember from the 1960s (which were mostly 1950s models). Most manufacturers have been working hard, and successfully, at getting the parts count down, which helps a lot.

      In any case, a 350 USD unit with 60 kg of materials, discarded every 15 years, is better for the environment than a 800 (constant 2002 USD) unit with 120 kg of materials that lasts 30 years.

      sPh

  178. Re: If you asked an architect..... by GooGooMuck · · Score: 1

    Hey, I'll take you up on it, if for that one month, I get union benefits, overtime pay, a reasonable set of responsibilities, and a truckload of Mexicans.

  179. Software IS from non-software engineering by oliverthered · · Score: 2

    Well that's kinda the point, Software is more of a art/science disiplin and not an engenerian disiplin,
    There are two feasable ways of enginering software.
    1: Have precise specifications, and take the type to perform all mathamatical analysys on the project. e.g. Space projects.
    2: Re-write the whole thing, now you know what your doing.

    1, isn't praticle for most things, You frequently don't know the requirements before you start and it would take forever to write word that way.

    2, This is great for reverse enginering projects, but most companies need some return on investment, a Re-write/re-work would be thrown out [I usually re-work modules is a sneeky way, and make sure all the missing/assumed business requirements are resolved first]

    And the third option,
    Release somthing you know has bugs,

    Have full regression tests for the software,

    when a bug is found get a test case,

    Fix the bug,

    Check the test case,

    Re-run all regression tests and check that any descrepancies were caused by the bug and are now fixed.

    Re-build all regression tests.
    Repeat

    Most companies I';ve workd for don't do 3 either, so you just get hack-ware

    --
    thank God the internet isn't a human right.
  180. Requirements are bad. by blair1q · · Score: 2

    Software only does what the requirement-writers (or the jackass managers who "write" requirements on the fly) say it must do to get shipped.

    Stability, being in general unprovable (how do you validate a MTTF of 10 years on a two-day project? you don't. we've been around this question before) is rarely a requirement for software.

    And software isn't only hidden from the user. It's invisible to the programmer. Every coder knows that his debugger only tells him the things it tells him. The rest of his understanding has to be kept in a mental model, which often contains only those short sequences of code that he's picked up from Other People's Listings. The human brain is capable of turning any meme into any other meme; it's about as reliable a mnemonic device as writing on a sidewalk in chalk in hurricane season.

    Code works acceptably to the standards of the organization at the time it decides to deliver it.

    Look up the SEI CMM quality standards or DO-178B to improve yours.

    --Blair

  181. Re:The joke is probably on the Post Office (OT) by brokeninside · · Score: 2
    But mail arrives faster if you spec the correct city or use the Zip+4... because the mail doesn't have to traverse an extra postoffice to get there.


    Zip+4 is always a good idea.

    Using the city name instead of the name of the post office is not always a good idea. What screws most people up is that a mailing address doesn't list your geographical location in the city field, but rather the name of the post office that services your address.

    To make matters more confusing, some post offices have multiple branches. I have a post office three blocks away from me located within the territorial borders of the municipality in which I live. However, this is a branch of the post office for the megapolis next to which my municipality resides. Hence, my mailing address is that of the megapolis and not of the municipality.

    Consider a city I used to live in, Beavercreek, Ohio. When I lived there, Beavercreek was serviced by three different post offices: Dayton, Fairborn and Xenia. The zip code depended on which post office serviced that section of Beavercreek. Most people that used the city name Beavercreek instead of the name of the post office that serviced that area had their mail returned to sender or delayed while the letter went bounced around to the three post offices that served Beavercreek.

    Fun, eh?

  182. And yet... by Doubting+Thomas · · Score: 1

    > It has been oft-observed that you cannot successfully apply a technological solution to a social problem.

    And yet, your car has anti-lock brakes, three-point harnesses, and airbags... Is that not a technological solution to the social problem of bad drivers?

    --
    Just because it works, doesn't mean it isn't broken.
    1. Re:And yet... by Anonymous Coward · · Score: 0
      And yet, your car has anti-lock brakes, three-point harnesses, and airbags... Is that not a technological solution to the social problem of bad drivers?

      no, because none of those prevent car crashes. (anti-lock brakes and antiskid systems try, but there has been some debate as to their doing enough good to be worth it.) if anything, most of those technical "solutions" exacerbate the problem of bad drivers, by allowing more of them to survive their inevitable crashes and drive again.

      in any event, the saying is that you cannot solve a social problem by technological means - not that politicians and hysterical laypeople will not demand that such "solutions" be tried regardless.

    2. Re:And yet... by Mr.+Slippery · · Score: 1
      And yet, your car has anti-lock brakes, three-point harnesses, and airbags...

      Each of which brings new problems - people who aren't trained in the appropriate use of anti-lock brakes (in fact, it seems ABS doesn't make you any safer), people injured by ill-fitting seatbelts (and the personal freedom issues raised by seatbelt laws), people killed by airbags...

      These techno-fixes are slightly helpful, but are at best band-aids. A real solution would at a minimum involve stronger education requirements for drivers and stronger enforcement of safety laws. (The real safety laws, not revenue-generating speeding tickets.) Deeper thought would have us asking why we're playing so much automobile roulette in the first place, and would have us making increased use of safer and more efficient rail transport.

      --
      Tom Swiss | the infamous tms | my blog
      You cannot wash away blood with blood
  183. Mangled quote by thechuckbenz · · Score: 1

    Software also sux because they get credit that is due to the HW guys.
    Software has NOT gotten faster, if anything, the opposite.
    HW has gotten faster. And it doesn't crash anywhere near as often.

  184. Software Lemon Law by tgibbs · · Score: 2

    What is required is a software "lemon law," that would override all software licenses. All that is required is three provisions.

    1) Any reported bug (failure of software to work as advertised or documented) must be fixed without cost to the user within 6 months of report or the buyer becomes eligible for a full refund of the purchase price.

    2) Any exclusion of liability for consequential damages is invalid if the damage results from a bug that the company knew about for more than 6 months.

    3) Any exclusion of liability for consequential damages is invalid if the damage results from a bug that the company knew about and kept secret.

    I think that we'd see in short order a dramatic improvement in software reliability.

  185. The real reson software is so bad by SuperGrut · · Score: 1

    Here is the real reason software is so bad.

    Consumers decide to buy the software that has the most features and not the software that has the fewest bugs.

    If consumers decided to buy the software with the fewest bugs you would see software quality shoot through the roof.

    --
    The city is being overrun by a herd of Lucy Liu's.
  186. It is inevitable... by Anonymous Coward · · Score: 0

    ...when you take into account the scales of what we are referring to.

    A 10 line script or program. No sweat. Likely error free because of the size of the effort. One person, little time, little money.

    When you are talking 100,000 or 4,000,000, I would submit that is effectively humanly impossible to write such a beast that is completely error free. There is no way one person could handle such a task, and the 'too many cooks' applies when you are talking about massive teams of developers.

    Given enough time, money, and genuine interest in the success of a product, you will likely succeed in something that is at least a reasonably error-free. The computer gaming industry gives us an indicator of that (compare blizzard created to sierra created).

    Until the creation of a true 5th GL (which won't exist until computers can creatively think for themselves) there is no way we will avoid errors of logic in massive programmed systems.

  187. Re:They left out an important issue -- open source by Nimey · · Score: 1
    "If it doesn't spit out an error message, it must be done correctly, right?"

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

    Not at my university. I was taught to write code that did one thing, then immediately write a module to interactively test that chunk of code, including with nonsense input. We were to keep at it until all the logic and compiler errors were gone from that bit, then do the next thing.
    --
    Hail Eris, full of mischief...

    E pluribus sanguinem
  188. Non frozen developement by shawnmelliott · · Score: 2

    Design is necessary but it's impossible to keep anything stabilized when you can't freeze development such as in an Ecommerce application or Point Of Sale.

    What happens is that the application is a living thing. Constantly growing and shifting and yes, proper design can account for that but there's alway something that will go beyond the scope that was foreseen in the design phase.

  189. Ah the hell with it! by Anonymous Coward · · Score: 0
    Looks like I picked the wrong time (a few months ago) to join McAfee... *sigh* in the words of Trillian, "it was either that, or back to the dole queue on Monday."

    Anyone got any jobs for Perl hackers in the London area? Yes, I'm serious.

  190. Re: Lawyer Solution by pruneau · · Score: 1
    Aside of the obvious American-Oriented "Let's sue" approach, they are mssing some points in the article.

    Software will forever be more complicated than anything else we are trying to build. Read the "Mythical Man month", written about twenty years ago. Software cannot easily be put into blue print, software does not fit into flow diagrams...

    Just think as software as a state automaton: to properly test any software, you have to test its behavior against every possible input. Useless to say that when your code base amounts to more than a dozen lines, the number of possible states of your automaton is ...simply to big to understand. I'm not talking millions of lines here.

    To propely test software, you have to bridge the gap between the assembly code: where a few lines of code can more or less easily be described into some state automaton, and high-level code when adding a few lines of code will add a tremendous amount of test cases. And do not let any consultant/quality whatever convince you otherwise. The only real value of software is simple to define: if its quality can overcome it drawbacks, then go for it. Do not ask for the impossible.

    If you try to put lawyers into there, you'll just put developpment to a grinding halt, because up to now, there is no reasonnable way to code safely and to test everything. Will it be bad or not: well, I don't think it's going to happen, because on the other hand, when software do works, then it's so usefull. Try to leave without using software: forget about using a bank, a phone...

    I'm rather hoping for a mid-term solution, where software customer will become reasonnable and stop to ask for more, but instead for better. My favorite is the Di....t sentence: "we want a bigger, nuclear power plant, but without too much radiations...unless it gives us X-ray vision"

    Maybe the fact that software will eventually become unmanageable and bloated will force the latter on us ;-)

    --
    [Pruneau /\o^O/\ warranty void if this .sig is removed]
  191. It compiles, ... by vogon+jeltz · · Score: 1

    ... let's ship it.

    Seen somewhere in the net.

  192. I'll get no takers? by Anonymous Coward · · Score: 0

    You should se how I fix business logic bugs,
    3 weeks of coding, takes 2.5 months to do, and when it's done it works.

    The break down normally goes,

    2 weeks of analysis
    2-3 weeks of defining the business logic
    2 week writing test cases, and test scripts, and data patches to correct existing errors
    3 weeks coding
    the rest of the time running test-scripts etc..

    then there's usually a month or UAT.

    The extra time spent (3-4 weeks over compinies where i've previously worked) is usually made up over 3 months (taking into account all support/helpdesk staff)

  193. Re:How to put any OS product on a "mature" timelin by Mark+Hood · · Score: 1

    That might be the REASON, but it's no excuse.

    GIMP is widely hailed as the alternative to PhotoShop - it's not (as long as you just count features). By the time it catches up (if) then Photoshop will have moved on.

    FreeCiv is nowhere NEAR Civilisation 2.0 (at least the last time I looked) and there's been Civ Call To Power and Civ 3 since then.

    Wine can't keep up with Windows - they might run a large percentage of apps, but it's a moving target.

    Of course, you can argue (and I do) that the usefulness compared to the price is what you should compare (bang per buck)... but until you offer all the features people want, you'll be seen as being behind the curve. Whining 'but we started late' is no excuse.

    If you want a given OSS app to be compared to a given prorietary app, then expect to be compared with the current version.

    On the other hand...

    Mozilla caught up with MS, Linux caught the commercial Unices, and there's some other OSS programs out there that match or surpass their closed source counterparts. In my experience, this is for one of a few reasons:

    1. Investing (e.g. Mozilla)
    If you spend money on a project, you catch up. As a previous poster said, a handful of people reviewing code in their lunch hour isn't going to cut it.

    2. Simplicity (e.g. the GNU utils)
    Small, useful applications with a well-defined role can easily be 'copied' - the GNU utils were designed to replace tiny programs and add new features, and they succeeded!

    3. Fixed target
    Linux was aimed at a Posix-compliant Unix kernel. Not 'the current version of Solaris' because they'd still be playing chase-up.

    Please don't think I'm sneering at the work done by the people involved in OSS, I think Linux is great, Gimp is incredible for what it does, and the GNU utils changed my life (RMS, you can quote me :) But we're behind, and we won't catch a moving target unless we invest at a higher level to the people we're chasing.

    Mark

    PS Imagine a running race where I get to start 10 minutes after everyone else, but my first lap is quicker than them all - I can't claim I'm winning at that point, it's whoever's in the lead that matters. Complaining 'but I got here late' cuts no ice, but maybe I'll be noticed for my incredible turn of speed :)

    --
    Liked this comment? Why not buy me something nice
  194. Fred Brooks Is Wrong. There is a Silver Bullet! by Louis+Savain · · Score: 1, Redundant

    Software Is Bad Precisely Because Experts Like Brooks Teach that There Is No Silver Bullet

    Software is bad because we are doing it wrong. We are doing it wrong because our so-called experts tell us that there is no silver bullet to the problem of unreliability. So everybody has given up on finding a solution. And now they want to bring in the lawyers and even more clueless experts. It won't work.

    The brains of humans and animals are the existence proof that there is a silver bullet. Complexity wise, there is nothing in the universe more robust and reliable than the brain. In fact, the more complex the brain gets (as it learns), the more reliable it becomes. By contrast, the reliability of software gets worse as it gets more complex. Why is that?

    The primary reason is that software is based on algorithms (threads) whereas the brain is a parallel, signal-based system. The reliability of the brain comes from the strict enforcement of precise signal timing: neurons always fire at the right time, under the right temporal conditions. With software, it is virtually impossible to guarantee the timing of various processes, which leads to program decisions happening at the wrong time.

    The secondary reason for bad software has to do with connection types. In the brain, signal pathways are not connected willy nilly. Connections are made according to their types. We should do the same with software. All message connectors should have message types, and all connectors should be either male or female to ensure robust connectivity.

    The Solution

    We must imitate nature. We must forever stop basing computer programming on the algorithm and we must stop using algorithmic languages. Software should be more like hardware with parallel modules and their input and output connections. One of the reasons that electronic circuits are so much more reliable than software is that timing problems are immediately nipped at the bud due to the inherent parallelism of hardware. The circuit simply will not work if timing is wrong.

    We can solve the software reliability crisis. We can create tools that automate over 90% of the software development process. Damn the Experts!

    1. Re:Fred Brooks Is Wrong. There is a Silver Bullet! by Anonymous Coward · · Score: 0

      I can provide an input to your brain that it will fail to operate correctly in response to. That input involves a sledgehammer. (Of course, there are many other conceivable inputs that would have a similar effect.)

      Object-Oriented methodologies like to make the analogy between their design and the "real world". They speak of sending messages to objects such as "open bottle". What they neglect to consider is real world inputs such as "throw bottle against wall very hard". There are languages which would accomodate such unexpected actions, ones with multimethods come to mind, but it just goes to show what a mistake a badly thought out analogy can be.

      As for automating 90% of the software design process, I believe that's referred to as adding layers of abstraction.

  195. Computer Human Interaction (Design) Anyone? by Miska · · Score: 1

    It's funny you can tell who inhabits /. by seeing these comments.

    100s of posts about coding, but no one mentions anything about considering what users want, how they work, and how software can best be made to suit their need. In short, CHI doesn't seem to be a consideration at all.

    From seeing aging or non-100%-interested people use computers, I'd sat many more people would be using software if it were crafted for human demands, and not the ones set by the marketing department.

    Sure, a graphic designer can put together a slick looking interface, but if it's conceptually considered to any greater length, it'll have the same effect as faulty code.

    What I'm saying is that, while code makes software run at all, Computer Human Interaction Design makes it used. Hence, it should receive equal consideration.

    (alas, when interaction designers have to take courses so they can explain people what they do, software isn't going to become more 'usable' anytime soon ;-)

    .

    --
    -
  196. When you get artistic engineers by Anonymous Coward · · Score: 0

    There called research scientists now a days.

  197. welcome to the real world.... by Anonymous Coward · · Score: 0

    In the real world everything tends to slip to mediocrity and you need to plan around it. Sure, it would be great if we could only train the computer virtuosos to be programmers, but the reality is that there is quite a bit of demand for programmers. Besides, the weak point is usually in planning: overly tight budgets, unrealistic timelines and poorly thought out designs -- amazing code does little to save these projects.

    I'm also dismayed by the 'but they didn't code before college' attitude as well. So what? Coding is only one of the skills that you need to do the job. It can be learned. Frankly, its your people skills that will determine your success -- if you can't communicate your ideas VERY WELL with others (especially marketing and senior management, who have very different world-views than programmers), it doesn't matter how well you code, you will be beaten by the mediocre, but well-spoken, coder every time.

  198. Easiest way to improve the quality... by ceeam · · Score: 1

    ... of you company's software is maybe to let developers put their names in that "about" screen.

  199. Do this. by phpdeb · · Score: 2, Interesting

    1. Make sure you are in a market that you can actually compete in. 2. Set realistic release cycles. 3. Don't go crazy with features on your first release. 4. Test the shit out of your code, better yet have an actual tester test the shit out of your code. I rarely release code with bugs in it - really. 5. Don't be a cocky, jackass developer with an attitude. 6. Take pride in doing this correctly and professionally. 7. Don't code for 16 hours straight and expect your code to not suck. 8. Take breaks. 9. Relax 10. In a professional manner, inform your client or boss that what he/she is asking is not realistic. Offer alternatives. 11. If you can't do the above, find another gig, that that project/company die so we don't have to deal with their crap software.

  200. Re: If you asked an architect..... by Fulcrum+of+Evil · · Score: 2

    or one month, do your job according to the constraints imposed by the world of building construction.

    Um, what's the building inspector going to do with my code, anyway?. Besides that, we don't even have the equivalent of building codes.

    --
    "We returned the General to El Salvador, or maybe Guatemala, it's difficult to tell from 10,000 feet"
  201. Litigation Is not the Way to go! by Anonymous Coward · · Score: 0

    I find it irresponsible of the author to suggest litigation is the way to fix anything. It is too "after the fact". While I agree forcing companies to "feel" it is the only way to get them to change and the only way to do that is to stop buying their products. Regardless of what many analysts think there are options and alternatives. Windows, excel, word, IE, Media Player.... there are open-source alternatives that work exceptionally well to everyone one of their proprietary offerings.

    Is it possible that software is so different from any manufactured good that it cannot be built properly in a corporate environment. We learned from the "Cathedral and the Bazarr" you cannot treat software like a manufactured good. If you think things like peer review are going to change it, then open-source software is one of the best routes.

    Forget MS, open-source software development paradigms lead to high quality, well designed code. Lets start using it (and participating in the open-source community), and stop complaining about crashes.

  202. 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".

  203. That's on a different level of importance... by Futurepower(R) · · Score: 2


    Read my post. No one at Microsoft can help with a bug in Windows XP! The OS doesn't work. That's on a different level of importance than tabs in Mozilla. Tell the Mozilla people and they will fix the problem. I use K in Linux, but in Windows 20 or 30 tabs and 4 instances of Mozilla works fine.

  204. high dependability computing consortium by Anonymous Coward · · Score: 0

    here is some hope for all that think code will always be buggy. http://www.hdcc.cs.cmu.edu/

  205. Re:They left out an important issue -- open source by Anonymous Coward · · Score: 0

    > The process of writing an open source project
    > is much different from that of a proprietary
    > piece of software

    How so? Why is it better equipped to deal with defects?

  206. Funny by xenocide2 · · Score: 1

    I would have just thought it was a simple felony to provide such insecure access to people's health care records.

    --
    I Browse at +4 Flamebait

    Open Source Sysadmin

  207. Market dominance is hardly the problem by philipsu · · Score: 2, Interesting
    The "monetary gap between market leader and second place" is not the problem. In fact, that mitigates the problem.

    Some of the worst software written comes in periods of insanely-paced competition. WordPerfect vs. Word, Netscape vs. IE (we'll ignore the question that's begged about Mozilla here). Anyone who remembers the "office suite" wars will remember that Microsoft, Corel/Novell, Borland, and YoMamaSuite were each pumping out verions left and right. And when there's that much competition, quality suffers. (Yes, on a relative scale, the best code wins because consumers have choice, blah blah blah, but on an absolute scale, software produced during heavy competition is more buggy).

    This flies against most of the prevailing thought in this forum, but think about the decision from a management point of view. You're about to ship a product. Two pretty bad bugs are found at the last minute. You have to make a go-nogo decision. There are two potential worlds:


    a) You have strong competition, who is also releasing a product with pretty much the same features, and they're planning to release at the same time as you. Early releases mean early press coverage, increased sales/penetration, etc. You have to guess whether it's better to hold off on shipping to fix the two bugs.
    b) You have little competition. In fact, your greatest competition is your software's previous version. You have to decide whether to hold off shipping to fix the two bugs.


    Clearly, the manager in the second case chooses to fix the bugs, since stability is a selling point (albeit arguably a small one compared to features, for the average consumer). But a manager in the first case understands that unless his bugs are far worse than the competitions', shipping doesn't hurt (and in fact may be the most viable option). It's a classic case of Prisoners' Dilemma, and ironically the consumer gets screwed.
  208. Buy a Mac! by mveloso · · Score: 1

    Most mac software is well designed, and just plain works. That's because most Mac developers actually care about the user experience their product affords.

    Don't complain, vote with your dollars!

  209. Most software is a year old, not refined over time by iabervon · · Score: 2

    The software industry is driven by the need to get customers to buy new versions every two years. This means that there has to be something new every two years, and it has to be sufficiently important and different that someone will actually buy a new version because of it. In other industries, the usual practice is to make slight refinements to the technology to improve it. The automotive industry doesn't say, "You already have a car with an internal combustion engine, so we've come up with a new kind of engine." The civil engineers don't say, "We've come up with a new bridge design, so all of the suspension bridges we put up should be replaced." The software industry is totally new every two years, so software it produces is what you'd expect of two-year-old technology.

    Of course, this isn't true of all software. Oracle, for instance, basically does what it's always done, with incremental improvements. And Oracle improves with each version. Linux has gotten more stable and efficient over time, at least in those parts which aren't entirely new.

    Programmers make a mistake or two for each ten lines of new code. I suspect that this is the same error rate as all engineers have. But engineers in other industries, by and large, produce very little new stuff. If you're designing a bridge, you start with an existing design, and then do all of the changes necessary for the particular site. They make a few mistakes in these changes, they do a bit of testing, they fix all of the problems, and they end up with a perfect result.

    Programmers, on the other hand, generate a huge amount of output, such that there are too many errors to expect to find all of them by just looking at the code. This means that later passes have to go through trying to find bugs in an approximate process.

    With a proper design, a new feature should require about 10 lines worth of new code, and the programmer should be able to find all of the bugs immediately.

  210. Users scoff at quality by soft_guy · · Score: 1

    There is a lot of good software out there that is highly reliable, does what it is supposed to do without more than an occasional problem.

    Let me name some software companies that do things right!

    Cassidy and Greene
    Connectix
    Aladdin Systems
    The Omni Group
    (and dare I say it?) Apple

    There's always a market for quality. It just isn't very large. Apple's 5% marketshare proves that.

    --
    Avoid Missing Ball for High Score
  211. You're still fucked. by Bastian · · Score: 2

    So that's not really a catch at all, just further support for my hypothesis =)

  212. Does your dog do your taxes? by Tablizer · · Score: 2

    (* The brains of humans and animals are the existence proof that there is a silver bullet. Complexity wise, there is nothing in the universe more robust and reliable than the brain. *)

    "Animals"? See title.

    Human brain reliable? Not the humans I know.

    Perhaps "adaptable" is a better description than "reliable".

    But, this takes AI which does not fully exist yet and the hardware won't catch up to the computing power of the human brain until roughly 2030 at its current growth rate.

    Plus, the human brain is not very consistent. A person will do the same process slightly different each time, and sometimes vary different from the prior simply because of an itch or because an attractive female walks by, putting the brain in a different "mode".

  213. Apple was sued for poor software design... by mjolnir_ · · Score: 1

    ..when their DVD player software did not perform 'as advertised.' A class action suit was brought, and anyone who had purchased iMacs during a certain period were invited to join.

    The settlement allowed involved parties (ie end-users) to purchase Apple products, including an update to the Mac OS software, for reduced prices. I had updated the OS on my office Macs anyway, but I was able to purchase several Apple optical mice (ok, fine, they are still only one-button) for a decent discount.

    Consumers need to read the fine print, and get organized. Companies do pay attention, even giants like M$.

    -mj

  214. All crashes are user errors... by allism · · Score: 1

    If the user never turns the computer on, it won't crash...

    Seriously, calling a crash a user error does not make it not the developer's problem--for instance, I shouldn't be able to do something with a defined function in Excel that causes Excel to crap out, and starts causing other software on my Win98 machine to act buggy (happened two days ago).

    That said, I run Win98 on my gaming machine at home and have had periods of months where I have not had to reboot. Usually the only time I have to reboot is (a) power failure reboots for me, (b) I've played way too much Civ3--only game that seems to do it, or (c) I have been using another Microsoft product, i.e. an Office product especially. I don't know why the heck they can't seem to get those to work properly...

    1. Re:All crashes are user errors... by wisemat · · Score: 1

      I agree that developers should work to make most software crash resistant in the face of user error. But after a certain points there are trade offs between giving the user power and making it crash resistant.

      Take the old IMacs with OS9 on them as an example. They were very, hard to crash. But you couldn't change the hardware, and the software wasn't up for much customization in general.

      Given the option, I'd rather have the power and control and flexibitility even at the price of SOME stability. You have to have a balance though.

  215. Investment theory == rush it by Tablizer · · Score: 2

    (* 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. *)

    It is investment philosophy that "a buck today is worth more than a buck tomarrow". This is related to the roughly 18-month turn-around time expected for any investment. Thus, longer-term issues are "time discounted" by today's biz philosophy.

    There is theory and rigor to support time-discounting, and so far nobody has made a decent case that IT should be exempted, beyond anecdotes.

    I see a lot of problems due to poorly planned software, yet I don't know how to debunk standing investment theory.

    Is there a method to the madness?

  216. Re:They left out an important issue -- open source by Carmody · · Score: 2
    Well, that IS how they teach people to do it in college...


    Depends on the college, I suppose. I graduated from the University Of Illinois in 1986, Computer Engineering. Well organized, commented code was required in the CS classes. We used to complain that one could get a B or C on a program that "worked."

    --
    God is real unless declared integer
  217. Does Your Tax Software Sniff Out Bombs? by Louis+Savain · · Score: 2

    I'll repeat with what I wrote with added emphasis. Complexity wise, there is nothing in the universe more robust and reliable than the brain. I'll leave it to you to figure it out. Although I don't hold much hope, in your case.

    1. Re:Does Your Tax Software Sniff Out Bombs? by Paradise+Pete · · Score: 1
      Complexity wise, there is nothing in the universe more robust and reliable than the brain.

      That statement doesn't really make sense. What is it you're trying to say?

    2. Re:Does Your Tax Software Sniff Out Bombs? by Proc6 · · Score: 1

      I can't speak for him, but I agree with him, and I think it means a little something like, "No, I can't do taxes in my head as fast as Turbo Tax, nor can my brain sniff out a bomb, but it can grasp the concept of both, among a zillion other things, and see corrolations between them, and build new ideas based upon both. Turbo Tax, left to it's own devices, will never be any more than Turbo Tax.

      --

      I'm Rick James with mod points biatch!

    3. Re:Does Your Tax Software Sniff Out Bombs? by Louis+Savain · · Score: 2

      I can't do taxes in my head as fast as Turbo Tax, nor can my brain sniff out a bomb, but it can grasp the concept of both, among a zillion other things, and see corrolations between them, and build new ideas based upon both. Turbo Tax, left to it's own devices, will never be any more than Turbo Tax.

      Yes and thanks for grasping my point. The analogy is simply a way to point out that any hand crafted software with the complexity of the brain would be so full of bugs, it would not even run. Robustness and reliability are measured in terms of errors vs. complexity. The brain is existence proof that complexity does not imply a lack of robustness. Its reliability is orders of magnitude greater than software. Just going down a flight of stairs or driving a car around town is much more complex than anything any software application can do. This fact squarely and decisively refutes Fred Brooks' "No Silver Bullet" nonsense.

      No other computer expert in the annals of software engineering has had a more deleterious effect on our efforts to find a final solution to the software crisis than Fred Brookes. I don't care how respected the guy is in the computer science community. He single-handedly managed to convince almost the entire world that there is no hope. It's rather sad. Countless human beings will die as a result because the problem is not getting better. It's getting worse. Much worse.

    4. Re:Does Your Tax Software Sniff Out Bombs? by Tablizer · · Score: 2

      (* Its reliability is orders of magnitude greater than software. *)

      I disagree. Manufactoring quality usually goes *up* if you remove humans from the loop.

      Like I said, I agree that the human brain is flexible, but it is in general *not* reliable. Even "dumb" machines tend to be more consistent at repetative tasks than humans.

    5. Re:Does Your Tax Software Sniff Out Bombs? by Louis+Savain · · Score: 2

      Like I said, I agree that the human brain is flexible, but it is in general *not* reliable. Even "dumb" machines tend to be more consistent at repetative tasks than humans.

      It is obvious that you don't know the first thing about reliability and how it is measured. I don't have the time to educate you. See you around.

    6. Re:Does Your Tax Software Sniff Out Bombs? by Tablizer · · Score: 2

      (* It is obvious that you don't know the first thing about reliability and how it is measured. *)

      Yeah, unlike you, I am stuck in the real world with real people doing stupid, sloppy, forgetful things every day.

      (* I don't have the time to educate you. See you around. *)

      Hopefully not. Besides, you would probably forget about the appointment anyhow, Mr. Reliable.

  218. They'll always complain.... by pjrc · · Score: 2
    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

    I purchased a new fridge approx 4 years ago, so a '97 or '98 model, but pretty close to 2001.

    It stopped working a few months back. I pulled it out and did a quick look... no fuses to blow, no fan jammed, no "obvious" problem within plain site. After a few days, my girlfriend made me call for someone to come repair it.

    Turned out that the thermostat had failed after just 4 years. The warranty was only 1 year, so about $120 later the fridge was working again. He had spare thermostats and other parts in his van, and he had a full schedule for the rest of that day servicing other refridgerators... one little anecdote that perhaps my fridge isn't just one isolated incident.

    So what's the point... well, had you chosen another example I wouldn't have replied, but you chose to compare software to refridgerators, and my brand new 1997 model Amana fridge failed and not only did I have to pay ~$120 for "tech support", but I lost all the food that it was keeping cold (sorta like losing your unsaved word processor document when the computer crashes).

    I can't really speak to the exact efficiency, but I can tell you that it's loud enough that I can sometimes hear it while laying in bed at night, and if the efficiency were approaching 99.99999%, I think it'd at least be able to go 8-10 hours throughout the night (door closed properly) without the noisy compressor needing to turn on!

  219. Comment removed by account_deleted · · Score: 2

    Comment removed based on user account deletion

  220. Re:Litigation Is not the Way to go! - Not so fast. by jeffc128ca · · Score: 1

    As much as I hate laywers I think mabey it's about time to let some law suits come out. As a programmer I am willing to live under a certian amount of scrutiny because I know my work will pass the test.

    Software has lived far to long under the "We ain't responsible for nothin" license agreement.

    I remember the a plane crash where the investigation afterword found that a peice of steel was in the plane was heated too hot when it was manufactured. This made it weaker and below standards. The found the forgesmith that was responsible for forging the peice and fired him.

    Same kind of thing happened to a truck liscence tester who passed a truck driver that didn't know what he was doing and killed a family in a mini van.

    I don't want to deal with which hunts in my work place but its about time some punishment for bad work, either for bad management or bad programming.

  221. Quality of Software vs other stuff by teetam · · Score: 1

    I bought a $40K car last year - brand new and fully loaded. It has a lot of cool stuff, but I still have change the clock's time twice a year to adjust for daylight savings! Nobody considers the car to be dumb because of that. I haven't heard anyone talk about the clock as a 'bug' in the car's quality. Why is that? I work in software and I agree that software quality needs to improve a lot, but people tend to ignore the complexity of software. Most software have complex (and yet configurable) interfaces and that plays a major role. If you look at two 1998 Honda Civics owned by two different people today, you will find that they are essentially the same (except for the hood ornaments, perhaps.) But, sell a PC with the same configuration to two different people and look at it six months later - they will have almost nothing in common! Users can do almost limitless things with their software as opposed the standard five things that you do with any other appliance or machinery. I agree that software quality today is worrisome, but please give software a break. It is not that bad.

    --
    All your favorite sites in one place!
    1. Re:Quality of Software vs other stuff by jeffc128ca · · Score: 1

      as a senior programmer (at least in my firm I am senior) I disagree.

      There are LOTS and LOTS of sloppy programmers in the marketplace. There is lots of room for improvement. I see programmers put code into production environments with out any code review by some one else and think there is nothing wrong with that.

    2. Re:Quality of Software vs other stuff by teetam · · Score: 1

      I agree completely. The "boom" led to people with little or no knowledge developing core components. As I said in my post, there IS a lot of room for improvement. My point is something else - software, as a whole, is often compared unfairly with other simpler, non-configurable appliances. I can think of a dozen "features" that I would love to have in my refrigerator. But I don't any company is in a hurry to add them. Pretty much all you can do with a fridge is set the cooling level, open and shut. Compare that with most of the software around.

      --
      All your favorite sites in one place!
  222. 30,000???? by Anonymous Coward · · Score: 0

    --complete exaggeration. I learned to type on a manual, a self powered bio-drive manual. First "word processor" I used was simpletext, big surprise, it still works. Now if you mean a 'word processor" that uploads web pages automagically and dynamically codes quake 16 demo modules and shows videos underwater after bouncing off a satellite-well, maybe 30 grand.

    In other words, get real. Ya'll get paid well, do your fscking jobs, that's from a consumer. If you can't do your jobs, expect some indian or chinaman to do it for you for 100$ a week, because THEY WILL. In case you haven't noticed, it's happening now. This is called "a clue", buy one at your leisure. Or, concentrate on coding and playing your video games until you wake up unemployed, which will happen, whether you like it or not. Produce saleable products, or watch your competition overseas do it, undercut you serious bad, and be forced to mow lawns or something, YOUR CHOICE. If all that is available is crap, then the cheap crap will get sold first. Look at open source right now, the inroads it is making. Now ask "Why?" Is it all that much better? Nope, it honestly isn't, it's roughly the same for most softwwares apps. It's cheaper, consumers and professional bean counters are just tired of paying really whopper bucks for stuff that just plain ain't that good, "sort of working" is not the same as "working". Official propietary stuff is marginally better, but not for the price difference. I know I vote with my wallet, all the time. If all my choices all fall under "almost works", then I'll just pay for or aquire the cheapest version. If I have a need, and there's a product that works as advertised and is reasonably priced, I buy it. It's really that simple. Magnify my totally normal consumer attitude by millions of people, the people who actually fund programmers. this is clue 2, sorry to have to repeat it.

    You buy hardware, yes? How long will you keep buying hardware that doesn't work as advertised? Well? Coded product is the same, learn from general human historical business history or become unemployed, everyone has a choice, choose once, choose wisely.

    Good luck, you're gonna need it with that attitude, because luck is all you have, skill is far down the list of your attributes obviously. If you as a programmer are telling me the only option I have is a 30 grand word processor, then believe or not, I can get by without one. So will millions of other people. 30$-sure, I can come up with the money. 300$ for my small business-maybe, depends on what it does and how it is better than what I already have. 3,000$? Outta your mind, not happening. 30 grand? Seek professional help.

  223. with the exception of one... by MemeRot · · Score: 2

    no, i don't

    1. Re:with the exception of one... by newerbob · · Score: 1
      That PROVES MY POINT.

      You're one of those inexperienced, inexpensive "programmers" that's lowering the quality of software because you just keep reinventing--badly--the technologies from 5,10,15,20 years ago.

      --

      --
      Ask the Ya-Hoot Oracle Anything!
  224. Good CS is harder than given credit for! by aquarian · · Score: 2

    ...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.

    No, they migrate because the computer industry offers more money, is more interesting, and has more sex appeal (yes, really). In this day and age, it's where the action is.

    As an ME who graduated in the mid 80s, and now tackling CS, I can vouch for the fact that to be a real computer scientist is much, much harder than to be another kind of engineer. The laws of physics and chemistry don't change, but everything in CS is a moving target. It's also way, way more abstract. And I don't think studying it in college is any easier. I'm sure ME students pull far fewer all nighters debugging their homework.

    However, most of these students wouldn't have been good mechianical/electrical engineers either. What a CS degree gives them is a meal ticket. Even if they never become a good computer scientist, without an inkling of what an algorithm is, they can at least emerge from college with a trade-school level of ability as a programmer. And even that makes bank- a run of the mill programmer might make more than a senior engineer at an aerospace firm.

    1. Re:Good CS is harder than given credit for! by Anonymous Coward · · Score: 0
      Interesting ... I got my undergraduate degree in
      CS during the 1980s. I also had several friends
      who were MEs and EEs (some of whom left CS to
      major in those). If you don't mind, could you
      elaborate on how you find CS more abstract than
      those other majors?


      Personally, I found some aspects of algorithm
      analysis to be as abstract as system dynamics.
      (FYI, this was covered in an EE course that was
      required for the major.)


      A big difference that I found between CS and other
      engineering majors was the way the classes were
      taught. I thought that in some cases, if the CS
      classes had more of an engineering approach, they
      might be easier to understand (particularly by
      people who did not have much prior programming
      experience, but had logical and mathematical skills).
      Another difference was that many courses I took
      were being debugged (the course notes were
      undergoing constant revision), whereas the other
      engineering courses used textbooks that had already
      been in print for several years.

  225. Almost right... by MemeRot · · Score: 2

    The solution isn't tools to automate a large part of the writing of code. This will stop many errors, but won't give the kind of reliability you're talking about. The solution is to develop tools to make it easy to use genetic algorithms to evolve your software. As soon as this process is cheaper/easier than coding by hand, it will instantly become the dominant way of developing software systems, because the end result will have the kind of rock-solid reliability you're looking for. Granted, you won't have any idea how it works, but the trade-off will be worth it.

  226. That's because mere coding is a trade school thing by aquarian · · Score: 2

    A lot of companies don't hire CS grads, because Math, Physics, and ME/EE grads have far better math, logic, and modeling skills, and are often smarter to begin with. Programming itself is a trade school level thing. What counts is what's behind the code. Get someone who understands that stuff, and you can teach him to implement it- but not vice-versa.

  227. MSNBC/TR by Anonymous Coward · · Score: 0

    "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 :)."

    One of the used-to-be-great magazines I'm getting ready to cancel since, save for this "shocking" article, its parent has more and more become the "Microsoft Institute of Technology" with so much glowing MS fluff.

    Gotta wonder if all this MS "my bad" coming from the Beast's associates is all carefully by-design PR from MS's new "trustworthy computing" crap.

  228. What's with this "dot-slash"? by GuyMannDude · · Score: 2

    I could--as anyone reading ./ probably could--isolate the bug in ten minutes given the source.

    The joke's on you, MIT.

    Y'know, if you're going to laugh about a boo-boo committed by one of the greatest science institutions in the world here on slashdot, perhaps you should at least make sure your post doesn't have boo-boos, like getting the order of the "dot" and "slash" mixed up (dotslash?)

    GMD

  229. Re:Don't use software that sucks. by Anonymous Coward · · Score: 0


    Doesn't count as software since it will never see the light of day.

  230. Re:They left out -- author responds by ccmann · · Score: 1
    I'm the author of the piece, and you're right. I did leave out open source software. The reason was pretty mundane. Bringing in open source software and going into the test data on its relative robustness would have taken more space than was possible in Technology Review. FWIW, as best as I can determine, there are some data indicating that OSS is less crashy and -- maybe --more secure. (I'm thinking of the fuzz tests and so on.) But much of the problem with software comes from usability issues, and there is suggestive evidence that OSS is behind there. In any case, it's not a slam dunk.

    As for your other complaint, that this will make average people think "all software systems are going to kill U.S. Marines and crash ambulances into each other" -- well, I guess I have more faith in the readers than you. I don't think a reasonable person would get this impression. But hey, maybe I'm wrong. -- Charles C. Mann

  231. It's a question of combinatorics by Anonymous Coward · · Score: 0

    Software is complex because the number of possible pathways in most programs grows exponentially.

    Consider a simple graphical user interface consisting of 16 checkboxes. That means you have 2^16 (or 65,536) different possible inputs. Can a software company afford to test all possible inputs and outputs? For every logical branch in the code thereafter, multiply by 2. See why software is complex?

    1. Re:It's a question of combinatorics by jeffc128ca · · Score: 1

      Thats what autotester software is for. Don't let complexity be your excuse for being lazy. At least try every combination.

  232. Bullocks by Buskaatt · · Score: 2, Interesting

    We all see software that sucks, but most software actually works great.

    My microwave works flawlessly ... every time I call my wife, it goes right through ... and my car regulates its own emissions (even though I haven't changed the oil in 6000 miles). Well I could go on.

    So when Watts S. Humphrey says, "Software's simply terrible today," I just laugh. I spend all day on a computer, but 80% of the software I use I never see, and it performs flawlessly.

    I am doing all I can not to slip into a ranting rage at this lame article ....

  233. PS for you.... by MemeRot · · Score: 2

    "PS. I don't include VB as a professional language"

    I guess you're not "one of the unfourtant(sic) saps in the business world of programming"? When you need an internal app to do one specific thing on one specific (windows)platform, why would you write it in anything but VB? Getting the job done makes the boss happy. Doing it elegantly or in a way that's easy to port to ten other platforms doesn't mean diddly to your boss. Business needs are RAPID, all this 'engineering' hooey doesn't apply to one of the largest areas of programming employment, which is small to medium businesses running internal apps. These apps are not battleships, they're canoes. Don't fault them because they're not battleships. That doesn't mean they can't be WELL-CONSTRUCTED canoes, and mine certainly are, but they'll never be battleships. At my company half of the business needs from 2 years ago no longer apply, the company didn't even exist 10 years ago, but if it had all of it's needs would have changed over this time period. Investing too heavily in an internal app makes you unwilling to change your business model from that dictated by the app, which is not a good decision.

  234. suing by Anonymous Coward · · Score: 0

    --I think a lot more people would see if it was practical to sue. The EULA is a codified get out of jail free card. It has to GO. It's a form of universal monopoly that no other product has except major league baseball. That's why it's so important to defund microsoft via the legal system-yes, some of their stuff works, but so much of it doesn't, and it's so lame, and they used illegal practices to get to the point where it's hard to sue. Once they are cracked and destroyed financially-like enron was and arthur andersen-THEN you'll see "good software" on the market. When coders and CEO's actually go to jail for ripping people off, for lying, for releasing products they know are broken from day one- then you'll see less but BETTER software on the market, and the consumers will buy it and use it. they have little choice when ALL the products on the market all are broken and suck. We don't have capitalism yet in the market, they (software companies in general) just paint a facade on it and call it capitalism, when it's more like a mafia protection racket.

    Yes, I know this is overly simplified, but it's more or less true, though.

  235. oh COME ON by wrinkledshirt · · Score: 1

    The day before Microsoft was declared by a judge to be a monopoly, MSNBC ran a story that tried to prove that Microsoft was NOT a monopoly.

    Take another look at any news page on MSNBC. How many times are you branded by Microsoft trademarks throughout? Another time, they ran an article about competing OSes, and Linux got mentioned three times by name, compared to the 70 times in the stories and surrounding advertisements that Microsoft got mentioned.

    I will admit I'm surprised about this particular article, but it's not like they have an anti-MS agenda.

    --

    --------
    Bleah! Heh heh heh... BLEAH BLEAH!!! Ha ha ha ha...

  236. Re:Everyone says software sucks.....I by reallocate · · Score: 1
    I really have little incentive to report a problem to a vendor. Perhaps they'll send me a patch if I report a known bug, but more than likely the best I can expect is wait for the next release. It is as if I bought a new car, drove it home, discovered a problem, took it back to the dealer, and was told to wait for next year's model.

    In reality, I stop using software that doesn't work. That means I don't buy the next release of a commercial product, or I don't download the next release of a non-commercial product.(Why should I trust them to get it right the second time around?) Procuring either kind of software represents an exchange of my resources for the vendor's resources; if the exchange is not equitable, I'll shop elsewhere.

    --
    -- Slashdot: When Public Access TV Says "No"
  237. Re:an interesting article, but... author responds by ccmann · · Score: 1

    "It didn't help that so many of the people quoted had no idea what they were talking about, and the ones who did had their quotes taken so far out of context that they made no sense."

    As the author of the piece, I'd be interested to learn a) why Nathan Myhrvold, Peter Neumann, the folks at SEI, and the other people I spoke with don't know what they're talking about; and b) how you know I quoted them out of context. Have you read the transcripts of my interviews?

    "It seems a lot of people who never worked at Microsoft know how Microsoft develops software."

    I think the people whom I spoke with at Microsoft -- as well as the ex-Microsoft developers -- know how the company develops software. I mean, didn't you read the article?

    "It would make more sense to talk about a particular class of software and bug and then discuss why it is there. E.g. why do Microsoft systems products have buffer overflows."

    Not in an overview article, which is what this is. This complain reminds me of Dawn Powell's complaint that much criticism boils down to the remark that if you were driving my car you'd go to some other destination. Well, fine, but it's my car -- I wanted to write, and was asked to write, an overview.

    --Charles C. Mann

  238. Coding Too Easy by Anonymous Coward · · Score: 0

    Here's the gist of it. Coding is too simple. Give any fool with half a brain a reference book and a couple months, and poof! he's a programmer. There need to be more stringent requirements for coders, more education in proper coding, and more quantifiable tests of a coder's competancy. Unless we find a solution to the problem of unprofessional coders, we are trapped in the age old truism: Garbage In, Garbage Out.

  239. Too fast by Cro+Magnon · · Score: 1

    Usually, software is released too quickly without enough testing. Awhile back my boss was on my case because I kept saying my program wasn't ready yet. Eventually I said it was ready. A month later, some of the other projects were hitting snags, but my stuff kept chugging away.

    --
    Slow down, cowboy! It has been 4 hours since you last posted. You must wait another few hours.
  240. Dude... by MemeRot · · Score: 2

    I'm not ancient, that's all. I wasn't a programmer when those languages were being used. Are you fully up to date on the W3C's DOM standard and how to write cross-browser compatible script? No? Software is too big to be the uber-geek, you specialize in one area. And I for damn sure ain't gonna specialize in dead languages that don't mean squat to a potential employer.

    I get the sense that you're one of those crotchety "Back in the day of punch cards, sonny boy..." types, or are in danger of becoming one. I'm a business application developer, not a software engineer. Don't tell me i'm too sloppy, and i won't tell you you're too slow.

    1. Re:Dude... by newerbob · · Score: 1
      Are you fully up to date on the W3C's DOM standard and how to write cross-browser compatible script?> As a matter of fact, I am! I was responsible for the XML-ification of several large projects, too.

      You even proved my point more! You think that, because I'm from the days of puch cards, I'm not familiar with the latest whiz-bang technology. I'll have you know that this latest DOM/XML stuff dates back to the early 70s. I've seen this grow from the beginning.

      You would discount my capabilities because I'm a geezeer, and many schlock software companies won't pay experienced programmers the $200K+/year that they deserve. That's why there's so much crappy software out there today.

      --

      --
      Ask the Ya-Hoot Oracle Anything!
    2. Re:Dude... by Anonymous Coward · · Score: 0
      You need a SPANKING!

      I would love to summon you into my office, make you drop your pants down to your knees, bend over my lap, and let me paddle you for 10 minutes or so!

      Then, even though I too am an old GEEZER who doesn't get the Internet, I'd post the pictures to alt.binary.sex.pictures.spanking.geeks.

  241. Where is the value in better software? by WGR · · Score: 2, Informative
    Because software is an intangible, unlike most engineering products, there is no inherent lifetime in code. That means that obsolence is not in the product itself (it doesn't rust), but in the arrival of new software that has more features etc. This means that improving old software by removing bugs and creating a more reliable product is nowhere near as profitable as adding new "feechurs", changing the design, adding more complexity and thereby increasing unreliability.

    We have to look at the psychology of the buyers of computer software to understand the bind that software makers are in. If they create a more reliable version of their older product, most users are unwilling to pay for these "bug fixes" in Version 1.5, but they are willing to pay for the new features in Version 2.0. If you are are in the business of sales, you sell what the customers will actually buy, not what they say they want, but don't buy.

    People decried vehemently Microsoft's attempt to gain a revenue stream for patches and updates with the Office XP licensing scheme, but how can one improve quality of existing products if there is only a revenue stream for selling newer more complex and buggy products. Until there is actually money in making better software, we will not get better software.

    And there are but two ways to make money

    1. Increase sales
    2. Lower Costs
    If one can't increase sales by selling better software, then we need to have lower costs (fewer lawsuits, fewer cancelled contracts etc.) by having more reliable software gain advantage to its maker.
  242. Re:MSNBC -- author responds by ccmann · · Score: 1

    "I think this article is an attempt to get public opinion stirred up to the point that UCITA laws - which include things like mandated warranties on software products -seem like a reasonable solution, and thus make life more difficult for MS's competition."

    As the author of the article, I was astonished to read this. I can tell you that Technology Review, which asked me to write the article (and from which MSNBC reprinted the article) has no connection, financial or otherwise, with Microsoft; that Microsoft was unenthusiastic about the article (but, my hats off to them, made some of their people available for interviews); that UCITA laws explicitly do not make mandated warrantees but instead guarantee the lack of implied warrantees of merchantability now dubiously codified in software licenses; and that the claim in this comment was especially mind-boggling given that I was one of the first mainstream journalists (in a 1998 article in the Atlantic) to warn about the potential consequences of UCITA (then billed as article 2B of the UCC). --Charles C. Mann

  243. IMHO... by kemster · · Score: 1

    .. the real reason why software is so crappy is that technology is improving so fast. Think about it for a second. If tomorrow Intel/AMD/whoever announced that the current processors was as fast as things were going to get, what would happen? Developers would be forced to write code more efficiently. If we're stuck with Pentium IV's forever, well we better squeeze every last ounce of goodness out of each clock cycle. And in the meantime, hunt down bugs that cause problems and/or efficiency issues. As it is right now, programmers don't care much if their code is bloaty and slow. By the time it hits the market, processors will be faster, everyone will have more RAM, and it'll run fine. And for version 2.0, they just add more features and bloat.. since processors will be even faster then. It's like a constant race for all the bells and whistles possible. If we started hitting real limits of speed, memory, storage, then coders would have to be better.

  244. Hypocricy (sp) by fire-eyes · · Score: 1

    This made me laugh so hard:

    Rivard was one of several to point out that MSNBC says software sucks.

    MSNBC.

    BWHAHAHA thanks for the laughs, jagnecks.

    --
    -- Note: If you don't agree with me, don't bother replying. I won't read it.
  245. Re:They left out an important issue -- open source by SecurityGuy · · Score: 2

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

    Not where I went to college it isn't. Ironically, out in the real world what I'm asked isn't "Is it correct?" or "Is it safe?". I'm asked "Is it done?" It's ironic that Myhrvold is 100% right. Microsoft shovels crap at the consumer because the consumer has a ravenous appetite for it.


    As for open source, I'm not impressed. I don't think I've yet seen a piece of open source code and been impressed with its maintainability. Some has been horrifically awful, including the C monstrocity which used #defines to make C look like Visual Basic. I'm not yet convinced that open source's primary value, and the one which dwarfs all the others, is that it's generally free as in beer. Documentation, which is critically important, is usually bad and often nonexistant. I'm keeping an open mind, but I'm still waiting.

  246. 200K!!!! by MemeRot · · Score: 2

    You're fucking nuts man. There's only so much a programmer is really worth. If you're using your skills in X, Y, and Z, then you're not using your skills in A, B, and C. So from the point of view of the company, you're no 'better' than someone who just knows X, Y, and Z. Your skill at XML for example doesn't benefit from your knowledge of Fortran. And while you may know Fortran and I don't, we may both know the same amount about XML. And if you're asking 200 k and I'm not, why would the company pay you that much? I'm not talking project managers, technical architects, etc. which do command higher salaries and require a broad technical background, just programming jobs. 3 65k a year programmers will produce more than 1 200k a year programmer, you'd have to be walking on water while coding to justify that price tag.

    I'm probably letting my co-worker Ralph affect my view of you, he's very much the crotchety type I was talking about while I've never met you. But my being from a different generation is no reason to dis my skills, programming is programming regardless of the language. You're either good or you're not, and if you've been in it 20 years, I'm sure you are too.

    P.S. DOM does not date back to the 70's. That is patently a ridiculous statement. No web standard predates the web. Neither does XML, though admittedly the SGML it has its roots in is as antique as you say.

    1. Re:200K!!!! by newerbob · · Score: 1

      Well there are a bunch of folks out there who *do* get that pricetag, usually to come in to save a project and mop up the mess that a bunch of kids like you make.

      --

      --
      Ask the Ya-Hoot Oracle Anything!
    2. Re:200K!!!! by newerbob · · Score: 1
      And your "music" stinks too!

      I had to bust my butt practicing the piano 8+ hours a day for YEARS before people would respect me as a musician.

      Kids today just jigger together some software and call it "music".

      (How many hours a day does Eminmen practice?)

      --

      --
      Ask the Ya-Hoot Oracle Anything!
    3. Re:200K!!!! by MemeRot · · Score: 2

      OK newerbob, first off I'm 27 I'm not a kid. But if you want to get personal and insult my music.... I think I'll let your brilliance speak for itself:

      "I feel sorry for you. Your scoutmaster must have anally raped you as a child and you became gay."

      "I'll be right over to suck it! HUGUGLGUHGLGUGH!

      I love the taste of young 7ee7 h4kr d1ck in my mouth! MMMMMMmmmm Good!"

      You should really take some care with what you post to the web, man. How many hours a day do you practice sucking 7ee7 h4kr d1ck?

    4. Re:200K!!!! by newerbob · · Score: 1

      Well, you don't get my humor, and I don't get your music. Maybe we're even?

      --

      --
      Ask the Ya-Hoot Oracle Anything!
    5. Re:200K!!!! by MarkCollette · · Score: 1

      Apparently you don't see the value of experience. You also infer that knowing (A, B, C) is distinct from (X, Y, Z). There is a concept called congruence that you don't seem to understand. It might be true that A != X, but it's probably true that A is congruent to X. People without experience think that new-to-them ideas are truly new. People with experience find the commonalities between old and "new" ideas, abstracting out the details.

      So you won't think I'm crotchety, I'm 22.

    6. Re:200K!!!! by Anonymous Coward · · Score: 0

      experience is experience regardless of the buzzwords

    7. Re:200K!!!! by Anonymous Coward · · Score: 0
      With regards to Eminem, regardless of what trained
      musicians might think of his music, the people
      who buy it, go to his concerts, etc., do so because
      it is what they want. Correctness and aesthetics
      are judged relative to the expectations of his
      consumers, not the music-buying or music-producing
      populace at large.


      If there is a lesson here for software, perhaps it
      is the emergence of certain types of markets for
      software that have made some companies successful
      with arguably poor designs or implementations,
      while others with great designs struggle to
      survive.


      There is also the factor of a company that makes
      lots of money being able to buy a smaller, struggling
      company with better software, which it integrates
      into its product line. This is the story of Cisco's
      success.

  247. It's an American lie by BlackTriangle · · Score: 0

    It's so they can excuse the fact that a trigger happy American military thug on the Vincennes killed 290 Iranians. Nothing to do with software.

  248. marginal cost of production by hwaite · · Score: 1

    Took a basic Ec course in college and all I can remember are these stupid marginal cost/benefit analyses. Seems like the answer to every test question was a graph with a randomly distorted pair of lines with roughly opposite slopes. Where they intersect ... something or other happens. OK. That was a bit off-topic.

    Anyways, in most industries with high-priced alternatives, the less popular sellers simply put more resources into manufacturing a high quality product. Hand craftsmanship, expensive materials, expert designers, extensive customization: all of these things cost a heap. More importantly, the overall cost keeps increasing as more units are produced.

    Software doesn't suffer from these limitations. An extra copy of DB2 costs IBM about ten cents (or whatever) for the CD. For this reason, one wouldn't expect niche software providers to prosper unless they're filling some obscure need. Just because you're willing to pay a little more than the next guy, don't expect to get a better word processor. In all likelihood, the market leader can suit your needs with (a version) his generic offering.

    With software, the cost of building something that's as good as what already exists and then improving upon it is astronomical. When the rare company does accomplish this, it usually becomes the market leader rather than surviving as a fringe player. Doesn't seem to be much room for second place players. No marginal costs make it more appealing for the leader to adjust its prices to take the whole market. Even worse: there are a ton of benefits to having the same software as the next guy. Such a feedback loop makes it seem like monopoly is the state of equilibrium in the world of bits and bytes. Somehow that has something to do with the aforementioned graph.

  249. Off topic...but i find it funny by Programmer_In_Traini · · Score: 1

    I just learned today the meaning of F.U.C.K

    "Fornication Under Consent of King"

    I'll be more careful when I use that word now ROFL or the king, whoever or whatever it is will come to kick my sorry ass.

    Ok Ok..sorry, such strong usage of the F word deserved at least this off-topic submission

    sorry :)

    --
    If you look like your passport photo, you're too ill to travel. - Will Kommen
    1. Re:Off topic...but i find it funny by Bastian · · Score: 2

      uhh. . . are you sure that all of those words that make up the acronym go back into history as far as the word fuck does?

      I am pretty sure the word fuck predates Middle English, which makes it older than a lot of now common words such as "fun" and "shower." (Fun just didn't exist until Shakespeare created it, shower derives from the Middle English word "shore.")

    2. Re:Off topic...but i find it funny by Programmer_In_Traini · · Score: 1

      Here's where I found it :

      Sous l'Ancienne Angleterre, si on n'était pas membre de la famille royale, on ne pouvait pas avoir de relations sexuelles sans l'accord du Roi. Pour avoir un bébé, il fallait demander audience auprès du Roi, qui vous remettait un panneau à clouer sur votre porte pendant le rapport. Sur le panneau était écrit F.U.C.K. pour Fornication Under Consent of King. Vous connaissez maintenant l'origine de ce mot.

      sorry, I'm way too lazy to translate it all right now but I'm sure any translation website will be good enough to translate close enough to what is said above.

      I don't pretend its true, but I think it makes sense.

      Good day :)

      --
      If you look like your passport photo, you're too ill to travel. - Will Kommen
    3. Re:Off topic...but i find it funny by turgid · · Score: 1

      I think the pre-Middle English explanation is more likely. From my humble knowlege of language, e.g. German has the verb ficken == to fuck and English and German have a lot in common if you go back a long time.

  250. Magic Languages by pyrrho · · Score: 3, Funny

    If you don't buy Gates' ad-hocking promises of redemption there are other solutions, like creating a programming language that forces good code;

    Or a better bet would to just find the Fountain of Youth so you can drink it's water, stay forever young, and then you'll have plenty of time to fix the bugs in the real languages.

    --

    -pyrrho

  251. No joke by fm6 · · Score: 2
    The zip code I live in covers two cities, let's call them Appleville (tiny village) and Apricotland (large, sprawling concrete wasteland.) I live in Apricotland which is asciibetically second (based on the third letter.) Note that the first two letters are the same. MIT TR's mailing system lists me as living in Appleville. Why would it assume that zip code 12345 is the smaller village instead of the sprawling metropolis?
    Which town is at the center? I live in 95060, which is the central zip code for Santa Cruz, CA, which has 6 or so zips. But 95060 also extends inland to includes a big rural area north of town, probably because it makes sense to serve rural customers from the central post office. That puts a small, unincorporated neighborhood called Bonny Doon at the geographic center of the zip code -- and that's the name many databases associate with 95060.
  252. 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
    1. Re:Time compression, decision making... by Demerara · · Score: 1

      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.

      Surely the bust came about precicely because the Marketers didn't know what sells?

      --
      Backward%20compatibility%20is%20over-rated
  253. We can solve this without suing anyone by darthwader · · Score: 2, Interesting

    There is a simple solution that we consumers can implement, and it doens't involve suing anyone.
    Don't buy crappy software. I use all free software at home, not because I'm poor or a communist, but because I rarely see software that's worth paying money for, and when I do, there's also free software that does the same thing, if you're willing to live without bells and whistles. For example, I've discovered that almost everything I want to use MS Word for, I can use "vi" for instead. And VI is much more reliable.

    --
    I hate it when I make a joke and I get modded "+5 insightful". Mod the stupid comments "funny", not "insightful", pleas
  254. Re:an interesting article, but... author responds by AdamBa · · Score: 2
    "It didn't help that so many of the people quoted had no idea what they were talking about, and the ones who did had their quotes taken so far out of context that they made no sense."

    As the author of the piece, I'd be interested to learn a) why Nathan Myhrvold, Peter Neumann, the folks at SEI, and the other people I spoke with don't know what they're talking about; and b) how you know I quoted them out of context. Have you read the transcripts of my interviews?

    Neumann claims that programmers think as long as code compiles it works, and that Gates testimony that removing the browser would break XP "means there's no structure or architecture or rhyme or reason in the way they've built those systems". Those are both patently false. Cem Kaner claims that companies treat quality as secondary. That's wrong. I don't know if he said the part about bug deferral being a plot to generate later revenue, but that's also absurd. The Ariane 5 rocket failed due to an ARITHMETIC overflow, not a buffer overflow (still a bug that should have been caught of course!). Then this guy Downes claiming that excessive WIndows messages in Visual Studio is "cataclysmic. ... It's total chaos" -- I mean come on.

    I should not have said, "out of context", I should have said, "without sufficient context." Someone from Microsoft claiming that C# is going to prevent errors is nice, but since IIS and XP aren't going to be rewritten in C#, and the Outlook problems were design issues, why does that matter? Myhrvold's quote was amusing, but you could point out that Microsoft can always say "No" to people, and if the customers weren't asking for features, Microsoft would be dreaming them up themselves -- the real problem is the "new features vs. stability" debate. An 18 megabyte patch -- OK 18 megabytes may be a big number, but saying "it may be a record" is silly (it obviously isn't, look at any NT service pack). Plus how much was bug fixes and how much updates and enhancements?

    "It seems a lot of people who never worked at Microsoft know how Microsoft develops software."

    I think the people whom I spoke with at Microsoft -- as well as the ex-Microsoft developers -- know how the company develops software. I mean, didn't you read the article?

    I'm an ex-Microsoft developer (NT/2000/XP kernel) and I didn't see much I recognized. NT4 should have gone through 4 rounds of tests? What does that mean? Do you mean beta tests? Microsoft leading in component design is nice, but doesn't have much to do with preventing buffer overflows in XP. And comments about the attitudes of Microsoft people are just one person's opinion. "Software's developers were too rushed or too careless to fix obvious defects" -- I'm glad you know so much about me and my former co-workers.

    I understand it was an overview article, but you make it sound like any solution will improve on the problems, and it's just not like that.

    For the record, here is my opinion on why Microsoft code has buffer overflows in it:

    1) Bigger teams -- if you move from 20 devs to 200 and your software is only as good as its weakest link, inevitably the weakest link will be weaker.

    2) Lack of training -- Microsoft always assumed good people would do good things, instead of relying on more processes.

    3) Too much reliance on the testers -- assumption was "if it's a bug a customer will hit, our testers will find it."

    4) [sort of strange considering the previous point] Bad attitudes on the part of developers who think testers are inferior, combined with testers evaluated solely on number of bugs they find, leading to little empowerment for testers to actually find buffer overflows. More on that here.

    - adam

  255. 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.

  256. Wrong people, wrong tools by magi · · Score: 3, Interesting

    One reason that I've very often seen lead to failed projects is assigning them to people who simply can't do them. Not necessarily because they don't know anything about programming, but because they don't know the tools they have to use.

    Years ago I was assigned a UNIX - MS Access integration project where I had to translate EDI messages to Access tables. I had never worked with Access before. I told my boss that I can't do it in reasonable time, but there wasn't anyone else free at the moment, so I was forced to do it. The result was that after three months of coding, $100/hour from the customer, I had learned to program with MS Access - by learning how not to do it. I burned out and quit. The horrible software was probably rewritten from scratch.

    I have seen many really horrible examples of similar situations with other programmers, often with people dabbling with C++, lately with people who simply don't know how to program with C. Oh, what incredible examples I could give you! The result has been indescribable garbage. The garbage often works in the planned test cases, barely, but bleeds memory like a pierced pig and crashes from a slightest variation.

    Many of these catastrophies occur because the programmers do not honestly admit: "I can't do this." And even if the programmers would admit, their managers won't when dealing with the customers.

    All tools require learning. Some have a soft learning curve, some steep as a mountain. It doesn't matter much how professional one is, when it comes to learning new, conceptionally very different tools. Managers don't often understand this.

    Just as often, programmers are assigned to projects of which they do not have a clear vision, usually because of too superficial specifications. Without proper vision, they can't find the right attitude to write beautiful, perfectionist code. They need inspiration, and finding it often takes time.

  257. Blame the Consumer... by CyNRG · · Score: 1

    Basic human nature: I want it now! I want it cheap!

    Most people have a certain amount of dysfunction in their life, so they are used to the concept. So software that fails keeps them in their comfort zone. Most people get worried when everything goes right.

    Nicolo Machiavelli advised every new prince to not make life to hard on the body politic, otherwise they revolt. Microsoft, Et al, might be close to a revolt? Maybe, maybe not.

    Cy

    1. Re:Blame the Consumer... by forkboy · · Score: 1

      Yep...that reminds me of the old tenet that developers use when being pressed for deadlines and cost contstraints....

      Good quality, fast development, low price.....choose 2

      I for one don't tolerate mediocrity in my software if I've paid for it. I'll return a piece of software if it doesn't meet my expectations in a heartbeatr.

      --
      This message brought to you by the Council of People Who Are Sick of Seeing More People.
  258. Layering has limits by Tablizer · · Score: 2

    (* As for automating 90% of the software design process, I believe that's referred to as adding layers of abstraction. *)

    "Layering" can only take you so far. In complex software, abstractions tend to need to be *relative* to a given task or user or situation. The "encapsulation" or shell approach does not satisfy this very well because if you have a need or change that is smaller than the granularity of your capsule, then you often have to bust it open and fiddle with its innards.

    Although the human brain has "departments", the interfaces to and from these is relatively open. Control-happy One-interface-fits-all generally does not cut it.

    Layering worked fairly well at a very low level, but it is not extrapolating further up the complexity food chain we are finding out. We need to think more about sets and graphs and multi-dimensional view managements rather than keep trying to kick the overburdened shell/tree/layer-horse up the hill further.

  259. What Those Version Control Numbers Really Mean by saudadelinux · · Score: 1

    I wish I'd written this...

    Once you start playing with software you quickly become aware that each software package has a revision code attached to it. It is obvious that this revision code gives the sequence of changes to the product, but in reality there's substantially more information available through the rev-code than that. This article provides a guide for interpreting the meaning of the revision codes and what they actually signify.

    1.0:

    Also known as "one point uh-oh", or "barely out of beta". We had to release because the lab guys had reached a point of exhaustion and marketing guys were in a cold sweat of terror. We're praying that you'll find it more functional than, say, a computer virus and that its operation has some resemblance to that specified in the marketing copy.

    1.1:

    We fixed all the killer bugs ...

    1.2:

    Uh, we introduced a few new bugs fixing the killer bugs and so we to fix them, too.

    2.0:

    We did the product we really wanted to do to begin with. Mind you , it's really not what the customer needs yet, but we're working on it.

    2.1:

    Well, not surprisingly, we broke some things in making major changes so we had to fix them. But we did a really good job of testing this time, so we don't think we introduced any new bugs while we were fixing these bugs.

    2.2:

    Uh, sorry, one slipped through. One lousy typo error and you won't believe how much trouble it caused!

    2.3:

    Some jerk found a deep-seated bug that's been there since 1.0 and wouldn't stop nagging until we fixed it!!

    3.0:

    Hey, we finally think we've got it right! Most of the customers are really happy with this.

    3.1:

    Of course, we did break a few little things.

    4.0:

    More features. It's doubled in size now, by the way, and you'll need to get more memory and a faster processor ...

    4.1:

    Just one or two bugs this time... Honest!

    5.0:

    We really need to go on to a new product, but we have an installed base out there to protect. We're cutting the staffing after this.

    6.0:

    We had to fix a few things we broke in 5.0. Not very many, but it's been so long since we looked at this thing we might as well call it a major upgrade. Oh, yeah, we added a few flashy cosmetic features so we could justify the major upgrade number.

    6.1:

    Since I'm leaving the company and I'm the last guy left in the lab who works on the product, I wanted to make sure that all the changes I've made are incorporated before I go. I added some cute demos, too, since I was getting pretty bored back here in my dark little corner. (I kept complaining about the lighting but they wouldn't do anything). They're talking about obsolescence planning but they'll try to keep selling it for as long as there's a buck or two to be made. I'm leaving the bits in as good a shape as I can in case somebody has to tweak them, but it'll be sheer luck if no one loses them.

    --
    I didn't think the house band in Hell would play this badly.
  260. C# prevents basic coding errors? by Anonymous Coward · · Score: 0
    I'll give C# it's due, it does prevent some very basic coding errors, but with it's backward compatibility enhancements (aka raw pointer artithmetic) it's not nearly as foolproof as it could be, but that's missing the issue.

    Just to point out that in C# you have to put this inside 'unsafe' code blocks.

    Apart from that c# is a bit of an abortion. Gratuitous syntax changes from C++ and Java just for the sake of it. It's MSDOS file path seperators all over again. Rather than making it easy for C++ or Java programmers to migrate they put lots of little stumbling blocks in the way. Like I've now got a Console class rather than cout or System to write to the Console. Well I suppose you could call it a clean-up.

    The language has lots of kludgey stuff for the Microsoft world obviously concerned with backwards compatibility.

    The main problem as far as I can see with the whole .NET strategy is that you are forced to use Microsoft tools. Like the notoriously insecure IIS. This rather blows out of the water that using existing development frameworks will help you reduce the errors in your code.

    Oh, don't tell me about Mono as an alternative, it will never see the light of day.

    David

  261. Points to fact: by Anonymous Coward · · Score: 0

    Well, as qa, most people do not know what they want. Only knows that they want something cool. It is also true, that Microsoft and the open source community, (let the flaming begin) know nothing of Quality Assurance. Especially the Open Souce community, if there were practices and proceedures put in place software would be lot cool.

  262. OS in a car by AdamBa · · Score: 2
    An engine management computer is relatively trivial. How many inputs and outputs does it have? Just because it is running a "bona fide" embedded OS, does not mean it approaches the complexity of a general-purpose OS like Linux or XP.

    There is a fairly direct inverse relationship between how generalized an operating system is and how hard it is to get stable. For example, engine management computers are not susceptible to remote buffer overflow exploits from the Internet. Or new applications and drivers being installed for that matter.

    Look at the Xbox OS, a Microsoft product. I don't hear about it crashing. Why is that?

    - adam

    1. Re:OS in a car by HeyLaughingBoy · · Score: 1
      An engine management computer is relatively trivial. How many inputs and outputs does it have? Just because it is running a "bona fide" embedded OS, does not mean it approaches the complexity of a general-purpose OS like Linux or XP.


      Depends on your definition of trivial, I guess. A consumer-oriented general purpose operating system of comparable complexity to a small RTOS would most likely be considerably less stable than the RTOS. It's not the complexity per se (though managing the complexity to the minimum necessary is a part of achieving stability), but rather than the intended customer demands a high quality product.

      By bringing up the issue of car computers, I was pointing out that in many ways cars, as electro-mechanical assemblies, are extremely complex *systems*. But they are usually so well engineered that they appear simple. Look at it this way: people are surprised and annoyed when the door handle on their new BMW drops off. But have to reboot Win2k once a week? Oh, that's normal.

      The larger issue is customer expectation. If we demanded that software we use every day be as reliable as the car that gets us to work every day, it would be. Yes, at first that software would be expensive, but in the face of a large market for high-quality software, businesses would start to provide it. Competition will ensue and the price will drop.

      Maybe we need the equivalent of a Japanese car of the early 70's to arrive on the software front.
  263. Cars and software by nixterino · · Score: 1

    From the article: If anything, they say, it's getting worse. It's as if the cars Detroit produced in 2002 were less reliable than those built in 1982.

    Okay, so given that cars have more s/w now than they did in 1982, why are they not less reliable? It seems like the embedded programs must be pretty robust. I know I've never had trouble with the software in my car that runs behind the scenes.

  264. Pass the bottle please by chipotle_pickle · · Score: 1

    Me too.

    Maybe the human brain is what Windows is modeled after. It does most things right most of the time. But sometimes it will fail to perform a task it has performed right 100 times before. It is sometimes impossible to figure out what has caused it to fail. It failed just because. "Oops, sorry."

  265. Quality Craftsmen by tchristney · · Score: 1

    There is one thing about a craft based manufacturing process: the true mastercraftsmen can produce a product of much higher quality than can be produced on an assembly line. The problem is that masters of the craft are few and far between, and they are never able to mass produce anything. It is true that many engines ran on a hope and a prayer. However, there were also gems that could never be matched in form or function by mass produced items.

    Exactly the same thing can be seen in software development today. A small minority of programmers produce incredibly robust, elegant code. Thankfully, irregardless of how software "engineering" develops, there will always be masters at work.

  266. Creation, not Replication by Schmelter · · Score: 1

    One of the main problems with writing software is the fact that it's always creation, never replication. The difference between making cars and software is that designing a car is easy, and manufacturing them is hard. With software, the reverse is true. Designs can take weeks, with writing it taking even longer. When it comes to creating many copies, just hit the ol' copy button, and bam, you can have 3 million copies on your hard drive in ten seconds. Add to this the fact that you never actually see the software being copied by the computer, as you would on an assembly line, and you begin to see the problem.

    Re-use is also a problem. Sure, criticizing the software industry for not employing re-use is easy, but when it comes down to it, no piece of software is the same. Even with reused libraries, the most one can ever hope to achieve with code re-use is having 40% of a program already written. After that, it all has the massive potential for bugs.

    To employ the car analogy again, realize that it's easy to see that a car has no wheels, but hard to see that a piece of software lacks a certain feature.

  267. Of course most code sucks by Anonymous Coward · · Score: 0

    Look at Arthur C. Clarke's response when someone said, "90% of SciFi sucks." "90% of everything sucks."

    The bottom line is that most of the people are in the industry like to work with computers and fancy themselves good programmers but really are not as good as they think they are.

    Take a random group of programmers and put them in a room. Then say, "All of you who are good programmers go to this side, all of the mediocre and bad ones go to that side." All would move to the "good" side. Yet if you were to say, "All of you who can juggle five balls move to this side, and all of you who cannot, move to that side.", it'd be a different response. Granted, one is a subjective measurement and the other is objective, but I think a lot of people just don't realize how poor their coding skills are.

    Look at the questions in newsgroups or email lists. Granted, some people are new and on the new side of learning a particular technology. But watch them over time (or go back and review their activities from the past). Many are too lazy to make a couple of simple queries via DejaGoogle or the list's archives using some of the very words they pose in their question! And when you point out how to look up the question using a known link and specific words from their question (no aces up the sleeve), they seem offended until someone posts the specific answer for them. The response, "Well, at least someone knows what a list/group is for!"

    Summary: It has nothing to do with intelligence, it's about aptitude. Most just are not cut out to be code jockeys but cannot resist the lure.

    1. Re:Of course most code sucks by jamie · · Score: 1
      Look at Arthur C. Clarke's response when someone said, "90% of SciFi sucks." "90% of everything sucks."

      That was Theodore Sturgeon, actually. It's become known as Sturgeon's Law, typically phrased: "Ninety percent of everything is crap."

  268. Erroneous input by crucini · · Score: 2

    Just to clarify, the complaint is NOT that the operator requested high power levels and the machine delivered. The complaint is that the operator requested correct power levels, but in the course of editing pressed some cursor control keys in an unanticipated way, causing the machine to mysteriously fry the patients.

    1. Re:Erroneous input by einhverfr · · Score: 2

      An analogy would be a bug in an automobile which would cause makeing a right turn while pressing on the brake with the windshield wiper on making the car suddenly veer strongly to the left and accellerate...

      --

      LedgerSMB: Open source Accounting/ERP
    2. Re:Erroneous input by blue+trane · · Score: 1

      or explode when it's hit?

      Liability lawsuits hasn't prevented the auto industry from releasing its share of bugs.

      Also, the threat of a lawsuit might encourage companies to try to deny or cover up bugs instead of releasing fixes right away.

  269. Hear hear! by YourGarbageMan · · Score: 2, Interesting

    Every corporate project I've worked on in the last 10 years has been marketing driven. Not only that but the requirements change from day to day. Which in my estimation means that the marketing guys aren't doing their jobs. They will tell you that the market changes fast and we have to adapt, but the truth is that its their job to predict the market ahead of time. That's their job right? Granted it's not an easy task, but the point of marketing is to gauge the market and determine what we need to build now in order to meet market demands later. Again, I've never seen it work that way. Instead, marketing delivers what the market demands are today and expects solutions squeezed into a schedule that is already bursting at the seams.

    But wait, it gets worse. When the crappy product goes to market then engineering gets blamed for delivering a bad design. And, on the rare occasion when engineering says "No" and that answer is accepted (rarely happens), then engineering is blamed for losing the sale. Its a lose/lose situation and at no time is marketing *ever* held accountable for *anything*.

    Its all very discouraging.

    The main problem as I see it is a lack of well defined requirements. If engineering knows what to build and is given the resources then they can get the job done. But, when the requirements are constantly changing then it means we really don't know what we're building and nobody should be surprised if the final product isn't solid, given that environment.

    You want a good product here's what you do. Write a very good Marketing Requirments document. Make sure it covers all of the *important* details. Have engineering analyze the requirments and come up with a first order schedule. Then you start writing software/hardware/system requirements documents, followed by design documents. All of the important documents need to be peer reviewed. Then you can make another schedule estimate and start building it. CMM level 2 compliance helps keep the checks and balances in place but of course you still need good designers.

    I'm working on a project now that is taking this approach and it is definitely working. The only question is whether or not the Marketroids are going to drag the requirements around all over the map when we are midstream.

  270. Separating the men from the boys by BxT · · Score: 1

    Blaming bad s/w on changing requirements, lack of (test) resources and the like gets old. The best developers I know balance the demands placed on them against the resources they have available to produce a product that has the best possible mix of features and quality for their market. Sure, the situation is never ideal but that's part of the game.

    To me, this balance is the crux of *commercial* s/w development, not keeping up with the latest silver-bullet technology that's suppose to fix all your problems and pad your resume.

    -BxT

  271. Re:Litigation Is not the Way to go! - Not so fast. by Anonymous Coward · · Score: 0

    I would love to see a lawsuit make Open Sores illegal to use in any commercial or government body because of it's complete lack of record keeping, QA, or any other semblence of responsible coding. That would be ultimate irony for you "Litigation solves all" of you.

  272. MS says �SW sucks because users demand it to.� by YourGarbageMan · · Score: 1

    From the article "Software sucks because users demand it to." This is according to Nathan Myhrvold, former chief technology officer of Microsoft.

    Yeah, we demand that you give us shitty software!

    If this is MS's marketing strategy then it explains a lot. Fscking morons. How do people like this get to be CTO?

    He also says, "If Microsoft had not kept pumping up Word with new features, the product would no longer exist."

    That's also a load of crap. My expectations of a word processor have not changed substantially in 10 years. I want text formatting, spell checking and the ability to insert tables and graphics. That's about it. Automated TOC generation and real time spell checking are about the only features added in the last 10 years that I've found useful. The rest of it is useless to me and useless I expect to 99% of the market. Most of the auto-"correct" features I have to turn off because they often turn out to be auto-incorrect. Also the last couple of versions have been buggier and therefore less useful than previous versions. I expect this is due to feature bloat. Real improvements to Word could be made by organizing the UI in a better way, but MS won't do this because they love legacy. So users are stuck with the same poorly organized, poorly worded menus they had 10 years ago. Word exists today because MS squeezed all competition out of the market. I use Word because my company mandates it, and for no other reason. We have a legacy of Word format documents.

  273. GTK/QT/Visual/GlibC/Java/... by luzrek · · Score: 1

    Ummm...arn't projects like GTK, QT, all the "visual" projects (not to mention GLibC), and all the other common libraries and scripting languages trying to create common toolkits for programmers?

    In my mind the no returns on opened software policy by most software retailers has a bigger effect on the crappyness of software. Since on one can return a defective product, there is substantially less motivation to improve it.

    Another possible reason that most open source software (OSS?) is less buggy than its comercially developed alternative is that the open source programmers probably USE their software and therefore find the bugs and are motivated to fix them.

    --

    Galium Arsenide is the material of the future, and always will be.

  274. Windows 95 vs Redhat 6.1 by Anonymous Coward · · Score: 0

    I run those two os's on my little PS/1 computer, and although Redhat 6.1 works, it is quite slow, compared to Windows 95. On both, I connect to the internet, and run the Opera web browser. All I can say is, thank goodness for Microsoft, and Windows 95. I know this isn't fair, but if life were fair, I would be able to run out and spend hundreds of dollars on a new computer that would be so fast and powerful that I could not tell the difference between the speeds of say, XP, and the Latest Redhat distro. Not everyone has that kind of money, and thank goodness that folks like me can just do with whatever we dig out of the junkpile, and make it do.
    I love fixing up Redhat the way I want, and on slightly faster equipment, it is ok. The first thing I found out about Linux is that it needs some power behind it. You know, when linux boots up you get a speed measurement (bogomips?) This little PS/1 runs it at about 20 megs a second (slow), where an AMD K6-2 can run about 740 megs a second. Windows 95 seems to run real well on some of these older boxes, so Microsoft gets the credit there. Eventually, I suppose, Microsoft will get sued out of business so I suggest that those of us that can make Redhat dance will be in demand:-)

    1. Re:Windows 95 vs Redhat 6.1 by binney · · Score: 1

      Try slackware. RH is bloat city.

  275. what consumer want and ask for by AdamBa · · Score: 2
    The embedded OS would not be more stable due to what clients demand, but due to the lack of installable apps and hardware/drivers, leading to a vastly smaller text matrix.

    I think it is wrong to assume people will flock to an OS that is more secure. It's not just cost...how can it just be cost? If it were just cost, people would all run FreeBSD which is more secure *and* costs nothing. So that points out one reason, which is that most people don't buy an OS, they buy a computer and it comes with an OS.

    Anyway, imagine Microsoft was suddenly forced, due to lawsuits or regulation or liability worries, to produce a much more secure OS. So what would they do. Well first of all they would severely limit the apps and drivers that would run, likely requiring their own certification. Do you think Real/AOL/Netscape would like that? Then they would say that no DOS or Win16 apps were supported. Then they would say it will ship a year later so you can't use your fancy new hardware until then. Suddently, most of those people who were supposedly demanding a more robust operating system would change their tune.

    - adam

  276. Classic Business Plan by eddeye · · Score: 1

    "Exasperatingly, software vendors deliver buggy, badly designed products with incomprehensible help files -- and then charge high fees for the inevitable customer service calls."

    1. Write buggy software
    2. Charge extravagantly for tech support
    3. PROFIT!!!

    --
    Democracy is two wolves and a sheep voting on lunch.
  277. This is why.. by Dragonshed · · Score: 2, Informative

    This is exactly why methodologies like Test First have been gaining popularity, along with their supporting tools like JUnit and NUnit, exist. When you're coding strictly against you're compiler, and perhaps some defined design, the only errors you'll see are compile time, and in the case of java or (insert scripting language here), run time errors. Logic and design errors are revealed through testing your software, usually in the form of unit and/or integration tests, figuring out if your software does what it's actually supposed to do.

    Test First methodology actually takes this process one step further, elevating logic errors to the level of obviousness that compiler errors have. This is key, because it helps break the mindset of the assuming programmer that if it compiles, it must be fine.

    Unfortunately, the tools I've seen that support test first only work in the context of testing Java or .NET (C#, VB, etc) code. Because of the complexities involved, I doubt a generic CUnit or C++Unit could ever be engineered for generic distribution. The best support I've found is just to get the developers to think within the guidelines of test first.

    I personally think this methodology, like any other should be viewed as a possible tool to use to solve some problem, in your specific project environment and schedule and what have you. But thinking along the lines of trying to test your software before you build your software will help you to write more robust code.

    -ds

    References:
    http://www.junit.org/news/article/t est_first/
    http://junit.sf.net
    http://nunit.sf.n et

  278. 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
  279. Expert Witnesses and Software by aebrain · · Score: 1

    The problem is not exactly new. This link dated February 1999, gives a conservative estimate of how much the problem costed then.

    More interestingly, I'm currently writing a report as an "Expert Witness" regarding the quality of a system. In simple terms, the maker of the system is suing the customer for payment, the customer is claiming that the system doesn't work, and counter-claiming. And that's about all I'm able to say about it (and no correspondence will be entered into).

    Things like the validity of disclaimers are being thrashed out in various places round the world as I write. In my case, it's under Australian jurisdiction, so YMMV as regards its application to you. Litigation is happening, just maybe not in your part of the world, or not today. But there is now a demand, even here in Australia, for IT Experts to help explain to "naive users", Judges, Magistrates, Juries, and more importantly Lawyers and their clients, what all this IT stuff means.

    The Australian Federal Court has given some guidelines for Expert Witnesses that basically state An expert witness's paramount duty is to the Court and not to the person retaining the expert. Again, YMMV on this one, but IMHO such guidelines are a good ethical road-map for anyone anywhere considering work as an IT Expert Witness to follow.

    Anyway, gotta get back to it, they want the preliminary report pronto.

    --
    Zoe Brain - Rocket Scientist
  280. bad managers by cdn-programmer · · Score: 2, Informative

    As a consultant with more than 20 years experiance one might say I've been around a bit.

    My career as also been quite interesting in that I've worked both in engineering departments as weill as oil exporation departments. As a programmer this leaves me an exception to the rule.

    My observation is that of the chief geologists that I knew or worked for, ever one without an exception was very professional and well regarded by those who worked for them or with them. Without an exception they were damn good geologists too.

    Of the engineers that I worked for, again without an exception, they were very professional and without an exception they were very good engineers. I can say the same of the geophysists I know.

    On the other hand, the programming mangers have in many cases been rather awful! One manager ran a department where people were afraid to talk to each other. This company at the time use to have everyone log off the mini when one of their accounting programs ran and the reason was so that the accounting program would not run out of "shared library entries". This had been going on for more than a year before I started my contract. They never fixed the problem because no-one knew how and the reason IMHO that they didn't know how was because no one talked to anyone. The patch would have taken about 15 minutes to fix. BTW - that manager ended up becoming a VP of information technology in a major oil company whos name begins with "M".

    I say he was probably a rather bad manager over there too.

    Another manager I know - He supervised me when I was in my 20's for about 4 months before he quit - was SO BAD that he did not know that floating point fields are not good for accounting. He did not even know the BASICS of CS. Of course - most of the programmers in that shop knew dick all about number types too and couldn't debug their way out of a paper bag. As above so below.

    Another manager (VP this time) didn't know the difference between an algorithm and a logrithm.

    The managment of another major oil company whos name starts with "S" and rythms with Hell tried to develop a production accounting system in "basic". The version of basic they were using supported only 16 bit integers and you could not write a callable function. It was a very primative basic. They failed. I remember that project specifically because these people came over to OUR SHOP to see what we were doing (we were doing some rather terrific things - through no fault of our management) and I told the *hell people before they started that if they tried to develop in BASIC that they would fail. They failed. My opinion is they were idiots to try. Nobody in their right mind would do this. The management should be FIRED for this because the MANAGMENT should know better!!!

    Then there was another major oil company who's name began with a "G". This company was offereed a turn key application for a system completely loaded with data that they wanted. They paid 1/4 million for the data. Well, their management decided that they should hire a consulting group to build a "better" system. A year later they had spent more money on their consultants than the system we offered and they had not written one line of code.

    In all cases - it was bad managment. Really bad managment and somehow the twits got away with this level of incompetance.

    Interesting... I know of zero bad chief geologist or chief engineers or chief geophysists for that matter. Yet I can string out a list of bad programming managers as long as my arm. These are people who don't even know the BASICS of the profession. It is no wonder they can't hire and retain competant programmers. The good ones leave in frustration!

    As a case in point - in any shop ask whether they have built and documented a library of software functions. Is there a resource person in place to help new programmers become familiar with it? If not - then the programmers who generally are already reclusive and hate to document (many hate to read) will each re-invent the wheel every time they do something. Since searching and sorting are 2 of the MAIN FUNCTIONS of any system, over time these primadonnas will develope 10's or even 100's of variants of usually really bad implementations of poorly chosen algorithms.

    Any programmer who develops yet another sort routine on company time is an example of this. But if a programmer does this then why pray tell doesn't his/her manager know about this and hold him/her accountable? It still comes down to the managment.

    I have heard it said that a manager doesn't need to know how to do - he needs to know how to manage people who know how to do. Well - this is bullshit. Imagine a chief engineer who doesn't know his engineering. Imagine a chief physician who doesn't know his medicine. Where did these stupid ideas come from? A programming manager has to know his programming and he needs to know his machine internals too. If he doesn't then he is not even in a position to be able to evaluate the productivity of the people hired to do the development work. Furthermore he certainly would not be in a position to know when his development people are about to undertake a real blunder.

    There will always be incompetant programmers around. The real problem is when incompetant management gives them the green light and then wonders later why nothing works right.

    If one applies this idea to software companies then one would have to conclude that a company run by an ex soda salesman isn't likely going to be able to develop good software. If a major software company has to shut down development for 2 months so that people can be "trained" to develop tight software then you know for a fact the management was incometant from the outset because the problem should never have developed in the first place.

    One thing I did learn rather early on as a consultant is that there are good managers and good shops. I chose not to work for the bad ones. There is still a LOT of work around for good people.

  281. Shotty Software by Char+Lander · · Score: 1

    What causes shotty software? Well the real question is... what makes a certain piece of software so bad from another? Lets take a look...

    Internet Explorer versus Opera

    Both have robust features. One has a tendency to be more buggy than the other. One has a tendency to be free with out a need for registration. (No I didn't mean activation) One supports multiple OSes one supports very few. One is an absolute industry standard, due to its OS... one is not.

    It all depends on a consumers stand point. I think when someone says software sucks that they are talking about some cheap piece of shareware. I have found many apps for Windows and Linux and OS/2 that are quite good and get a specific task done and done well. I think that other pieces of software (i.e. Banzai Buddy for Windows) are the worst incarnations in code.

    I think that software is fine depending on what software you use and what you need it for. Then again I think all software is rushed because management can't wait to make a buck. (I also think developers are somtimes taken for granted)

    BTW... I would like to see the numbers on how MS has cost consumers 8.xx billion dollars. I would like to see the validity in that. (Not that I am an MS supporter, I just hate rants)

    --
    ~Char Lander
    Brothers and sisters I have none, but this mans father is my fathers son
  282. Natural selection by Anonymous Coward · · Score: 0

    There have been *lots* of startups - mostly started by software engineers - that wrote great code. You've just never heard of them, 'cause the other guys - the ones who valued time to market over bug count - won the race.

    (OK, the guys also completely forgot to consider market demand, and wrote stuff only they would buy, but that's another story.)

  283. because... by CodePriest · · Score: 2, Informative
    First off think of any software that you think is good(and is not a trivial program)have one in mind, good, now how long did that software take to get to a version where it has so few defects that nobody even mentions them? My guess is it took between 4 to 10 years and probably 5 or more versions/revisions. We are trying to solve a problem that at virtually no point do we know the infinite occurences that might occur. I don't know about everyone else here, but I know that no matter how much planning I do, how much documentation I have some bugs are always there. Anyway here is the big List:
    • severe age discrimination against experienced programmers
    • lack of standards for coding styles within organizations
    • tools that are 100% to spec(you C&#43&#43 people know what I mean)
    • ever increasing sizes of company code bases
    • programmer inability to really specialize in anything for fear of obsolescence
    • having a new NEXT BIG THING language come out every damn year
    • piss poor training in college, and beyond
    • poor training material beyond basics, which is why those gems like Design Patterns, Modern C&#43&#43 Design are so revered
    • A standard windowing system for every OS(Java Excluded, Qt not perfect on each)
    • managers who have not written code on a large project
    • deadlines that used to be used as a guestimate, but now are enforced by coder slavery, burn out, and threats of losing jobs
    • horrible communication between managers, users, marketers, coders
    • Microsoft .NET(and I even like C#)
    • too much focus on enhancing a product rather than making it a solid product
    • "Secure programming? My app doesn't have anything to do with the internet!"
    • Too many incompatible versions of every OS out there
    • Programmer Arrogance
    • I don't use assert my code doesn't have any bugs
    • Whats a Unit Test?
    • I could go on, but the list would take up too much more of my time and yours, basically the entire system needs to be changed completely with only a single goal in mind: quality applications that solve your problem 99.99999% of the time
  284. Re: If you asked an architect..... by Anonymous Coward · · Score: 0

    construction worker aren't union, get $12 an hour overtime have more responsibility and decision making than senior software engineers, and have to pay their mexicans if they want them to come back (which they don't)

  285. Re:How to put any OS product on a "mature" timelin by Junior+J.+Junior+III · · Score: 2

    True, but I would think that GIMP developers had a head start by having benefitted by learning the lessons that Adobe learned through trial and error, in terms of what sort of features are useful and desirable, what sort of interface makes the most sense, etc.

    --
    You see? You see? Your stupid minds! Stupid! Stupid!
  286. Re:Don't use software that sucks. by wayland · · Score: 1

    Someone above commented that, as soon as he finished his degree, his workplace would not *allow* him to take the time to design code properly (lack of design being the main problem). Sure I think that more rigorous CS degrees (in some cases) will encourage proper design if people are given the opportunity.

    What we really need is for someone to draw up a few different coding philosophies with various different tradeoffs (ie. "we want (reliability|security), no matter how much time it takes", or "We want a reasonable amount of reliability, and want to get it out in a reasonable amount of time", or "We're in a hurry! Fast coding required"). Then companies could specify the policy they use in their job ads, and people who know how to code properly can avoid the wrong ones.

    However, what company is going to admit to cheap and fast...

    In summary, there are two problems:
    1) Poor coders
    2) Management rushing coders

    You've addressed problem 1, but what about problem 2?

    :)

  287. Dynamic languages (was: Remember Fred Brooks?) by Tablizer · · Score: 2

    (* This might be provably false with a not-too-difficult study.*)

    You are welcome to prove it.

    (* How is it easier to read a language that doesn't tell you the types of the variables up-front? *)

    If the variables are named well, I *do* find them easier to read without all the declarations and conversions. Especially in the web arena where numbers constantly need ascii-tizing.

    And, I *started out* with stronger-typed languages, so my preference for dynamic languages is not out of habit.

    (* Which is clearer for the AVERAGE programmer *)

    I don't see what your example has to do with typing issues? Besides, what is "easier to read" tends to be subjective. I have learned to try not to project my preferences onto other brains unless proven similar first.

    (* Dynamic, untyped (or weakly typed) languages are bad. *)

    Oh really?

    I am sure some very successful LISP and Perl fans are going to have a word with you. (I personally dislike Perl, but not for its dynamic typing. That is a plus of it. Its seperation (non-overloading) of numeric comparers from string comparers is a nice feature IMO, once you get used to it.)

    1. Re:Dynamic languages (was: Remember Fred Brooks?) by TWR · · Score: 2
      There's a reason why LISP is a niche language and most Perl code is unmaintainable. I love LISP, but people like Paul Graham go overboard in promoting it. They just aren't software engineering-focused languages.

      Sure, for J. Lone Hacker working on a project, a dynamic language is fine. You can keep track of your naming conventions. For real-world projects, there is a better than even chance that your great code is going to end up being maintained by a less than great (to be charitable) programmer, and that you are going to have to work with the code written by Mr. Not A. Hacker. Do you trust everyone to follow the same naming conventions?

      This article was about why software sucks. Part of the reason is that practices that work for a single programmer tend to fail miserably when applied to a team. Yet virtually every programmer is trained in school to work alone, and is taught using languages that aren't designed for team work. The most admired programmers are the "lone guns" who can crank out something all by themselves, and everyone tries to emulate them. This is part of the reason why bugs creep in. And it's the main reason why dynamic languages are bad.

      -jon

      --

      Remember Amalek.

    2. Re:Dynamic languages (was: Remember Fred Brooks?) by Tablizer · · Score: 2

      (* but people like Paul Graham go overboard in promoting it. They just aren't software engineering-focused languages. *)

      For one, what is "software engineering" will differ per who you ask. If Paul was part of a bigger team, he probably would hire people who think like him and everybody would be fine. His project *beat* bigger teams.

      Studies by Yourdon also seem to suggest that being like-minded improves productivity more than Grand Software Engineering methodologies. (Sorry, diversity fans).

      (* Sure, for J. Lone Hacker working on a project, a dynamic language is fine. *)

      I don't see how that makes much of a difference. Just split a large project into smaller "tasks" and have most of the inter-task communication be done via relational tables. (Just make sure you have a good table designer). The "one big blob" of OOP designs are the culprit IMO. Partitioning by task and communicating via the DB is the way to go. Project size makes less difference then. Each programmer's task is talking to the tables, and not having to grok complex, interdependent programming interfaces like the crap from Sun.

      Further, Paul would probably argue that a good "lone programmer" is more productive than 10 "average" programmers. IOW, hire the best and you *don't need any army*. IOW, rather than trying to figure out how to coordinate an army, get rid of it. Suits sticking their pesky fingers in the pie are what bogs things down, creating an e-bureaucracy.

      (* This article was about why software sucks. Part of the reason is that practices that work for a single programmer tend to fail miserably when applied to a team. *)

      And visa versa, perhaps. The trick is to get away from PHB mentalities.

    3. Re:Dynamic languages (was: Remember Fred Brooks?) by Anonymous Coward · · Score: 0
      Interesting ... LISP was the second language I learned
      to program in. I had a horrible time ... I nearly
      failed the class, and even after that, it was some
      time before I was able to program competently in
      it. On the other hand, I was able to learn Perl
      a lot faster, although I occasionally have problems
      understanding Perl programs written by other people.
      I have to go to the manuals or the CPAN site to
      figure out what their code does. In some cases,
      I have to run it through the debugger. In my Perl
      code, I try either to write the code more
      straightforwardly (which probably upsets people
      who like the more succinct style), or comment sections
      that wouldn't be clear to someone who isn't an
      experienced Perl programmer.


      In terms of software reusability, I think it's
      important for code to be easily understood, and
      if that requires good comments and documentation,
      that's what has to be done. Unfortunately, there
      is a school of thought that insists that code is
      documentation, and therefore any extra documentation
      is a waste of time. This school of thought is
      reinforced (arguably justifiably) by the feeling
      that programmers become less valuable if too many
      people understand what they are doing.


      FWIW, I recently picked up a Python book to try
      to teach myself a little of the language. I found
      it interesting that one of their criticisms of Perl
      is that it's possible to write programs in that
      language that you yourself might forget what the
      programs do. I have experienced this personally
      and am not sure that if this is a problem, there
      is a practical solution, because it is also an
      aspect of the language that makes it very powerful --
      you can implement some very powerful functionality
      in a few lines of code.

  288. The interface counts, too. by os2fan · · Score: 2
    The success or failure of a program has more to do with its interface, and not the code.

    Code that has a good interface, and buggy code will still appeal more than one with poor interface and good code, just as we fondly remember good movies from older times, even if the quality of the acting and filming leaves a lot to be desired.

    Programs are expected to do a lot more than appliances, and operate effectively in wildly variable conditions. When robustness is required, there are efforts made to reduce the variable conditions, and the range of expectations. Some programs run on dedicated boxes that do nothing but run that program.

    User expectations and knowledge is a moving target. In part, this is the fault of the vendors, who change the interface quite often. Where in the world of DOS, enter adds data to a field, in Windows, it accepts and closes the dialog. Control-Alt-Delete is another bugbear.

    Were the manufacturers of cars to lay out the controls to suit their own design, there would be pandamonium, when the left foot activates the break here, the accelerator there.

    If we're going to have a common interface, we should get it designed and use it unfailingly.

    Command lines are not imune. In fact the command session can be regarded as a computer inside a computer. One would be wholy upset if some program started to uninvitingly leak data into another program's space. Even command line options are becoming standard: how many of us look for help with a /? or -? option?

    We need words to have singular meanings: for example, the word 'cancel' should back out of a dialog box. A dialog box that has a large amount of data entry should have some sort of 'save' option. Activating a button or control with F1 should bring up relevant help.

    Software will continue to suck, as long as people have to change from one activity to another very often, and have to use different keystrokes for the same command.

    It will continue to suck while it decides to do something different with your data than what you thought it was supposed to be doing. This is rather hard to get around. In essence, the program should communicate what it is going to do, and do what it said it was going to do, and *no more*. [Spyware does a few extra things :(]

    You don't have to be one of the big guys to get a good product out: JPSoftware's replacement for cmd.exe and command.com is a much cherished product. JPSoftware is not a huge company, but it has a huge following of loyal customers who speak highly of its products.

    Just getting the bugs out of the code is not enough. You have to work on the interface as well.

    --
    OS/2 - because choice is a terrible thing to waste.
  289. Quality Recursion by TALlama · · Score: 2, Interesting

    Something that software is unique in is that the primary tool to build software is software. You don't use a 2001 car to build the 2002 model. You don't use the Empire State Building to build the World Trade Center. But you use Visual Studio to build JojoApp v3.5, and Microsoft uses Visual Studio 6.0 to build Visual Studio.NET.

    So all of our software is very literally tied to it's past, because we very rarely start from scratch and build up from the ISA to an application that works. And lo and behold, when we do (like with cell phone OSes), we achieve pretty stable results that do what they do well, even when what they're doing *is* revolutionary.

    --

    - The Amazina Llama

  290. Software Capability Maturity Model by Martin+Spamer · · Score: 3, Informative

    The Capability Maturity Model (http://www.sei.cmu.edu/cmm/cmm.html) from the Carnegie Mellon Software Engineering Inst (http://www.sei.cmu.edu/sei-home.html) has been developed to aid this transition from a craft disipline (hacking) to an Software Engineering displine.

  291. It always comes down to humans... by The+J+Kid · · Score: 1
    Quote from article:

    In the last 15 years alone, software defects have [..] destroyed a Mars mission [..]

    The Funny thing is that it wasn't the software, it was a stupid *American* at NASA that calculated the path in Feet instead of Meters which, if you didn't know, is the international space measurement.

    And then again, why does software suck? It's made by humans!
    --
    Moderation: +4. Modded 70% Funny and 30% Overrated. 100% Saturated.
  292. every dipshit by oliverthered · · Score: 2

    Looks like you have a problem understanding emotional comment.
    Let's explain,
    First take the subject,
    Create a counter argument,(this can be counter to the subject, or counter to a releated subject).
    Now make that argument extream.
    Add in a bit of, over-the-top ness, just so people can see that you constructing an emotional comment.

    The idea of an emotional comment is to prevoke though about the nature of the argument in the more intelegent, short sighted people can't look beond the extreamness which makes them easy to pick out.

    Here's a translation of the post for you.

    Most code that is produced is poor quality, why?
    Well if you comapre it to another disiplin that has reciently had poor quality defective products (e.g. World trade centre that was build in a rushed and wasn't as structurly sound as it should have been!)

    Now most buildings have crap design, but we all live in them and put up with it, (why is that window there, who put the power socket at that end of the room.... etc....)

    Point out that another disiplin, many people regard as highly professional, that has rule to go by dosn't do a job, that much better than most software designers.

    --
    thank God the internet isn't a human right.
  293. working hours/paid overtime by Anonymous Coward · · Score: 0
    In the UK, the govt signed up to the EU "Working Hours Directive" which supposedly forbids management even /asking/ you to work more than (IIRC) 45 hours a week... *unless* you sign a special agreement to voluntarily exempt yourself from that directive. Of course, it turns out that the choice is between signing the exemption and unemployment. As far as being paid for overtime... I've *never* been paid for overtime, in seven years as a developer, sysadmin and now QA Engineer in the UK. Do you really mean to say that you get paid extra for doing more then 40 hours a week? wow. Including 2 hours travel each way, my working day is currently 14 hours (plus 6-12 hours at home at the weekend.) And I can't even get a company laptop so I can work on the train and get something useful done... *sigh*

    I worked out my hourly rate including that travel time the other day - it's just over six quid an hour. Thank god I'm not bitter! Of course, this kind of exploitation hardly motivates you to do your best to supply well thought out, robust code, which I guess is why I have maintain production systems written in Perl which don't `use strict' or -w warnings; not that they do anything important, mind you, just QA of anti-virus definitions which are automatically installed on tens of millions of machines every month...

    1. Re:working hours/paid overtime by elandal · · Score: 2

      I did get extra for working over 40h/wk, although mostly it meant getting days off later - only when it did get out of hand did I request money instead. However, that must have been profitable to my employer, as over 80% of my hours could be billed from the customers. And no, travel between home and office isn't included in working hours, which isn't a problem for me, as I live just some 40 minutes from the office.

      Now I'm working with 'compensation for overtime included in salary' contract, though, and don't have problems with the issue. The compensation is decent, and I'm not expected to work myself to death.

  294. Re:They left out -- author responds by mesozoic · · Score: 1

    You know, I'm very impressed that you're responding to peoples' critiques of your article. I wish more journalism worked this way -- write something, see how people react, then engage them in debate. I can understand your reasons for leaving out a detailed description of OSS, but it would still seem relevant enough to be worth mentioning. Wouldn't it? As for my other complaint, I was being hyperbolic to overstate my point. I guess it backfired. I'm not that pessimistic.

  295. Bad Software by drehrlich · · Score: 1

    Here is a pointer to a good article about bad software from CIO magazine.

    http://www.cio.com/archive/101501/wasting.html

    --
    -- Dan Ehrlich
  296. Viable requirements by Nicolay77 · · Score: 0

    In the company I work, first we tried with meetings to define requirements.

    And the solutions were very specific software which fixed some trouble very well but were very hard to change, because they were not designed to change.

    Not the requiments are done in a dinamic way. They must implement a working system with whatever they have, i.e. excel sheets, paper cards and so on. The results have been better. There is no better system description than a working system, even if it uses obsolete tech.

    Then we can do the coding and automatize the system. I guess this is impossible to do in big companies... who can convince management of doing things manually ? (even if its for a limited time?)

    --
    We are Turing O-Machines. The Oracle is out there.
  297. Why software is bad (T Review article) by Anonymous Coward · · Score: 0

    Disappointing article. I saw no mention of
    D. Knuth, R. Stallman, B. Kernighan, and only
    a passing reference to E. Dijkstra.

  298. Dynamic Langs II (was Remember Fred Brooks?) by Tablizer · · Score: 2

    (* Compare this to a language that demands strict type definitions and static type checking, where the number of type errors that ship to your customer is zero. *)

    Yes, but the complex and cluttering type management creates *other* problems. Like I said there is a tradeoff. Which side of the scale is heavier depends on the programmer and the language it appears.

    (* but you have to sprinkle your code liberally with dynamic checks instead *)

    Your coding style or lang must be *different* than mine, because I don't have a lot of this.

    (* I feel like I come out hours ahead by using a strait-jacket language that busts me at compile time when I neglect to say what I mean and mean what I say. *)

    But, you also cannot test as fast because compiling takes longer than interpreting usually.

    (* What's "suspicious" if you don't tell the compiler/interpreter what to expect? *)

    x = "foo"
    y = x + 2

    in a language where concatentation is some other character like "&" or ".".

    1. Re:Dynamic Langs II (was Remember Fred Brooks?) by thomas.galvin · · Score: 1

      Sorry to butt in, but the problem is not
      x = "foo"
      y = x + 2

      it's
      x = "foo"
      //call a few subroutines
      y = x + 2

      In which case, you have no idea what x is.

    2. Re:Dynamic Langs II (was Remember Fred Brooks?) by Tablizer · · Score: 2

      (* Sorry to butt in, but the problem is not
      x = "foo"; y = x + 2; it's x = "foo"; //call a few subroutines; y = x + 2; In which case, you have no idea what x is. *)

      Only if you pass x as a parameter between those.

      However, I agree if you use the same variable name for different uses, then such checking/warning may be less effective.

      But, most variables are *not* like that, at least not in my code. I sometimes use "i" and "temp" over and over, but one can ignore warnings about them. Such a tool perhaps should be configurable to tell it to ignore certain variables within certain routines (or a combo). Plus, certain types of errors some individuals may want to turn off. A "Boolean Grid" with wild-cards may be good for specifying such rules. There are many approaches.

      Again, it is *not* meant to be rigid. Such a tool would simply find "suspicious" stuff. It is sort of a form of "Are you sure you want to do that?" kind of thing, but in a batch-like mode.

      If I made such a tool for PHP, do you think there would be a market (mula) in it?

    3. Re: Dynamic Langs II (was Remember Fred Brooks?) by Black+Parrot · · Score: 2


      > In which case, you have no idea what x is.

      I suspect type-checking a program that way would be an NP-complete problem, if not outright EXP.

      Also, I used to work in a shop where all the code was VAX BASIC and I ended up becoming the Debug Guru. Disgustingly, about 2/3 of the bugs were a result of automatic variable declarations like Tablizer seems to be advocating. Not so much type problems as variable name mismatches:

      Alpha=x+2
      ...
      Alph=Alph+1
      ...
      print Alpha
      kind of thing.

      People who want bug-free code use languages that require variable definitions.

      [FWIW, the second most common source of bugs was stashing something in a global variable and expecting the value to be the same the next time the subprogram that assigned the value was called. A cut-n-paste mentality meant that they had hundreds of functions using the same global variable.]

      BTW, since he mentions that his programs aren't full of type-checking code, I'm starting to wonder whether he even knows what we mean by "dynamic type checking", or at least whether he's ever written a non-trivial program in a DTCing language.

      --
      Sheesh, evil *and* a jerk. -- Jade
    4. Re: Dynamic Langs II (was Remember Fred Brooks?) by Tablizer · · Score: 2

      (* I suspect type-checking a program that way would be an NP-complete problem, if not outright EXP. *)

      I don't think so. It would only look at one routine at a time, not follow the logic around all corners. It would be one or two pass only. Probably 2-pass.

      (* Disgustingly, about 2/3 of the bugs were a result of automatic variable declarations like Tablizer seems to be advocating. Alpha=x+2; Alph=Alph+1 *)

      Good scripting langs don't allow *references* to undeclared vars, only assignments. BASIC's sucked that way. That fact that you don't know the difference suggests that you are not a seasoned enuf scripter. You appear to be lumping every bad experience together. Bad use of globals and rampant copy-n-paste are problems of bad programmers, and not the language.

      (* People who want bug-free code use languages that require variable definitions. *)

      You are full of it IMO.

      I don't care if you declare the environment that *you* work best in, but please don't extrapolate that to all others.

      (* BTW, since he mentions that his programs aren't full of type-checking code, I'm starting to wonder whether he even knows what we mean by "dynamic type checking", *)

      Input validation is a seperate issue, if that is what you are getting at.

      The world is becomming more "interpretative" anyhow. Interactivity between diverse systems makes compiling the whole world kind of hard. Dynamism is the future.

  299. Vincennes by intermodal · · Score: 1

    IIRC, the USS Vincennes incident was more dependent upon human than computer error. That, and the fact that if you're in an enemy-controlled militarized zone, there are certain risks you take. Accidents can happen with code, but so can operator error. War casualties are a different matter. If I were on a warship, i'd rather take out a possible threat than risk it.

    --
    In SOVIET RUSSIA... erm...NSA AMERICA, the Internet logs onto YOU!
  300. And because it's usually written in C by GCP · · Score: 2

    Being hand-crafted and written in C are related. Most developers overestimate the value of custom solutions to every problem. A language like C, with no built-in string type, no collections other than the most primitive array, no memory mgt above the finest-grained primitives, and so on, seduce programmers into working at too low a level of abstraction for most problems.

    The nature of C is such that it is a good choice for the software equivalent of "innermost loop" code: small bits of code in constant use with crystal clear functional requirements that never change. The 1% of code that accounts for 95% of all CPU cycles should probably be written in C, massively code reviewed, tested exhaustively, and rarely upgraded.

    Code of this sort should mostly be in the OS itself, although it's also in the "engine" portion at the heart of Big Apps, like database engines, spreadsheet recalc engines, text rendering engines, etc.

    But programmers flatter themselves that everything they write is this type of code and use C for the other 99% for which it is ill-suited. Instead of working at a higher level, using built-in Unicode Strings, well-designed collections classes (where you simply can't write "outside the box"), automatic memory mgt., etc., they foolishly trade safety for speed, reliability for customizability, and so on.

    It's so easy to trade safety for speed when you tell yourself that you're such a hotshot programmer that you don't overlook anything (hence no actual loss in safety) and your code is so important that an increase in performance is a Big Deal (probably undetectable to the end user.)

    C is the perfect tool for programmers who think this way and a major reason for the general bugginess of software. It's an excellent choice for a small percentage of code and a poor choice for the rest.

    --
    "Those who have never entered upon scientific pursuits know not a tithe of the poetry by which they are surrounded."
  301. Everyone knows how a bridge should look? by bcaulf · · Score: 1

    Gawd, analogies are fun... Let's talk about bridge building.

    This site at has some bridge history that I read recently. The Firth of Forth page in particular talks about a bridge that was built according to the maxim, "Everyone knows how a bridge should look." The result was an overbuilt, overcostly and ugly structure. A layman's intuition about what is necessary may be quite wrong.

    The infamous Tacoma Narrows suspension bridge, of course, was built in modern times (1940) and according to conservative and well known principles, which didn't stop it from self-destructing. This was after more than fifty years of experience in designing large suspension spans. The judgement of an expert engineer with ample experience and time can also be very wrong!

    Let's also consider the Charles River bridge, which looks like nothing you ever saw before. Nonetheless it is now being completed at a cost of $86M. To be sure, the design must have been reviewed, but if you saw a child's drawing of the bridge, you'd think it was a fantasy that could not be built. Again, so much for "Everyone knows how a bridge should look".

    I agree with your basic point, which, as I understand it, is that the design must be visible and inspected to have a hope of correctness. But as bridge building shows us, that's not always enough!

  302. article text by Anonymous Coward · · Score: 0

    Viewpoint: Beware the engineering metaphor
    Communications of the ACM, Volume 45, Number 5 (2002)

    Wei-Lung Wang
    Communications of the ACM
    Vol. 45, No. 5 (May 2002), Pages 27-29

    metadata

    Table of Contents

    Lead-in
    Introduction
    Software Engineering Is Not Engineering
    Limits of the Engineering Approach
    Tangible Mathematics--The Essence of Software
    Pitfalls of Engineering Software
    Call to Action
    Author
    There are great similarities between the work of the software developer and the work of the mathematician.

    As software developers, we often fail to learn from our mistakes. Many software projects appear needlessly painful because we didn't "leverage an existing code base," or "draw on proven techniques and best practices." While this is sometimes the result of a failure to instill discipline in the development process, it is also a reflection of the fundamentally malleable nature of our work. No matter how hard we try, it is often difficult to reuse past designs or to adhere to any fixed set of development rules. The result is software quality disproportionately dependent on the abilities of its developers rather than on the quality of instituted processes and building blocks. This reality has often prompted us to refine the engineering approach to building software with a focus on ensuring software quality.

    While the engineering approach has its place, it is important we realize the work of building software is inherently not an engineering task. Engineering is the work of applying scientific and mathematical principles to practical ends. Software engineering, on the other hand, is the use of engineering practices to craft mathematical rigor. As software engineers, we do not engineer software, we merely adopt engineering practices when building software.

    This distinction may appear subtle, but its implications are real. Unlike engineering, the essence of building software is its mathematical undertones and the role of information as its raw material. This difference is manifested in two ways: our inability to create a frame of reference--making it difficult to establish rules by which to carry out work; and our inability to reliably engineer structural quality.

    Software Engineering Is Not Engineering

    Fundamentally, engineering operates within the framework of the immutable laws of nature. These laws dictate the realm of engineering possibility, and engineers work by designing and constructing within the bounds of these laws. Their permanence and universality allow engineering principles, which signal the boundary of what is safely possible, to be established. For example, engineers who violate known electrical circuit design guidelines are potentially breaching the physical limits imposed by the forces of electricity. These guidelines can be established simply because their applicability is universal. Competent engineers observe well-known limits that cannot be breached, while negligent engineers who fail to observe these limits are potentially negligent.

    Software engineering, on the other hand, has no fixed framework in which to operate. At its heart, software is the embodiment of a Turing program. Like the Turing machine that can compute all that is computable, software can be designed to process information in any way it needs to be processed. Because Turing instructions are put together in the context of a set of information requirements, they observe no "natural limits" other than those imposed by those requirements. Unlike the world of engineering, there are no immutable laws to violate. Likewise, software components, being collections of instructions, only function in the context of their information requirements. They can be assembled together only insofar as their information requirements are compatible. In other words, the natural limits of component interaction come solely from the information requirements unique to the project and component design. As software developers, we are in the unique position of not only having to design our systems, but are also called on to design the micro and macro information requirements, and by proxy, the framework of "natural limits" in which we operate.

    Requirements, software design, and natural limits are tightly intertwined. This unique position is best illustrated by trying to answer these questions: How do we determine if professional negligence caused a software project to fail? Did the software engineers violate known guidelines? Or, was it simply a series of bad judgement calls?

    This absence of a fixed framework of natural limits has two major implications. First, we have difficulty establishing across-the-board design guidelines and principles. The framework of natural limits differs for each project, meaning there are no hard and fast rules that apply across the board. The best we have are guidelines whose effectiveness depends on the developers' interpretation. It is the people and not the rules and processes that are paramount in the development process. The second implication is that we have difficulty building general reusable components. Each project has different information requirements, meaning that components must be developed specifically for it. Only in the most generic cases, such as mathematical operations and system functions where information requirements are standard, can components be reused. Everything else usually ends up being built from the ground up.

    Limits of the Engineering Approach

    These implications reflect the mathematical nature of software, and are symptomatic of the limits of the engineering approach. As a mechanism for information computation, a piece of bug-free software is essentially a mathematical function in some system of axioms. The information domain, range, and mapping requirements are simply the constraints this function must satisfy.

    In this light, the work of building software is a mathematical exercise within two distinct phases: the determination of the set of information requirements (the parameters of the function); and the creation of a mathematically rigorous function that meets these requirements. The work of the software developer is very much the work of a mathematician. In the world of one-man programming, the programmer, like a mathematician, uses his or her creative insights to create mathematically sound programs. Team-based software engineering, on the other hand, is akin to putting many minds together to engineer a single mathematical construct. This is not an approach that has a record of success in the world of mathematics, yet we are by necessity building software in this manner.

    To ensure some level of software rigor, we usually have a single chief architect oversee macro-level conceptual integrity. Unfortunately, the single-mind unity that allows for mathematical rigor is lost at the micro level, where software development is by necessity a team effort. It is rare for all team members' code to have the micro-level rigor needed to work together seamlessly. While this can theoretically be addressed by having the chief architect issue rigid black-box specifications to code to, the reality is software requirements change so often that such specifications would be unwieldy. The many changes that occur on a daily basis, both major and minor, means developers play a crucial role in crafting overall rigor. They need to understand the scope of their work as part of the bigger picture in order to build components that weave into the program's ever-changing information tapestry.

    This collaborative engineering approach toward crafting mathematical rigor is perhaps unique to our industry. Because mathematical rigor is difficult to engineer as a team effort, we find it difficult to reliably engineer software quality. Software testing is simply the attempt to reconcile the imperfect results of the engineering approach with the mathematical rigor required for robust software.

    Tangible Mathematics--The Essence of Software

    If software engineering is an exercise in mathematics, then why does mathematics appear so unimportant to the practitioner? And why has the engineering approach worked as well as it has? The key reason is software is a tangible form of mathematics that lends itself to being engineered. At its core, a program is an abstract sequence of instructions that performs some computation. But when the program is realized on a computer, it becomes an information tool with its own use-feedback cycle. It changes from an ethereal entity to a tangible tool whose actions can be observed. Instead of mathematically proving the results of a program, we can simply run it on some set of inputs and observe its behavior. This tangibility is both software's strength and Achilles heel.

    To our benefit, the tangible use-feedback cycle allows the nonmathematically inclined to build software. Software developers, unlike mathematicians, do not need to manipulate abstract concepts to construct functional code. They leverage the use-feedback cycle by running their code and correcting any bugs. The code is gradually brought up to the required specification over repeated compile-execute cycles. This allows us to adopt a build-and-test approach common in the engineering disciplines, and makes it possible for us to engineer complex software systems within practical resource limits.

    Building software is a complex and exciting task and it is important we resist the tendency to view it in a single dimension.

    Unfortunately, this tangibility is a double-edged sword. While it makes software construction accessible, it also provides a shortcut to the more difficult task of proving the mathematical rigor necessary for bug-free code. By allowing us to engineer software, it deceptively obscures the mathematical nature of software. While it is unlikely we can abandon the engineering approach in favor of mathematical formality, we should always keep in mind that mathematical rigor is the basis for sound software.

    Pitfalls of Engineering Software

    The bottom line is software engineering is not engineering, and the engineering approach to building software has its limits. This does not mean we should revert to the days of the hacker mentality "programmer-artist," for the scale and complexity of software today requires the disciplined engineering approach. But it is important our familiarity with the engineering metaphor be tempered with the knowledge that building software is inherently not engineering work. We need to avoid the temptation to overengineer the software development process. Rigid development processes and guidelines will strangle the fluid creativity needed to craft mathematical rigor. Likewise, time can be wasted on excessive efforts at componentization and building libraries of reusable code.

    The engineering terminology we communicate to customers can also lead to unrealistic expectations. Terms like "components" and "foundation platforms" often create expectations that align themselves more with mechanical and electrical engineering work. This results in such refrains such as: "Since the foundation is already coded, why can't we just bolt on this extra feature?" and "This new workflow is only a variation of the old workflow. Why can't we just reuse the components you wrote earlier?"

    Call to Action

    As a profession, we need to evaluate the limits of the engineering metaphor and adjust our approach to building software accordingly. We would do well to communicate this to our stakeholders and customers, so our work is not misunderstood. Building software is a complex and exciting task that is a unique confluence of engineering, mathematics, and artistic insight, and it is important we resist the tendency to view it in a single dimension. Only then will we best be able to move our discipline forward.

    Author

    Wei-Lung Wang (weilung@alumni.nus.edu.sg) is a consultant at Adroit Innovations in Singapore.

    ©2002 ACM 0002-0782/02/0500 $5.00

    Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. To copy otherwise, to republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee.

    The Digital Library is published by the Association for Computing Machinery. Copyright © 2001 ACM, Inc.

  303. Re:Don't use software that sucks. by Anonymous Coward · · Score: 0

    Nice idea ... the problem is that (at least in the
    US), we're in a tech recession, so there are much
    fewer job openings than there were, the pay is
    lower, and (most of all), the working conditions
    are generally poorer, from a standpoint of really
    being able to plan and provision for a quality
    piece of code. So even great programmers get
    stuck working in sweat shops where they wind up
    spending most of their time fixing other people's
    problems, instead of being able to take time out
    to plan how products could be developed more
    smoothly (and cheaply!).