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

340 of 794 comments (clear)

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

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

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

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

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

    12. 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.
    13. Re:M$ by ceejayoz · · Score: 2

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

    14. 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.
    15. 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.
    16. 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."
    17. 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."
    18. 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?
    19. 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

    20. 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.
    21. 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."
    22. 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
    23. 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?
    24. 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.

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

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

    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 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!
    7. 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!
    8. 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?

    9. 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
    10. 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?

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

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

    4. 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
  4. Remember Fred Brooks? by joib · · Score: 4, Insightful


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


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

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


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

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

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

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

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

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

      --

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

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

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

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

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

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

    8. 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
    9. 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
  5. Money gap is irrelevant by Kombat · · Score: 4, Insightful
    My opinion is that in software fields where the monetary gap between market-leader and second-place is large, we should expect bad software.

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

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

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

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

    Sometimes, I'm amazed software works at all.

    --
    Like woodworking? Build your own picture frames.
    1. Re:Money gap is irrelevant by 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 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.

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

    4. 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!
    5. 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.
    6. 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?
    7. 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
    8. 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

    9. 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.
    10. 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
    11. 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!
  6. 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.
  7. Software's so bad... by shren · · Score: 5, Insightful

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

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

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

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

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

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

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

      --
      ..don't panic
    3. 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...
    4. 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.

    5. 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)
    6. 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
    7. 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?
    8. 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.
    9. 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
    10. 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.

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

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

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

    14. 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
    15. 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
    16. 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.
    17. 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.

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

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

  9. Forcing good code? by kafka93 · · Score: 5, Insightful

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

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

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

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

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

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

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

    5. 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....
  10. 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 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!"

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

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

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

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

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

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

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

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

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

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

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

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

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

    14. 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?
    15. 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 -*-
    16. 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.

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

    18. 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?
  17. 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

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

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

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

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

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

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

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

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

  26. 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: 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?
  27. 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 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?

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

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

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

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

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

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

  32. 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.
  33. 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."
  34. 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 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.

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

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

  37. 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.
  38. 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)
  39. 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.

  40. 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>)
  41. It's not just 1.0 versions.. by RailGunner · · Score: 5, Insightful
    It's not just 1.0 versions of software that suck, in at least one case (because I worked there) it's later versions.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

      --
      http://www.askthevoid.com
    2. 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
    3. 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.
    4. 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.

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

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

  45. 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 ? :-)

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

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

  48. 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
  49. 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!
  50. 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.

  51. 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"
  52. 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.
  53. 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.
  54. 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?

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

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

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

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

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

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

  61. 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
  62. 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...
  63. 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"
  64. 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."
  65. 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
  66. 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.
  67. 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.
  68. 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!
  69. 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.

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

  71. 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
  72. 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!

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

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

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

  78. 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!
  79. 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!
  80. 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 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

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

  81. 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 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
    3. 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)
    4. 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
    5. 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)
    6. 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.

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

    2. 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
    3. 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
    4. 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
  83. No no no, that's not 5 and 6 by drew_kime · · Score: 2

    Here they are.

    5. ?

    6. Profit

    --
    Nope, no sig
  84. Comment removed by account_deleted · · Score: 2

    Comment removed based on user account deletion

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

  86. Re:How to put any OS product on a "mature" timelin by ceejayoz · · Score: 2

    bwahahaha... *goes off looking for mod points*

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

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

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

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

  92. 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
  93. 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?
  94. 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.

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

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

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

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

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

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

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

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

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

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

  106. Re:Not always the case by MountainLogic · · Score: 2

    That's why my department hires EE as our coders.

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

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

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

  110. 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"
  111. 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.
  112. 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...

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

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

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

  117. You're still fucked. by Bastian · · Score: 2

    So that's not really a catch at all, just further support for my hypothesis =)

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

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

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

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

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

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

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

  123. Comment removed by account_deleted · · Score: 2

    Comment removed based on user account deletion

  124. with the exception of one... by MemeRot · · Score: 2

    no, i don't

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

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

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

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

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

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

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

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

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

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

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

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

  138. 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.
  139. 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
  140. 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
  141. 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

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

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

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

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

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

  147. 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
  148. 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
  149. 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.

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

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

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

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

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

  156. 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
  157. 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!
  158. 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.

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

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

  162. 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.
  163. 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
  164. 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.

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

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

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

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