Slashdot Mirror


How To Make Software Projects Fail

Bob Abooey writes: "SoftwareMarketSolution has an interesting interview of Joel Spolsky, of Joel on Software fame. Joel, a former programmer at Microsoft, discusses some of the reasons he thinks some very popular software companies or projects fail, including Netscape, Lotus 123, Borland, etc." This interview brings out some mild boiler-room stories which sound like they could be the basis of a good book, along the lines of Soul of a New Machine .

905 comments

  1. the hell? by Wakko+Warner · · Score: 0, Offtopic

    people tell stories in boiler rooms?

    --
    "Remember when the U.S. had a drug problem, and then we declared a War On Drugs, and now you can't buy drugs anymore?"
    1. Re:the hell? by spood · · Score: 1, Offtopic
      --
      ---- Just another spud server.
    2. Re:the hell? by Skyshadow · · Score: 1, Offtopic

      It's also an excellent place to dispose of the bodies of the consultants your boss hired 'cause he thinks you're a peabrain (hey, he could be right; you're working there, aren't you?).

      --
      Every year during my review, I just pray the words "slashdot.org" aren't mentioned.
  2. we already know... by Anonymous Coward · · Score: 0

    Microsoft comes up with some similar product, markets it, and all the world's joe q zombies follow along and MS ends up driving the original vendor out of biz

  3. Isn't it obvious? by smileyy · · Score: 2, Flamebait
    Joel, a former programmer at Microsoft, discusses some of the reasons he thinks some very popular software companies or projects fail, including Netscape, Lotus 123, Borland, etc

    I imagine the interview goes something like:

    Joel: We drove them all out of business.

    --
    pooptruck
    1. Re:Isn't it obvious? by tshak · · Score: 4, Insightful

      Actually, reading this interview shows how there where serious blunders performed by NS, Borland, etc. In each case, while MS improved their software, the other companies rewrote their software.

      --

      There is no longer anything that can be done with computers that is nontrivial and clearly legal. -- Paul Phillips
    2. Re:Isn't it obvious? by Alpha+State · · Score: 4, Insightful

      It is funny how every company he talks about lost to MS. Seriously though, one of the things he does say is:

      Fortunately for Microsoft, they did this with parallel teams, and had never stopped working on the old code base, so they had something to ship, making it merely a financial disaster, not a strategic one.

      IOW, have more money than God and throw it at any problem you're having trouble with. The minnows in the pond get beaten up by the 800lb gorilla (or something).

    3. Re:Isn't it obvious? by NatePWIII · · Score: 1

      My answer, one word: monopoly

      --

      Nathaniel P. Wilkerson
      www.haidacarver.com
    4. Re:Isn't it obvious? by scrytch · · Score: 4, Insightful

      > IOW, have more money than God and throw it at any problem you're having trouble with

      Didn't work for IBM in the early 90's, didn't work for Detroit in the late 70's and early 80's, still doesn't work for the government.

      --
      I've finally had it: until slashdot gets article moderation, I am not coming back.
    5. Re:Isn't it obvious? by scrytch · · Score: 2

      > My answer, one word: monopoly

      So how'd they get to be a monopoly? Not like there's just a single software mine that they controlled or anything. Recall how Standard Oil got to be a monopoly: their product was better and cheaper.

      But you probably have such a blind and visceral hatred of all things Microsoft that you won't consider that they could have gotten there on any shred of merit.

      --
      I've finally had it: until slashdot gets article moderation, I am not coming back.
    6. Re:Isn't it obvious? by Anonymous Coward · · Score: 0

      Please elaborate. Doesn't work for the govt how?
      The internet? Highways? Electric power (which failed privately)?

    7. Re:Isn't it obvious? by scrytch · · Score: 3, Insightful

      You're utterly off the mark if you think you're going to provoke me into some Randroid rant in support of capitalism uber alles. Fact is, you know damn well as much as I do that the government does some things well, but other things it throws enormous sums of cash at are still extremely ineffective. You'll note I mentioned other behemoths that lumbered about throwing good money after bad, not just governments.

      > The internet? Highways? Electric power (which failed privately)?

      Show me a government owned power company in the USA. Regulation is not ownership, much (not all) of it comes because the monopoly was government-enforced in the first place, so they now have to control it. I work in a social service nonprofit, housing comes to mind as something the government consistently screws up (all the effective housing programs here are other nonprofits that don't receive government funds). This is all of course US-centric -- other nations governments might do some of these things well. It just further demonstrates that having the money does not mean it gets spent wisely in every case, which is the point you seem to be trying to sidetrack me from.

      --
      I've finally had it: until slashdot gets article moderation, I am not coming back.
    8. Re:Isn't it obvious? by Anonymous Coward · · Score: 0

      "Show me a government owned power company in the USA."

      http://www.tva.gov/

      Duh. You didn't learn about TVA in history class in elementary school? This was all part of the New Deal from FDR.

      There's also a lot of state and local municipatity owned power plants in this great nation of ours.

    9. Re:Isn't it obvious? by stevew · · Score: 2

      Well - in many cases it DID work for IBM. Did you know that there were at least two design teams working on the IBM-AT. One of them ran into issues with fabrication of parts, and the other design completed and went to market (and sold millions of copies there of..)

      --
      Have you compiled your kernel today??
    10. Re:Isn't it obvious? by stevew · · Score: 2

      Hmm - gee - the Glendale Ca Power company comes to mind. Then there is the Los Angeles Dept of Water and Power. Thats two. There are few dozen municipally owned companies in CA - most not suffering from power outages last year!

      --
      Have you compiled your kernel today??
    11. Re:Isn't it obvious? by Malcontent · · Score: 2

      "Didn't work for IBM in the early 90's, didn't work for Detroit in the late 70's and early 80's, still doesn't work for the government."

      I didn't know the govt was going out of business.
      Over 75 percent of businesses fail. When they do they shaft most of the shareholders (the big ones cash out before the shit hits) and all of their customers and often a significant potion of the public at large (see enron and excite@home). Alas the govt does not have the same luxury. Could you imagine if the social security decided one day that it was just not profitable to give away money and closed up shop? Man wouldn't that be funny!.

      --

      War is necrophilia.

    12. Re:Isn't it obvious? by NatePWIII · · Score: 2

      I agree, it took a certain ammount of blood, sweat and tears to get them even viable, but at some point they began to use their power in an abusive manner. These anti-trust cases do have some merit you know. I'm not totally anti-microsoft, however I see how they treat their legitimate competion and their own customers.

      --

      Nathaniel P. Wilkerson
      www.haidacarver.com
    13. Re:Isn't it obvious? by s390 · · Score: 4, Offtopic

      Show me a government owned power company in the USA.

      OK, I'll mention a few: TVA (i.e., Tennesse Valley Authority, which lifted an entire region out of utter abject poverty during the Depression, SoCal's DWP (which not only distributes water and generates power, but also manages to generate power while distributing water), Sacramento's Municipal Utility District (MUD) which generates and distributes most of the power in north-central CA, and finally the BPA (i.e., Bonneville Power Administration) which built and still operates most of the hydroelectric power generation and transmission in the Columbia watershed. The Northwest has a lower cost of living partly due to low power costs (though it isn't guaranteed and it has been rising) and low water costs (likely to continue given near term global warming effects). Water, Power (and soon, Broadband) are _exactly_ the infrastructure investments that our government does well and should control. Private utilities are very vulnerable to economic fluctuations where their executives' self-interest leads them to try foolish deals and daft accounting tricks in search of short-term performance, while government can weather tough quarters (and years) without worrying about the stock analysts.

      In case you hadn't noticed, the major private power utilities in California are in bankruptcy and are desperately beseeching the State to bail them out (and might yet stick the tax and rate paying citizens after all, given how cozy their lobbyists have been with the CA PUC, Legislature, and Executive branch fixers, just about forever). One can only hope that the CA government and regulators now realize that the public is watching with interest and will nail them if they screw it up further, so they might fix it properly.

      Of course, private utility executives and board members never do get held accountable, nor do their government co-conspirators, but if things were to be really just, there'd be a few of them hung from lamp-posts in San Francisco before this is over. Screwing the public for private gain is just the sort of thing that deserves "extreme prejudice."

      Government utilities are a good thing, mostly (WPPS notwithstanding, but that was a _private_ boondoggle admittedly triggered by a BPA error). Private utilities are simply disasters waiting to ripen, explode, and be discovered, unless they are regulated into castrated quasi-governmental entities. The term "private utility" really is an oxymoron.

    14. Re:Isn't it obvious? by msaavedra · · Score: 2
      So how'd they get to be a monopoly?

      Sure, Microsoft's smart but ruthless business stategies helped to get them where they are today. But probably the most important factors for Microsoft's success had nothing to do with Microsoft. Here are some things to consider:

      1. Microsoft got their foot in the door at IBM because Bill Gates's mom was a friend of one of the bigwigs there.
      2. IBM, worried about their own antitrust problems, based their PC on commodity hardware and decided to license the PC operating system rather than buy it outright or write one for it themselves.
      3. The makers of CP/M refused to deal with IBM, so MS bought a quick hack of a system called QDOS and licensed it to IBM themselves.
      4. The IBM PC was a success, and eventually CP/M and a few other OS's were ported to it. Here's where MS actually had to work for their position. They beat out the other companies by offering an OS that was not very good, but was cheap.
      5. Compaq and Phoenix blew the PC industry wide open by reverse engineering the PC BIOS. The cheap clones dominated the personal computer industry, and MS licensed their software to the clone makers as well as IBM. Suddenly MS (and Intel) found themselves at the top of the heap, and both have used somewhat shady tactics to stay on top since then.

      Once again, I'm not saying that Microsoft's executives are incompetent and only got their monopoly through luck, but you have got to admit that they had a remarkable string of good opportunities. To their credit, they took advantage of them, though I think that just about anyone in that position would have done the same.

      --
      "Any fool can make a rule, and any fool will mind it."
      --Henry David Thoreau
    15. Re:Isn't it obvious? by markmoss · · Score: 2, Insightful

      while MS improved their software, the other companies rewrote their software. Improved??? If you are talking about anything since DOS 6.2/Windows 3.1/Office 4.x, don't you mean "Fixed a _few_ of the old bugs, added many new bugs, added features no one uses, dumbed it down, and made it incompatible with the previous version so eventually people who know better will still have to downgrade to the new version to stay compatible with the idiots they have to work with."

    16. Re:Isn't it obvious? by Specter · · Score: 1
      IBM, worried about their own antitrust problems, based their PC on commodity hardware and decided to license the PC operating system rather than buy it outright or write one for it themselves.

      Not according to any of the IBM histories I've read. IBM went with both commodity parts and an off the shelf operating system because they didn't have the time or internal financial backing to do otherwise.

      The makers of CP/M refused to deal with IBM, so MS bought a quick hack of a system called QDOS and licensed it to IBM themselves.

      Actually, Digital didn't refuse to meet with IBM. The real problem was that the then CEO of Digital left his wife to handle the negotitations with IBM while he was off flying his plane. Presumably she was very competent to make the deal but when IBM showed up, they were offended that Digital's CEO didn't take them seriously and so IBM left. Also, MS didn't actually own any OS prior to making a deal with IBM for what was to become IBM-DOS. IIRC MS didn't start seriously trying to buy an OS until after IBM approached them.

    17. Re:Isn't it obvious? by Martin+S. · · Score: 2

      We drove them all out of business by lying cheating and stealing, it's there own fault for not doing the same thing.

    18. Re:Isn't it obvious? by Anonymous Coward · · Score: 0

      you should read that article again... take the point about bloat and features. word and excel are not dominant solely on the basis of marketeering and bullying. they have far too many features for most people - but everyone wants something a little different. they cover their bases.

    19. Re:Isn't it obvious? by Anonymous Coward · · Score: 0

      Spoken like a true brainwashed FDR fan.

      FDR's Keynesian economics actually made the
      depression worse and longer.

      The TVA is/was nothing more than transfer payments, socialist buy-offs, and a means for
      FDR's cronies to feed at the public trough.

    20. Re:Isn't it obvious? by lamz · · Score: 1

      Alas the govt does not have the same luxury.

      Unfortunately, governments go bankrupt all the time. Take a look at what is happening in Argentina right now.

      --

      Mike van Lammeren
      It will challenge your head, your brain, and your mind.

    21. Re:Isn't it obvious? by ghoti221 · · Score: 1

      It worked well enough to keep'em all alive regardless of the problems they had in their
      processes. *shrug*
      --

      --
      "The competent programmer...approaches the programming task in full humility. -- Edsger Dijkstra
    22. Re:Isn't it obvious? by rickchapman · · Score: 1

      Hi. I'm Rick Chapman, the guy who runs http://www.softwaremarketsolution.com and the person who put the interview together with Joel. I'm also the author of "The Product Marketing Handbook for Software" and am currently working on my next book "In Search of Stupidity: A Look Back at the Biggest High Tech Marketing Disasters of the 80s and 90s." I've read the statements here with a great deal of interest, and have a couple of comments to make and some info that may be of interest.

      First, I'm interested in compiling some of the best observations made about the interview and feeding them to Joel for comment. I think this would provide an interesting counterpoint to his views and provide the opposition its say. I'm also going to run an interview with a prominent open source developer (from a company that is making money) to provide a further contrast, as well as explore the issue of how to make money with open source products.

      However, I have to also tell you that most of the companies that have competed against Microsoft have, in the main, ONLY themselves to blame for their respective meltdowns. I went to work for MicroPro (WordStar) in 1983, then the largest microcomputer software company in the world and saw the company destroy itself via an incredible marketing meltdown in 18 months with no help from ANY of the competition. Ditto with Ashton-Tate (dBase). Ditto SPC (Harvard Graphics). Ditto, for the most part, Lotus. Ditto, for the most part, Borland. Ditto Novell. (Read my article "From Godzilla to Gecko" on SMS that covers Novell.) The list goes on and on (and will be covered in greater and more gruesome detail in "Stupidity.")

      Even Netscape, where I believe MS clearly went over the line, has itself to blame for a lot of what happened. For instance, no one made M. Andreeson shoot off his big stupid mouth about how his browser was going to kill Windows to everyone who would listen and guarantee B. Gates' full and unrelenting attention. That was the equivalent of taping two raw sirloin steaks to your butt, marching into the cage of a hungry tiger, turning your back on it, executing a bump and grind, then wondering why you no longer had an ass.

      In any event, if you have a particular comment you'd like to have included in the follow up interview, post it here or send it to me at rickchapman@csi.com and I'll put it in the hopper.

      Thanks, hope those of you who read the article found it at least interesting!

      rick

    23. Re:Isn't it obvious? by Anonymous Coward · · Score: 0
      The TVA is/was nothing more than transfer payments, socialist buy-offs, and a means for FDR's cronies to feed at the public trough.

      Can you get in touch with those cronies? I'd like their secrets of longevity, given that you think they're still feeding at the public trough seventy-odd years later.

    24. Re:Isn't it obvious? by rickchapman · · Score: 1

      That wasn't HIS choice. That was my choice. He didn't setup the interview; I did. I was, however, interested in his viewpoint, from a developer's standpoint, on what these companies had done wrong.

      www.softwaremarketsolution.com

    25. Re:Isn't it obvious? by Anonymous Coward · · Score: 0
      You're utterly off the mark if you think you're going to provoke me into some Randroid rant in support of capitalism uber alles

      But nobody said that. You're even responding to your own post, not anybody else's. You just got your head handed to you, Kirlan, and deservedly so. Admit it and move on.

  4. Good point by Bandito · · Score: 5, Insightful

    He says:

    "My theory is that this happens because it's harder to read code than to write it."

    He couldn't be more right. I've recently been asked to port some code from another group in the company. Upon first reading it, I found global variables being referenced from everywhere, and it looked terrible.

    The more I looked at it though, the easier it got to read, and having an existing code base to work from made things much easier.

    Plus, when I have problems with it, I can blame it on a "design error" by the previous programmers!

    1. Re:Good point by Skyshadow · · Score: 5, Insightful

      This is why it's important to force your developers to (gasp) comment their code. Of course, 99 times out of 100, this won't happen because either (1) the boss thinks that'll slow you down and you'll miss your release date or (2) your boss has never written a line of code in his life and doesn't even know you can comment on that computer codes thing.

      --
      Every year during my review, I just pray the words "slashdot.org" aren't mentioned.
    2. Re:Good point by czardonic · · Score: 2, Insightful

      Commenting poorly written code won't help you worth a damn. Plus, why assume that someone who writes bad code will write good comments? Good code speaks for itself.

      --
      Takahashi Rumiko made beats! DON, taku, DON, taku. . .
    3. Re:Good point by StaticEngine · · Score: 5, Insightful
      Good code is not just code that compiles and runs efficiently. Good code also has the following properties:
      • Clear, Consistant Formatting - This code complies with the company standard for writing code. Indents are properly nested, Functions are named consistantly, variables use Hungarian Notation or some other standard. Any programmer should be able to look at code by another programmer and pick up on it very quickly, without shaking their head and saying "What the hell were they thinking?"
      • Copious Comments - Lots of comments, clearly written and explanatory. What does this function do? Put a block at the beginning explaining it. How does this algorithm work briefly? Write a paragraph if you have to. The best comment I heard was from a friend about a former coworkers code: "It's English with some C++ thrown inbetween the comments."
      • Documentation - Anyone who shrugs this off is an idiot. You always have time for documentation. And it's not just for the instance where a programmer gets "hit by a bus." It's for people who leave behind code when they quit, or go to a new project. It's for the new hires, so they can understand and study and learn good design, good techniques, and developer rationale. It forces developers to explain themselves. And it allows non-techies to understand what they're doing. Imagine you had to get through 12 years of grade school with no books. Pretty frightening, eh? Documentation is good. Write it.
      Coders who follow these rules truly are an asset to their company. Geeks who hack, write unreadable code, and utter geek credos about enforcing obfuscation and being purposefully vague have no place in a business environment.
    4. Re:Good point by Cato+the+Elder · · Score: 1

      Comments are important to readability, but phrasing the requirement as "Copious Comments" is asking for trouble. You shouldn't need paragraphs of comment to document a few lines of code except if it is a key interface function. While English is nice, the compiler ignores it, and code that is thick on interlaced English make it hard to follow the flow of what the program is actually doing. Clearly written, explanatory, and consise comments are easier to read and maintain than bloat.

    5. Re:Good point by zmooc · · Score: 5, Insightful

      Good code speaks for itself about what it does, but not about WHY it does something and that's were comments come in handy.

      --
      0x or or snor perron?!
    6. Re:Good point by Anonymous Coward · · Score: 0

      Good code speaks for itself.

      You hit the nail right on the head there. What more can a comment add when the code is self explanitory?

    7. Re:Good point by Codifex+Maximus · · Score: 4, Interesting

      From a purely intrinsic point of view, I agree with you StaticEngine. From a purely practical point of view, I couldn't disagree more.

      Let me explain myself. I have been the type of programmer you speak of. I have written copiously commented code. I have properly formatted my code and used standardized function names and such. After all, I was taught in college to write and comment my code so that any programmer could walk in off the street and understand it easily; that made it easy to replace me and I was.

      It seems that when you follow good programming practice, you end up destroying your job security; and as silly as it sounds... it appears to be sooth.
      Jaded in a realistic world.

      --
      Codifex Maximus ~ In search of... a shorter sig.
    8. Re:Good point by Anonymous Coward · · Score: 0

      Typical view of American manager. He does not able
      to design and assumes that all that it needs only
      simple code fixes.

      I am able to read code but I met many times then
      code should be _redesigned_ on the basic level.
      Objects can be added-deleted-redesigned because of
      bad design. In this situation the only choice -
      - rewrite a code "from scratch". Simple functions
      can be added/fixed fast to old code but new
      features not assumed during initial design
      requires re-design. And bad or incomplete initial
      design force full re-design ==> code rewrite.

      "Joel: My theory is that this happens
      because it's harder to read code than
      to write it. A programmer will whine
      about a function that he thinks is messy."

      It does not need a code rewrite. But if you
      have a problem with _multiple_ funcitions it is
      probably a design issue and you can meet a messy
      program after fixes without redesign and rewrite.

    9. Re:Good point by jdcook · · Score: 5, Funny

      I couldn't agree more. In a similar vein, I removed the turn signals from my car. I get .0000047% improved performance and, after all, what good are signals? I know where I'm going.

      --
      Q:How many libertarians does it take to stop a Panzer division? A:None. Obviously market forces will take care of it.
    10. Re:Good point by Anonymous Coward · · Score: 4, Insightful

      If you think no comment is ever useful on well written code, you shouldn't be a developer. If someone new has to come into your project (especially a jr. engineer), well placed comments will greatly decrease the time required to understand the overall function of your code. By assuming your code speaks for itself, you're assuming everyone is exactly as familiar with the code as you. This basically forces a newcomer to study your code down to every nook and cranny before it even makes sense. Not commenting your code is nothing other than lack of discipline and a sign of indifference towards the overall success of the project.

    11. Re:Good point by Anonymous Coward · · Score: 1, Insightful

      Per line comments rarely add anything. But per function comments are a god send. Keh?

    12. Re:Good point by Razzak · · Score: 1

      or (3) you won't do it because that is how you ensure job security.

      Kinda like lawyers creating legalese so that lawyers will never be out of a job.

    13. Re:Good point by Anonymous Coward · · Score: 1, Insightful

      Bug fix comments with Bug ID and fix date are also really nice.

    14. Re:Good point by joshv · · Score: 2

      He says:

      "My theory is that this happens because it's harder to read code than to write it."

      He couldn't be more right. I've recently been asked to port some code from another group in the company. Upon first reading it, I found global variables being referenced from everywhere, and it looked terrible.


      I am usually the opposite, extremely leery of just starting over, no matter how bad the old code is.

      The thing is once I have actually modify the code I realize it probably would have been better and faster to start from scratch.

      -josh

    15. Re:Good point by thePfhitz · · Score: 2, Funny
      Plus, why assume that someone who writes bad code will write good comments?

      Haven't you heard the quote, "Comments in code are like sex - even when it's bad, it's still better than nothing"?

      If you don't need them, then great... but it's the other people working on the same project that would be the ones using comments placed in the code to help themselves along.

    16. Re:Good point by Anonymous Coward · · Score: 0

      Commenting poorly written code won't help you worth a damn.

      Wrong, because when the historians wonder, "What were they thinking?", they'll have an answer.

    17. Re:Good point by haruharaharu · · Score: 2, Informative

      Comments in code are like sex - even when it's bad, it's still better than nothing

      Totally wrong. While bad sex is still good, bad comments are worse than useless - they deceive you as to the point of the code, or they document what they programmers wished they were doing, while the code merrily trashes your data.

      --
      Reboot macht Frei.
    18. Re:Good point by mshiltonj · · Score: 2, Insightful

      Commenting poorly written code won't help you worth a damn. Plus, why assume that someone who writes bad code will write good comments? Good code speaks for itself.

      Not always. A new method in a class does not explain itself in absence of the whole class. If I'm working on just this one method, I want to know how if fits in with the rest of the class -- without having to read the whole class.

      Code warriors write the code, and it may be great, but more times than not (in my experience), it's less skilled folk who have to support and maintain the code. The Warriors have moved to to develop the next great thing.

    19. Re:Good point by rodgerd · · Score: 3, Insightful

      Because sometimes code which looks bad to the casual observer is bad for a reason, usually to do with the peculiarities of and environment - a buggy standard c lib, a braindead app server or somesuch. Good commenting makes it clear that this is broken by design and attempts to fix it will cause more problems than they solve.

      Likewise, I've left comments in code to the effect of, "I know this is broken, but we had to have it yesterday. It should be written better using x, y, and z techniques"; this flags to future developers (and me) that it's a FIXME and points a route for the fix.

    20. Re:Good point by Anonymous Coward · · Score: 1, Insightful

      It seems that when you follow good programming practice, you end up destroying your job security; and as silly as it sounds... it appears to be sooth.
      Jaded in a realistic world.

      You know, you were probably fired because somebody in management didn't like you or your attitude, because somebody had to go, your salary was too high, or because you were on the wrong project. People are even occasionally still fired for poor performance, I hear.

      I must confess, however, that my employer will get much better documentation about what I've done if I leave voluntarily...
    21. Re:Good point by rootofevil · · Score: 1

      its kind of a catch-22. by not commenting your code, you inevitably lock yourself into your job function. the more that you write, the harder and harder it will be for them to fire OR promote you. granted you might not be thinking about that now, but if you ever want to make it up to project manager, you HAVE to let your self be replaced. the key here is to get people to like you. then they have a MUCH harder time firing you.

      --
      turn up the jukebox and tell me a lie
    22. Re:Good point by Thatman311 · · Score: 0

      I guess you have never dealt with projects that have..oh lets stay small here...at least a 100,000 lines of code with 5-7 years of history in it. That codes has been pushed pulled and spanked into a well rounded machine today and guess what? It still has bugs. do you think you could write something better and still get the product out the door on time with less bugs? Do you think it would take less time than just working the fixes in?

      --
      Silly Rabbit...Sig's are for kids.
    23. Re:Good point by Anonymous Coward · · Score: 1, Insightful

      Heh. I've seen programmers kept on to support their own shoddy code, but I haven't seen any programmers let go because their code was too good. If you need to obscure your code to keep your job, theres something wrong with your performance.

    24. Re:Good point by Anonymous Coward · · Score: 0

      "Plus, when I have problems with it, I can blame it on a "design error" by the previous programmers!"

      I know just what you mean. I would have been a damn good guitarist if I hadn't been a lousy musician.

    25. Re:Good point by TeeWee · · Score: 2, Insightful

      It seems that when you follow good programming practice, you end up destroying your job security; and as silly as it sounds... it appears to be sooth.

      If you really mean that, than there's something seriously wrong. If you need that kind of obscurity to get job security, perhaps you should look in the mirror more accurately and find other ways to raise your performance. Or your manager knows jack shit about IT.

      Creating code that a machine understands is easy. Creating code that humans understand is what makes coding difficult. Any able manager would love to see a coder in his staff producing code that any programmer off the street can jump into and work on efficiently. I'd get that coder a raise to make sure he doesn't leave! Far from destroying job security, it increases job security!

    26. Re:Good point by beable · · Score: 1, Insightful

      However, not all comments are useful. I have seen code that goes like this:

      //
      // Now we can release the lock on the handle.
      //
      Handle->ReleaseLock();

      And it goes on like that for hundreds of lines, in one function. Every line has three lines of comments that give no more information than the line of code gives. Every function is hundreds of lines long with multiple "if" and "else" branches. This is nothing more than:

      i++; // add one to i

      It is crap, and it doesn't help. Not all comments are good. But I can just imagine the programmer writing it thinking "I'm writing some really good stuff here! Look at all those comments! This MUST be good!". But it's bad. Very, very bad.

      --
      ...
    27. Re:Good point by Andy_R · · Score: 3, Funny

      It's very important that the poorly written code is documented, since that's the code that will need to be re-written!

      --
      A pizza of radius z and thickness a has a volume of pi z z a
    28. Re:Good point by deaddrunk · · Score: 1

      That doesn't mean that all comments are bad, just that the person that wrote this particular program had no idea of the point of commenting.

      --
      Does a Christian soccer team even need a goalkeeper?
    29. Re:Good point by Andrewkov · · Score: 0, Offtopic

      Well, you can also get a disease and die from sex, bad comments won't do that to you... Bad comments are more like a case of herpies.

    30. Re:Good point by japiter · · Score: 1

      Your formatting point is close to my heart. Personally amongst other things I have a vendetta against the use of tabs - I replace them all with 4 spaces in any file I touch! I go "s:// /g" and its kaput to them all!!. Actually I'd throw out Hungarian notation as well - you just can't be relying on the name of variable to know its type! With regards code comments and documentation, well unless someone can come up with a good Literate Programming environment that could be adopted by mainstream developers, this will always be an uphill battle. Time is money and I'd recommend spending more of it writing better structured code then documents that can rarely be updated as quickly as the code in your typical process driven environment. - The fellow who designed it is working far away; The spec's not been updated For many a livelong day. The guy who implemented it is Promoted up the line; And some of the enhancements Didn't match to the design They haven't kept the flowcharts, The manual's a mess, And most of what you need to know, You'll simply have to guess. David Diamond. "For a Friend Assigned to a Maintenance Group" in Datamation, June 1976, pg 134

    31. Re:Good point by small_box_of_stuff · · Score: 1

      comments wont improve a bad design, inexperienced design or poor implementation. Nor make crap smell better.

      Rewriting might.

    32. Re:Good point by small_box_of_stuff · · Score: 1

      It can also happen because what you read is nonsense. Its not safe to assume everyone knows everyting about software development, and that you are reading the wisdom of the sages. Its possible that the code your working on is full of years of wisdom. But Its also possible that its full of years of nasty hacks done as quickly as possible. Its possible that after years of this, you cant fix it any more, cause every thing you do will break N unknown parts of the code.

      Its possible that it was written by people that didnt know what they were doing. Its possible that the 'changes' you are to make would in effect make it a different application.

      Its possible that the wisdom you are seeing, these bug fixes, would all have been unnescessary if the design or core implementation were different.

      So dont, please, make the blanket statement that old code is good. It is quite lilkely, as likely that its good, that its complete crap, and needs redone to have any chance of getting it to do what its going to need in the future.

    33. Re:Good point by Enkur · · Score: 0

      No mention of modularization or reusability? I think it may also be a good idea to at least somewhat seperate the documentation and possibly to a lesser extent even the organization of code from the quality of code.

    34. Re:Good point by mccalli · · Score: 2, Funny
      ...after all, what good are signals? I know where I'm going.

      Ah ha - a Mercedes driver...

      Cheers,
      Ian

    35. Re:Good point by mightbeadog · · Score: 2, Insightful

      I think programmers, and geeks in general, naturally see things in new and unusual ways. This is a great tool for invention and problem solving. However, we also tend to suck at seeing things the way others see them. Some of us just can't do it, and thus have no social skills. Others of us have learned to do conciously what the majority does naturally, maybe RPGs help. :-)

      Anyway, being unskilled at seeing things as others do, we tend to misjudge how obvious our code is. And when we do write comments or other docs, we have trouble judging their usefullness. Therefore, the quality of comments tends to be somewhat random, even when we believe in their importance. Also, lack of feedback means we can't hack documentation, so commenting is never as much fun as programming.

    36. Re:Good point by Bandito · · Score: 1

      I didn't make the statement that "old code is good code", in fact, I don't believe that code that is old is necessarily good by virtue of the fact that it is old.

      My point was that as the author said, "It's harder to read code than it is to write it." As programmer's we know this and tend to write off old code as "old, not good" without looking at it.

      I'm just trying to say that it's worth at least looking at the code to find out whether it's fixable/changeable/what have you before just giving up on it and starting over.

    37. Re:Good point by A.Gideon · · Score: 2

      As true as this is, I find comments describing "why not" even more useful. If I know what was avoided - or how/why some other approach failed - I am saved the cost of repeating that effort.

    38. Re:Good point by Jucius+Maximus · · Score: 1
      "It seems that when you follow good programming practice, you end up destroying your job security; and as silly as it sounds... it appears to be sooth. "

      Damn, man! I've gotta start listening to people with 3-digit user numbers a little more often.

    39. Re:Good point by Bouncings · · Score: 2

      Indeed it's tempting to rewrite because of readability. The real point is that a rewrite is usually needed. But, before the rewrite, learn to read the old code. Then, you can build in your past experiences.

      As proof that the never-rewrite rule is flat-ass wrong, I submit the interviews with id software, and how often Quake, Doom, etc were all re-written in their code base.

      The difference? They understood their old code and rewrote it anyway. That's key.

      --
      -- Ken Kinder ken@_nospam_kenkinder.com http://kenkinder.com/
    40. Re:Good point by johnnyb · · Score: 2

      Good code does not speak for itself. If there is a braindead program you have to interface with, you need comments telling the future programmers why you are communicating with it in such a lame manner.

      A good programmer can find WHAT any program does, but only comments can show WHY they do it. If a bad programmer writes WHY they are doing something, and then they do it poorly, a good programmer can come back and do it better. If a good programmer _has_ to write bad code because it's interfacing with another broken program, and DOES NOT include comments, another programmer will come in and write it the "right" way, and spend the next 2 years fixing it to work with the given program, until it looks just like the "bad" code it replaced.

    41. Re:Good point by rkent · · Score: 2

      It seems that when you follow good programming practice, you end up destroying your job security; and as silly as it sounds... it appears to be [truth].

      Man! Either you're making this up, or you were fired once: by the shittiest manager ever. One of my primary references is a former manager whose list of my strengths includes - at the top - my ability to write well-documented code. I get complemented for it all the time. People love to have a guy like me on the project, who documents all his functions and finds out what other peoples' do, and documents THEM sometimes too. It's a PLUS!

      Incidentally, I replaced the archaic "sooth" in your post above with the modern English equivalent, "truth." If you're seriously concerned about job security, take to heart these little tips for communication with your colleagues; they'll find it much easier to have you around.

    42. Re:Good point by zmooc · · Score: 2

      Indeed. In fact all decisions taken while implementing should be documented. This will often even speed up programming; writing down what you're thinking is often a lot more clarifying (to yourself) than just thinking about it. But also things like `this is bubblesort' or `when you change this, also change that!' are very usefull.

      --
      0x or or snor perron?!
    43. Re:Good point by Salamander · · Score: 2
      Functions are named consistantly, variables use Hungarian Notation or some other standard.

      I'd add that functions should be not only named but also grouped consistently. Matched pairs of functions (initialize/terminate, hold/release, get/put) should be close together so that when one is changed it's easy to go and change the other in complementary ways.

      As for Hungarian notation, I disagree. I've worked on lots of code that used it, and lots that didn't, and I haven't noticed any difference in readability. There's even a possibibility when using HN that the name will not match the actual type after someone changes the code, and that can be worse than having to find the declaration. Type information belongs in declarations; names should contain information that can't be expressed as a type - usually usage.

      In the context of that last statement, I should also point out that typedefs and enums should always be used to maximize the amount of information in a declaration. Some of my code uses virtual block numbers, physical block numbers, and buffer numbers, for example. These all equate to integers of the same size, but they're visibly different types with different expectations. Opaque pointers ("typedef struct foo * bar") are also very useful to define usage.

      Lots of comments, clearly written and explanatory...The best comment I heard was from a friend about a former coworkers code: "It's English with some C++ thrown inbetween the comments."

      Yuk. Verbose comments are a waste of time. Yes, if you have to write a paragraph to describe why a tricky piece of code works the way it does or how a complex data structure is linked together, by all means do so. However, "English with some C++ thrown in" is likely to lead to information overload. IMO, comments are like warning flags; they alert the reader to something that they might miss otherwise. I'd say 80-90% of code is usually pretty self-explanatory as long as you have the proper context from design docs and module/function header comments, and further verbosity is undesirable.

      As Joel points out, code embodies the experience of the people who wrote and debugged it. The most useful comments are those that share that experience in the form of pointing out things like why seemingly-extraneous code is really necessary. My personal favorite type of comment is one that anticipates my objections and says "we tried xxx, but it didn't work because..."; that kind of comment can save hours or days of frustration.

      Documentation is good. Write it.

      Absolutely. I'm sometimes dismayed by the apparent drop-off in my productivity as measured by lines of code compared to the days when code was all I wrote, but I know deep down that writing the spec first is worth it, which brings me to the single most important point that I think you forgot to mention:

      Fix things sooner, not later

      In a lot of ways, this is like the Zeroth Law of Thermodynamics; it really underlies all of the other suggestions. Anticipating a problem or future enhancement in the design phase is cheaper than having to go back and rewrite thousands of lines. Anticipating and avoiding type confusion, or code rewritten into an inferior form due to misunderstanding, is also better than suffering the effects after the fact. Finding problems with thorough asserts or unit tests is better than finding them in the field is good. Finding problems in the field with internal integrity checks that warn you when a data structure first gets corrupted rather than when the corrupted data structure gets used is good. Always, in everything you do as a programmer, plan ahead and try to think of ways you can save yourself grief later by acting now. These "defensive" skills are the ones that set the programming elite apart from green recruits, and it's unfortunate that most people don't start developing them until they've lost a few months of their lives under the gun desperately searching through post-mortem dumps to figure out bugs that should have been caught in unit tests.

      --
      Slashdot - News for Herds. Stuff that Splatters.
  5. How to make a good software project / product fail by Twilight1 · · Score: 1

    1. Come up with a really cool and useful idea.

    2. Implement said idea, and tell others about it.

    3. Build a solid piece of software and test it.

    4. When Microsoft notices, refuse to sell out to them.

    5. Be crushed under the weight of a mighty monopoly when they throw their machine at you and give away a product that does the same thing as yours for free.

    6. Try to play the "release often" game against Microsoft.

    Repeat steps five and six until desired failure is achieved, or until your stockholders turn into an angry mob, whichever happens first.

    Wheee! :)

    -- Twilight1

  6. How To Make Software Projects Fail: by Skyshadow · · Score: 5, Funny
    Step 1: Hire my boss (God, please hire him away!).
    Step 2: Put him in charge of software development.
    Step 3: Do nothing as priorities change weekly and deadlines slip away.
    Step 4: Do nothing to stem exodus of clued-in employees to less-screwed companies.
    Step 5: Force remaining employees to work 15 hour days. Provide subtle reminders that there's a recession out there.
    Step 6: Do nothing as even non-clued-in employees flee.
    Step 7: Hire a sweatshop in China to crank out code; present this sound like a good idea.

    There, that was pretty easy. And, to be honest, everything beyond Step 1 pretty much happens on its own.

    --
    Every year during my review, I just pray the words "slashdot.org" aren't mentioned.
    1. Re:How To Make Software Projects Fail: by Twilight1 · · Score: 1

      Hmm, you sound like you work for VA Software... ;^)

    2. Re:How To Make Software Projects Fail: by [TWD]insomnia · · Score: 1

      That's badass, it's like if you're exactly describing my current situation.

    3. Re:How To Make Software Projects Fail: by Iamthefallen · · Score: 1

      Dilbert? Is that you?!

      --
      Wax-Museum Fire Results In Hundreds Of New Danny DeVito Statues
    4. Re:How To Make Software Projects Fail: by gracenote · · Score: 1

      >Step 1: Hire my boss (God, please hire him away!).

      Do you work at my company?

    5. Re:How To Make Software Projects Fail: by DataSquid · · Score: 4, Funny

      Ah, the true sign of a clueless boss: A non-AC post about how clueless your boss is, with no fear he'll read /. and find it ;)

      --

      DataSquid.net, a little about me.
    6. Re:How To Make Software Projects Fail: by rmathew · · Score: 1
      Step 1: Hire my boss (God, please hire him away!).
      Step 2: Put him in charge of software development.
      Step 3: Do nothing as priorities change weekly and deadlines slip away.
      Step 4: Do nothing to stem exodus of clued-in employees to less-screwed companies.
      Step 5: Force remaining employees to work 15 hour days. Provide subtle reminders that there's a recession out there.
      Step 6: Do nothing as even non-clued-in employees flee.
      Step 7: Hire a sweatshop in China to crank out code; present this sound like a good idea.

      Errr... From "Step 1", "Step 4" and "Step 6", one is led to believe that you are an employee with no clue whatsoever!

      :-P

    7. Re:How To Make Software Projects Fail: by Anonymous Coward · · Score: 0

      It's ironic that, when reading that, it doesn't seem quite so funny...

    8. Re:How To Make Software Projects Fail: by r_j_prahad · · Score: 2

      Stand up right now, peer over the top of your cubicle, and wave your hand. I want to see where you sit because obviously we work at the same place.

      Somebody should tell him its spelled p-r-o-g-r-e-s-s and NOT p-r-o-c-e-s-s.

    9. Re:How To Make Software Projects Fail: by nytes · · Score: 1

      You forgot:

      Step 2.a: Hire one or more clueless contractors to jump-start the project.

      (Speaking from recent, and painful, experience.)

      And yes, we're at step 5 and I'm still working here.

      --
      -- I have monkeys in my pants.
  7. Soul of a New Machine (slightly OT) by Omerna · · Score: 3

    I'd HIGHLY suggest reading a SoaNM. One of my favorite books (fiction or non).

    --


    No sig for you.
  8. next week? by scaryjohn · · Score: 1, Flamebait

    So, will it make the main page next week when he talks about how "bad" Linux and Mozilla are? As the backseat editors like to say, "Rob, start spell-checking that title now; you know it's coming."


    For that matter, i wonder what he'll have to say about Linux. Ten years and they're still on version 2.[4,5]. That might actually make him happy.

    --
    One might ask the same about birds. What ARE birds? We just don't know.
  9. problem = clueless management/directors/execs etc. by Sonicboom · · Score: 5, Interesting

    Alot of .com's I've worked at in the past 2-3 years always wanted to "lowball" developers and engineers, while lining the pockets of resource managers, implementation managers, marketing people, etc.

    Then a skilled/talented developer and/or engineer wants more money. The employer does nothing to retain them - thus the skilled/talented employee leaves.

    Now who maintains the code?

    The other problem is bringing in short term consultants for long term projects. The non-technical people who make these executive decisions don't seem to see the feasability of KEEPING their code maintained by the talented/skilled person who BEGAN the development on it.

    I know alot of consultants read /. - so I'll probably take a big hit on the karma - but I just was the casualty of another dotcom failure - and this was a seriousl problem.

    Another problem is hiring non-technical managers to manage technical people. At my last job we had a manager off of an automobile manufacturing production line quit his job at the auto company to take a job as the manager of a group of Unix admins. This "bumper jockey" had NO CLUE what we did for a living, and treated us like a bunch of unionized UAW slobs, and not like professionals.

    How can a non-technical boss effectively manage technical people???

    Also - how about all the Ceo, Cio, Cto, eieio - types with their big salaries, catered lunches, etc... Alot of them have NO programming or hands-on technical experience. Hell - I've had the CTO come up to me and tell me that "The Internet was broken" when he knocked the dongle out of the side of his laptop - severing the network connection. And this guy is our Chief Technology Officer???? *lmao*

    I'm not saying that only technological people can make technology companies work - but I do feel that managers should take some sort of hands-on classes to learn some basic programming and internet skills so they have SOME SORT OF CLUE about what WE all do for a living!

    --
    [Connection closed by foreign host]
  10. I'm a little confused.. by Anonymous Coward · · Score: 1, Insightful

    I wasn't aware that Borland -was- failing. They do have a cross-platform language that's on par with Visual Basic in the ease of use department, that's more than Microsoft's done. In fact they're one of the only companies that -support- cross-platform development with both of their products, and they're the only company that's actually responsive to the community that uses their software for development.

    1. Re:I'm a little confused.. by Anonymous Coward · · Score: 0

      Borland used to be great: Turbo C stomped MS C, OWL killed MFC, the BC++ dev ide dominated MS Dev Studio. Sadly those great products are now obscure and the people who created by work for MS. Cross-platform development is a technical marvel that has been touted for 15 years but it really is not very important (flame me but it is true).

    2. Re:I'm a little confused.. by ICodeThereforeIAm · · Score: 2, Insightful

      You must be young. Borland used to have a PIM (sidekick), a database (DBase), a spreadsheet (Quattro) and a wordprocessor trying to compete with MS. Needless to say, MS won. Now Borland is focused on their development tools.

    3. Re:I'm a little confused.. by Old+Wolf · · Score: 2

      On a par? Borland C++Builder kicks VC++'s ass.

      The only reason it's not the market leader is because of paranoid droids who go for an "all-Microsoft" development environment, for unclear reasons.

      Even Turbo C++ 3.0 , buggy as it was, was so easy to use that (in its time) it was one of the leading compilers.

    4. Re:I'm a little confused.. by A+Life+in+Hell · · Score: 1

      I own both bc++ builder and vc++ (even tho I prefer to code on linux, but that's another story for another flamewar ;), and I beg to differ that c++ builder kicks vc++'s ass - yeah, the RAD stuff is nice, but the actual compiler behind bc++ generates completly shite code compared to vc++'s, and generating code is the important part of a compiler, no? :-p

      --
      Commodore 64, Loading up the dance floor!
    5. Re:I'm a little confused.. by Old+Wolf · · Score: 1

      What do you consider 'shite' ?

  11. Rewrite vs compatability by Iamthefallen · · Score: 4, Interesting
    Joel: Hmm. That reminds me that Microsoft learned the "no rewrite" lesson the hard way.

    Obviously, MS biggest problem though is that they don't know when to give up and actually rewrite. For instance, it seems that the windows series of operating systems are all made with the intent of being backwards compatible and reusing core parts back to early DOS systems. Backwards compatability and code reuse is nice and all, but there is a limit to it and a time to give up.

    It will however be interesting to see what comes out of the "total rewrite" of IIS.

    --
    Wax-Museum Fire Results In Hundreds Of New Danny DeVito Statues
    1. Re:Rewrite vs compatability by czardonic · · Score: 1

      Obviously, MS biggest problem though is that they don't know when to give up and actually rewrite.

      Actually, thier biggest problem is finding places to stash the money they are making hand-over-fist selling their wildly popular software.

      For instance, it seems that the windows series of operating systems are all made with the intent of being backwards compatible and reusing core parts back to early DOS systems.

      True, unless you count Windows 2000 and Windows XP.

      --
      Takahashi Rumiko made beats! DON, taku, DON, taku. . .
    2. Re:Rewrite vs compatability by Anonymous Coward · · Score: 0
      Uh, fact is that Microsoft knew exactly what they were doing.

      It was a choice between stability and compatibility. Most secretaries don't push their Win95 machine to breaking point (it will stay up for 3 hours) but they had better be able to run that accounting app that the company uses.

      Stability just lost out, that's all.

    3. Re:Rewrite vs compatability by Enrico+Pulatzo · · Score: 2, Insightful

      It seems from Joel's comments that code rewriting is totally a bad idea. I found his comments about not worrying about code size not too suprising, especially when thinking about microsoft office. Its a bummer that code just sits there and collects blocks of individual special compatibility cases, such as looking for an old DOS call or something similar. Eventually this code should be rethought, to reasses if these individual checks still matter. I seriously doubt, given the tone of the article, that this happens with suites such as office. Big bummer...

    4. Re:Rewrite vs compatability by The+Man · · Score: 1
      Obviously, MS biggest problem though is that they don't know when to give up and actually rewrite.

      You are technically correct. Certainly this is a major reason that their software sucks so badly that I and many others refuse to use it. But really, is this a problem for the people who care, specifically the stockholders? Nope. Fuckwits still buy it, the profits keep rolling in, and the stock price keeps going up. I'd say that whatever they're doing is working just fine.

      You want to build a better product, that's easy; a small child with a mental defect could do that. You want to make more money, good fucking luck.

    5. Re:Rewrite vs compatability by Iamthefallen · · Score: 1

      Very true, and that is the sense that I meant it in, not in $$$/marketshare terms, but in the more esoteric world that is underlying function and development for it. MS is a succesful biz thanks to marketing and shrewd tactics alone imho, they make some good applications that eventually became industry standard and daily tools for all common users. Not because they were the best, but because that's what the people in charge were told was the best.

      However, without having had an in depth look at it, I'm assuming that large parts of Office and other common tools still bear legacy code from very early versions of them. And while this works reasonably well at the moment, there comes a limit when 90% of code is legacy and old patches and patches for patches and it's time to rewrite and use the parts that work and redo the parts that don't.

      Microsoft has afaik been working on .Net for at least 4 years, and we won't see it fully in action for another couple years when the move is complete, a huge undertaking to say the least. And one I think will bring a vastly improved enviroment for the Wintel developer

      But, and a big but, how many times can they afford to do this? How much marketshare do they lose in the transitions and with old versions screaming for rewrite? Take IIS, IIS is frowned upon today because it's considered highly unsafe, how much marketshare do they lose before the rewritten version has proved itself and start gaining again? Is .Net the strategy that'll last for a decade or two? Very doubtful in my mind...patches will be made and patched again, until it's time for a rewrite, and so the MS saga continues...

      --
      Wax-Museum Fire Results In Hundreds Of New Danny DeVito Statues
    6. Re:Rewrite vs compatability by sql*kitten · · Score: 2

      windows series of operating systems are all made with the intent of being backwards compatible and reusing core parts back to early DOS systems. Backwards compatability and code reuse is nice and all, but there is a limit to it and a time to give up.

      I don't doubt that MS would have been happy to see the back of DOS even in the days of Win 3.1, but they couldn't, too much DOS software in the world that people rely on. Order inputting, inventory management, point of sales, industrial control, all sorts of unglamorous software that just works, has done so for the last couple of decades, and doesn't change. This sort of stuff is everywhere in factories and depots across the world. For better or worse, DOS compatibility had to be kept in, even now there's still a lot of DOS software around, people are only moving off it slowly still. For similar reasons, IBM keeps developing and supporting their COBOL compilers on mainframes. The web has bred the mentality that you can just throw your tech away and start again whenever you need to, in fact you have to because everything changes so fast. This just isn't realistic when you have software that works in the "real world".

    7. Re:Rewrite vs compatability by juha0 · · Score: 1

      OS X. Totally rewritten operating system that has tried to keep (some sort of) backwards compatibility also. We'll see, how that succeeds in the future.

    8. Re:Rewrite vs compatability by beable · · Score: 1
      Obviously, MS biggest problem though is that they don't know when to give up and actually rewrite. For instance, it seems that the windows series of operating systems are all made with the intent of being backwards compatible and reusing core parts back to early DOS systems. Backwards compatability and code reuse is nice and all, but there is a limit to it and a time to give up.
      Just the other day I was wondering what would happen if Microsoft "pulled an Apple" and released a brand-new version of Windows based on BSD code. Then they could get stability, scalability, and portability, and still maintain backwards compatibility right back to DOS using some things like Dosemu and Wine. They could firmly glom a pretty GUI onto it, so that the average user would still be able to use it. But they would never go BSD, would they?
      --
      ...
    9. Re:Rewrite vs compatability by Iamthefallen · · Score: 1
      Good point, however...

      If DOS support had been dead and buried in Windows 95|NT, would the industries have lost money because "Windows95|NT is a richer, easier to use, more productive FUN! OS", or, would they have saved a ton of money by sticking to old trusted and tested hardware/OS/Apps until they had succesfully rewritten the application for the Win32 enviroment?

      IMHO there's very little point in using a $1500 computer and a $300 OS to run a 10-20 year old product.

      --
      Wax-Museum Fire Results In Hundreds Of New Danny DeVito Statues
    10. Re:Rewrite vs compatability by Iamthefallen · · Score: 1

      heh, the thought has struck me to. An interesting concept. Considering the amount of time and cash spent on .Net it's not likely to happen anytime soon though. However, with the amount of *nix server side systems, I think even MS will eventually begin to look at it, SQL Server, Exchange, MSIE, and yes, even the dreaded IIS ;-) might make it onto the *nix platform. It's too big a potential market for MS to ignore. Perhaps wishful thinking, but it is a possibility.

      --
      Wax-Museum Fire Results In Hundreds Of New Danny DeVito Statues
    11. Re:Rewrite vs compatability by eMilkshake · · Score: 1
      No, MS did rewrite Windows something like 7 years ago, but it turned out that this new Windows needed an excessive amount of RAM (20 megs) and ate up CPUs (the 486 just couldn't cut it), so the MARKET rejected it for a long time.

      Yes, many of the problems with Windows & the Intel CPU are that they must have backwards compatibility, but that's also what makes businesses accept using these "new fangled devices." Think about it -- you might be able to use the same DOS inventory system on XP that you used in 1986.

    12. Re:Rewrite vs compatability by Iamthefallen · · Score: 1

      hmm, I can't agree with you there, the rewrite part consisted of a new kernel NT3.x, it seems every other part was slapped on from the existing OS. I think this have cleared up somewhat with win2000 and XP with rewrites of more applications and services to bring them up to date.

      I remember reading way back in ancient history (96-97?) that the reason for releasing win95 was as a stepstone to move to the NT platform. 95 was 16/32bit and as such it was a nice idea to ease the world into 32bit NT. However, it took win95, Win98, WinME, NT 4, Win2000 until we finally arived at the common base with XP. Each version introducing new bugs and new pains for the users, I think MS decided to a large extent ignored this and chose to patch rather than rewrite because they could see the merger coming and were busy rewriting for that.

      --
      Wax-Museum Fire Results In Hundreds Of New Danny DeVito Statues
    13. Re:Rewrite vs compatability by mscout1 · · Score: 0

      For all we know, they already did this! We cant't see the kernal code. It is a black box.

      --
      ------- I saw a VW Beatle the other day. The vanity Plates said "FEATURE"
    14. Re:Rewrite vs compatability by mpe · · Score: 2

      For better or worse, DOS compatibility had to be kept in, even now there's still a lot of DOS software around, people are only moving off it slowly still.

      One reason is that code dosn't "rust" and there is a general engineering principle of "if it isn't broken don't try to fix it".

    15. Re:Rewrite vs compatability by flegged · · Score: 1

      Bullplop.

      A BSD Mach kernel was used to make NextStep. It sucked. It flopped. They put a whizz bang transparent animated gooey (and I do mean gooey - it's totally sickening) on it, and it sells.

      And they don't have real a compatibility layer, they just run the entire fscking old OS in a single process. It's the dinosaur OS which is doing everything.

      Totally rewritten it is not.

      --

      "I think he was truly surprised at how little I cared about how big a market the Mac had" - Linus on Jobs
  12. Easy.... by DAldredge · · Score: 1, Redundant

    Have a product that competes directly with Microsoft...

  13. What? by Anonymous Coward · · Score: 0, Offtopic

    Bob Abooey is getting stories posted on Slashdot?

    Now I've seen everything.

    --perdida

    1. Re:What? by Bob+Abooey · · Score: 0, Troll
      You have to admit that it's an interesting interview. I don't agree with everything he says, but he is a well thought out and knowledgable person.

      And, just because I have a somewhat mis-understood past doesn't mean I can't change and start using my powers for good instead of evil...:)

      --

      All the best,
      --Bob

    2. Re:What? by Rocky · · Score: 1

      That, and Kuro5hin's still down...

      --
      "I'm an old-fashioned type of guy. I worship the Sun and Moon as gods. And fear them."
    3. Re:what? by Spinality · · Score: 1

      Uhhh...I think the idea is that, if you want backward or multiplatform compatibility, you ooften get an enormous help by building on a rich widely-deployed interface, *even* if that interface sucks in various ways. We've seen this a thousand times. Rewriting one of these legacy components sounds like a good idea, and the result is a much cleaner implementation, but you inevitably lose the bug-for-bug compatibility needed to run in these legacy environments. NOBODY is prepared to reimplement all the gory mess that was there before -- anyway, if that's what you want, why rewrite it?

      Think about how many people stick with a buggy tool, wishing they could switch to the new improved model, but knowing they have to stick with what's already in use. (This is how WordPerfect, Adobe, and Autodesk, and of course Microsoft have been able to dominate various markets. I mean, why did MS/DOS last for so long? Exactly for this reason.)

      --
      -- We all have enough strength to endure the misfortunes of other people. La Rochefoucauld
  14. Re:How to make a good software project / product f by Anonymous Coward · · Score: 1, Interesting

    Joel's company goal is to be bought out by Microsoft. No, I don't know this for sure. But when writing that much it's hard to hide your opinions.

  15. "never a good idea to do a complete rewrite" by paulbd · · Score: 4, Troll

    ahem. what was NT for? sometimes, you just have to come to terms with the fact that as tested, bug-fixed and studied as a chunk of code may be, it was developed as part of a misconceived model of either visible functionality or internal architecture or both. DOS and its progeny like win32 were clearly cases of this, and MS weathered a complete rewrite c/o cutler and co. quite happily. the fact that there are examples of disastrous complete rewrites doesn't mean that the examples that worked are meaningless.

    1. Re:"never a good idea to do a complete rewrite" by BrynM · · Score: 1

      NT wasn't actually a re-write. The 16bit portions got replaced chunk by chunk between 3.0 and 4.0, but there were revisions that had both (3.51). Further, some 32bit portions of 3.51 eventually became Windows 95.

      Ah, back to the days when some apps were made for 95/NT3.51... Thank god things changed!

      --
      US Democracy:The best person for the job (among These pre-selected choices...)
    2. Re:"never a good idea to do a complete rewrite" by Anonymous Coward · · Score: 0

      WinNT was not really a re-write of Win31, though. It was an offshoot of OS/2, which itself was a brand new product.

      Reimplementing something that already works costs a lot of money, hence the Win95/98/ME line. Writing brand new software costs a lot too, but that effort is going into building something that doesn't already exist.

      Backwards compatibility doesn't enter into any part of this equation except that engineers working off an existing project gain backwards compatibility at no cost.

    3. Re:"never a good idea to do a complete rewrite" by beanyk · · Score: 1

      True, but at least Microsoft were *still* churning out Win 95/98, and developing for it. So they hadn't burned their bridges. As mentioned a bit later on int he interview, the fatal thing to do is *abandon* the original product to work on the new version.

    4. Re:"never a good idea to do a complete rewrite" by os2fan · · Score: 3, Interesting
      Ahem NT is a rehash of OS/2. I mean, the reason they support OS/2 in NT in the first place is that the kernal runs it directly. NT3.1 actually uses an OS/2 boot sector, and NTFS is a hacked version of HPFS with the same drive type.

      The reason they they need to go for a 32-bit system is that the hacks built into DOS was just not enough for their (then) expanding programs. Put simply, they exhausted DOS and were looking for help to get 32-bits under way. Hence the MS-IBM cooperation on OS/2, and NT from MS's fragment of it. FAT32 is another extention of the fs to allow the use of fat ideas into larger disks.

      The original name of NT was "OS/2 NT". It's just an evolution of an IBM product that they had code sharing rights for. Ironically, the first version of NT [ie 3.1] is correct: version 1 and 2 were the common OS/2 base.

      Apparently the one true MS invention was MS BOB. It has a massive entry in technet. Enough said.

      --
      OS/2 - because choice is a terrible thing to waste.
    5. Re:"never a good idea to do a complete rewrite" by Anonymous Coward · · Score: 1, Informative

      As the article says, Microsoft has the money to keep two projects going at the same time.. the rules don't really apply to them.

      They might have had two code bases but they weren't stepping on each other's feet.

    6. Re:"never a good idea to do a complete rewrite" by Anonymous Coward · · Score: 0

      Now are you going to begrudge a company whose best talent is in embracing and extending rather than creating? It would seem that companies ought to focus on what they do best.

    7. Re:"never a good idea to do a complete rewrite" by paulbd · · Score: 2

      several people have claimed that NT wasn't a rewrite and that it was based on OS/2. this is false. MS hired dave cutler from DEC, cutler picked a team of programmers, and they wrote "NT" (which stands for "New Technology" [sic]) from scratch. it was not derived from OS/2, though it may borrow ideas from it. it borrows as much from VMS as it does from OS/2. readers may be confusing the NT kernel (which i was referring to) with the NT UI (which i was not referring to.

    8. Re:"never a good idea to do a complete rewrite" by os2fan · · Score: 2
      Microsoft just did not borrow "Ideas" from it. They borrowed the actual code. Look at the file c:/winnt/system32/os2/oso001.009, which contains the OS error messages. I mean, they talk about formatting disks and OS/2 boot disks there.

      This system is not present in Win9x or WinME. So I would still stick with the notion that NT is a modified OS/2, probably with VMS hacks in it. But I can't see them not recycling something that works and that they can use.

      --
      OS/2 - because choice is a terrible thing to waste.
    9. Re:"never a good idea to do a complete rewrite" by tshak · · Score: 3, Informative

      Actually, NT was a completely different product line (servers, high-end workstations), with the eventual goal of replacing another product line (home PC's). Now, with XP, the "old" product line has been depreciated. It's also not ridden with 16bit code from the DOS era, as your post implies. Keep in mind that there's a difference between rewriting functionality, and even emulating functionality (for backward compatibility), then a complete rewrite of the entire codebase (in the millions of lines of code!)

      --

      There is no longer anything that can be done with computers that is nontrivial and clearly legal. -- Paul Phillips
    10. Re:"never a good idea to do a complete rewrite" by Anonymous Coward · · Score: 0

      In my view he is correct because NT was a different product than Win95. It was even marketed as such. The goal was a different, more capable product.

      I think "complete rewrite" here is not the greatest of terms... What he should say is, develop the successor in parallel with the current version.

      One of Microsoft's most brilliant moves was to start work on IE 3, IE 4, and IE 5 at the same time. It sounded utterly ridiculous back then, and they were mocked for it. But the strategy turned out to be pure genius.

      IE 3 was the quick and dirty browser, clearly inferior to Netscape but good enough to stay in the game. IE 4 was made to be competitive with Netscape. IE 5 was the knockout punch.

      Then Netscape made the terrible move to almost completely stop development of the 4.x branch while the Mozilla project was underway. This might seem like a more efficient approach, to avoid wasting effort on something that you know is a dead end, but it obviously cost Netscape huge market share.

      But you don't have to take my word for it

    11. Re:"never a good idea to do a complete rewrite" by Osty · · Score: 1

      You realize that NT has the ability to use compatibility layers, correct? For instance, NT4 had kernel-level compatibility layers for win3.x, OS/2, and POSIX. The file you're referring to would be part of the OS/2 compatibility layer.

    12. Re:"never a good idea to do a complete rewrite" by cperciva · · Score: 2

      Microsoft just did not borrow "Ideas" from it. They borrowed the actual code. Look at the file c:/winnt/system32/os2/oso001.009, which contains the OS error messages. I mean, they talk about formatting disks and OS/2 boot disks there.

      And take a look at c:/winnt/system32/ftp.exe. I suppose that means that Windows NT is just a reworked version of BSD?

    13. Re:"never a good idea to do a complete rewrite" by os2fan · · Score: 3, Informative
      Yes, Windows NT has compatibility layers. But then so does Windows 2.x, 3.x, 9x, and OS/2, Linux and so on. But the support of DOS in Windows, and the support of OS/2 in NT is fundementally different to the support of DOS in OS/2 or Linux, or POSIX or DOS in NT. In the first group, the calls are handled by the core operating system itself. In the second group, the calls are handled by a subsystem loaded when there is a need for it, ie an external plugin.

      The support for OS/2 in NT is fundementally different to the DOS/Win16 or POSIX layers, even by what MS says.

      The Resource Kit says that the only subsystem you have to disable to get C2 complience is the OS/2 system: ie it's the only one that calls directly to the kernel. The DOS/Win31 and POSIX systems do not call to the kernel.

      NT4 kernel has ONLY OS/2 compatibility. The bulk of the operating system is not available until the shell loads and the user logs on.

      All os2ss.exe and os2.exe do is shunt the calls direct to the kernel for execution. The file in question is there for OS/2 apps to call if they want console messages, it is a MKMSGF file, after all.

      But the technet seems to go a fair bit into OS/2 and the subsystem, while the POSIX system is just there as an afterthought. "We support POSIX".

      No, NT has correct version numbers because they follow from OS/2.

      --
      OS/2 - because choice is a terrible thing to waste.
    14. Re:"never a good idea to do a complete rewrite" by Anonymous Coward · · Score: 0
      Wow. Snarky and baseless.

      He said look in it. Not at the file name, doofus.

    15. Re:"never a good idea to do a complete rewrite" by demon · · Score: 1

      There was no NT 3.0. 3.1 was the first version of NT - it came out while Windows 3.1 was Microsoft's flagship platform.

      --

      Sam: "That was needlessly cryptic."
      Max: "I'd be peeing my pants if I wore any!"
    16. Re:"never a good idea to do a complete rewrite" by BrynM · · Score: 1

      Couldn't remember if there was, those floppies ar long gone ;)

      --
      US Democracy:The best person for the job (among These pre-selected choices...)
    17. Re:"never a good idea to do a complete rewrite" by haruharaharu · · Score: 2

      Ahem NT is a rehash of OS/2

      More like a rehash of VMS. They hired one of the chief architects for VMS to do the kernel

      It's just an evolution of an IBM product that they had code sharing rights for

      More to the point, OS/2 was a joint development effort for the early part of its history. Now, of course, they fly the OS/2 banner upside down (literally!) in their halls

      --
      Reboot macht Frei.
    18. Re:"never a good idea to do a complete rewrite" by haruharaharu · · Score: 2

      He's referring to the BSD copyright notice in ftp.exe. MS used BSD's ftp client code in NT. This is, of course, allowed under the BSD license.

      --
      Reboot macht Frei.
    19. Re:"never a good idea to do a complete rewrite" by Alomex · · Score: 2
      Ahem NT is a rehash of OS/2.

      Which goes to show how ignorant is the typical microsoft basher.

      NT was designed by Ken Cutler, of VMS fame. He also incorporated many Unix lessons into the NT kernel which is actually quite an amazing piece of OS engineering.

      Things started to go bad when they had to make it look/work like Windows 3.1 for compatibility reasons...

    20. Re:"never a good idea to do a complete rewrite" by Thatman311 · · Score: 0

      Really? I don't seem them anywhere. All I see is advertisements for the X-Box.

      --
      Silly Rabbit...Sig's are for kids.
    21. Re:"never a good idea to do a complete rewrite" by waynetv · · Score: 1

      ahem. what was NT for? sometimes, you just have to come to terms with the fact that as tested, bug-fixed and studied as a chunk of code may be, it was developed as part of a misconceived model of either visible functionality or internal architecture or both. DOS and its progeny like win32 were clearly cases of this, and MS weathered a complete rewrite c/o cutler and co. quite happily. the fact that there are examples of disastrous complete rewrites doesn't mean that the examples that worked are meaningless.

      Ah yes. But Microsoft also continued developing the Windows 3.x legacy (Win95, Win98, and WinME). Do you think they would have made it anywhere if they released WinNT to the desktop after Win3.1? Probably not. It's taken them 6 long years to get NT technology to the desktop and all that time there were selling DOS-based, 3.1-based operating systems. Definately a smart move and not something that other companies, when doing complete rewrites, think of.

    22. Re:"never a good idea to do a complete rewrite" by haruharaharu · · Score: 2

      Then head over to the base win32 developers - the guys who own user32.dll and kernel32.dll

      --
      Reboot macht Frei.
    23. Re:"never a good idea to do a complete rewrite" by sconeu · · Score: 2

      NT was designed by Ken Cutler, of VMS fame.

      Which goes to show how ignorant is the typical non-MS basher.

      NT was designed by DAVE Cutler, of VMS fame. In addition, OP was also correct, NT was originally supposed to be "Portable OS/2".

      --
      General Relativity: Space-time tells matter where to go; Matter tells space-time what shape to be.
    24. Re:"never a good idea to do a complete rewrite" by cthrall · · Score: 1

      > MS weathered a complete rewrite c/o cutler and
      > co. quite happily.

      As Joel pointed out, as long as you're doing parallel development on a SHIPPING (that's right folks, REVENUE GENERATING) product, you can go ahead and rewrite the world. WinWord kept cranking whilst Pyramid (apparently) floundered...Win3.1 was shipping while 95 was being written.

      He didn't say all rewrites are bad...just have something to weather the storm.

    25. Re:"never a good idea to do a complete rewrite" by SoftwareJanitor · · Score: 2

      I don't know who Ken Cutler is, but the chief architect of NT was David N. Cutler. Which goes to show how ignorant is the typical Microsoft apologist. Please, if you are going to make statements like you did, at least know what you are talking about.

    26. Re:"never a good idea to do a complete rewrite" by Anonymous Coward · · Score: 0
      c:/winnt/system32/os2/oso001.009

      You need a good thrashing with a clue stick.

      OK, the NT works like this:

      • There's the NT kernel, which is a modern re-entrant microkernel. It supplies various routines that higher levels of the OS use. The NT kernel routines are not documented outside of Microsoft (although I've read some interesting articles about people trying to figure these out).
      • On top of the NT kernel run various "personalities", if you will. Any application running on NT runs within one of these "personalities."
        1. I can think of four OS subsystems in NT:
        2. The win32 subsystem. Applications which use only win32 calls work on both NT and win9x (which is virtually every windows program and everything that Microsoft writes).
        3. The win16 subsystem. This is how NT can run windows 3.1 apps.
        4. The POSIX subsystem. NT is actually POSIX-certified, just like Solaris and the other commercial unices. This doesn't come with NT, you have to get this separately from Microsoft.
        5. The OS/2 subsystem. This comes with NT.
      • For the most part, an application that runs in one subsystem can't use calls from another subsystem (although there's some nasty win16-win32 compatibility stuff in there). This makes the NT POSIX subsystem virtually useless since you can't use any win32 calls in a POSIX program written for NT, and this is why people are working on cygwin (which allows you to integrate POSIX and win32, without choosing only one).
      • The file you mention is used by the OS/2 subsystem. You won't see those error messages unless you run an OS/2 program under NT. So, you can think of that file that you mention sort of like this: imagine you buy a Redhat system that has Wine pre-installed. You do a 'strings' on one of the wine libraries, and Lo-and-Behold, you see a bunch of win32 error messages. Of course, this implies that Linus and Alan have always secretely been employed by Microsoft and deep down within the Linux kernel lies CP/M.
    27. Re:"never a good idea to do a complete rewrite" by SoftwareJanitor · · Score: 3, Insightful

      while the POSIX system is just there as an afterthought

      That is being generous. It is my personal opinion that Microsoft only included the POSIX subsystem in order to be "checklist compliant" to bid on government and commercial contracts that require POSIX compliance. Furthering my suspicions, they basically made the POSIX subsystem more or less useless by crippling it, and making it virtually impossible to run POSIX applications and Windows applications at the same time in any sort of useful manner. So bad was the POSIX subsystem that Interix and Cygwin were created to replace it as well as numerous other porting tools (WindU, MainWin), etc. Microsoft has since borgified Interix in order to make sure it never becomes any sort of serious way to wean Windows users off to other OSes. They want it to only be a one-way street.

    28. Re:"never a good idea to do a complete rewrite" by os2fan · · Score: 2
      Your comment is quite amusing, and rather humourous.

      I am aware of the role of a MKMSGF file. It provides teletype help to programs that need it. When you consider the amount of documentation on the OS/2 subsystem [lots] vs the number of utilities that MS currently support [none]. and then compare it against the DOS and NT programs [NT4 ships with 2 dos editors, NT2K has two also.] then the nature of the OS/2 subsystem becomes rather intriguing. What's the point in putting a subsystem in to run old OS/2 programs into a supposed rewrite.

      Of course the OS/2 subsystem makes perfect sense if the system was based on OS/2, and you needed a back door to get into the kernel. For one thing, the OS/2 system hacks directly to the kernel, and the lack of user tools for OS/2 does not imply a lack of system tools.

      This in itself would explain the necessary caution given by MS in its Resource kit about disabling the OS/2 subsystem to make the system more secure. The DOS and Win16 systems are there because Win95 can run 3.1 stuff, and NT needs that too. You can actually run drwatson under Win31. None the same, the DOS session lags keystrokes, and does not support DOSKEY.

      The role of the POSIX system, which is fundementally useless as shipped, is simply that MS may advertise Posix complience. It's no more true than argueing that DOS is now part of "Windows", and OS/2 can now run "Windows" programs.

      --
      OS/2 - because choice is a terrible thing to waste.
    29. Re:"never a good idea to do a complete rewrite" by Anonymous Coward · · Score: 0

      What's the point in putting a subsystem in to run old OS/2 programs into a supposed rewrite.

      Besides whatever technical merits this might have had, NT 3.1 was legitimately sold as an upgrade to MS LanMan customers, and many running MS SQL Server actually used the OS/2 subsystem during migration until the Win32 version was up and running.

    30. Re:"never a good idea to do a complete rewrite" by Anonymous Coward · · Score: 0

      Isn't it called deprecated?

      [From a non-native English speaking person]

    31. Re:"never a good idea to do a complete rewrite" by sql*kitten · · Score: 2

      Microsoft just did not borrow "Ideas" from it. They borrowed the actual code. Look at the file c:/winnt/system32/os2/oso001.009, which contains the OS error messages. I mean, they talk about formatting disks and OS/2 boot disks there.

      If I remember correctly, NT was originally developed for i960 processors, and only later moved to x86. It also ran on MIPS, PPC and Alpha. There was a SPARC port at one point too, but I don't think it was ever released as a product. The OS/2 bits you are referring to are the OS/2 compatibility subsystem. There is also a POSIX subsystem. (Actually, Win32 itself is a subsystem, running on "real" NT).

      So I doubt very much that NT is just a rehashed OS/2, which as far as I know, was only ever an x86 product.

    32. Re:"never a good idea to do a complete rewrite" by Anonymous Coward · · Score: 0

      You must also be an "I can't look it up myself" person as well.

      http://www.dictionary.com/cgi-bin/dict.pl?term=d ep reciated

    33. Re:"never a good idea to do a complete rewrite" by mpe · · Score: 2

      The POSIX subsystem. NT is actually POSIX-certified, just like Solaris and the other commercial unices. This doesn't come with NT, you have to get this separately from Microsoft.

      IIRC the POSIX subsystem is there because certain US government contracting rules either state or did state that anything not POSIX complient isn't even to be considered.

    34. Re:"never a good idea to do a complete rewrite" by Anonymous Coward · · Score: 0

      Depreciate: To lower in value
      Example - My car has depreciated by $10,000 since I bought it, I'm so pissed.

      Deprecate: To make obsolete
      Example - Perl's tr operator has deprecated the y operator, though it has been left in for diehard sed fans.

      I think you originally meant 'deprecated' in your post.

    35. Re:"never a good idea to do a complete rewrite" by gidds · · Score: 1

      As a wise person once said, "Plan to throw one away. You will, anyway."

      --

      Ceterum censeo subscriptionem esse delendam.

    36. Re:"never a good idea to do a complete rewrite" by os2fan · · Score: 2
      NT derives from an agreement where MS would write an OS/2 where IBM would get the OEM version and MS would have some other market.

      The thing was originally written as an x86 system, but because they were working on a microkernal, the thing was reasonably portable. None the less, there are 4NT versions for the alpha as well, so I think that the thing is not fully compatible.

      Eventually, NT was migrated over to its new form, but the OS/2 system was of some use in the translation.

      OS/2 has been prepared for the PPC as well.

      Win32 is a subsystem, running on the real NT which is more akin to OS/2.

      --
      OS/2 - because choice is a terrible thing to waste.
    37. Re:"never a good idea to do a complete rewrite" by flegged · · Score: 1

      Wow.


      Microsoft Windows 2000 [Version 5.00.2195]
      (C) Copyright 1985-2000 Microsoft Corp.

      C:\>cd winnt\system32

      C:\WINNT\system32>grep "The Regents of the University of California" *
      Binary file VMNetDHCP.exe matches
      Binary file finger.exe matches
      Binary file ftp.exe matches
      Binary file rcp.exe matches
      Binary file rsh.exe matches


      So it's not just ftp.exe that's straight from BSD.

      --

      "I think he was truly surprised at how little I cared about how big a market the Mac had" - Linus on Jobs
  16. Here's an article... by Anonymous Coward · · Score: 0

    Rather then discuss it on a direct finance approach, this article discusses the merits of finance as a regard of speed of production, as well as ease of use.

  17. Re:How to make a good software project / product f by Anonymous Coward · · Score: 0

    Don't forget:

    7. Rewrite your codebase from scratch and disappear from the market for 3 years

    8. Beg the "open source" community to do your coding for you.

  18. The truth: the other apps sucked by Anonymous Coward · · Score: 0

    Joel didn't mention it, but a big reason that MS ate everybody's lunch (in the early 90's, anyway) was that the other products totally sucked. Excel rocked, and 123 for Windows was late, buggy and difficult to use. Ditto for WordPerfect for Windows. Ami Pro was about the best word processor - except for Word.

    Just so's that we don't forget the good ol' days...

    1. Re:The truth: the other apps sucked by rudy_wayne · · Score: 1

      Ami Pro was/is a good word processor. I still use it. Unfortunately, Lotus came out with a whole new version -- called Word Pro -- and totally f****ed it up.

    2. Re:The truth: the other apps sucked by SoftwareJanitor · · Score: 2

      Another reason is that Microsoft was busy telling all the other developers (you know, the ones that made the PC platform popular, like Lotus, WordPerfect and Borland) to write all their software for OS/2, while they were secretly planning to stab IBM in the back and spend their real efforts on Windows. So Lotus, WordPerfect and Borland missing the boat with their original Windows versions is at least partially Microsoft's fault too. Microsoft had intentions of taking over the development tools and application software markets, and the DOS->Windows transition worked in their favor to doing that. It also didn't help matters that Microsoft was cutting off the air supply of the other software vendors through forced bundling and product dumping, which cut off revenue from other vendors when they most needed it to develop new products.

    3. Re:The truth: the other apps sucked by Anonymous Coward · · Score: 0

      So? Lotus and WordPerfect for OS/2 sucked just as hard as the Windows versions. If there was no Windows, Word/Excel would have shipped for OS/2 PM (they were in the can) and kicked their asses there too.

    4. Re:The truth: the other apps sucked by SoftwareJanitor · · Score: 2

      It would be interesting to be able to roll things back and find out. Without the same sort of forced bundling and "everything from one vendor" mentality with PHB's, if Word and Excel would have shipped on OS/2 PM I think they would have had a more serious climb. On the other hand OS/2 would probably have not floundered as badly had it had a few more applications, which one would suspect had something to do with Microsoft burying ready to ship versions of Word and Excel for OS/2 as you suggest they did.

    5. Re:The truth: the other apps sucked by Anonymous Coward · · Score: 0

      Well, you have to realize that MS was looking at a big choice:
      1) Sell out to IBM completely
      2) Tell IBM to fuck off

      All evidence indicates that IBM was expecting #1, which is why OS/2 never had a real software strategy.

      Microsoft, (and no doubt "Joel On Software") was playing it both ways, however, so they were covered.

      So, it wouldn't have been MS Excel, it would have been IBM Excel. (I knew a guy who ran a beta of PM-Excel back in the day. He claimed it was better than what shipped for Windows.)

  19. Not sure how to take Joel and the MS experience... by RFC959 · · Score: 1

    I've been a fan of Joel's work for a while now, and he seems like a smart guy who believes in DTRT. It's hard to believe people like that work at MS, given the quality of most of MS's output. But I know another MS programmer, and he too is a very smart guy with a sense of morals and a sense of the Right Thing. So where's all the evil come from? Or is there something I'm missing in all this?

  20. How to make a software project fail ... by Anonymous Coward · · Score: 0

    Use VB

    1. Re:How to make a software project fail ... by czardonic · · Score: 1

      Indeed. ILoveYou was a total bomb.

      --
      Takahashi Rumiko made beats! DON, taku, DON, taku. . .
  21. Schedules down to the hour ... yeah right by Anonymous Coward · · Score: 0

    This is just more idiocy. What a ridiculous waste of time. I haven't figured out the optimum solution to the problem. I have to roll it around in my head and then come up with a High-level design doc but you want schedules down to the hour level... yeah right.

  22. Before everyone points at Microsoft ..... by reaper20 · · Score: 4, Interesting

    True, MS's monopolistic policies notwithstanding:

    "Everyone thinks, poor Netscape, they were a victim of MS practices" - yes, they were, and yes, they innovated, but come to think of it, NS4 was crappy software that sucked.

    "Poor Real Networks, MS is integrating all that stuff into the OS." - Good riddance ... IMO anything Real makes has never made it out of Beta, and naturally, don't unload the stupid System Tray icon that leaks memory like a sieve, because "you could lose some key features and performance benefits."

    We blame Microsoft because their software sucks, and their practices suck ... but come to think of it, the only people to blame is Microsoft's competition, with their heads up their asses who can't put out decent software that works. Windows 95 didn't become the standard because it was great software, Win95 became the standard because OS/2 was marketed improperly, and IBM didn't work hard enough with OEMs. (that's gonna bring on flamage, so go ahead)

    Only now, with Linux and Open Source, can WE the users contribute to what we want, not what some guys proposed business model wants. I mean seriously ... I hate Microsoft as much as the next guy, having to put up with their software, but then again, I don't see many other "competitors" really trying ...

    ICQ pioneered instant messaging, but give me a break, the things been in beta for years and uses up more memory than most anything.

    My note to all burgeoning software companies - Make me something that doesn't suck,and I'll pay for it, don't force me to upgrade every 20 minutes to a more bloated piece of crap that is nothing more than a "portal" for all those neat advertising engines you've snuck in there....and I swear, if I hear someone say "monetize the desktop" .... heh...

    1. Re:Before everyone points at Microsoft ..... by Anonymous Coward · · Score: 0
      OS/2 was marketed improperly


      Any proof of this? Last I checked, OS/2 failed because of Microsoft's exclusive OS licensing provisions. IBM itself was forced to unbundle OS/2 from its PC's so as to have the same favourable licensing terms as its competitors. Back in 94/95 when OS/2 use was peaking, there was HUGE interest in it, but that interest was never met because PC manufacturers couldn't (or wouldn't) take the hit.

    2. Re:Before everyone points at Microsoft ..... by man_of_mr_e · · Score: 3, Interesting

      Last you checked, you weren't thinking about the real problem. The problem was not MS's OS licensing provisions. This was *BEFORE* all that. The problem was that IBM was a competitor to all the major OEM's, and none of them wanted to line their competitors pocket and be dependant upon them for their livelyhood.

      Microsoft was OEM agnostic, IBM was not. That's what doomed OS/2.

    3. Re:Before everyone points at Microsoft ..... by 0WaitState · · Score: 3, Interesting

      Its not a level playing field. Blaming Microsoft competitors for releasing crappy software on windows ignores the significantly higher development costs incurred by orgs that don't have access to the real APIs, don't have advance knowledge of OS changes, don't have the ability to specify OS or API tweaks that will benefit their designs. Oh, and Microsoft app developers have a relatively lower risk that Microsoft will change the OS deliberately to break their app ("DOS ain't done til Lotus won't run").

      Think about it--can you name a non-microsoft app using OLE that actually works well? They can't *all* be fragile pieces of shit due to implementation incompetence.

      --

      Remain calm! All is well!
    4. Re:Before everyone points at Microsoft ..... by reaper20 · · Score: 2

      I'm not saying that Microsoft is completely blameless, I'm just saying that it's not 100% Microsoft's fault.

      It just seems that all these software companies blame Microsoft because they can't keep up, and that might be true, but these guys aren't helping their own situations any.

      Maybe what - 60% MS monopolistic prices, 40% own vendor incompetence. Sure, 60% is high, and unfair, but there is never an excuse for incompetence either.

    5. Re:Before everyone points at Microsoft ..... by 0WaitState · · Score: 1

      Agreed. And there are some successful non-Microsoft apps on windows. They do tend to get borg'ed, however.

      Its just a harder road to take--you need a business concept that will support the higher implementation costs, while knowing that you must ship before Microsoft does or decides to make a vaporware announcement. Thus, so many corners are cut the typical project looks round.

      --

      Remain calm! All is well!
    6. Re:Before everyone points at Microsoft ..... by Bishop · · Score: 2

      Your OS/2 comment is bang on. Technically OS/2 beat win95 in every way (back in 92/93). But IBM charged money for the dev kits. MS gave their's away (atleast for the first little bit). IBM failed to get hardware vendors onboard. MS paid hardware vendors to write drivers for win95. IBM ingnored the home market. MS put the home market square in their marketing sights. IBM's OS division couldn't even convince IBM's pc division to ship OS/2.

      OS/2 2.0 had the jump on win94 (ninety four) by a good year. When win95 finally shipped OS/2 had had two years to catch the market but did nothing.

    7. Re:Before everyone points at Microsoft ..... by Michael+Woodhams · · Score: 2

      Well at least in my part of the world, if I'd had to figure out from the advertising what it was, I'd have thought it was a web browser. It was all "your tool to connect to the internet" stuff.

      --
      Quattuor res in hoc mundo sanctae sunt: libri, liberi, libertas et liberalitas.
    8. Re:Before everyone points at Microsoft ..... by Merry_B.Buck · · Score: 5, Insightful

      Make me something that doesn't suck,and I'll pay for it, don't force me to upgrade every 20 minutes to a more bloated piece of crap...

      Unfortunately, if I write software that doesn't suck, doesn't need patches, and does what you want, you'll buy one copy (Netware 3, WinZip, Eudora) and in 2 years I'll be bankrupt.

      If I write software with tons of broken features and requiring constant upgrades for 'compatibility' and security (SAP, QuickBooks, and Windows 95), I'm guaranteed plenty of repeat customers.

      Now if you'll excuse me, I need to go buy a $100 ink cartridge for my $30 printer.

    9. Re:Before everyone points at Microsoft ..... by BitwizeGHC · · Score: 2
      I think this is true. The problem isn't with Microsoft as an entity but rather with the Microsoft model of software production: ship it first, fix bugs later.


      Joel: Because it's almost never true. It's not like code rusts if it's not used. The idea that new code is better than old is patently absurd. Old code has been used. It has been tested. Lots of bugs have been found, and they've been fixed. There's nothing wrong with it.

      SMS: Well, why do programmers constantly go charging into management's offices claiming the existing code base is junk and has to be replaced?

      Joel: My theory is that this happens because it's harder to read code than to write it. A programmer will whine about a function that he thinks is messy. It's supposed to be a simple function to display a window or something, but for some reason it takes up two pages and has all these ugly little hairs and stuff on it and nobody knows why. OK. I'll tell you why. Those are bug fixes. One of them fixes that bug that Jill had when she tried to install the thing on a computer that didn't have Internet Explorer. Another one fixes a bug that occurs in low memory conditions. Another one fixes some bug that occurred when the file is on a floppy disk and the user yanks out the diskette in the middle. That LoadLibrary call is sure ugly but it makes the code work on old versions of Windows 95. When you throw that function away and start from scratch, you are throwing away all that knowledge. All those collected bug fixes. Years of programming work.


      Code may not rust when it isn't used but it sure grows barnacles. And sometimes you need to clean 'em off. Not just for performance but also for maintainability. For a function like this I'd consider at least copying and pasting all the nasty bits into separate functions or something, just to make it easier to maintain. Especially if checks like this occur over and over again elsewhere in the code.

      And... there are computers that don't have Internet Explorer?


      SMS: Hmmm. Let's take a look at your theory and compare it to some real world software meltdowns. For instance, what happened at Netscape?

      Joel: Way back in April 2000, I wrote on my web site that Netscape made the "single worst strategic mistake that any software company can make" by deciding to rewrite their code from scratch. Lou Montulli, one of the 5 programming superstars who did the original version of Navigator, E-mailed me to say, "I agree completely, it's one of the major reasons I resigned from Netscape." This one decision cost Netscape four years and they're not really done yet. That's three years they spent with their prize aircraft carrier in 200,000 pieces in dry-dock. They couldn't add new features, couldn't respond to the competitive threads from IE, and had to sit on their hands while Microsoft completely ate their lunch.


      Of course he fails to realize that while Netscape failed as a company, Mozilla is a great open source success. My observations seem to indicate that it's gaining momentum and attracting users, with a feature set that rivals and in some cases surpasses Internet Explorer. Better standards compatibility to boot, not that it matters.

      Netscape's business model had collapsed long before Mozilla was rewritten. Financially speaking, it's not that big of a deal now that Netscape's abandoned husk has been absorbed into the AOL behemoth. It was more of an "OK, we're flat on our backs anyway, why the hell not?" type of thing. Netscape 4.x was buggy and ran like a three-legged dog. Something had to be done.

      I think software projects fail because people spend a lot of time grafting features onto a code base that can't really support it, and then opt for re-engineering only when it's too late and they can't be saved. Microsoft can afford to do this quite simply because they own the substrate upon which most commercial software depends, so they will come out in the black anyway. Without that kind of monopoly, you'd better get it right early on. With that in mind, about ICQ being in perpetual beta... maybe they were simply being honest? :)

      I have rewritten portions of code on projects I've worked on when I felt that the special-casing, spaghetti code, etc. was getting out of control. I kinda had to strike out on my own, make like Sinatra and do it my way. Once I had it put together I submitted it as kind of a patch to my boss, who tested it and incorporated it into the next release. The result was far fewer calls along the line of "Jeff, the ActiveX control is missing" or "The form produces an error message" or whatever.

      A programmer with good design skills can do this quickly, keeping the good parts of the code and taking out the messy ones (or at least moving them into a more manageable position). He is right on one thing, a 100% rewrite is seldom if ever necessary. Even messy code has good bits that can be reused, or refactored into a library or something.

      The way I see it, other companies can't compete with Microsoft by playing Microsoft's game, since Microsoft sets the rules and owns the playing field.
      --
      N4st0r, trixx0r h0bb1tz0rz! Th3y st0l3 0ur pr3c10uzz!
    10. Re:Before everyone points at Microsoft ..... by SoftwareJanitor · · Score: 2

      Partly true... Other hardware vendors were very nervous to sell software from IBM. Can't blame them, especially back in those days IBM was nearly as nasty as Microsoft. However, once Windows started to become more important than MS-DOS, Microsoft did start to use their OS licensing provisions to keep OS/2 from ever being able to challenge Windows on preloads. By that time IBM was no longer such a threat in PC hardware sales, and other vendors may have been more willing to deal with them, but Microsoft's exclusive licensing and per-CPU licensing deals made it financially impossible for even IBM to offer preloads of OS/2 or anything other than Windows. Frankly, since most PC purchasers couldn't handle installing any OS, the inability to buy preloaded OS/2 boxes pretty much doomed it from the desktop.

    11. Re:Before everyone points at Microsoft ..... by AstralSeeker · · Score: 1

      Which real APIs?

      I mean, Win32 is well documented and I've yet to see a feature of a Microsoft app I don't know how to reproduce (it may take a long time to reproduce it but that's life). They may have some custon UI controls, but every company has. Basic windowing and kernel functions are the same for everyone.

      People who claim this are mostly bad programmers searching for excuses.

      Can you actually name a ms app where OLE works well? :)

      Don't believe me? Fire up SoftIce and trace through a ms app you'll see they use the same APIs has everybody.

      I used to be very anti-MS and pro WordPerfect/Netscape back then but....

      WordPerfect for windows sucked and didn't support TrueType fonts leading me to use Word instead.

      I hated IE3, IE4 was not too bad and netscape was SO bad I switched.

      The fact is they're now a quasi-monopoly (there's no other OS to buy but Linux/BSD offer you another choice, so it's not technically a monopoly, just don't buy your computer from Dell and you'll be able to buy it without an OS) but they were not always in that position. And you need some leader somewhere.

      Hardware manufacturers won't play nice with each other and develop mostly compatible hardware without somebody to force them to. (either MS or some other entity). Look a the vertex shader/pixel shader fiasco in GL. Through DirectX, Microsoft forces HW vendors to create hardware with mostly the same capacities, and you can use the feature on multiple cards without rewriting for each cards extensions. In GL everybody does it through extensions and we'll have to wait till next summer until the whole mess has cleared up and has been approved by the ARB. Without MS this could have taken an even longer time since there would have been no guarantee that cards from different vendors would have had similar capacities.

      MS is certainly not all good, but they're not all bad. Their licensing is pretty cheap compared to SGI and Sun.

    12. Re:Before everyone points at Microsoft ..... by scrytch · · Score: 2

      Blaming Microsoft competitors for releasing crappy software on windows ignores the significantly higher development costs incurred by orgs that don't have access to the real APIs, don't have advance knowledge of OS changes, don't have the ability to specify OS or API tweaks that will benefit their designs.

      Quantify this. Just give me an actual concrete example of "Real API's". Fuck's sake, I can still write DDE applications on Windows 2000. I have a litany of notepad replacements that are like 4 kilobytes, smaller than notepad, and more featureful. Show me IE under a syscall tracer where it makes an undocumented call, oh but you'd rather believe that Microsoft manages to hide the syscall interface somehow so it doesn't show up on tracers. Hey, I've got a unicorn in my living room, but it's *invisible*.

      Show me one *developer* from AOL/Netscape or IBM or Sun who couldn't get perfectly good and fast software written because of hidden API's.

      Think about it--can you name a non-microsoft app using OLE that actually works well?

      Pathetic. I'm trying, but straight OLE really isn't used that much any more, since most custom controls are OCX's, which are pretty much straight COM. Let's see, there's Netscape, which is actually pretty stable on windows. There's Winamp. There's StarOffice. There's Powerbuilder and Delphi. There's every app that embeds IE (e.g. pretty much every major windows p2p file sharing app), or does it only count if the component isn't also by MS? There's the OLE interfaces for OLE clients and servers in various languages, including php and python. Show me where these implementations are broken.

      Have you ever even programmed on Windows?

      --
      I've finally had it: until slashdot gets article moderation, I am not coming back.
    13. Re:Before everyone points at Microsoft ..... by Anonymous Coward · · Score: 0

      Typical lamer, taking about "real APIs" while he couldn't tell Xlib from GDI code if his life depended on it.

    14. Re:Before everyone points at Microsoft ..... by Anonymous Coward · · Score: 0

      You ignore the fact that OS/2 cost 3x times the price of DOS/Windows, required 4x the RAM of a base PC configuration, and was incompatible with a large number of cheaper chipsets.

      There's very good reasons that OS/2 wasn't preloaded that have nothing to do with MS evil licencing tactics.

    15. Re:Before everyone points at Microsoft ..... by Anonymous Coward · · Score: 0

      Mod this up to +10! It makes the entire discusson superfluous. It's the point of course: all these MS apologists telling us how there's no way to make money from free software might as well be saying, there's no way to make money from good software.

    16. Re:Before everyone points at Microsoft ..... by Anonymous Coward · · Score: 0

      Well, OS/2 2.0 actually shipped in 1990, I believe, so it had the drop on Microsoft by years. Your points are right on about hardware and developer support, though.

      By 1994, IBM was leaking to the trademags that it was giving up on OS/2 as general desktop OS. They fixed some of the major warts with Warp, but they never serious intended to compete with Win95.

    17. Re:Before everyone points at Microsoft ..... by SoftwareJanitor · · Score: 2

      If OS/2 wasn't preloadable, then why did Microsoft think they needed evil licensing tactics? DR-DOS/GEM was more comparable to MS-DOS/Windows in terms of hardware requirements and support. But it sure seems like Microsoft has always been afraid to compete in a fair open market.

    18. Re:Before everyone points at Microsoft ..... by electroniceric · · Score: 1

      I can recall a conversation with a MS Lawyer/bizdev friend of mine in which he justified to me why it was OK for MS to change the APIs on smaller companies.

      Thing is, I was told, Microsoft is the arbiter of all the conflicting API changes that driver and 3rd part software "subcontractors" want. So of course it's the subcontractors who have to change their code. Which just happens to suck for them when they have to do tons of last-minute code rewrites. And it just so happens that Microsoft has its own internal subcontractors changing APIs to suit them - no rewrites there. Anyone remember the "internal wall" that was supposed to exist between Windows and Office after one of the first consent decrees? Musta melted somewhere along the way...

      Finally let me add a little more anecdotal reports on the APIs being crappy:
      A couple other friends and acquaintances who have programmed there report that devs *HATE* using MFC cause they can't figure out what the hell is going on.

      Yeah, Microsoft made much better business decisions than lots of other companies, but it's clear that Joel at least didn't really have the much-yapped-about consumers' benefit on the same page as imposing feature creep for profitability when he worked there. Which is why we need regulation of industries - companies do not look out for consumers, they look out for THEMSELVES.

      BTW, IANASD, so this is good old-fashioned slashot-ranting for you all.

    19. Re:Before everyone points at Microsoft ..... by Tachys · · Score: 2

      I noticed this problem to with a lot of software I buy. It seems it would reach a state of perfection, then the company making it goes backrupt. Seems open source software can get around this problem

    20. Re:Before everyone points at Microsoft ..... by markmoss · · Score: 2

      Seems like a good argument for open source. When there's nothing much to improve, move on to something else, for crissakes!

      The problem with open source/free as-in-beer software is that, except for the few things that attract enough volunteer labor, it's difficult to make enough money to pay for programmers in the first place. (And even if you can attract volunteers, they may not understand or care about user interfaces, which is the biggest problem with getting Linux into desktops.)

      How about open source/non-free software licensing? I'm thinking something like:
      -Source must be included in any distribution.
      -You can copy it and modify it freely, but for each copy, modified or not, you must send $X to the originator.
      -The per copy license fee can never go up, but may be lowered at the option of the originator. If the originator goes out of business or otherwise stops distributing the program, it becomes public domain.
      -One license fee covers one functioning copy (running on one computer at a time) of any version forever. (You write a program, then move on to something else. Bug fixes and simple upgrades may be handled by the users that need them.)
      -There is also a fee set for someone to buy the right to make a major upgrade and sell it as a new program.

    21. Re:Before everyone points at Microsoft ..... by Reziac · · Score: 1
      No, if you "write software that doesn't suck, doesn't need patches, and does what you want", I'll buy lots of copies -- a new copy every time I need an app for a client, or for myself. I'll look at your software FIRST when I need a new app or an upgrade of apps I already own. In short, I won't look FIRST to some *other* company.

      --
      ~REZ~ #43301. Who'd fake being me anyway?
    22. Re:Before everyone points at Microsoft ..... by Bishop · · Score: 1

      hmm, I guess I was hopeing it was 92/93. 1990 makes me feel old. :-)

    23. Re:Before everyone points at Microsoft ..... by Anonymous Coward · · Score: 0

      "Of course he fails to realize that while Netscape failed as a company, Mozilla is a great open source success."


      But that's beside the point of Joel's article. He was discussing business decisions, not whether a nice open-source project can be salvaged from a business failure. And from a business standpoint, he's probably right.

    24. Re:Before everyone points at Microsoft ..... by Anonymous Coward · · Score: 1, Informative

      "Unfortunately, if I write software that doesn't suck, doesn't need patches, and does what you want, you'll buy one copy (Netware 3 [novell.com], WinZip [winzip.com], Eudora [emailman.com]) and in 2 years I'll be bankrupt."


      Sure... if you sit on your ass like a moron and just wait for the revenue stream to run out. On the other hand, if you wanted to keep the revenue coming, you might want to work on another project, and use the revenue and customer goodwill generated from the first success to leverage it. Wouldn't that make more sense from a business standpoint?
    25. Re:Before everyone points at Microsoft ..... by Anonymous Coward · · Score: 0

      So you're advocating Shareware+Source? Not a bad idea.

      I still prefer the 'Book License', myself.

      Think of software as a book. You can read it anywhere, take it anywhere, do anything to it, but you only get the one copy. If you transfer the software to someone else, you must erase copies from your harddrive.

      It's not really open source or Free (bleah), but it is fairly lenient and follows from common sense and respect for copyright.

    26. Re:Before everyone points at Microsoft ..... by rkent · · Score: 3

      Dude, I'm sorry, but in that case, they shouldn't still be in business. It's the same thing with prescription drugs. When their stuff is new, it's the hot shit, and even gets patent protection, but after a while they have to move on and release new products to survive as a corporation. Why should winzip stay in business selling the same product for 15 years in a row?

      Ford, for example, stays in business not because Escorts suck so bad that you have to get the newest one every year to be road-compliant, but rather because people depend on their products and WANT to come back for the new ones. (Okay, maybe Ford is a bad example, but you get the gist.)

    27. Re:Before everyone points at Microsoft ..... by Anonymous Coward · · Score: 0

      You hit the nail on the head with DR-DOS (and PC-DOS) -- that's what they were afraid of.

      Even today, it's somewhat difficult to get Windows 2000 preloaded (or now, XP Pro instead of Home).

      I worked at a financial company, and we were practically up to our eyeballs in OS/2 marketing crap. IBM just had no interest in selling the thing to consumers until much later as a Make Money Fast strategy. They were preloading OS/2 in the only place it mattered to them (on PS/2s).

      BTW, I have a Compaq P-133 'workstation' here, and OS/2 was definately a bundling option, along with SCO and of course Windows. (I don't think it was preloaded, but CPQ would ship it with the OS/2 box to the 'integrator' middleman that made a markup for doing software config.)

    28. Re:Before everyone points at Microsoft ..... by SoftwareJanitor · · Score: 2

      At certain periods, hardware vendors had to use middlemen in order to get around restrictions against preloading non-Microsoft OSes. Not only did the customer generally end up paying that middleman a bunch to do a preload for them, they also paid for Microsoft OS licenses for the boxes that they probably never used. Before that there was a period where vendors could preload what they wanted, but they still had to pay for MS-DOS licenses for every CPU they shipped, whether it was preloaded with MS-DOS or not. Microsoft agreed not to do "per processor" licensing as part of an earlier consent decree. But what they started doing instead (exclusionary contracts) was actually far nastier.

    29. Re:Before everyone points at Microsoft ..... by markmoss · · Score: 2

      The "book license" has it's good points. And it's what we'd have already if the courts would just wake up and realize that they decided against EULA's 80 years ago in the case of books, and software's no different. Certainly the book license is good for things like games, that are never going to be mission-critical. That is, if it's a big problem for you when your favorite game is no longer sold or updated to run on newer hardware, you really ought to get a life.

      But for software used by businesses, getting marooned without support from the vendor is a big, big problem, and it always happens unless you pick the right vendors, then spend a hell of a lot of time and money continually upgrading, porting your old data to new formats, and training people to work with "upgraded" software that quite often isn't worth the time it takes to learn it. You know all the vendors that have disappeared, but even when the vendor is still raking in the cash, they're apt to drop the product _you_ prefer to use. E.g., MS is setting schedules to drop support for each of it's old OS's, in order to force even those that think the newer software is a downgrade to buy it... MS's real ambition seems to be to sell at least two copies of Windows for every computer entering corporate service, and then to sell Windows over again for every computer lasting more than 18 months. Except they aren't "selling" Windows, or so they claim. With XP's product activation, when the cash flow gets a little low, they'll just close the service that hands out new XP activation codes, and as systems crash and have to be re-installed the latest OS will be purchased. (What will they call it? XXG(reedy)?)

      With shareware+open source, support exists for as long as enough people use it, regardless of what the original vendor thinks is best for their business. And note that I did specify that the license say that if the vendor/creator disappears, the program becomes freeware...

      One final note: as things become more web-connected, it becomes much more possible for shareware vendors to actually collect. Include a prominent warning that this program may "phone home" occasionally, and businesses using the software without paying will be sued. Offer guarantees that the information collected will be strictly limited. You can then choose to either embed the phone home code so deeply that normal people will pay rather than go through the hassles of removing it without damaging the functionality, or leaving it out and watching the pirates really go nuts trying to find it. 8-)

    30. Re:Before everyone points at Microsoft ..... by Anonymous Coward · · Score: 0

      Compaq used "integrators" or middlemen for the Big Reasons (inventory management and customer support), not to skirt MS. One reason Dell is eating their lunch now is that they haven't fully adapted.

      But, yeah, it's an EISA machine that uses MS-DOS as part of the hardware config. So I have no doubt that Microsoft got their nickle. The profit margin on the machine was high enough that I doubt anyone noticed.

  23. I disagree by Anonymous Coward · · Score: 0

    Firstly, that code is harder to read than write.
    Writing code takes heaps long than reading code, and how can you write code if you arent capable of reading code fluently.

    Secondly, if a program gets really old then rewritting the code can improve quality heaps... patches are just that patches.. the rewrite should include the patches.

    Thirdly, this guy used to work for microsoft, what would he know about writting quality code ?

    1. Re:I disagree by Anonymous Coward · · Score: 0

      Writing code takes heaps long than reading code, and how can you write code if you arent capable of reading code fluently. Yeah, right. If you have the slightest clue as to what you're doing, you can program nearly anything, and get it working with ease. However, there is one small bug. Someone else tries to fix it, but has a hell of a time following the convoluted logic that ties your spaghetti code together. They give up on fixing it, but also can easily design and code a similar program that lacks said bug. Design takes time, programming takes none. A proper design is easily maintainable, a bad one is not. Most designs are bad.

      Your pointless Microsoft jab at the end reveals, however, that you are clueless and tells me that time spent making my own post more cohesive and convincing is wasted.

  24. or (3).. by rho · · Score: 4, Insightful

    or (3), incessantly repeated nerdisms such as "if it was hard to write it should be hard to read" instill an improper sense into young, impressionable programmers.

    --
    Potato chips are a by-yourself food.
    1. Re:or (3).. by Anonymous Coward · · Score: 0
      ... and if it was that hard to code, it probably wasn't designed correctly in the first place.


      Coding a well thought out design is the easiest job in the world.

  25. He certanly is into lunch, isn't he? by jorbettis · · Score: 2, Interesting

    If he said "Microsoft ate their lunch" one more time, I was gong to puke my lunch all over my keyboard.

    Anyhow, I think he speaks horrible advice from a computer science standpoint. "It dosen't matter how bad, buggy, cludgy, and crufty a code base is, never ever rewrite it". If you don't understand what the code is, if it's impossible to read, don't worry! that's the sign of good code!

    It speaks alot of Microsoft's tactics, do whatever it is that takes the absolute least effort possible, and charge as much as you possibly can for it. All of those other companies failed because they were focused on quality, whilst they were focused on nothing the bottom line.

    Here's what I think is the worst software sin: writting shitty code and pretending it's not shitty. Regardless of how much gloss you put on it, bad code is rotten to the core, and it reflects that in stability and security. Why on earth do you think Microsoft falls flat on its face in those areas?

    I remember a story about JD Rockefeller. He was touring one of his oil works, and he saw someone soldering the oil cans shut. He asked him how much solder he uses on each can. The man told him, something like 48. Rockefeller said "from now on, use 36". That's exactly the type of cutting corners companies like Microsoft do. THat's not good for the customers, it's not good for society, and it's not good capatilism.

    --

    Jordan Bettis

    ``Wherever you go, there's another stupid sigfile quote.''
    1. Re:He certanly is into lunch, isn't he? by Anonymous Coward · · Score: 0

      Well, you see, there is this thing called money. Microsoft, and several other "companies" are good at "getting money"

    2. Re:He certanly is into lunch, isn't he? by Anonymous Coward · · Score: 0

      "soldering the oil cans shut?"

      Why would you do that? Isn't there a risk of explosion and death and flames the the burning. But how else would you do it.

    3. Re:He certanly is into lunch, isn't he? by Osty · · Score: 3, Insightful

      Anyhow, I think he speaks horrible advice from a computer science standpoint. "It dosen't matter how bad, buggy, cludgy, and crufty a code base is, never ever rewrite it". If you don't understand what the code is, if it's impossible to read, don't worry! that's the sign of good code!

      And this is the difference between academic code and commercial code. Ever looked at 90% of the research projects from graduate students? Most of them barely work, or only work on one specific set of hardware (and not anything else), or require a huge set of work-arounds to get the code up and running. The reason for this is because this is theoretical work. It doesn't matter how well it works (well, unless your thesis is on optimization, but that's different), only that it works well enough to demonstrate your research. Commercial software is the complete opposite. It has to work, and work well, on many different configurations of hardware, and many different versions of software (Windows 95 vs 98 vs 98se vs ME vs XP, Windows NT4 vs 2K vs XP, Mac OS 7.x vs 8.x vs 9.x vs OS X, and so on), or your potential customers aren't going to buy it.


      It speaks alot of Microsoft's tactics, do whatever it is that takes the absolute least effort possible, and charge as much as you possibly can for it. All of those other companies failed because they were focused on quality, whilst they were focused on nothing the bottom line.

      You didn't read the interview, did you? One of the main points in there was that by throwing away your old code and re-writing from scratch, you're throwing away years of experience and bug fixes. To use the example he gave of the nasty function that was supposed to do something simple but had a whole bunch of seemingly useless extra crap in it, the point was that all those extra little things that you'd throw away in a rewrite were necessary bug fixes. You throw them away, and unless you wrote those bugfixes in the first place (not likely, and even if you did, not likely you would remember), you lose all that information. That means that your new, "cleaner" version is very likely going to have similar bugs. Perhaps even the same bugs you fixed in your older, crufty code. Rewriting your code from the ground up is not focusing on "quality" (it may be focusing on "quality of code", which is a pretty useless standard so long as your code is proprietary), but instead focusing on "triviality". The bottom line is that in business (any business, not just the software development business), the bottom line is what's important. If you don't like that, stick to academia. You'll be happier there, and your potential peers in the commercial arena will be happier having you there.


      I remember a story about JD Rockefeller. He was touring one of his oil works, and he saw someone soldering the oil cans shut. He asked him how much solder he uses on each can. The man told him, something like 48. Rockefeller said "from now on, use 36". That's exactly the type of cutting corners companies like Microsoft do. THat's not good for the customers, it's not good for society, and it's not good capatilism.

      Irrelevant red herring, and a bad example to boot. You're equating a potentially dangerous situation (in your example, less solder means a less solid joint, which means the oil could leak) with a harmless situation (reusing your old code, crufty as it is). In one case you're making a conscious decision to be less safe, while in the other you're making a conscious decision to leverage the work that's already been done.


      As I said, I don't think you read the article. If it makes financial sense (you will sell enough copies to recoup your extra development cost and extended time to market), then there's nothing wrong with re-writing code (though Joel did suggest looking at the old codebase while writing the new, so that you won't miss any of those one-off bug fixes that are neccessary but are also the source of the cruft). The problem is that it rarely makes much sense. Especially when you're in a competitive market (as all the examples he gave were -- when you're competing against Microsoft, the worst possible thing you can do is be more concerned about code quality than making a featureful, useable product that's available quickly).

    4. Re:He certanly is into lunch, isn't he? by igs · · Score: 1

      Actually if you had taken _any_ economics classes you'd know that cutting costs is Exactly how capitalism works. A company's to maximize its profits by any means necessary. the key has always been a lot of very selfish interests working together to create Wealth and better Living Conditions. Anything else (government quality control and whatnot) is really leaning towards socialism. So call it what it is.

    5. Re:He certanly is into lunch, isn't he? by Spunk · · Score: 1

      Lunch: it's a Microsoft thing.

      I mean, I interviewed there once, and they bought me lunch. Sure was tasty.

      My name happens to be Joel, but surely that's a coincidence.

    6. Re:He certanly is into lunch, isn't he? by kelv · · Score: 2, Informative

      The Rockerfeller line is incorrect.

      He asked how many drops of solder they were using and why. He was given an answer around 48 (don't have the book Titan in forn of me right at the moment) but they could not give him a good reason for this number.

      Thus he required them to start at that number and decrease it untill the process was no longer satisfactory and then incrse by 1 from that point. This insured they used the least amount of solder that performed to the required level.

      That's simply smart and efficient use of resources.

    7. Re:He certanly is into lunch, isn't he? by Chris+Johnson · · Score: 4, Interesting
      No no- it IS good capitalism, BECAUSE straight uncut winner-take-all capitalism is not good for society.

      What you're seeing there _is_ capitalism- it just happens to be 'laissez-faire'. Under current conditions, those guys are the only ones who survive, because they 'eat the lunch' of everybody else and make sure there's no choice to resort to, by hook or by crook. In strict laissez-faire as it's practiced in the modern world, there is no concept of 'society' at all. It's 100% Union Carbide and there is no such place as Bhopal...

      Now, it's important to remember that there are OTHER types of capitalism, but to claim laissez-faire isn't capitalism seems a bit wrong. The trouble here is that you are aware of society and things like consequences to actions, perhaps you are aware of stuff like game theory that proves 'best doesn't always win' and you object to the rules of the game being virtually nonexistent, because you see what happens and you don't like it.

      However, to do something about it you'll have to encourage a different sort of capitalism than the laissez-faire one we live with, and until then it will be about 'eating lunch' and to hell with society, customers, or even basic fitness to the task.

      ...which explains why a lot of people like you are resorting to Linux or otherwise building and maintaining their own cyber 'tools'! One failure mode of this laissez-faire is that there will always be a certain number of people who find it easier to actually do the work themselves, than to struggle with crap every day. 'Eating their lunch' only matters to an accountant- if you're talking about a tool you need, and it's an IMPORTANT tool, then you may be forced to place a much higher value on its quality than a laissez-faire marketplace would ever support.

    8. Re:He certanly is into lunch, isn't he? by Velex · · Score: 2

      it's not good capatilism

      That's exactly what capatilism is all about. Cutting corners: how little effort can you put into making the largest profit? How many people can you anally rape in the wages department before no one will work you for? How shitty of an excuse for software can you throw together and still have it look pretty and work for a few hours? Who cares if 36 solder is insufficient to guarantee safety? It works doesn't it? That's where the bottom line is: the almighty buck. Don't kid yourself -- capatilism has always been all about this shit and always will be.

      --
      Join the Slashcott! Stay away entirely Feb 10 thru Feb 17! Close all tabs to prevent autorefresh!
    9. Re:He certanly is into lunch, isn't he? by tshak · · Score: 2

      Anyhow, I think he speaks horrible advice from a computer science standpoint.

      Personally, I'd take advice from a guy who's been through what he's been through.

      All of those other companies failed because they were focused on quality, whilst they were focused on nothing the bottom line... THat's not good for the customers, it's not good for
      society, and it's not good capatilism.


      First, you have to build what the consumer wants, not what is academically "correct". Read his comments about Word Perfect. From a strictly CS standpoint, they wrote GREAT software. All hand tuned Assembly. Well, consumers could care less about the 100ms faster load times - they wanted features that empowered them. You CAN NOT scale a consumer level code base without high level languages, nor can you compete with your competitors features.

      Second, you are making a gross assumption that Microsoft doesn't focus on quality - you may not like thier business tactics, but it is ignorant at best to ignore thier contributions to the software community (security and other issues aside). This "All MS Software Sucks" attitude is the true demise of competition. Until competitors recognize the achievments of MS, they will always be stuck in the rut of building software that goes "against" MS - which is essentially going against the market.

      --

      There is no longer anything that can be done with computers that is nontrivial and clearly legal. -- Paul Phillips
    10. Re:He certanly is into lunch, isn't he? by ksheff · · Score: 2

      he point was that all those extra little things that you'd throw away in a rewrite were necessary bug fixes. You throw them away, and unless you wrote those bugfixes in the first place (not likely, and even if you did, not likely you would remember), you lose all that information. That means that your new, "cleaner" version is very likely going to have similar bugs.

      Which is why those bug fixes should be documented in the code, so that if someone does decide to do a rewrite, they can make sure that those areas are addressed in the new code. According to Wall, laziness is a virtue for programmers. If a programmer is being his proper lazy self, will he really want to do a complete rewrite since it means lots of extra work? No. A rewrite should be done if it dramatically improves the operation of the program and/or its maintainability. The Mozilla re-write was done after months of work on the netscape 5.0 codebase and it was determined that it couldn't be carried forward any farther. It already was band-aid on top of band-aid from the 1.0 days. Of course, if they had the cash cow that MS does, they could have afforded to have two development teams working in parallel. Very few companies have that luxury.

      --
      the good ground has been paved over by suicidal maniacs
    11. Re:He certanly is into lunch, isn't he? by Abcd1234 · · Score: 2

      First, you have to build what the consumer wants, not what is academically "correct". Read his comments about Word Perfect. From a strictly CS standpoint, they wrote GREAT software. All hand tuned Assembly.

      I take great issue with this. Why on earth would you think that hand-tuned assembler is "technically excellent" from a "CS standpoint"? From a CS standpoint, technically excellent code is code that is well structured, well documented, easy to maintain, and easy to understand. I would argue that hand-tuned assembler is rarely any of these things. And I would also argue that customers would *much* rather have code that is academically correct... if all code was well written, well designed, and well documented, I'd imagine your average large software project would have significantly fewer bugs, and that's probably something your average customer would be pretty happy with.

    12. Re:He certanly is into lunch, isn't he? by Anonymous Coward · · Score: 0

      #2657681)"soldering the oil cans shut?"

      Why would you do that?

      Yes, that's the part of the story that he didn't tell you. Rockefeller was leaving the site chuckling to himself about saving 12 mystery-units of solder, when suddenly he went pale and choked. "WTF? Why are we using any at all?" So he went back to the site, and told the guys to screw the caps onto the oildrums using zero (*) solder.

      (*) The nice thing about zero, is that you don't have to mention the units.

    13. Re:He certanly is into lunch, isn't he? by judd · · Score: 2
      "It dosen't matter how bad, buggy, cludgy, and crufty a code base is, never ever rewrite it". If you don't understand what the code is, if it's impossible to read, don't worry! that's the sign of good code!" That's completely misunderstanding what Joel said. He's saying don't throw _working_code out: fix bugs, clean it up, incrementally improve it. (Which is XP practice too, come to think of it). He just says "don't rewrite from scratch".

      All he says about code being hard to read is that it may explain why people would prefer to throw working code out. The alternative is to comment and then slowly improve the old code: he argues that this often turns out to be faster. You did read the article, didn't you?

    14. Re:He certanly is into lunch, isn't he? by Anonymous Coward · · Score: 0

      "....do whatever it is that takes the absolute least effort possible, and charge as much as you possibly can for it. "
      1010101010101010101010101
      If I see this type of tripe again!!! That is business, that is econimics! Please buy a frigging econ 101 book and digest abit. A business will charge as much as the market will bear. When it charges more, profit erodes. When it charges less, profit potential is unrealized and the effort has been less efficient than it should have been which is expensive for the company. I'ts not a morality play (ie.Death of a Salesman)
      That's the only economic reality that we have, it's the only one you'll be seeing if you have a job with a 401k. Forget every company mission statement you've ever read: -The Busness Will Survive- is the only constant through all of them. Their mission is survival, not to foward an engineering idium that's not at the end of the profitabilty tunnel.
      For my 2cnts, the companies that understand this and impliment it will compete just fine.

      Linux does not compete at this level. It does do things much better than MS in that the sheer volume a advid developers have made it their mission to deliver fantastic code to this platform. The catch is that only people reading this will ever be excited enough about it to buy it. How many of us have reccommended to our parents that their next machine should be linux? None, you love your parent too much. Linux has to walk the tightrope of dumbing its ununified installion down enough to where we could recommend a linux platform solution to Grannie and Pa Pa. This reality does not wash with the Linux zeolots who would rather have the unreleased "Beatles" black album all to themselvs because it should only be a solution for audiophiles.
      Micrisoft has no trouble dumbing product down to ensure a massive userbase. Linux still wants to bogart the frigging black album to themsevles.
      Microsoft is ruthless as a Soviet Dictator, would crawl over their sister to bang their mother. But behind all the bile that spills over walls at Redmond, is monster company that understands what the prize is......THE prize is survival.

      Those companies on their way to join os2, gem, in the tech retirement homes of the past 7 years will have fresh companies to belly up to bar with and finger point back to Redmond.
      To one degree or another, they didn't bring the right playbook to Rose Bowl Game. The survival mode for these corporation don't kick in until late in fourth quarter. Now their SURVIVERS, when Redmond was playing for keeps the whole damn game.
      -I make a an App that pushes the envolope, runs solid, and is assible to upwards of 90% of the installed user base. Then charge what the market will bear when the App ships. (and pray your pricepoints are accurate.) Thats surviving. Other companyies will let you know if your not surviveing well enough, and you adjust.
      ******end of tyraid*******
      Extending the knowledge base for programmers like us is not , nor will ever be a corporate goal. It is only a consiquence, an after product.
      .....and Redmond continues winning the consiquence game. Many games have ended in the fourth quarter win not only a loss, but a shut out.

      It would be far more benificial for the engineers to take kelloge U. classes in BUS. Put us in the powerbase, let us understand the living and breathing results of our decisions. Let us try to survive, let us fight the battle, let us interpret the technology, let us deliver, let us survive.

      "Power to the engineers!"

    15. Re:He certanly is into lunch, isn't he? by Anonymous Coward · · Score: 0

      And they didn't hire you?

      I wonder just how many people have interviewed at MS and not been offered a job. And I further wonder how many of those poor bitter individuals are now confirmed MS haters and have done nothing but whine about MS on Slashdot ever since. It could explain some of the more rabid posters here. It could also explain the -1 Flamebait that this response is sure to get.

    16. Re:He certanly is into lunch, isn't he? by Li0n · · Score: 1

      "To use the example he gave of the nasty function that was supposed to do something simple but had a whole bunch of seemingly useless extra crap in it, the point was that all those extra little things that you'd throw away in a rewrite were necessary bug fixes. You throw them away, and unless you wrote those bugfixes in the first place (not likely, and even if you did, not likely you would remember), you lose all that information. That means that your new, "cleaner" version is very likely going to have similar bugs. Perhaps even the same bugs you fixed in your older, crufty code."



      I agree that rewriting literally from scratch is a pretty stupid activity most of the time, but doing a proper rewrite actually results in a better product. The thing is that doing so takes time. A lot of time. Is not the most cost effective path, but it is healthy and necesary.



      It's important to know when to do a rewrite of the code, because doing it at a wrong time can be disastrous for business as seen in some companies.



      Irrelevant red herring, and a bad example to boot. You're equating a potentially dangerous situation (in your example, less solder means a less solid joint, which means the oil could leak) with a harmless situation (reusing your old code, crufty as it is). In one case you're making a conscious decision to be less safe, while in the other you're making a conscious decision to leverage the work that's already been done.



      What's harmless and what is not is a gray area. I don't think shitty IIS code (and boy it must have plenty!), for example, is harmless.
      Releasing a product with crufty code leads to bugs, greater effort to maintain, and may even put you out of business. One example of that are game developer houses. Sure, the "release now, fix later" policy may work some of the time, but it is wrong.

      --

      ~
      ~
      :wq
    17. Re:He certanly is into lunch, isn't he? by stmfreak · · Score: 1

      Anyhow, I think he speaks horrible advice from a computer science standpoint. "It dosen't matter how bad, buggy, cludgy, and crufty a code base is, never ever rewrite it".

      That's not quite it. He's merely against people saying, "ugh, what a pile of crap! Let's start from scratch, shall we? Now, what did this thing do anyway?"

      At the new job, they have a legacy accounting system that has grown organically over the last few years. It sucks. It's a heap of Access, SQL and ASP. It has two heads! But I would far rather optimize, patch and improve it vs. rewriting it from scratch. You know why? Because it will take a month to patch or introduce some other feature and test it. But it would take a year to build something from scratch that had every single little undocumented feature that they've all grown to know and love.

      So you can rewrite it, just don't try it from scratch if you ever want to finish.

      --
      These opinions guaranteed or your money back.
    18. Re:He certanly is into lunch, isn't he? by Anonymous Coward · · Score: 0

      "That's exactly what capatilism is all about. Cutting corners"

      Yeah .. right. All these other system are enjoying robust economies where everything is safe and there is no injustice.
      You are so stupid it is not funny.

    19. Re:He certanly is into lunch, isn't he? by ttfkam · · Score: 2
      And this is the difference between academic code and commercial code. Ever looked at 90% of the research projects from graduate students? Most of them barely work, or only work on one specific set of hardware (and not anything else), or require a huge set of work-arounds to get the code up and running.


      And you assert that 90% of commercial code isn't crap as well? And what about those research projects like PostgreSQL or JBoss? PostgreSQL started in the university environment as a database testbed. OK, JBoss isn't strictly a research project, but they openly state that a lot of work was done by folks working on features that ended up being the focus of a doctoral thesis. Linus Torvalds pursued a master's degree with the focus on porting Linux to new platforms. WebDAV (and most open protocols for that matter) is primarily driven by educational entities.

      Mosaic was spawned from the cradle of UofI Champagne-Urbana. Or do people honestly believe that MA would have written it without the education or the advisors?

      This whole "companies always make better software than universities" camp needs to get a wakeup call.

      Irrelevant red herring, and a bad example to boot. You're equating a potentially dangerous situation (in your example, less solder means a less solid joint, which means the oil could leak) with a harmless situation (reusing your old code, crufty as it is). In one case you're making a conscious decision to be less safe, while in the other you're making a conscious decision to leverage the work that's already been done.


      I'll remember that the next time the US Navy has a blue screen of death.

      Electronics already permeate our lives. This technical saturation is only going to become more pronounced, not less. And that technology many times has software (sometimes in RAM, sometimes hard-coded in ROM).

      How much time and money has Nimda or Code Red or any of the other electronic nuisances cost us? And all because of a "feature" of a class of operating system that has no executable bit and thinks that remote, no-check, executable code is acceptable rather than a rewrite. Painful to rewrite? Yes. Possibly crippling to Microsoft? Probably. Would benefit a lot of people to fix the cart with the square wheels. Maybe.
      --

      - I don't need to go outside, my CRT tan'll do me just fine.
    20. Re:He certanly is into lunch, isn't he? by Osty · · Score: 1

      And you assert that 90% of commercial code isn't crap as well?

      Certainly not, but I do assert that it's a different kind of crap. Most commercial software has some form of formal testing that is geared at handling QA issues. Research code tends to be tested to the point of, "Does this work well enough for me to get my masters degree?", and that's it.


      Mosaic was spawned from the cradle of UofI Champagne-Urbana. Or do people honestly believe that MA would have written it without the education or the advisors?

      This I know, having matriculated there myself. However, did you ever use Mosaic? It was a huge pile of crap. Very awful software that would break for no apparent reason at all. Mr. Andreeson et al did not make it better until forming Netscape (at which point they re-wrote Mosaic, for practical reasons -- they didn't have the copyright to that code, and it would've needed it anyway. Look at IE versions 1.x and 2.x. They were pretty much a Microsoft-branded Mosaic.)


      This whole "companies always make better software than universities" camp needs to get a wakeup call.

      You're missing the point. The judgement of "better" is irrelevant, really, as "good" for each camp is completely different. University work tends to err on the side of "correct at all costs", which often means it only works on certain configurations of hardware (not too unexpectedly, considering few research projects go through the kind of testing that quality commercial software does). Commercial software tends more towards "Make it work, then make it pretty -- if we have time". Deadlines are real in the commercial sector (they are in academia, as well, but generally not when you're talking about thesis work -- the deadline is "when it's done". And you've seen how well "when it done" works in the real world -- Duke Nukem Forever is 5 years in the making with no end in sight ...).


      I'll remember that the next time the US Navy has a blue screen of death

      Windows NT (and Windows 2000, and Linux, and *BSD, and ...) was never intended for mission-critical applications. Enough said.


      How much time and money has Nimda or Code Red or any of the other electronic nuisances cost us? And all because of a "feature" of a class of operating system that has no executable bit and thinks that remote, no-check, executable code is acceptable rather than a rewrite. Painful to rewrite? Yes. Possibly crippling to Microsoft? Probably. Would benefit a lot of people to fix the cart with the square wheels. Maybe.

      Fixed already? Yes. You're falling into exactly the fallacy that Joel was arguing against in his interview -- that the only way to fix something is to rewrite it. Note that I believe he meant "rewrite" more in the sense of the overall project. A well-designed project can easily have many modules re-written over and over again and suffer no problems as long as interfaces are adhered to. You're talking about throwing the baby out with the bath water.

    21. Re:He certanly is into lunch, isn't he? by ttfkam · · Score: 2
      Look at IE versions 1.x and 2.x. They were pretty much a Microsoft-branded Mosaic.


      And what did Microsoft do? They rewrote it.

      A well-designed project can easily have many modules re-written over and over again and suffer no problems as long as interfaces are adhered to. You're talking about throwing the baby out with the bath water.


      Let me restate my intentions. I acknowledge that I wasn't very clear on this. My criticism was of the recurring issue of macro viruses and worms through certain email programs and web servers. I didn't mean to suggest that they dump the whole kit and kaboodle.

      I believe that COM and COM+ were good ideas. Sure they could be made better, and at each version, they are better. The ActiveScripting engine, when not exposing massive security holes, is a fine piece of interface and language interaction design.

      But no, they haven't been fixed already. Those specific exploits are stopped, but many of the underlying reasons why the holes are present are still there. Microsoft tends to treat the wounds and ignores the cause of the disease.

      But who am I to argue? I am neither a software tycoon nor a user of Microsoft software. I just have to work with people who are software tycoons and/or use Microsoft software.

      At least all of the people in the anti-virus software industry are kept busy and paid...
      --

      - I don't need to go outside, my CRT tan'll do me just fine.
    22. Re:He certanly is into lunch, isn't he? by sql*kitten · · Score: 1, Offtopic

      That's exactly what capatilism is all about. Cutting corners: how little effort can you put into making the largest profit? How many people can you anally rape in the wages department before no one will work you for? How shitty of an excuse for software can you throw together and still have it look pretty and work for a few hours? Who cares if 36 solder is insufficient to guarantee safety? It works doesn't it? That's where the bottom line is: the almighty buck. Don't kid yourself -- capatilism has always been all about this shit and always will be.


      That's why the good people of the Soviet Empire enjoyed high standards of living, reliable high tech products and a great track record of industrial safety then?

      Capitalism is about giving the market what it wants - nothing more, and nothing less. If free people, making their own purchasing decisions with their own money want something, the Capitalist system will find a way to sell it to them. If they choose not to buy it, either because it's not a good product, or they don't like the corporation making it, then Capitalism will make sure that this corporation soon ceases to exist.

      That's what terrifies Socialists, the concept that the People and not the Party really are in control of the means of production in a Capitalist society.

      And if you don't like it, try living in a non-capitalist society for a while... like Afghanistan.

    23. Re:He certanly is into lunch, isn't he? by Spunk · · Score: 1

      They did make an offer, but I wasn't interested.

      The particular job I'd be doing just looked too dull, so I went elsewhere. No grudges here.

    24. Re:He certanly is into lunch, isn't he? by Velex · · Score: 1, Offtopic

      And if you don't like it, try living in a non-capitalist society for a while...

      I did. There's one called Germany that I rather liked. You know, where they have sane laws instead of Anything-Goes Matrial Arts Mammon Worship

      --
      Join the Slashcott! Stay away entirely Feb 10 thru Feb 17! Close all tabs to prevent autorefresh!
    25. Re:He certanly is into lunch, isn't he? by SuiteSisterMary · · Score: 2
      I'll remember that the next time the US Navy has a blue screen of death [essential.org].
      And what does it tell you that you need to trot out a three year old example of a user interface design error to make your point?
      --
      Vintage computer games and RPG books available. Email me if you're interested.
    26. Re:He certanly is into lunch, isn't he? by Anonymous Coward · · Score: 0

      Sorry if it looked like I was trying to imply that you were bitter, that wasn't the intention.

    27. Re:He certanly is into lunch, isn't he? by mpe · · Score: 2

      What you're seeing there _is_ capitalism- it just happens to be 'laissez-faire'.

      Except that it isn't exactly. Microsoft relys on enforcement of copyright and their questionable exclusive contracts with OEMs.
      If things were really "hands off" they couldn't rely on either of these at all...

    28. Re:He certanly is into lunch, isn't he? by mpe · · Score: 2

      One of the main points in there was that by throwing away your old code and re-writing from scratch, you're throwing away years of experience and bug fixes. To use the example he gave of the nasty function that was supposed to do something simple but had a whole bunch of seemingly useless extra crap in it, the point was that all those extra little things that you'd throw away in a rewrite were necessary bug fixes.

      Some of them may be necessary bug fixes, some may be obsolete bug fixes, some may be something someone though would fix a bug which dosn't, etc, etc.
      The difficult bit is deciding which is which, with people tending to take the conservative position.

    29. Re:He certanly is into lunch, isn't he? by BlueFrog · · Score: 1
      Some of them may be necessary bug fixes, some may be obsolete bug fixes, some may be something someone though would fix a bug which dosn't, etc, etc. The difficult bit is deciding which is which, with people tending to take the conservative position.
      That's not the point. The point is that unless there's a bug, you shouldn't be looking at that code in the first place. Go find something productive to do. Sure, that code might be ugly, it might be klugey, it might be 1200 lines long and have things in it that really ought to be abstracted out. But that's not a good enough reason to go digging through it again.

      The real deciding criterium is economic: Any change you make costs the company money. In order to be worthwhile, it should save or earn that money back, and do so before that change is yanked out again by the next guy.

    30. Re:He certanly is into lunch, isn't he? by Spunk · · Score: 1

      No prob, you didn't.

      But you did seem curious as to whether I was.

    31. Re:He certanly is into lunch, isn't he? by Random+Man · · Score: 1

      This comment is too late to be seen, BUT --

      What makes you think soldering is different from writing code? I'll tell you what happened - they went down to 36 drops without problems, saved a lot of solder, AND THEN --

      The next time there was a sharp shock to the storage facility 80% of the 36-drop solder jobs failed under stress and spilled their oil.

      A lesson that had been learned years ago, resulting in the tradition of 48 drops, but unfortunately their's no way to put a comment tot hat effect in a hand-me-down engineering procedure.

      Rockefeller's "rewrite the procedure" policy fell afoul of the superior maxim, "if it ain't broke don't fix it," the all-purpose engineering comment.

      This fairy tale brought to you by Random Man.

  26. Re:problem = clueless management/directors/execs e by Anonymous Coward · · Score: 0
    I do feel that managers should take some sort of hands-on classes to learn some basic programming and internet skills so they have SOME SORT OF CLUE about what WE all do for a living

    Yeah, and you should take some sort of hands-on classes to learn some basic business management and finance skills so you have SOME SORT OF CLUE about HOW the rest of the world works.

  27. what a load of crap by gmack · · Score: 2, Insightful

    Old code does indeed age.. what happens when you tweak a program to do something you hadn't thought of when you designed it?

    What happens when you cludge it a coupple more times?

    Eventually you need to go back and redesign the section you are working on from the ground up with all of your goals in mind.

    This is not throwing out the old knowlege it's learning from it and there are plenty of examples where it's worked out for the best.

    What was spelled out in the interview was a recipy for a buggy mess.

    1. Re:what a load of crap by chromatic · · Score: 1

      Fine. You do have regression tests for all the bugs you've fixed and all of the features you've added, along with notes on why you've added things? If so, it's called refactoring. Otherwise, it's a recipe for a different kind of buggy mess.

    2. Re:what a load of crap by cheese_wallet · · Score: 1

      It seems clear to me that about half of you guys didn't understand the points Joel was making.

      He didn't say "don't fix it." He was saying that you shouldn't buy a new car because you got a flat tire on your current car. Unless it is a ford explorer.

      If you feel you have to redesign from the ground up "with all of your goals in mind" then you don't know how to design software.

      If you are designing a project, you should be blocking it out, writing a specification outlining every single piece of functionality and every single requirement (derived by you, or given to you by the customer) before you write the first line of code.

      Of course crap always sneaks up on you, and you probably won't think of everything--so you'll add a little functionality later on that maybe wasn't in your spec. But if there are so many of these add-ons that you feel you have to re-design, then you should be re-trained or fired.

    3. Re:what a load of crap by gmack · · Score: 1

      You don't work as a programmer do you?

      You make a number of unfounded assumptions.

      1. That the coder maintaining is the coder who wrote it in the first place.

      2. That the customer/management knows what they want at the start.

    4. Re:what a load of crap by cheese_wallet · · Score: 1

      1)Since when does maintain mean re-write?

      2)Well, gee, they are the customer. If they don't know what they want, then why are you giving them anything at all?

      If you are creating something new, you would hopefully know what it is you wanted to create.

      And yes, I am a programmer. A damn good one at that.

    5. Re:what a load of crap by gmack · · Score: 1

      Meanwhile I have a coder to my right who is _pissed_ because his predecessor didn't even bother to meat the stated design goals.

      I also have a boss who can't make up his mind what features he wants and customers who are even worse.

    6. Re:what a load of crap by cheese_wallet · · Score: 1

      Yeah, I've had to deal with changing requirements. It sucks.

      But that is why you have deadlines, and enforce the deadlines. That is why you enter into contracts.

      You should have a contract with the customer, and in that contract are the requirements and specifications that the customer gave you, or that you create and the customer approved.

      After that, the requirements are fixed and the design is done. If the customer wants something else, it requires a new contract and usually more money.

      It is a long and arduous process to get to the stage where the requirements are fixed, and a contract is entered into. My last design took about 6 months to lock down the requirements. It took about 3 weeks to code.

      After you have the contract, and the requirements are fixed, is when you begin coding. And not a moment before. But don't get me wrong, I am not saying don't do research or trade studies (which might involve coding), but those are separate projects and should be treated as such (with their own requirements and specs).

      The design process and methodology is really for the project leader/techinical director to enforce. If you have a crappy boss, don't sit there and bitch about it. Come up with a design process, and pitch it to him/her. Take an active role in your company.

      I think most of the people around slashdot who bitch about idiot bosses, are really the idiots themselves. If your program is broken, don't bitch about it--fix it. If your company is broken, don't bitch about it--fix it. If it isn't fixable, then don't work there--the company probably won't be around long anyway.

      It really is that simple.

    7. Re:what a load of crap by gmack · · Score: 1

      What generally happens here is that we sell one thing to one customer who changes his mind a coupple of times... and my boss will sell somone else something fromt he same codebase who will want new features.

      And no if it were up to me I would have been gone long ago but no one has even given me an interview lately.

  28. Code rewrite by Dominic_Mazzoni · · Score: 3, Informative
    A lot of the article is about whether or not you should ever rewrite code.

    SMS: Joel, what, in your opinion, is the single greatest development sin a software company can commit?

    Joel: Deciding to completely rewrite your product from scratch, on the theory that all your code is messy and bug prone and is bloated and needs to be completely rethought and rebuild from ground zero.

    SMS: Uh, what's wrong with that?

    Joel: Because it's almost never true. It's not like code rusts if it's not used. The idea that new code is better than old is patently absurd. Old code has been used. It has been tested. Lots of bugs have been found, and they've been fixed. There's nothing wrong with it.

    Joel blasts rewriting code some more, but doesn't really get into alternatives. Instead he talks about forcing programmers to get with the program, and if they don't, fire them.

    Isn't there sometimes a happy medium between completely rewriting the whole codebase and continuing to hack it up? For example, maybe you can identify certain modules that can be isolated and rewritten, then tested rigorously against the old code to make sure they're functionally identical. Or you could separate the old code into a library that just does the computational part of a program, and then write a new GUI around it from scratch.

    He takes Netscape as an example, saying the worst mistake they made was to rewrite it from scratch.

    I admit that it would have been nice if they released the source code to Netscape 4.x, and not just Mozilla. Even if the code was the most gawd-awful thing in the world, in the years since Mozilla started don't you think we (the open-source community) could have at least fixed some of the more annoying bugs in Netscape?

    1. Re:Code rewrite by jmay · · Score: 1

      Yes, there is often a happy medium between completely rewriting the whole codebase and continuing to hack it up. There have always been disciplined ways to steadily improve existing code over time.

      The latest buzzword for this is Refactoring. There are some excellent published materials on this topic. We've finally reached a stage where verbal discussion of good software engineering techniques have reached a point where we can write intelligently about the topic using common terminology. See refactoring.com and The First Wiki for some good online starting-points.

    2. Re:Code rewrite by Anonymous Coward · · Score: 0

      The code for the killed successor to Netscape 4.x (aka "NS 5.0") *is* available in the MozClassic tree at http://lxr.mozilla.org/. Could the community have "fixed some of the more annoying bugs" and pushed it out last year? Maybe. But that would just be postponing the day of reckoning; I honestly don't think that codebase could be adopted into a standards-compliant HTML+XML+CSS+DOM browser. (Of course, Joel's technique of letting cruft and hacks pile up unchanged over the years is just great if you want behavior to be defined by bugs and hacks, which seems to be the consensus among web designers--no one is really interested in standards if it means work for them fixing pages.)

      Anyway, his account of Netscape's humiliation isn't quite the way I heard it; NS really went wrong when they bet the farm on Java. A (closed-source) rewrite of the browser in Java was originally supposed to replace 4.x, and was, AFAIK, developed concurrently with it. That bombed, although they finished the mail client (Grendel at lxr.mozilla.org). By then they were losing ground pretty fast, so they went open-source and decided *not* to rewrite...oops. That was ditched about a year or so into Mozilla, and then they went with the current rewrite. (Of course, IE is doomed too, by his reasoning, since they rewrote their rendering engine for IE 5.0. Go figure.)

    3. Re:Code rewrite by mav[LAG] · · Score: 3, Insightful

      Isn't there sometimes a happy medium between completely rewriting the whole codebase and continuing to hack it up?

      This happy medium is described well by Bruce Eckel in Thinking in C++. He says in the chapter on design (paraphrased): "don't worry that getting some aspects of a design wrong will mean you have to rewrite everything. You won't - properly-written classes shield you from your mistakes." This is from the section that talks about the problems that occur early on in implementation, but applies equally to rewrites.

      For example, maybe you can identify certain modules that can be isolated and rewritten, then tested rigorously against the old code to make sure they're functionally identical.

      This is called refactoring and is now a widely-accepted industry standard practice for improving a codebase without rewriting it from scratch. The official web site is here.

      --
      --- Hot Shot City is particularly good.
    4. Re:Code rewrite by smileyy · · Score: 2
      I admit that it would have been nice if they released the source code to Netscape 4.x, and not just Mozilla. Even if the code was the most gawd-awful thing in the world, in the years since Mozilla started don't you think we (the open-source community) could have at least fixed some of the more annoying bugs in Netscape?

      This is a nice little pipe dream. Unfortunately, what Netscape would have released would not have compiled. There were proprietary parts to NS4 to which Netscape did not own the rights to. They could not have open sourced those portions. No one's going to work on an open source project whose source won't even compile.

      --
      pooptruck
    5. Re:Code rewrite by Almace · · Score: 1

      I believe he is syaing that it is stupid to rewrite all the code from scratch. Look at the quotes you pulled from the article! This is certainlly how I read it.

      --
      Remember,democracy never lasts long.It soon wastes, exhausts and murders itself. John Adams (1814)
    6. Re:Code rewrite by kanad · · Score: 1

      There are some software which is not directly visible to the common joe , like the one inside your cellphone or your car etc. I work for such s/w and have seen complete redesign and rewrite of code and even participated in such activities.
      I have seen how 5-7 years old code which are well written but still has to be rewritten because the work its supposed to do has changed. eg. a oracle db driver based on 1990 version while the product uses oracle 8i. Of course that driver couldnt unleash the features that 8i provides.
      Many times I have seen that hacking has gone extreme making the code unmaintenable specially when the original coders are no longer anymore.
      Also in these softwares efficiency is paramount , bloat is not.
      The companies I worked in are hugely succesfull in their respective domains and have they shut down complete working product line only to begin a new one.
      If only your life or some vital infrastructure depended on M$ s/w , they wouldnt have dared to write crap.

      ps: After almost 2 years of reading slashdot this
      is my first post.

    7. Re:Code rewrite by Cro+Magnon · · Score: 1

      99% of the time, I worked with the existing code. But there was one program that was so GD awful, everyone was afraid to touch it. So, during a slow period, I tried rewriting it from the specs. When I unit-tested it, it didn't work right (the specs sucked), but since the working version was still running in production, I had time to research and track down the problems. When I got it past my tests, I consulted with the lead programmer on that project, and we ran additional tests. When we were satisfied, we went to the boss, and after he warned the users (it was in-house so we could talk directly to the end-users) to check the reports extra-close, we released it. If there had been any problems, we were in a position to re-run with the old software. Rewrites are risky, but can be done if you're careful.

      --
      Slow down, cowboy! It has been 4 hours since you last posted. You must wait another few hours.
    8. Re:Code rewrite by JamieF · · Score: 1

      I read Joel's original article on this subject("Things You Should Never Do, Part I") a few months ago. Despite the rampant /. kiddie practice of posting a strong opinion without reading the article being referenced, I encourage you to read it now:

      Things You Should Never Do, Part I

      OK, so you didn't read it, I'll quote a juicy part: "You are putting yourself in an extremely dangerous position where you will be shipping an old version of the code for several years, completely unable to make any strategic changes or react to new features that the market demands, because you don't have shippable code. You might as well just close for business for the duration."

      The point is that if you have all the time and money in the world, of course you should rewrite from scratch when things get yucky. The problem is that in the real world, companies need new releases to keep selling upgrades, so you need to keep steadily improving the product. Similarly, customers adopt the product, use it a bit, and then learn what they want next - they want to invest in the product more. Meanwhile, the purist coders at the vendor are busy taking three years to make the architecture pretty, which will pay off big-time in year 4 and 5 when they'll be able to add new features at a breathtaking pace. Customers get pissed and go find someone who will sell them a product which is about as buggy as the one the first company made, but which now has a few key features.

      Coders don't necessarily understand the sales angle of this, because they're trying to avoid inefficiencies in development, such as wasting time hacking on a crufty code base to try and add a feature. They'd rather invest early and reap rewards later. The problem is, most software companies don't have the luxury of investing heavily from a payroll standpoint, not even considering the customer attrition problem.

      As a perfectionist myself, I really hate the fact that this is true, but it is. Business realities suck sometimes. There's a sci-fi business parable about this...

      Two space empires are at war. One side is starting to lose, but one day their leader announces that they will soon be victorious! Their scientists are working on a doomsday device which will wipe out the enemy. Time passes and the war is going badly, but no one is worried about the heavy casualties because they know they will win any day now. Planet after planet is captured, ship after ship destroyed. Finally, one day the lead scientist who is working on the homeworld screams "Eureka!" because he knows that the device finally works. He races to the office of the imperial leader and bursts in, full of excitement, only to see enemy soldiers standing over him with guns drawn as he signs his name to articles of surrender, because they've lost.

      Unfortunately for the scientist and his empire, they didn't think to refactor, or design APIs between modules... :) If they had they'd be able to clean things up module by module, because they designed robust APIs early and then wrote quick and dirty implementations that could be fixed later when there was both time and need.

      eXtreme Programming has some interesting things to say about this too. Basically, don't implement anything that isn't in the requirements now (that is, don't overgeneralize to a fancy-pants API and module system if you're only gonna write one module on top of that API), also known as DoTheSimplestThingThatCouldPossiblyWork, and RefactorMercilessly to clean up code continuously as you maintain it.

      Finally, remember that testing makes maintenance immeasurably easier. The reason that maintenance sucks so bad is usually that some cowboy coder thought that documentation is what you do when the code is finished, which of course (a) is wrong and (b) never actually happens. If docs are demanded up front, including test cases, coding is much easier as is maintenance, and you don't have to bite your fingernails wondering if your tiny bug fix un-fixed 100 other "fixed" bugs. If you have tests, you can RefactorMercilessly and rip out the most egregiously gross code, and get it all back together and working, without it blowing up in your face. So make sure somebody writes a basic spec, then write test cases and code that performs them so you can code with impunity and so you can go on vacation :)

  29. Perhaps you should read the article by Skim123 · · Score: 5, Insightful
    Before you jump to false conclusions. A lot of companies that Microsoft "drove out of business" were driven out of business because they made stupid mistakes. Yes, MS's money and marketing helped, but some of the stupid things these companies do is their own damned fault.

    You may want to check out this article by Robert Cringely: Microsoft's C# Language Might Be the Death of Java, but Sun's the One to Blame.

    A lot of truth in that...

    --

    I could not justify my existence if I were a turkey farmer. Would I terminate myself? Undoubtably, yes.

    1. Re:Perhaps you should read the article by smileyy · · Score: 1, Flamebait

      Cringely is a moron. And Java isn't buggy.

      And as far as speed goes, just like use is better than reuse, done is better than fast.

      --
      pooptruck
    2. Re:Perhaps you should read the article by cheese_wallet · · Score: 1

      "but some of the stupid things these companies do is their own damned fault." [emphasis mine]

      All of the stupid things these companies do is their own fault.

    3. Re:Perhaps you should read the article by Skim123 · · Score: 1, Redundant
      I had the opportunity to talk to a woman at Microsoft who use to work for Sun. She was big believe on Java when it was knew, thinking of the possiblities, but resigned after Sun took Java and killed it.

      Regardless of what Cringely says, you should read the interview before jumping to conclusions. Do you agree with me that a number of companies that "lost" to Microsoft lost because they made bad business decisions? If the answer is, "No," read the interview, think about things for a while, then get back to me.

      --

      I could not justify my existence if I were a turkey farmer. Would I terminate myself? Undoubtably, yes.

    4. Re:Perhaps you should read the article by SoftwareJanitor · · Score: 5, Insightful

      The interesting thing is that Microsoft made plenty of stupid mistakes too, but since they were powered by monopoly profits in OSes (and earlier on by licences for BASIC in ROMs), they could afford to wait out their mistakes and just keep throwing money at the problems until they straightened them out. As long as a company is successful in the long run, people forget most if not all of their stupid mistakes, but if the stupid mistakes take down the company then people remember it. The history books are written by the victorious (in the short term at least), so I would take a lot of this guy's story with a grain of salt, as it is certainly far from unbiased.

      It is a pretty bad situation for a market to be in if any one company is so big that all they have to do is wait for their competitors to make a mistake in order to be able to crush them. When any one company wields so much power, it makes it nearly impossible to sustain any sort of competition. Not to mention that when a market is ruled by an 800lb gorilla, all of the smaller players are pretty much forced to take more risks and make other decisions differently than companies do in a market where there are at least two or three players splitting up significant chunks of market share. Sometimes those risks pay off brilliantly, sometimes they are stupid mistakes.

    5. Re:Perhaps you should read the article by SoftwareJanitor · · Score: 2

      Do you agree with me that a number of companies that "lost" to Microsoft lost because they made bad business decisions?

      I believe that is too simplistic. Sure, a lot of companies that lost to Microsoft made bad decisions, business and technically. However, that doesn't mean that Microsoft also didn't use dirty tricks and just general deeper pockets and marketing muscle to help kill them too. One of the problems with companies with the kind of monopoly power that Microsoft wields is that it allows them to capitalize on any mistake a competitor makes while their own mistakes make little difference. And Microsoft has a history of cheating and using unethical if not outright illegal tactics even when they don't need to.

    6. Re:Perhaps you should read the article by ArtDent · · Score: 3, Interesting

      What a horrid column. Cringely just gets worse and worse. For example:

      When Java came to market five years ago, it was bulky, slow, and buggy. Today, five years later, Java is still bulky slow, and buggy.

      Java is buggy? A language is buggy? What's that supposed to mean? Perhaps he means that Sun's Java compiler is buggy or their JRE is buggy, but neither is true. As software goes, both are extremely un-buggy. Unless he actually has some evidence to the contrary. No, I'm just kidding; I realize evidence would be completely out of place in that column.

      In other words, McNealy isn't willing to bet the company on either Sun ONE or Java, while Gates and Ballmer are happy to bet their company (have ALREADY bet their company) on .NET and Java.

      I'm sorry, Gates and Ballmer have bet their company on Java? I guess since he doesn't actually research his writing, why should he check it over afterwards?

      Seriously, I've read more insightful comments browsing slashdot at -1.

    7. Re:Perhaps you should read the article by reflective+recursion · · Score: 3, Interesting

      I believe the key to Microsoft's success is knowing when to let go of a bad idea. Such as MS Bob, MS Chat and various others. It is when you still believe in a product which doesn't make money that you fail. It doesn't have to be superior or even new. It just has to have piss poor marketing and no good entrance to the market to lose.

      Going on a rant here: this is why I believe Eazel failed. They held on to their file management program, but failed to realize it would not make them money when they needed it most. This is what I believe happened with Netscape also. They could not figure out a way to utilize Navigator for profit, but kept developing it. It would have probably been a good idea to release the source code then, while MS would only have been comfortable going as far as no-charge with IE (thus, giving Netscape the upper-hand). I also believe IE was a failure with Microsoft as well, though people don't realize it. Now that IE is free MS makes no money on it, and does not, IMO, know how either. The result of this action is that Microsoft is stuck developing the worlds most popular web browser for free with no way to recoup development costs. A total loss to Netscape? I don't think so..

      --
      Dijkstra Considered Dead
    8. Re:Perhaps you should read the article by MisterBlister · · Score: 0

      It annoys me when anti-Microsoft people point to "monopolistic practices" as the only key to Microsoft's success. Obviously, since MS didn't START with a Monopoly position (unlike the phone companies, power companies, etc, which were government setup monopolies) they did SOMETHING right when they first started in order to get that monopoly position. I'm not saying they did the technical things right, it was likely a lot more to do with shrewd marketing, good relationships with 3rd party developers (until they decided to compete with them) etc, but you can't point to the monopoly as Microsoft's only reason for success!

    9. Re:Perhaps you should read the article by scrytch · · Score: 3, Insightful

      Now that IE is free MS makes no money on it, and does not, IMO, know how either. The result of this action is that Microsoft is stuck developing the worlds most popular web browser for free with no way to recoup development costs. A total loss to Netscape? I don't think so..

      IE is no more a loss leader than any other piece of windows is. Doesn't matter what they tell the judge, it's a piece of windows. It's probably saved them a lot of money in the long run as well by not having to implement and integrate various viewers into other programs. Winhelp is gone, the help system now is 99.9% IE.

      Even if it is a loss leader, it still sells Windows. This can scarcely be considered a failure. Bob and Comic Chat were a failures ... quit while you're ahead.

      --
      I've finally had it: until slashdot gets article moderation, I am not coming back.
    10. Re:Perhaps you should read the article by Enrico+Pulatzo · · Score: 1

      As for Microsoft being "stuck" developing its web browser, you don't seem to see how they've made it profitable. By bundling it with the OS and making its OS depend on its internet browser, it can write off the cost of R & D of IE.

    11. Re:Perhaps you should read the article by SoftwareJanitor · · Score: 3, Informative

      I agree with you up to a point with IE. Microsoft certainly isn't making any money on it, and doesn't look like they have any idea how. But the difference is that a company with a monopoly to fall back on can afford to keep around loss leaders whereas a startup can't. In the case of IE, I believe that Microsoft can, and is, trying to use it to leverage into other markets by trying to build proprietary lock ins to their .NET server products and lock everyone else out of those markets.

    12. Re:Perhaps you should read the article by SoftwareJanitor · · Score: 5, Insightful

      Microsoft has had a monopoly position for a long time. Most people don't remember when there wasn't a such thing as an IBM PC or MS-DOS. Microsoft got into a monopoly position with MS-DOS pretty quickly after its release in 1981. Within a couple of years it had killed off CP/M and the 8 bit 65xx OSes. So certainly since at least 1984 or so Microsoft has basically had a monopoly position in OSes.

      But wait... that wasn't Microsoft's first monopoly position. Even before MS-DOS they basically had a lock-hold on BASIC interpreters, which were one of the most critical parts of the pre-IBM PC desktop. Apple's BASIC, Commodore's, and Radio Shack's were all licensed from Microsoft. Most CP/M machines also bundled Microsoft BASIC. In fact a strong case could be made that the MS-DOS monopoly which grew into the Windows monopoly was itself leveraged from the BASIC monopoly.

      There is a difference between pointing to monopoly power as the primary reason for Microsoft's success than the only reason. Saying that Microsoft's monopoly power had nothing to do with the failures of other companies is as wrong as saying that those other companies made no mistakes.

      As for Microsoft's marketing, I am not so sure I would call it 'shrewd' as pervasive and persistant. They've outspent just about everyone else for years, with the possible exception of IBM, but that is easy when you have monopoly profits to fall back on. It would be hard for a startup to outspend Microsoft on advertising, even in a niche.

    13. Re:Perhaps you should read the article by smileyy · · Score: 2, Interesting

      Just so I don't come off as a total moron, I did read the article and agree with it a great deal, especially the parts about rewriting code from scratch.

      Besides, if you are going to rewrite a bunch of code, you just do it, and don't tell your manager. And then you make sure your unit tests pass afterwards. It's called refactoring...

      I'm probably a bit biased towards Mozilla, and yes, it is a commercial failure, but I have a feeling it won't be known whether its successful software until about 5 years from now. It could be the Apache of web browsers, or it could be just the product that caused the end of Netscape as an independent entity.

      And finally, it's probably also true that C# will turn out to be a better language (purely technically) than Java, and will rival it as a platform, but I really fear that its going to be hindered by the fact that Microsoft controls it much much much more than Java is hindered by the fact that Sun controls Java. And Java is by no means a failure.

      --
      pooptruck
    14. Re:Perhaps you should read the article by rodgerd · · Score: 1, Redundant

      If you'd bothered quoting in context, you'd note that Cringley is referring to C# as Java in drag, hence Bill betting on Java. But I guess you're interesting in rigging quotes to attack someone for having the temerity to question the all-powerful edifice of Java.

      And, FWIW, when Sun released Java, they made no distinction between the various components of Java - the language, the standard library, or the VM. Referring to it as "buggy" is no more inaccurate than Sun's own ongoing failure to distinguish between the language and the standard libraries.

    15. Re:Perhaps you should read the article by ArtDent · · Score: 1

      In context, that reads to me like a typo -- like he meant to say ".NET and C#," but for some reason said ".NET and Java" instead. I note that you didn't use a quote to put it back in context, you just supplied your own interpretation, which is, in honesty, quite a stretch. Okay, so he noted that"C# and Java are astonishingly similar" some six paragraphs earlier, but it's still a leap from this comparison to that odd substitution right at the end.

      And you completely sidestepped my point about referring to Java as "buggy": Sun's Java compiler, platform, and virtual machine are not buggy. That even his claim was so generic simply draws attention the point that it was completely unsupported.

      And you've done nothing to help support it (hint: sarcastically calling Java "the all-powerful edifice" doesn't count).

    16. Re:Perhaps you should read the article by Anonymous Coward · · Score: 0

      "quotes to attack someone for having the temerity to question the all-powerful edifice of Java." Wow thats some temerity on Cringley's
      part picking on Sun and defending that little
      innocent Microsoft startup.

      Microsoft Apologist!

    17. Re:Perhaps you should read the article by Anonymous Coward · · Score: 0

      I think the real problem with Java is that SUN CAN'T FUCKING WRITE APPLICATIONS FOR SHIT.

    18. Re:Perhaps you should read the article by tpv · · Score: 3, Insightful
      >> The interesting thing is that Microsoft made plenty of stupid mistakes
      >> too, but since they were powered by monopoly profits in OSes (and earlier
      >> on by licences for BASIC in ROMs), they could afford to wait out their
      >> mistakes and just keep throwing money at the problems until they
      >> straightened them out.

      > I believe the key to Microsoft's success is knowing when to let go of
      > a bad idea. Such as MS Bob, MS Chat and various others. It is when you
      > still believe in a product which doesn't make money that you fail.

      What worked for microsoft was to enter a market, take control of it, and then find new markets to take on.
      When they got big enough they did that in parallel.

      They started with BASIC, then MS-DOS, and then tried to maintain control of the OS (with Windows) at the same time as writing applications to take on people like Lotus. They they went for the server market, the database market, etc.

      They can afford to kill of stupid/failing products because they have a number of revenue sources.
      Borland screwed up all their markets, and manage to scrape through with a set of development tools.
      Lotus lost on the apps, but managed to hold on to Notes long enough to get bought out.
      Netscape lost the broswer war, and got sold off for spare parts (NetCenter and Enterprise Server).

      If you're only competing in one market, then you have to get it right pretty much every time (Oracle). If you let the ball down you will end up loosing your market, and getting bought out (Informix).

      MS didn't win because they had a monopoly, they won because they used their monopoly (both for power and resources) to allow then to diversify into and market they wanted.

      --
      Read more of this story at Slashdot.Read more of this story at Slashdot.Read more of this story at Slashdot.
    19. Re:Perhaps you should read the article by rsclient · · Score: 2, Informative

      Um...Netscape wasn't making money on the browser? Are you stark, raving bonkers? They were hauling in money by the barrel -- Jim Clarke says (in his book) that Netscape was seduced by how easy it was to charge for a browser and therefore didn't diversify into other areas.

      *you* may not have paid for your copy of Netscape -- and a lot of individuals didn't -- but lots of companies were happy to pay for site licenses.

      --
      Want a sig like mine? Join ACM's SigSig today!
    20. Re:Perhaps you should read the article by Anonymous Coward · · Score: 0

      "So certainly since at least 1984 or so Microsoft has basically had a monopoly position in OSes."

      Not quite buckeroo. In the late 1980's platforms from Apple and Commodore(and even Atari to some extent) were very viable, and continued to be up until around 1990.

      At which point DR-DOS and OS/2 were very viable competitors with Microsoft and had large chunks of marketshare.

      It wasn't until 1995-1996 that Microsoft became a real monopoly, when everything else just disappeared into the nowheresphere.

      You're also grasping for straws on the BASIC thing.

    21. Re:Perhaps you should read the article by Fnkmaster · · Score: 1
      This is an interesting idea. However, the counterpoint is that for a small, single product company it's a lot tougher to scrap your only product. For a company that has already passed that stage and has multiple product groups, it is much easier to take an objective look and scrap the ones that suck.


      Lots of large companies scrap groups working on sucky products that bring in no revenue and don't have a prayer of ever doing so. For a sufficiently large company, the key becomes the _ratio_ of sucessful groups to unsuccessful groups. This doesn't have much of an equivalent in the small/startup world, so for a start-up stage company to succeed, they need to maintain extreme flexibility and be resilient to changes in market situation and need, and be able to rapidly refocus if they realize a particular version or release of their product is biting the bullet big time.


      Just my tuppence.

    22. Re:Perhaps you should read the article by demon · · Score: 1

      Do you agree with me that a number of companies that "lost" to Microsoft lost because they made bad business decisions?

      I think that risks are taken, some bad decisions are made, shit happens. That's the way it always works. Yes, some companies that have fallen to Microsoft did, at least in part, because they made stupid mistakes. However, if it weren't for Microsoft being there to stomp on them and squish them out of existence, they might've picked themselves up and carried on, learning from their experience, and maybe becoming better for it. Would they have succeeded? Maybe, maybe not. We'll never know, but at least they'd have had a fair shot.

      --

      Sam: "That was needlessly cryptic."
      Max: "I'd be peeing my pants if I wore any!"
    23. Re:Perhaps you should read the article by SoftwareJanitor · · Score: 3, Insightful

      "So certainly since at least 1984 or so Microsoft has basically had a monopoly position in OSes."

      Not quite buckeroo. In the late 1980's platforms from Apple and Commodore(and even Atari to some extent) were very viable, and continued to be up until around 1990.


      Apple, Atari and Commodore, all put together even as early as 1987 could barely have scratched into the 2 digit market share range. And certainly of those the only one that was making any share in business sales was Apple. Even then, Apple was never very successful outside of the desktop publishing and graphics niches. Atari and Commodore were never serious competitors to Microsoft. Heck, Commodore even sold MS-DOS based x86 boxes. Hardly much of a competitor.

      At which point DR-DOS and OS/2 were very viable competitors with Microsoft and had large chunks of marketshare.

      Oh please. Neither of those ever sold any significant numbers. Microsoft already had over an 80% market share by then. I'm not saying that they weren't viable products, but that is different than being viable competitors. OS/2 and DR-DOS were never viable competitors at least in part because neither of them could ever crack the preload market. Microsoft was able to keep them locked out through restrictive contract terms amongst other issues.

      Having viable products in competion with yours doesn't necessarily prevent you from having a monopoly. If you have a seriously dominant market share, then you can have a monopoly even without being officially granted a government sanctioned monopoly or without necessarily being the only product available. It seems like a popular thing for Microsoft apologists to claim Microsoft isn't (or wasn't) a monopoly by wanting to make the definition of what a monopoly is so restrictive that there practically isn't such a thing.

      It wasn't until 1995-1996 that Microsoft became a real monopoly, when everything else just disappeared into the nowheresphere.

      Please. Both Atari and Commodore were out of business by the 1994 timeframe, and neither were more than gasping for air for the last several years of their lives. Apple is essentially the only non-x86 holdout in micros. Microsoft certainly extended their monopoly during that time period, but it was far from the turning point.

      You're also grasping for straws on the BASIC thing.

      How so? Microsoft was making a royalty on virtually every microcomputer sold in the 8 bit days. About the only exceptions were Atari and TI, who had their own proprietary BASIC. Just like with most packaged PC's these days, it was virtually impossible to avoid paying the Microsoft tax even back then. Sounds like a de-facto monopoly to me.

    24. Re:Perhaps you should read the article by Malcontent · · Score: 2

      Either way it's simply insane to say MS has bet it's business on c# or .NET. MS owns hundreds of companies, makes dumptrucks of money on selling office and windows. In fact MS makes more money as a venture capital firm then as a software firm. If they were "betting the company on C#" why are they hedging their bets with the X-box?

      Like I said the author of the article is simply insane or just insanely stupid.

      --

      War is necrophilia.

    25. Re:Perhaps you should read the article by SecretAsianMan · · Score: 2

      So certainly since at least 1984 or so Microsoft has basically had a monopoly position in OSes

      Only on PC OSes. In 1984, PCs were not anywhere as inexpensive, featureful, and ubiquitous as they are today. This was especially true in business; you would be much more likely to find a VT220 on a worker's desk (if anything with a CRT at all) than an IBM PC. Unix, VMS, and others were still the leaders of the pack.

      --

      Washington, DC: It's like Hollywood for ugly people.

    26. Re:Perhaps you should read the article by Metrol · · Score: 2

      They could not figure out a way to utilize Navigator for profit, but kept developing it. It would have probably been a good idea to release the source code then, while MS would only have been comfortable going as far as no-charge with IE (thus, giving Netscape the upper-hand).

      Perhaps this might have been a good idea, but not at all possible unfortunately. There were simply too many key components of Communicator that Netscape didn't own. Even relatively simple stuff like the address book for E-Mail was using a licensed DB. There just wasn't a usable product without these other bits of code that were owned by others.

      By no means does that justify the total re-write effort gone into Mozilla. I'm personally still baffled by the fact that they didn't just focus on Gecko's rendering within the existing GUI framework they had. XUL and all the other stuff could have come later down the road, but not if you make the call to throw the baby, the bath water, and the tub all out the window.

      --
      The line must be drawn here. This far. No further.
    27. Re:Perhaps you should read the article by Anonymous Coward · · Score: 0

      And IE still makes money from their browser, even if you don't look at the consumer end. How much does it cost AOL to get themselves on the desktop on install? How much does it cost yahoo/lycos/excite to get themselves enabled on the searchbar?

      Probably more than the salaries of those very smart employees writing IE (which, sorry Opera and Netscape/Moz, roXor5 more than your browser)

    28. Re:Perhaps you should read the article by allanj · · Score: 1

      So Microsoft has gone full circle. They started our with Microsoft Basic, and now they're peddling Visual Basic :-)

      --
      Black holes are where God divided by zero
    29. Re:Perhaps you should read the article by Anonymous Coward · · Score: 0

      Kinda funny, because I saw Jim Clark on PBS, and he said just the opposite -- the Browser was a loss-leader and free advertising for the server products, and they were in business as an enterprise server software company.

      Only after they totally mishandled that market (didn't provide value over free alternatives like Apache, didn't anticipate that MS Exchange would sell, royally pissed off IBM, fux0rd the app server product....), did they realize that they were actually making $ from the browser. Well, Jim Clark didn't say that last part.

    30. Re:Perhaps you should read the article by Anonymous Coward · · Score: 0

      Apple actually had a real shot at the business market, which they fucked up. Things like not talking Novell IPX and not shipping with database drivers and pretending that HyperCard was a RAD program for anyone beyond 8th grade. By 1993 or so, they were out of the game (just like OS/2).

      (And Atari shipped with MS BASIC - I have the cart right here..)

    31. Re:Perhaps you should read the article by SoftwareJanitor · · Score: 2

      And Atari shipped with MS BASIC - I have the cart right here.

      I don't believe that it was 'standard equipment'. I think it was an extra cost option, at least at the time I looked at them (in the days of the 400 and 800 as the only models). Maybe later with the 130XE they shipped with the Microsoft BASIC cartridge standard or something. By that time it was already obvious that Atari would lose to Commodore, let alone Apple or anyone else. And if you couldn't avoid paying the Microsoft tax with Atari, it only makes my point about them being a defacto monopoly that much earlier...

    32. Re:Perhaps you should read the article by SoftwareJanitor · · Score: 2

      In 1984, I don't think Microsoft really viewed minis and mainframes as competing with them. They didn't really start thinking about taking on the server world until 1987 or 1988.

    33. Re:Perhaps you should read the article by Anonymous Coward · · Score: 0
      It's interesting that when Microsoft makes mistakes, they're never driven out of business. But a single mistake from any of their competitors will drive them out of business.

      There's either something wrong with this view, or it is a very very one sided view of the software industry.

    34. Re:Perhaps you should read the article by gakguk · · Score: 1

      ...and they also build some other things on top of IE too. Look at PocketPC 2002. The fancy welcome screens and stuff. In XP, there's a new control acts like an hiperlink and AFAIK, you may code html directly to show up with color and stuff into a form. Look at SQL Enterprise Manager's use of web pages via res:// protocol. Look at the search page of Windows Explorer. In XP, the search page even includes an animated character, which was a free download for developers to use for years.

      In my book, this is a way to make money from a product, wheter you sell it or not.

    35. Re:Perhaps you should read the article by desha_ovahran · · Score: 1

      I agree with the points on IE and further thought that breaking up MS into several companies, in particular one that had its internet products (IE, IIS) as its basis. And basically tell them, 'ok MS be profitable by giving away your browser and web server'. Let them use their supposed marketing savvy (which is utter bullsh*t) to turn that one around.

    36. Re:Perhaps you should read the article by JordanH · · Score: 2
      • IE is no more a loss leader than any other piece of windows is.

      Mod this guy up. IE is just a component to Windows. Maybe it's still available, but I couldn't find IE 6 for Windows 3.1, Windows 95 or Linux. Now, it's free when you buy a copy of the latest Windows. It's just a feature of Windows and they update it to lure you off of other platforms.

    37. Re:Perhaps you should read the article by Invalidator · · Score: 1

      A lot of companies that Microsoft "drove out of business" were driven out of business because
      they made stupid mistakes.


      Well, what would constitute "a lot" in your view? Would all be "a lot"?

      Take a look at the desktop application market today: spreadsheet, word processor, dbms, etc. Does any company, aside from M$, have an alternative (not counting shareware)? Is there anyone left?

      And yes, no doubt that Netscape made mistakes, but what effect did M$ bundling IE with Windose and tying it into the OS have on Netscape?

      The pompous a*hole interviewed sees M$ as basically blameless and the rest of the world as deeply flawed. Which world does he live in?

      --

      ~_~ Not tonight, dear, I have a modem.

    38. Re:Perhaps you should read the article by GooberToo · · Score: 1

      I also believe IE was a failure with Microsoft as well, though people don't realize it. Now that IE is free MS makes no money on it, and does not, IMO, know how either. The result of this action is that Microsoft is stuck developing the worlds most popular web browser for free with no way to recoup development costs.

      I'm always amazed when I read things like this. Nothing could be farther from the truth. Simply put, MS is no longer charging an EXTRA fee for IE, however, they ARE CHARGING FOR IT!!!!!! Besides, think about it this way, where would Microsoft's Internet plan be if only 20% of their customers purchased IE for use. No where. This is no different than buying your new Car which comes with free oil changes. It's not free. It's simply built into the cost. This is why it's so important for them to bundle it with the OS, so that it truely becomes an intergrated OS development cost....which at this point, it is. Of course, the obvious extention to this is, nothing from Microsoft is for free; it's always like that first hit of crack...you'll be forced to keep coming back at any price they name. Forced? Of course, because they are the only dealer in town.

    39. Re:Perhaps you should read the article by jeremyp · · Score: 2, Informative

      Microsoft had a near monopoly in the BASIC interpreter market because there weren't really any alternatives. If we look right back to the beginning, it was Paul Allen and Bill Gates who wrote the *first* BASIC interpreter for a microcomputer. So you could say they were technical innovators in those days.

      I thought the reasons why MS-DOS got its momopoly position were well known. Basically, IBM were going to license CPM/86 for their new computer, but the guy who ran Digital Research was out playing with his aeroplane when IBM went to see him and nobody else was prepared to sign the NDA. When IBM went to see Bill Gates, however, he was prepared to take them seriously and sold them an operating system he didn't have at the time. The rest is history.

      Everybody complains about M$ and how they use dirty tricks and their monopoly situation to stamp on the opposition, but they fail to ask the question: why have they got the ability to do that? It's because their competitors all made bad business decisions.

      Some examples:

      Apple lost the opportunity to dominate the desktop in the mid '80s because they refused to license their operating system without an actual Macintosh which was perceived as a very expensive desktop system.

      Word Perfect lost its dominance of the PC word processor market because it failed to realise that Windows was the future for PCs.

      Lotus lost its position of dominance in the spreadsheet market because Lotus failed to perceive the importance of Win32. Although it has to be said that this only accelerated the inevitable because by then M$ dominated the word processing market and for only a bit more money you could buy Word with an adequate spreadsheet and presentation graphics package which all integrated together nicely.

      --
      All I want is a secure system where it's easy to do anything I want. Is that too much to ask ~~ Randall Munroe
    40. Re:Perhaps you should read the article by carleton · · Score: 1

      If Microsoft learns from their mistakes... why in the name of all that is holy is there still a clippy-like thing (an animated dog is the default, and maybe it's just me, but each time you tell it to stop with the animations, the dog sadly walks off into the distance) in Windows eXtraProcessing-power-required-for-our-
      happy-fun-eyecandy? Didn't they do a big thing on how Clippy was dead? I really don't think replacing Clippy with a dog counts.

    41. Re:Perhaps you should read the article by webmosher · · Score: 1

      If Microsoft isn't making any money on MSIE? Then why am I seeing MS Shopping commercials every 15 minutes on the TV? Why is MS blatently working to couple the entire O/S with the browser. Somehow, I don't think they are giving away product there... MSIE has become the "Window" that MS will open to monopolize the Internet. Think it won't happen... wait...

    42. Re:Perhaps you should read the article by Watts+Martin · · Score: 2
      Going on a rant here: this is why I believe Eazel failed. They held on to their file management program, but failed to realize it would not make them money when they needed it most.

      No, Eazel failed because they needed to do three years of engineering work to get where they wanted to go, and got on the scene too late to be able to get that kind of sustained funding. Check around on the net for some of the interviews with Andy Hertzfeld--I believe it's an audio one with Dr. Dobbs where he gave the three year figure.

      Nautilus is still in some ways more of a proof of concept, in my opinion. In the eyes of people with "real" GUI backgrounds like MacOS and BeOS (Hertzfeld, and Pavel Cisler, respectively), the foundation for a good, responsive user interface just isn't there in Unix yet. This is something people who haven't gotten used to MacOS or BeOS aren't likely to ever quite grok, because it isn't really an aversion to the command line. BeOS had bash and I know how to write shell scripts, but nine times out of ten, file management was both simpler and faster in its GUI. If your only significant GUI experience is with Windows or "Windows-alikes" on Unix, file management isn't simpler and faster in the GUI.

      Ultimately I think Eazel would have failed asd a commercial venture, but I don't think it's because of the file management program--I think it's because they were trying to follow the canonical advice to open source companies, "make money on the services." Eazel's services were pretty much the same as Ximian's, and it's going to be tough enough for a single company to make what amounts to a subscription package update system profitable--there's simply no market need for two.

      I recall reading that early on Eazel and Ximian had talked abuot merging, but decided they were different enough that they should remain different companies. From an engineering standpoint I have no doubt that's true--but from a business model standpoint, they may have been far too close for comfort.

    43. Re:Perhaps you should read the article by ch-chuck · · Score: 2

      As for Microsoft's marketing, I am not so sure I would call it 'shrewd' as pervasive and persistant. They've outspent just about everyone else for years, with the possible exception of IBM, but that is easy when you have monopoly profits to fall back on.

      I'll never forget the IBM ads on AM radio, "How you gonna do it? PS/2 it!"

      Anyway, my observation on Msft mktng is they find out what negative rumors are going around about their product, and frame their ads to counteract it. I recently got a big slickie signed by Bill Gates that states, "Windows XP is much more than just another version of Windows with a new look" which confirmed it for me: Windows XP is Win2K with a new look (and bundled in PCAnywhere, RealAudio, Adaptec CD Writer and other 3rd party spoilers). If people start complaining about their notorious reliability issues (from the company that gave us the "maintenance reboot"), they start an ad campaign bellowing about "99.999% Reliability!!". If a child pointed out the emporer was naked, they'd launch another ad series gushing about how great the emporers new cloths are and what a fashion trend it is setting in Paris.

      --
      try { do() || do_not(); } catch (JediException err) { yoda(err); }
    44. Re:Perhaps you should read the article by ciscoeng · · Score: 1

      MS-DOS includes BASIC code
      Windows X includes MS-DOS code
      therefore: Windows X includes BASIC code

      ;)

    45. Re:Perhaps you should read the article by artemis67 · · Score: 2

      I believe you're right; IE should be considered a feature and selling point of Windows and not a stand-alone product. You could make a similar argument for iTunes on the Mac, though it serves in far less utilitarian purposes.

      The one area where the argument breaks down, though, is IE for Mac. MS isn't coding it out of the goodness of their hearts. They're not doing it because they have a stake in Apple (after the famous 1997 investment, Gates sold off his shares almost as quickly as he bought them). Are they doing it to support a competing platform in the market, to lessen the monopoly perception? Possibly, but I don't see it. The Mac would survive without IE.

      It's difficult to see how IE for Mac increases shareholder value for Microsoft.

      -----

    46. Re:Perhaps you should read the article by Anonymous Coward · · Score: 0
      I agree with you up to a point with IE. Microsoft certainly isn't making any money on it, and doesn't look like they have any idea how

      I disagree. Microsoft was deathly afraid of Netscape and browsers in general because it allowed the computing experience to be platform independant. If the browser became the desktop, which IIRC is what Netscape wanted back in the day, then there is no compelling reason for people to buy Windows. Thus, by making the "best" browser and making sure it's tied to windows they help to insure their survival. At least until they can figure out a way to force the whole .NET thing on the public.

      That's why, according to the legend, once Bill realized that the whole Internet thing was going to be big and he had missed the boat he made the browser priority number one. The rest is history.

    47. Re:Perhaps you should read the article by Anonymous Coward · · Score: 0

      IE isn't Free. you still have to buy Windows to use it.

    48. Re:Perhaps you should read the article by Anonymous Coward · · Score: 0
      Eazel went through a lot of money in a short period of time. Perhaps they failed because their business plan was dependant upon getting additional funding, instead of trying to run it like a real business and being prudent with the money they had. They are not alone in that respect either. A lot of business have crashed because of the mindset of the people who know how to get funded but have no clue how to be responsible with the money onece they get it. It's like a big party with someone elses money.

      I wonder what Andy's salary was at Eazel....

    49. Re:Perhaps you should read the article by Anonymous Coward · · Score: 0

      To me this is a perfect bad example of letting the geeks run the show. They should have joined and made it work. I think they would have been far more sucessful.

      Having said that, from the community perspective we got someone to fun eazel to create most decent file manager, the fact that they went out of business doesn't REALLY matter we still got the file manager and all of its decently cool tools.

    50. Re:Perhaps you should read the article by ichimunki · · Score: 1

      If Clippy is dead, then explain why half the people on my floor here at work have a little dog or cat or whatever running around on their monitors.

      --
      I do not have a signature
    51. Re:Perhaps you should read the article by Anonymous Coward · · Score: 0

      Yep. Cringely is an idiot. But remember, the job of a _journalist_ is to say controversial things which may or may not be true, but draw people to a website to read them. Hopefully that is the case with Cringely, otherwise he's just not too bright.

    52. Re:Perhaps you should read the article by mccalli · · Score: 1
      Microsoft got into a monopoly position with MS-DOS pretty quickly after its release in 1981.

      It is the orthodoxy that MS-DOS compatibility was the key factor in buying machines in the early eighties.

      I disagree.

      Does anyone here remember the Apricot? That was an MS-DOS compatible machine, in the sense that it ran MS-DOS. What it didn't do was run MS-DOS programs written for the IBM PC. In other words, it was purely MS-DOS compatible, not IBM PC compatible.

      It was IBM compatibility that made the market. Just watch the TV news presentation of Compaq's first clone - "Actually, we kind of find it runs all the programs written for the IBM". Other machines from different platforms ran MS-DOS, but they couldn't run the same programs as the IBM.

      Cheers,
      Ian

    53. Re:Perhaps you should read the article by bluGill · · Score: 2

      There were two versions of Basic for the Atari, Atari Basic and Microsoft basic. Very few people used Microsoft basic, but it was sold. Atari basic was very common. A cartrage for the 400/800, and build into rom for the rest. (I'm not sure about the 1200xl)

      AFAIK atari never shiped MS basic, and MS basic was always loaded from disk, not a cartrage. I could be wrong from the latter. I remember my [irate disk version of MS basic never loaded. (appearently copy protected?)

    54. Re:Perhaps you should read the article by JordanH · · Score: 1
      • Are they doing it to support a competing platform in the market, to lessen the monopoly perception?

      Absolutely. That's the reason they initially supported IE on Solaris and Linux, too.

      Funny you mention the famous 1997 investment, point out that it was a sham and then don't buy the argument that they do things to lesson the monopoly perception.

      Another reason to support it on the Mac is so they can make sure that a competing browser doesn't grow up on the Mac to challenge their intended dominance of internet standards through their monopoly position in Browser software.

      If they weren't getting regulatory heat now, you could bet that they would abandon W3C standards in favor of their own. Not that they don't already do this in subtle ways now.

    55. Re:Perhaps you should read the article by testharness · · Score: 1

      And when I was looking at buying a PC in those days, you checked for IBM compatability by using MS Flight Sim.

    56. Re:Perhaps you should read the article by peter+hoffman · · Score: 2

      I don't think they are hedging their bets with the X-Box. I think that the X-Box is the thin end of a ".NET home terminal for Microsoft services" wedge which would tie in nicely with .NET and, by association, C#.

    57. Re:Perhaps you should read the article by Manitcor · · Score: 2, Interesting

      Supplying IE to competing platforms may be a way to lower the perception of MS as a monolopy but also take into account thier current stragety in the way of .NET services.

      It seems to me that MS is really moving into a position to sell the .NET services. Whats important here is not neccassiarily (SP) the platform of which .NET is running but the fact that the platform can run .NET.

      By providing IE for the MAC you can now provide .NET to all MAC users as well as PC users. So even if they didnt make money off the customer for the OS they may (of course it is up to the customer to use .NET) purchase .NET services and provide revenue in that aspect.

      This is also one of MSs biggest reasons for the X-Box. Its not simpily a gaming platform with a DVD player. Its a ploy to get a PC running IE into millions of homes. Some of which may not even have a PC. The X-Box can run IE and most likey has a lot of software intergration points to .NET.

      In this way MS will be able to provide internet service and .Net to all x-box users. Think not only did you buy little Timmy a game system but now for a mere 21.99 a month you can have internet access and all the goodies that come along with it and you dont even need a PC.

      Ok my thread of thought has gone way off. Must be hunger..time for lunch!!

      --
      "Don't mess with him, he taunts the happy fun ball."
    58. Re:Perhaps you should read the article by Anonymous Coward · · Score: 0

      Off topic, but, man, does it burn me up when I see Excel start hogging CPU/swapping like mad, so I can't do a damn thing until Excel finishes what it is doing, but the little Einstein guy gets enough CPU cycles to do all his antics.

    59. Re:Perhaps you should read the article by localman · · Score: 2

      Java is buggy? A language is buggy? What's that supposed to mean?

      Okay Mr. Literal Developer, here it is in your terms: The java user experience is buggy.

      Why? In my experience the biggest problem is the virtual machines. This may not directly be SUN's fault, but it was their choice to excercise virtually no control over them so the promise of cross platform development was broken. I've yet to have the same working code play completely well on any more than _one_ type of VM.

    60. Re:Perhaps you should read the article by Hector73 · · Score: 1

      I posted the Cringely article on /. a few weeks back.

      Here's the link.

    61. Re:Perhaps you should read the article by Anonymous Coward · · Score: 0

      There was a cartridge version of Microsoft Basic, I remember borrowing it from someone. One nice feature it had that Atari Basic lacked was an automatic line renumbering command.

    62. Re:Perhaps you should read the article by Syberghost · · Score: 2

      I also believe IE was a failure with Microsoft as well, though people don't realize it. Now that IE is free MS makes no money on it, and does not, IMO, know how either.

      Perhaps you weren't on the net when IE first came about, so your ignorance can be forgiven, but just so you'll know:

      IE was *ALWAYS* free. It was, in fact, Spyglass Mosaic with Spyglass having been contracted to customize it for Microsoft, who gave it away free from day one.

      Oh, and to those calling it a Windows component; they *DID* make a Windows 3.1 version for a while. It included dial-up networking software, and for a while was (although I hate to say this) the best free dial-up software around for Windows 3.1 (best in terms of being easy to set up for Joe BagODonuts). It even had a customization kit for ISPs. I know, I ran one back then.

    63. Re:Perhaps you should read the article by jmccay · · Score: 2

      Of course, you are looking over some other real facts. Facts like Microsoft integrating IE into the OS. I was running Netscape at the time. It loaded extremely quick. Then I had to load IE because Visual Studio required it. After that Netscape was slower than ever.
      Then there is the fact that they rarely give other companies who they consider to a competitor the information about a new version of the OS (or other such information) in a timely manner. They purposefully withhold it until their products are out!
      Joel Spolsky is just a another Microserf. You can read it in the way he talks. He talks as if Microsoft has never done anything wrong when it comes to other companies. It not their fault Company A ran into Wall B they built.
      Joel Spolsky's knowledge is forever wasted because he still lives in his Microserf world. It is too bad.

      --
      At the next eco-hypocrisy-meeting, count the private jets used to get to the meeting. Should be interesting to see that
    64. Re:Perhaps you should read the article by gpinzone · · Score: 0

      Yes, some companies that have fallen to Microsoft did, at least in part, because they made stupid mistakes. However, if it weren't for Microsoft being there to stomp on them and squish them out of existence, they might've picked themselves up and carried on, learning from their experience, and maybe becoming better for it.

      This is a very fair statement. Some things, like when Microsoft stole the code from Stac Electronics to make DiskSpace compression were outright wrong. Stac won the lawsuit, but by then it was too late. (Microsoft had to pull DiskSpace out of DOS 6.2, but almost immediately provided a replacement in DOS 6.2.2 with a slightly modified code and a new name: DriveSpace.) However, there are plenty of other companies that just plain dropped the friggin ball. WordPerfect is a great example. They just sat by and let Microsoft develop a good WYSIWIG word processor while they kept shoveling the same tired old text based product (version 5.1) down our throats. Yeah, yeah; I know all about how unfair it was for Microsoft to use undocumented Windows API code to get a leg up on other companies like Lotus and WP. That's not the reason why companies like WordPerfect didn't get a decent GUI-based product out the door. The main reason was that they figured they owned the market and were untouchable. Why develop a new Windows-based version when you can milk your existing product for a few more years, right?

      What's more, Word 2.0 was actually a better word processor than WordPerfect 5.1. A beginning typist didn't have to worry about "Reveal Codes" just to type a letter. Yeah, later versions of WordPerfect for Windows were superior to Word (6.0) in many ways. But again, it was too late by then to make an impact. The MS Office juggernaut was already full steam ahead.

      Why hasn't any other company or open source project completely reverse-engineered the Microsoft Word DOC format?

    65. Re:Perhaps you should read the article by Anonymous Coward · · Score: 0

      yes..java is BUGGY. do you know how many crashes the JVM has when agressively threading java apps ? I get 2-3 crashes a *day* with a virtual machine error when im running jdk 1.3.1 with hotspot and doing heavy threading work.
      the java language also has major bugs..ever heard of double locking ? its broken. all the JVM implementations have different behaviours with doubly locked code.

    66. Re:Perhaps you should read the article by gpinzone · · Score: 0

      You hit the nail on the head. That's why I had hoped that the US Gov't was going to break up MS into smaller pices. Alas...

    67. Re:Perhaps you should read the article by Michael_Jarvis · · Score: 1

      In 1984, I don't think Microsoft really viewed minis and mainframes as competing with them. They didn't really start thinking about taking on the server world until 1987 or 1988.

      Novell was the first company to bring PCs into the server market. In 1987 or 1988 Microsoft was still pushing MS-DOS 3.3, which certainly wasn't a server product. They might have been thinking about servers, but I don't think Microsoft started taking networking seriously until after Novell Netware was such a success.

    68. Re:Perhaps you should read the article by SoftwareJanitor · · Score: 2

      Microsoft was working with IBM on OS/2 in 1987-1988 time frame. It was 1988 when Microsoft hired David Cutler from Digial to work on "OS/2 NT".

    69. Re:Perhaps you should read the article by reflective+recursion · · Score: 1
      Perhaps you weren't on the net when IE first came about, so your ignorance can be forgiven, but just so you'll know:
      My ignorance? I never said Microsoft _ever_ charged for IE. I know very well IE was and always has been free to download. Could IE have a price attached to it? Sure. I was using some of the first IE versions out there. When people were still saying Netscape this Netscape that. When people were also saying what trash IE was and that it had no future.
      --
      Dijkstra Considered Dead
    70. Re:Perhaps you should read the article by Anonymous Coward · · Score: 0
      Well, what would constitute "a lot" in your view? Would all be "a lot"?

      How about making any kind of agreement in which Microsoft gets to see your source code? Granted, that's only one mistake, but I think it would count as "a lot" of mistake!

      Anonymous Kev
      Proudly posting as AC since 1997

    71. Re:Perhaps you should read the article by scrytch · · Score: 2

      > It's difficult to see how IE for Mac increases shareholder value for Microsoft.

      Brand identity. Same reason Apple gives away Quicktime for windows -- except MS does a bang-up job with IE for the mac, whereas QT for windows is just banged up.

      --
      I've finally had it: until slashdot gets article moderation, I am not coming back.
    72. Re:Perhaps you should read the article by thirdrock68 · · Score: 1

      I've yet to have the same working code play completely well on any more than _one_ type of VM.

      Wow! That's amazing! You've never browsed a web page with an applet on both a PC and a Mac???

      You need to surf more....

      TR

    73. Re:Perhaps you should read the article by Anonymous Coward · · Score: 0

      You imply that Netscape was forced to go open source and therefore were forced to throw out key components.

      The fact is (if you go back and look at the reports from the time) is that they went open source because they thought it would improve their time-to-market by adding more developers and testers. The decision was not made ideologically, it was based on ESR's and other's sell that Open Source was a better,faster development model.

      Being as late as it is, I think you could make the argument that this backfired (that they spent more time rewriting boring stuff like the addressbook DB than they saved through volunteer contributors.)

      [Now it could be that some of that licenced stuff had a per unit fee, in which case it would be a lousy choice for any no cost product.]

    74. Re:Perhaps you should read the article by Anonymous Coward · · Score: 0

      MS didn't steal Stac code (which would have been a copyright violation).

      It was a software patent - MS tried to engineer around a Stac patented algorithm and failed.

      Cue normal Slashdot "Software patents are evil" music.

    75. Re:Perhaps you should read the article by 24601 · · Score: 1
      Well the problem with Cringely's remarks is that the fate of Java is not strictly in Sun's hands. So no matter what you may think of Sun's efforts, it needs to be acknowledged the efforts of IBM (alphaworks), Oracle (building Java into the database), the Apache community, all the mobile phone manufacturers, countless people at JavaSigs and finally my own humble self. Each of these companies and others, each of these individuals and others all are ensuring that Java will be viable for years.

      My enjoyment of programming shot up the day I discovered Java, and I have not looked back. To paraphrase: "They can pry my Java from my cold, dead hands"

    76. Re:Perhaps you should read the article by flegged · · Score: 1

      Double locking is not broken. Your understanding of it is broken. Because of that, I'm not surprised that your multithreaded apps are crashing.

      Read this. Read it carefully. Only then may you comment on DCL.

      --

      "I think he was truly surprised at how little I cared about how big a market the Mac had" - Linus on Jobs
  30. He's only partly correct about the rewrite thing by Bwah · · Score: 3, Insightful

    With your average application from scratch rewites are probably UnCool for the reasons mentioned in the article.

    For other kinds of systems I'm going to have to argue that rewites can be very beneficial.

    For systems where the development team has access to a regression test suite and the old (working) code at the same time rewrites are much more easily done. You simply treat the existing code like a prototype. Something that captures all of your requirements, but maybe not using a design that ended up working out (read as: turned into a freaking hairball as time passed!) You work through the old code, understand it, and then build up a new design that works out cleanly in all of the places where the old code was a hack.

    When you are all done (or as you are working), you hit it with the test suite. This works out best if your process requires that all of those pesky little bugs found in the old code had to have test cases to reproduce them. (Obvisouly there are limits to this ... the infamous 1 in a million "random" crash, etc.)

    Anyway, I think Joel's statement was just a little to broad. He's correct in some cases, but not all. Of course maybe I'm just one of those overly confident coder types ...

    --
    "There's no secret. You just press the accelerator to the floor and keep turning left." -- Bill Vukovich
  31. Re:Taking lessons from...Better Yet Check this one by darkPHi3er · · Score: 2, Insightful

    "Joel: Don't get me started! If you're a software company, there are lots of great business reasons to love bloatware. For one, if programmers don't have to worry about how large their code is, they can ship it sooner. And that means you get more features, and features make users' lives better (if they use them) and don't usually hurt (if they don't). As a user, if your software vendor stops, before shipping, and spends two months squeezing the code down to make it 50% smaller, the net benefit to you is going to be imperceptible, but you went for two months without new features that you needed, and THAT hurt."

    Can you spot the "seat of the pants/never piss of the installed base"-oriented design fallicies just in that one paragraph:

    1. More features are always better features

    2. Coders are not responsible for optimization

    3. Hardware vendors must not change h/w designs that would break installed base, even to improve their architecture

    4. Your s/w is SOOOO... important that shipping delays for optimization/tuning/additional debugging are not to be accepted

    further from the rest of the interview;

    6. There's never a reason to rewrite extent code, EVER...(here's my nominee for that reason -- Microsoft Outlook)

    7. Architecture is secondary to UI, maintanence of the UI experience is the MOST important standard

    8. Any problems caused by #7 above should never be fixed by redesign, but instead should be prioritized and patched by response to User problems.

    i could go on, but i think i've gotten the highlights, did i miss any???

    Gee, can anybody figure out a s/w product(s) family that seems to be a living demo of (my phrase) "Design By Release Date, Redesign by User Complaints" School of coding????

    i'll even agree with Joel that you should be very careful with "scratch" redesigns, and too many people would rather rewrite viable code than fix it....

    BUT JEEZ, should you hold on to a payroll system written in FORTRAN69 (or LISP or ALGOL or FORTH...), just because it works, even if you have NO OTHER apps in FORTRAN and don't have one single FORTRAN programmer working for you????
    .....

    --
    Ten quid, she's so easy to blind. And not a word is spoken...
  32. why are we listening to this guy? by deander2 · · Score: 5, Funny



    Hold on, this man worked at Microsoft from 1991 to 1994. He led the Excel team. He led the VB team. This was win16. Excel is great now, but do you remember how much it sucked before office 95? And who the heck used VB for 3.1?

    Even better! he wrote the Juno e-mail application. Believe me, this was no fine engineering here. Why does he know better then anyone other Tom, Dick or Harry what makes software project tick?

    1. Re:why are we listening to this guy? by gmack · · Score: 1

      Agreed especially about the juno part. Juno is enough of a pig to bring even a reasonably modern budget PC to a slow crawl.

    2. Re:why are we listening to this guy? by cygnusx · · Score: 3, Insightful

      >why are we listening to this guy?

      Um.. possibly because this guy has a better track record that *you* do when it comes to pushing out reasonable quality *commercial* software, and on time?

    3. Re:why are we listening to this guy? by Jester99 · · Score: 2, Insightful
      This was win16. Excel is great now, but do you remember how much it sucked before office 95?

      Win95 wasn't built in a day, you know.
      Win95 development started around, oh, 1993 or so? Meaning he was in charge of the versions of VB and Excel/Office95 and whatnot that debuted concurrently with Win95 -- the same versions you praise.

    4. Re:why are we listening to this guy? by rodgerd · · Score: 2

      OK, so which multi-billion dollar commercial software projects have you led up that have helped build the foundations of one of the most powerful software companies around?

    5. Re:why are we listening to this guy? by Anonymous Coward · · Score: 0

      Actually VB 3.0 was quite popular under Windows 3.1. That was probably the first really popular version of VB.

    6. Re:why are we listening to this guy? by shaunak · · Score: 1

      Hold on, this man "Timothy" works for slashdot.

      Why are you reading this?
      Why am I reading this?
      Why am I bothered enough to write here?
      Why am I sounding like the confused philosopher?

      --
      -Shaunak.
    7. Re:why are we listening to this guy? by Anonymous Coward · · Score: 0

      Excel didn't suck at all -- it was the second best spreadsheet on the market and THE best GUI spreadsheet.

      You claim it got good with Excel 95, but Excel 95 is the _exact_ same program as Excel 5.0/Win32, except with some shinier widgets. And not much has changed since then - Ask Mr Clippy "What's New in Excel", and you get about 8 features over the last 8 years.

    8. Re:why are we listening to this guy? by Anonymous Coward · · Score: 0

      Who the f*ck do you think you are you vomitous pig f*cker?

      You have no idea what the poster's background is.

      Besides, Joel is just a Steve McConnell wannabe. Nothing in his writings is new. He's just taking other people's ideas and rehashing them into muddied versions of what they should be.

    9. Re:why are we listening to this guy? by KjetilK · · Score: 0, Flamebait
      Excel is great now? No it isn't! The computer arithmetic is so severly flawed you can't use it for anything serious. They clearly haven't read chapter 2 of "Numerical mathematics and computing", and most certainly have never passed a class in CS. Do for example mod(3.1, 9.3) (or something like that...) and see what you get. The correct answer is 0.

      Well, anyway, while this guy might not know a lot about making good software, he might know a few things about making software stick in the marketplace. Those things usually have nothing to do with each other.

      --
      Employee of Inrupt, Project Release Manager and Community Manager for Solid
    10. Re:why are we listening to this guy? by Anonymous Coward · · Score: 0

      "vomitous"? LOL. could i have your slashdot id so I know who to contact for vocab lessons?

    11. Re:why are we listening to this guy? by ashpool7 · · Score: 1

      I used VB for 3.11, dude :p Version 2.0. You work with what people give you.....

    12. Re:why are we listening to this guy? by Anonymous Coward · · Score: 1, Insightful

      This is from Excel's help file for the mod function:
      --Returns the remainder after number is divided
      --by divisor. The result has the same sign as
      --divisor.
      --
      --Syntax
      --
      --MOD(number,divisor)
      --
      --Number is the number for which you want to
      --find the remainder.
      --
      --Divisor is the number by which you want to
      --divide number. If divisor is 0, MOD returns the
      --#DIV/0! error value.

      3.1 divided by 9.3 = 0 remainder 3.1 so mod is 3.1
      9.3 divided by 3.1 = 3 remainder 0 so mod is 0

      If you can't read documentation to determine how a function should work you might be the reason a software project fails.

    13. Re:why are we listening to this guy? by markmoss · · Score: 2

      Fred Brooks wrote The Mythical Man Month, one of the best books on managing big projects (software or otherwise), after he managed what was probably the most f*d up commercial software (or other) project ever: 360 O/S -- started with 1,000 programmers, ended up with 2,000 programmers and several years late (several years when they were selling mainframes without an OS!), cost overruns that would make a defense contractor blush. Brooks learned a whole lot about what _not_ to do, and explains it very well.

      However, this guy is no Fred Brooks. He doesn't even know his sofware is f*d up.

    14. Re:why are we listening to this guy? by Anonymous Coward · · Score: 0

      3.1 divided by 9.3 = 0 remainder 3.1 so mod is 3.1
      9.3 divided by 3.1 = 3 remainder 0 so mod is 0

      If you can't read documentation to determine how a function should work you might be the reason a software project fails.


      If the documentation is correct, why does Excel 97 return 4.44089E-16 when you use mod(9.3,3.1)?

      It's treating the input as a floating point number when there is an exact solution for a non-repeating, fixed decimal value.

    15. Re:why are we listening to this guy? by Anonymous Coward · · Score: 0

      The behavior you are witnessing is due to the way intel processors treat double precision numbers; there often is no exact zero.

      Apparently, Excel 97 assumes that since you've used double precision you want your answer in double precision.

      Try formatting the cell to display the same number of significant digits you used in your formula, moron.

    16. Re:why are we listening to this guy? by Anonymous Coward · · Score: 0

      3.1 modulus 9.3 is not 0 its 3.1

    17. Re:why are we listening to this guy? by Anonymous Coward · · Score: 0

      Try formatting the cell to display the same number of significant digits you used in your formula, moron.

      I think you're missing my point. From a user's point of view (think PHB, not engineering), having the program display a double precision number by default is not the desired behavior. The documentation implies that the result will be exact, but the function result is not.

    18. Re:why are we listening to this guy? by Anonymous Coward · · Score: 0

      My apologies for the moron crack, that it seems I was wrong about.

    19. Re:why are we listening to this guy? by KjetilK · · Score: 2

      Whoops, you're right, I meant of course mod(9.3, 3.1). Anyway, try that, you're probably not going to get the correct answer.

      --
      Employee of Inrupt, Project Release Manager and Community Manager for Solid
    20. Re:why are we listening to this guy? by Anonymous Coward · · Score: 0

      Excel peaked functionally at version 5, actually. Interestingly it was mostly a cosmetic variation of v.4 with a different interface to the workbook plus a vb api.

      from 95 onwards the internal rewrites for win95 stuffed up some internal structures which limited some fundamental functionality. Building big funky stuff in declarative form is no longer an easy option. Which could actually reinforce part of what Joel says about rewrites, come to think of it.

      I've been using excel pretty intensively since 1.05a, and it still sets my teeth on edge knowing that stuff i'd do back then fails in the "modern" versions, requiring VB or splatterstructure workarounds.

      Having said that, conditional formatting is intermittently useful and it's a lot easier now to get rational scatterplots.

  33. Death by Engineers by Skyshadow · · Score: 5, Insightful
    I'm in the alternate situation: Too many of my execs (except, for some reason, the VP of Development) are engineers.

    This leads to a whole host of problems:

    Many of them tend think they're smarter than people in non-engineering roles.

    Pursuant to this, they don't think PR and marketing and sales are "hard" or really even "important".

    Again after #1, they're always right when in disagreement with marketing or sales guys.

    Most of them haven't developed in a decade+, so now they know just enough to be dangerous -- make micromanaging decisions about detailed subjects things they don't understand well enough, chase unnecessarily after bleeding edge tech, etc.

    Fail to understand that not everyone wants to always work 14 hours a day.

    Laugh off meetings, so that eventually nobody in the company knows whats going on.

    As a result, nobody's heard of us (no marketing budget, no trade shows, no nothing) and nobody's buying our products (engineers tend to make lousy sales guys; despite what they might believe, nobody wants to listen to a 3-hour ridiculously detailed presentation on your product).

    There's got to be a happy medium someplace.

    --
    Every year during my review, I just pray the words "slashdot.org" aren't mentioned.
    1. Re:Death by Engineers by Happy+Monkey · · Score: 1

      Madame Cleo is probably happy. Didn't she win her lawsuit?

      --
      __
      Do ya feel happy-go-lucky, punk?
    2. Re:Death by Engineers by haruharaharu · · Score: 2

      Damn, that's rough. You're going to reeducate them, right?

      --
      Reboot macht Frei.
    3. Re:Death by Engineers by Anonymous Coward · · Score: 0

      Wouldn't it make more sense to put the tech guys over the tech stuff and the sales guys over the sales stuff?

      The whole of the corporate world has their collective head up their collective ass. Oh, you can hire me for that CTO job now.

    4. Re:Death by Engineers by Anonymous Coward · · Score: 0

      Can not agree more.

    5. Re:Death by Engineers by Anonymous Coward · · Score: 0

      And I've been in a situation thats one beyond that. I was in a company that was run by technical people, but when the company ran into financial trouble, decided to become more "market oriented".

      They hired a bunch of professional executives, marketing people, etc. Marketing was put in charge of determining product direction, as they knew what the customer wanted.

      Well it turned out that the technical people were in fact smarter than the marketing and PR guys, who seemed to think that software could be created by commitees and meetings and lots of vision. The company sank like a rock.

    6. Re:Death by Engineers by Srin+Tuar · · Score: 2


      Most of them haven't developed in a decade+, so now they know just enough to be dangerous


      Well there not really programmers then are they. Programmers dont quit their hobby because theyre getting paid more to do it. Even a CEO could find time to work on a pet project. (certainly beats the hell out of golf(i think))

      The specie you are talking of are an evil worse than the marketroid drones, or even the dread PHBs. You speak of the Pretengineers, the false.

      They know only ever enough to be dangerous- for they do not love the craft which they proclaim to master. Any venture they manage is doomed.

  34. Not "fron scratch" by Brian+Kendig · · Score: 4, Insightful

    Just a correction to a point raised in the interview:

    Netscape made the "single worst strategic mistake that any software company can make" by deciding to rewrite their code from scratch.

    Netscape didn't rewrite the browser from scratch. Back in April 1998, Communicator 4 was the current version; to get from there to the open-source Mozilla browser, everything that couldn't be distributed (code from other companies, and security code with export restrictions) was stripped out of the source code. What was left was made available as the start of Mozilla. It didn't even compile at first, but Mozilla didn't start from scratch.

    Admittedly, the fact that this next-generation browser hardly worked at all for more than three years did keep Netscape from capturing any market share, but the browser had already been commoditized, and the battle had already been lost.

    I think that the real browser battle is yet to come -- when the bulletproof and iron-clad Mozilla, carefully fine-tuned to scratch every developer's personal itch, is finally ready sometime next year to take on whatever Microsoft has got. I think that's when the real interesting things will happen -- not just on the technical and marketing fronts, but also on the legal front, as Microsoft finds ways to make sure Mozilla isn't a threat...

    1. Re:Not "fron scratch" by Anonymous Coward · · Score: 0

      That was the way they first started, but didn't they dump all that and start over again a year into the project?

    2. Re:Not "fron scratch" by 1in10 · · Score: 2, Informative
      Rubbish, they did start from scratch.

      http://www.gerbilbox.com/newzilla/netscape6/genera l01.php

      As it states right on mozilla's own FAQ:

      In 1998 it was originally planned for Netscape 5 was to be based on MozillaClassic, with Netscape 6 be based on the Gecko rendering engine. But MozillaClassic was scrapped in favor of a code rewrite late that year, and Gecko has been the heart of the Mozilla browser ever since. So when MozillaClassic was scrapped, the "Netscape 5" moniker was scrapped with it.
    3. Re:Not "fron scratch" by Anonymous Coward · · Score: 0

      > -- when the bulletproof and iron-clad Mozilla,

      HAHAHAHAHAHAHAHAHAHAHAHAHA.

    4. Re:Not "fron scratch" by Lumpy · · Score: 2

      This is fine, and I hope mozilla does get going fast in the market. but I have one really burning question that noone is willing to answer.

      Why the hell isnt the mozilla team working on the browser and only the browser? Strip out email,news,creator or whatever they call it.

      All I want is a stable fast and secure web browser. I dont want a contact manager, themeability, pretty blinkin lights beeping and all they other crap that is slowing the app and development down.

      Please please can someone tell me when I can use mozilla to access my online banking? and when it will stop being bloatware?

      maybe a fork is in order.

      --
      Do not look at laser with remaining good eye.
    5. Re:Not "fron scratch" by archen · · Score: 1

      because Mozilla is a FRAMEWORK. You make what you want out of it. A browser is simply a part of it. Other projects are already starting to use this framework, such as komodo (sp?). If you just want "a browser" you can use derivatives of Mozilla such as galeon and kmelion. It is open source you know

    6. Re:Not "fron scratch" by archen · · Score: 1

      Mozilla ironclad? I think mozilla will be bullet proof, but more in the same way that jello is bullet proof. You can shoot at jello all you want but there really isn't a whole lot you can do to it.

    7. Re:Not "fron scratch" by Lumpy · · Score: 2

      Unfortunately both of those projects are not what they seem.

      Both list in their requirements that you have mozilla installed.

      I hope eventually they can make their own project, until then it's Netscape 4.7 for the only browser under linux that works with secure web servers.

      --
      Do not look at laser with remaining good eye.
    8. Re:Not "fron scratch" by Rupert · · Score: 2

      I do my online banking in Mozilla. Why don't you? I only install the browser, not any of the other stuff, so the bloat doesn't bother me (other than the waste of talented people's time).

      --

      --
      E_NOSIG
    9. Re:Not "fron scratch" by Anonymous Coward · · Score: 0
      bulletproof and iron-clad Mozilla...finally ready sometime next year

      Mozilla has been 'almost ready', out 'sometime next year' for 2 years now. Admittedly, they have finally done a feature freeze, but given that the current versions STILL crash under my system (and a number of other people's), I don't have much hope for it. Still sticking to NS4.7x. I mean, it's been crashing and not working after that for versions over the past 1.5years. Just because we are a minority who can't get it to run, I don't see why they have ignored us for so long while pursuing their stupid skins.

    10. Re:Not "fron scratch" by archen · · Score: 1

      oh? Well that's news to me. I've installed kmelion without Mozilla. I believe galeon also eventually resolved issues that allow them to package everything together

    11. Re:Not "fron scratch" by Anonymous Coward · · Score: 0
      Why the hell isnt the mozilla team working on the browser and only the browser? Strip out email,news,creator or whatever they call it.

      While we're at it, why are people still pissing away time and energy and money on Linux for platforms besides x86? Nobody that counts uses PowerPC or SPARC, the same way that nobody that counts uses Netscape's email client or HTML editor. Linus Torvalds and Alan Cox should only be spending their time and effort on exactly what parts of the Linux kernel I use! If it's good enough for me it's good enough for everybody!

  35. Projects Failing by Silverwolf0 · · Score: 1

    Projects fail because people have good Ideas but can't ever get them on the market because either, people can't accept it because it is above their head, or it wasn't practicle.

    --
    You Don't have to burn books to destroy a culture, you just have to get people to stop reading them. Ray Bradbury
  36. Hindsight alert, hindsight alert! by hansk · · Score: 1

    Granted, Joel has written some interesting articles in the past but this interview screams of hindsight.

    How about something new and interesting?

  37. Sure-fire way of making a software project fail: by kcbrown · · Score: 4, Insightful
    1. Act like a cheezy salesdroid. Promise to implement everything the "customer" (usually some other department of the company) requests and tell them that it will be done in a very short period of time like, say, a month or two. Mutually exclusive features are really good here. Say and do whatever it takes to "sell" them on the project.
    2. Talk with the "customer" on a regular basis. Promise to make all changes that they request, especially the ones that would normally be far outside of the scope of the project -- the ones that any sane engineer would insist requires a redesign. Promise that it won't be a problem to make these changes and that it'll only take a couple of weeks at most.
    3. Push your developers hard. I mean really hard. They'll have to work 20 hour days for weeks at a stretch in order to meet the design goals and the target release date, after all, and they do work for you, after all, and you did promise the "customer" it would be done on time, after all. When the project gets behind schedule, fire the team lead(s) to provide "motivation" for the rest of the developers and to show everyone that you mean business. They were just getting in the way anyway. It doesn't matter that they had the most knowledge about the project, because we all know that software is easy.
    4. When you near completion of the project (assuming your developers haven't bailed out on you already, but hey, the economy sucks right now so they'll be happy to be your bitches), hold another meeting with the "customer". You're almost sure to discover that they didn't really need what you're building that much anyway. Oh, well, at least it was good exercise for your developers! At least, for those that are still around. Hold a meeting with your developers, declare victory, and retreat (um, I mean "advance in the opposite direction").

    No, I'm not cynical. Honest.

    --
    Use 'slashdot stuff' in the subject line in any email you send me if you want to get past the spam filter.
  38. Program Manager != Programmer by Osty · · Score: 4, Interesting

    From the interview's lead-in material:

    As a Program Manager on the Microsoft Excel team, Joel designed Excel Basic and drove Microsoft's Visual Basic for Applications strategy.

    At Microsoft, the job title of Program Manager is given to the people that design the software. They dream it up, write the specs, hold countless meetings, and basically lay the path for the developers to follow. The developers (Software Design Engineer) are tasked with actually programming that software (and thus would be considered "programmers"). Just to round out the roster, the Software Design Engineers in Test (SDET) write the testing suites used by the test teams, and the Software Test Engineers apply those suites to the code following a test plan that they create. In that heirarchy, only the SDE and SDET jobs could be accurately described as "programmers".


    Note that this is actually not so cut and dried, wherein SDEs often do design work and test work, and SDETs often do the work of SDTs. PMs don't program, however (well, aside from javascript&html prototypes, anyway).


    The point? Calling this Joel an ex-Microsoft programmer is misleading, because he was not. However, the position he held at Microsoft actually lends more credence to his views on design than if he were actually an ex-programmer, as part of the job description of a program manager is doing software design.


    (Brief descriptions of all these job titles can be found at Microsoft's college site.)

    1. Re:Program Manager != Programmer by Glint · · Score: 1

      That must have been quite an ego on those Windows 3.x Program Managers. You know, making sure one gigantic window named after you was needed to make anything run.

    2. Re:Program Manager != Programmer by Thatman311 · · Score: 0

      wherein SDEs often do design work and test work, and SDETs often do the work of SDTs

      What is a SDT? Did you mean to say STE (Software Test Engineer).

      --
      Silly Rabbit...Sig's are for kids.
    3. Re:Program Manager != Programmer by Osty · · Score: 1

      Oops, silly fingers. SDT == Sexually Dransmitted Tisease. STE == Software Test Engineer.

  39. Microsoft's Competitor's Incompetence? by Donut · · Score: 1

    Hmmm....one interesting thread in his article was that Microsoft was able to beat their competitors (in the application space) not with any evil, monopolistic scheme. Instead, Microsoft's software development was less incompetent than their competitors. The two greatest words in the English language! De Fault!

    Well, I guess the more-incompetent competitors can always "buy" a nice government lawsuit. That'll make it even.

    -Donut

    1. Re:Microsoft's Competitor's Incompetence? by BitwizeGHC · · Score: 2

      I think their software was just less incompatible than their competitors'. Remember "DOS isn't done till Lotus won't run"? Remember DR DOS and Windows 3.1? Microsoft's stranglehold on the PC platform is instrumental to its success.

      --
      N4st0r, trixx0r h0bb1tz0rz! Th3y st0l3 0ur pr3c10uzz!
    2. Re:Microsoft's Competitor's Incompetence? by RGRistroph · · Score: 1

      Part of the case against Microsoft is that certain things are illegal once you are a monopoly, even if you got that monopoly legally, indeed even if the government personally handed it to you, as in the case of a public utility.

      If Microsoft is a monopoly, then Microsoft cannot require OEMs to buy a license for windows for every computer shipped that has only linux on it. Regardless of how Microsoft got that way.

  40. This guy is a turd! by king_ramen · · Score: 5, Interesting
    Ok, I give him points for pragmatism. I don't think anybody in their right mind will criticize Microsoft for failing to capture market share.

    However, I feel slimy for just reading that stuff. Here is what I got:

    1. Bugs are fine if they get your product delivered.
    2. Load in useless features to drive sales, knowing that your code will suck.
    3. Once you have gobs of crap code and a large user base, there will never exist the possibility of re-designing things (eg, WinXP) since it doesn't matter that code sucks (see point 1) and all that counts is revenue.
    4. Being efficient is a waste of time. Let the hardware catch up with the crap code.
    5. The customer never has valid input anyway.
    6. Do it fast and furious, even if January 1900 is broken. Consumers are idiots anyway.

    These may be great for sales, but ultimately you will build crap. Garbage in, garbage out. I would rather design good software that was well designed and efficient than vomit up mounds of bloat that will ultimately topple under its own weight.

    Software built poorly will never hold up over time. If you look at how little UNIX has had to change over the past 30 years to keep up with "The Internet Age" versus the amount of work done to get XP "working", the future looks bleak for Microsoft. In 20 years, their OS need 25GB of RAM simply to boot up. Of course, this seems not to concern them.

    --
    ----- Refactoring is the reason why man does not mistake himself for a god.
    1. Re:This guy is a turd! by Graymalkin · · Score: 2, Flamebait

      How fucking dense are you? Windows XP is a couple of interface changes on top of the Windows 2000 codebase which itself goes back to the Windows NT 3/4 codebase. The NT design paradigm is one where if you want to add features you just add system services. Want to do some funky .NET strategy? Just add a set of services to handle SOAP requests for DCOM objects. You don't just jam a Unix kernel onto some hardware and suddenly the system serves web pages, crunches d.net keys, and makes coffee.

      As for the points you bring up, you can't possibly understand writing software meant to be sold. Bugs are a part of anything, do you think your mom's care rolled out of the factory absolutely bug free? Features do drive sales, sales provide a means for continued development and the feeding of one's family. Not everyone lives with mommy and daddy. Completely trashing old code is often times retarded, clean up dirty patches and whatnot but you don't scrap working code entirely. Writing ultra efficient software is often a waste of time since you're hammered by schedules. Today's screamer is a POS in 18 months, product life cycles are often only a little bit longer than that especially in business environments. People running Windows 95B on old 166 Pentiums are probably still using Office 95 or 97, they don't give a shit about new features. New features are the concern of people who really rely on new dodads and whistles. Customers know shit about development most of the time and you often times know what they are going to say. Read the fucking article man, he goes into why customer's suggestions mean shit.

      --
      I'm a loner Dottie, a Rebel.
    2. Re:This guy is a turd! by slamb · · Score: 4, Interesting

      These may be great for sales, but ultimately you will build crap. Garbage in, garbage out. I would rather design good software that was well designed and efficient than vomit up mounds of bloat that will ultimately topple under its own weight.

      Everything he said was focused on achieving commercial success. He gave solid examples of times when companies did not do as he suggests and failed commercially. I can't think of too many examples of companies that have succeeded overwhelmingly by doing otherwise.

      On the other hand, he did not talk about sculpting perfect software people will use for decades to come. I can think of software that succeeded in this respect, and it didn't do it by following his advice. (TeX comes to mind.)

      For example, he talked about bloatware, saying it is a good thing. "Features make users' lives better if they use them, and don't usually hurt if they don't." I disagree with this when talking about "hurt" as "making the software more painful to use" instead of "cutting sales". Extra features introduce more bugs and take away from the time programmers could be fixing other bugs. They shouldn't be added until everything else is perfectly solid and possibly not even then.

      Really, I think there is a time for to listen to what this guy has to say and a time to completely ignore it. If you're developing a commercial project, his advice has a certain merit. If you're doing something as a hobby, producing a good piece of software you're proud of is much more important than producing a product before your competitors.

    3. Re:This guy is a turd! by Alomex · · Score: 2

      Such a blatant misrepresentation of Joel's comment should be moderated down to -1 troll.

      E.g. the article explicitly states that those "useless" features to you, are useful to somebody else, and that is why they need to be there.
      King ramen's translation?

      2. Load in useless features to drive sales, knowing that your code will suck.

    4. Re:This guy is a turd! by Compuser · · Score: 2

      Here's my take on his comments:

      1. Bugs are an inconvinience to your customers.
      Late delivery is an inconvinience too. Balance
      as appropriate.

      2. There ain't no such thing as a useless feature.

      3. Redesigning code is good sometimes but must be
      done in parallel with active development of old
      code. If you want to redesign your code be prepared
      to double your R&D budget.

      4. Slow (or large) code is an inconvinience to
      your customers. Late delivery is an inconvinience
      too. Balance as appropriate.

      5. If you already plan to throw in the kitchen
      sink, chances are your customers' requests will
      be planned for before those requests are made
      (see #2).

      6. see #1.

      Most coders consider bugs inexcusable, but
      he is not a coder. This guy is a marketoid.
      I do however emphatically agree with him on #2.
      Bloatware is a myth. From bash to emacs, from
      MS Word to Openoffice, users make apps popular
      based on features not tight code. How many
      people regularly use ash, teco (or ed), or wordstar.
      (Ash _is_ useful for some recovery cases but you've
      got to be a masochist to use it regularly.)

    5. Re:This guy is a turd! by Nygard · · Score: 2
      I hear ya. I got the worst feeling when I realized that everything he said makes sense... from a certain twisted point of view.

      It's like this statement I heard about Microsoft once. I can't remember it exactly, but it basically said that every single decision made about the design, features, software, whatever all comes down to one question, "How does this increase market share?"

      It's incredibly depressing to hear somebody say that aesthetically pleasing, technically adept code will always lose to dreck and hackery. It's even worse when you hear yourself start to agree. Bleagh. I'm gonna go take a shower.

      --
      "Genius may have its limitations, but stupidity is not thus handicapped." --Elbert Hubbard (1856-1915)
    6. Re:This guy is a turd! by rodgerd · · Score: 2

      Joel is interested in making commercially successful software. That's why he doesn't care about bloat - he wants the customers an extra feature captures, and he's not too worried if it makes things a bit slower for his existing customers.

      I don't agree with it from an elegance point of view, but there are a lot more people turning a crust with VB/VBScript than there are with LISP.

    7. Re:This guy is a turd! by tcc · · Score: 2

      >You don't just jam a Unix kernel onto some hardware and suddenly the system serves web pages, crunches d.net keys, and makes coffee

      And what about that SETI PCI card?

      Oh... wait...

      --
      --- Metamoderating abusive downgraders since my 300th post.
    8. Re:This guy is a turd! by Anonymous Coward · · Score: 0

      In 20 years, their OS need 25GB of RAM simply to boot up. Of course, this seems not to concern them. Nor should it. In twenty years, 25 GB will be a trivial memory footprint. Memory sizes double every 20 months. So we get 12 doublings in 20 years, or a factor of 4k. This will result in main memory sizes in the 512GB to 1TB range in the year 2021.

    9. Re:This guy is a turd! by Anonymous Coward · · Score: 0

      Everything he said was focused on achieving commercial success. He gave solid examples of times when companies did not do as he suggests and failed commercially. I can't think of too many examples of companies that have succeeded overwhelmingly by doing otherwise.

      Sun Microsystems. Is an example, I can think of many more. If you build a product from the ground up and constantly improve it you. Incorporating features, utils, things that your customers are asking for at the same time not neglecting your core, you will make money.

      IE: Sun dumps CDE for Gnome;
      IE: Sun lowers pricing for Netra line of servers
      IE: Sun dropping prices on their small desktop line
      IE: Sun offers the best quality support around

      Sun concentrated on it's customers and not about Unix VS NT, infact Sun laughed at NT when Microsoft announced it however there was no argument from Sun even though Microsoft tried to start one.

      There are several other companies that provided quality stuff but got caught up in some battle with Microsoft. The point is, don't waste time fighting Microsoft, use your time to continue to provide quality stuff to your customers. Ignore them because as soon as you get into some compo with Microsoft you will either be bought out or crushed due to deep pockets. Ximian will either be bought out or crushed by Microsoft, Microsoft doesn't play fairly, they never will and I don't believe they should, that's not the captialist way. However the only way for Microsoft to be crushed is to beat them on the levels of technical superiority and quality support. Marketing only goes so far and Microsoft knows the best Marketing, advertising etc is "word of mouth".

      The only reason the opensource movement still exists for the most part is because in our side of the pool most of the stuff is free and we have "word of mouth" behind us IE: Rich, Eric etc. If we charged even a small amount the GNU/opensource/freeware movement wouldn't be where it is today.

      With RedHat's and Mandrakes etc that keep the integrity and core together, IE: low cost, good support now is a good time to invest in those type of companies. Microsoft isn't going to be king forever.

      Let your competition, call you competition.. you just ignore them all together.

    10. Re:This guy is a turd! by philipm · · Score: 0

      Good point about sun.
      Actually I think the good competition you mentioned will make MS stronger.
      I see real value add in their latest generation products. Given the great big head start they had, only Open source's viral parasitic nature of total control and exclusion can compete. Certainly not the quality.

    11. Re:This guy is a turd! by Jucius+Maximus · · Score: 1
      ""Features make users' lives better if they use them, and don't usually hurt if they don't." I disagree with this when talking about "hurt" as "making the software more painful to use" instead of "cutting sales". Extra features introduce more bugs and take away from the time programmers could be fixing other bugs. "

      The MS office helpy-helper paperclip character comes to mind ;-)

    12. Re:This guy is a turd! by Anonymous Coward · · Score: 0
      In 20 years, their OS need 640k of RAM simply to boot up. Of course, this seems not to concern them.

      A more coherent and correct explanation of why Linux is doomed to failure and we will be using our Commodore 64 well into the 22nd century I have never seen.

  41. Another interesting read... by Skim123 · · Score: 4, Interesting
    From Robert Cringely: Microsoft's C# Language Might Be the Death of Java, but Sun's the One to Blame

    Yes, there are a lot of companies who have been squashed (or, as Joel would say, "Had their lunch eaten") by Microsoft in large part because of Microsoft's money/marketing, but there are also a lot of companies that nose dived into failure because of their own ignorant business and technology decisions.

    While Microsoft may not like the costs and annoyance of court cases and DOJ action, it must give them some satisfaction because most of those companies bringing suit against Microsoft are doing so because they think that's their best option. I would argue that for these plantiffs making better products would be a "better option."

    --

    I could not justify my existence if I were a turkey farmer. Would I terminate myself? Undoubtably, yes.

    1. Re:Another interesting read... by Andrewkov · · Score: 2

      I had my lunch eaten at work today .. I thought it was stolen by a guy in a cubicle down the hall, but now I'm not so sure .. could it be that Microsoft ate my lunch?

    2. Re:Another interesting read... by sheldon · · Score: 1

      There was another interesting article on a related topic:
      http://news.cnet.com/news/0-1003-201-7943716-0.h tm l

      It's a new book from Harvard Business titled "The Innovator's Dilemma: When New Technologies Cause Great Firms to Fail". It talks about disruptive technologies. Linus Torvalds made a comment about how Sun is inbreeding, which I think is related to this author's idea.

      I've long held the opinion that companies that think a lawsuit is their best option are on their way to nowhereland. Hayes, Apple, Lotus, Rambus, etc. Sometimes the company learns(Apple) and drops the lawsuits and begins working on new product ideas, but usually they end up getting passed over in the market space.

      Take Lotus for example, they sued Borland over 1-2-3 compatibility. In the meantime while they are fighting, Microsoft pushes forward with Excel and grabs all the market.

      Sun, right now, is fighting wars on multiple fronts and not really realizing it. They view Microsoft as their chief threat, but are losing most of their marketshare to AIX and Linux. But how is Sun responding? Well they sue Microsoft, and they say IBM doesn't know anything about computers. Meanwhile they ignore Linux under the premise of "the enemy of my enemy is my friend".

      Will they wake up(as Apple did) or will they face oblivion? Unless the management get's shaken up(i.e. lose McNealy), I see them facing oblivion in a few years time.

    3. Re:Another interesting read... by Malcontent · · Score: 2

      Well I can think of a few companies that sued MS and got a ton of money in settlements.
      Sun won their suit flat out.
      Borland suit got settled and MS gave them over a 100 million dollars.
      The Coral suit was settled when MS dumped a bunch om money in their laps.
      Apple also got a ton of money in exchange for dropping their suit.

      As for the DOJ action that was taken by the govt. The govt won that case too and the verdict was upheld. Of course while on trial MS spread around the cash and got their butt boy in the AG position and their pupper in the white house so they got rewarded instead of punished but that's a different story.

      All in all MS made out great in the lawsuits. The money they gave out in settlements was a tiny percentage of their profits from stealing other peoples technologies and employees and the DOJ handed them a licence to steal. Not bad at all.

      --

      War is necrophilia.

  42. Hmmmm by Anonymous Coward · · Score: 0

    How To Make Software Projects Fail?

    How about asking Microsoft. They seem to do this every chance they get.

  43. Re:Not sure how to take Joel and the MS experience by Anonymous Coward · · Score: 0

    The evil comes from the top, not the guys who are hacking out the code. Those guys are not the problem , it's the bloodthirsty evil bastards who run the company that we hate.

  44. Re:Trying to hire female and minorities as a quota by Skyshadow · · Score: 1, Flamebait
    I think you sound like a bit of an idiot with your little rant, but it did help me come up with one:

    - Hire a bunch of people who don't share fluency any one language in common. Throw them all together and make no provisions to improve communication.

    This is happening at my comany -- we're roughly 50% Chinese and 50% Americans/Canadians (not all white, but all native english speakers). We can't communicate very easily because the Chinese don't speak much english and the rest of the company doesn't speak much Chinese.

    So, we end up just trying to work around each other -- since we only have two people who speak both languages fluently, we have to pick and choose how we use 'em. Pretty dumb.

    --
    Every year during my review, I just pray the words "slashdot.org" aren't mentioned.
  45. Re:problem = clueless management/directors/execs e by version3 · · Score: 1

    Actually, as long as the non-business engineer does his job he's a lot less dangerous than the business people who refuse/ are unable to understand the limitations in engineering. Unless, of course, the engineer is *shudder* in charge of schedules or budgets.

    --
    "Can I say you're my lovepuppy?" Founding member of SODAMNHOTT
  46. Re:Trying to hire female and minorities as a quota by Anonymous Coward · · Score: 0

    Asians can be good coders. They are like worker ants in that respect. But I would not rely on an Asian to come up with a creative design or great product idea. Their minds don't work like that.

  47. Re:or (4).. by Pentagram · · Score: 1

    or (4), given the current state of the world economies, all the coders are trying to keep a bit of job security.

  48. idiot. by Anonymous Coward · · Score: 0

    moores law is not going to be around forever, and if you take it
    away, just about everything he says is crap.

    he treats people with old computers with as much disdain as
    gnome programmers do, its pathetic.

  49. Why the Linux project fails by Anonymous Coward · · Score: 0, Troll

    Let's have a close look at the costs involved when running a Linux system.

    An important factor in Linux' cost is its maintenance. Linux requires a *lot* of maintenance, work doable only by the relatively few high-paid Linux administrators that put themselves - of course willingly - at a great place in the market. Linux seems to be needing maintenance continuously, to keep it from breaking down.

    Add to this the cost of loss of data. Linux' native file system, EXT2FS, is known to lose data like a firehose spouts water when the file system isn't unmounted properly. Other unix file systems are much more tolerant towards unexpected crashes. An example is the FreeBSD file system, which with soft updates enabled, performance-wise blows EXT2FS out of the water, and doesn't have the negative drawback of extreme data loss in case of a system breakdown.

    According to Linux advocates, an alternative to EXT2FS would be ReiserFS. Unfortunately, ReiserFS is still in beta stage. This means it is not intended for production use (although according to many Linux advocates this shouldn't be a problem, which makes me wonder how (little) valuable they find your data).

    The other proposed 'solution', EXT3FS, is nothing more than an ugly hack to put journaling into the file system. All the drawbacks of the ancient EXT2FS file system remain in EXT3FS, for the sake of 'forward- and backward compatibility'. This is interesting, considering that the DOS heritage in the Windows 9x/ME series was considered a very bad thing by the Linux community, even though it provided what could be called one of the best examples of compatibility, ever. When it's about Linux, compatibility constraints don't seem to be that much of a problem for Linux advocates.

    Back to Linux' cost. Factor in also the fact that crashes happen much more often on Linux than on other unices. On other unices, crashes usually are caused by external sources like power outages. Crashes in Linux are a regular thing, and nobody seems to know what causes them, internally. Linux advocates try to hide this fact by denying crashes ever happen. Instead, they have frequent "hardware problems".

    The steep learning curve compared to about any other operating system out there is a major factor in Linux' cost. The system is a mix of features from all kinds of unices, but not one of them is implemented right. A Linux user has to live with badly coded tools which have low performance, mangle data seemingly at random and are not in line with their specification. On top of that a lot of them spit out the most childish and unprofessional messages, indicating that they were created by 14-year olds with too much time, no talent and a bad attitude.

    I could go on and on and on, but the conclusion is clear. Linux is not an option for any one who seeks a professional OS with high performance, scalability, stability, adherence to standards, etc.

    1. Re:Why the Linux project fails by Drahca · · Score: 2, Informative

      An important factor in Linux' cost is its maintenance. Linux requires a *lot* of maintenance, work doable only by the relatively few high-paid Linux administrators that put themselves - of course willingly - at a great place in the market. Linux seems to be needing maintenance continuously, to keep it from breaking down.

      And you base that on? I admit that Linux takes a lot of work to setup and is badly documented. So as an administrator you need to know a lot of stuff and have experience. Therefor good sysadmins are scarce, and earn a decent living. But when Linux is actually running it just doesn't brake down like that and doesn't require hours of maintenance, it just works!

      About the EXT2 filesystem. It has had its best time and should be replaced. Ext3 is not the *longterm* answer, and I sincerely hope Linux advocates realize this. The reason Redhat is using ext3 as its new default FS is simple, there is no valid alternative. Ext3 is the *only* new Linux FS which is included in the newest kernel release, it is mature and fully tested. There however are alternatives on the way. Such as XFS and ReiserFS. I hope one of those FS's will become the new default FS for Linux. It is after all beter to have one good FS, that several mediocre ones.

      Back to Linux' cost. Factor in also the fact that crashes happen much more often on Linux than on other unices. On other unices, crashes usually are caused by external sources like power outages. Crashes in Linux are a regular thing, and nobody seems to know what causes them, internally. Linux advocates try to hide this fact by denying crashes ever happen. Instead, they have frequent "hardware problems".

      Please! If this was true than why oh why are SGI and IBM (and many others) putting so much effort in Linux? Ah right, to patch it and make it work...

      The steep learning curve compared to about any other operating system out there is a major factor in Linux' cost. The system is a mix of features from all kinds of unices, but not one of them is implemented right. A Linux user has to live with badly coded tools which have low performance, mangle data seemingly at random and are not in line with their specification. On top of that a lot of them spit out the most childish and unprofessional messages, indicating that they were created by 14-year olds with too much time, no talent and a bad attitude.

      No argument here. Even if you stick to software from the distros themselves you end up with buggy programs with GUI's that resemble, well, don't know anything quite so bad. That give error messages like: "Error: Unkown Error" or "Oops!" or "valoir parser" (french). This really is a problem. And I hope this will be adressed in the future.

      I could go on and on and on, but the conclusion is clear. Linux is not an option for any one who seeks a professional OS with high performance, scalability, stability, adherence to standards, etc

      standards..like POSIX? Scalability you mean as in SMP, beowulf.. Performance as in used on many a webserver.

      Face it, Linux is evolving rapidly, and perfect as it may not be, it is one damned usable, scalable, well performing, stable, FREE OS!

    2. Re:Why the Linux project fails by Anonymous Coward · · Score: 0

      What complete tool marked this as interesting? Obviously the fish are biting today.

    3. Re:Why the Linux project fails by flacco · · Score: 2, Troll
      I could go on and on and on, but the conclusion is clear. Linux is not an option for any one who seeks a professional OS with high performance, scalability, stability, adherence to standards, etc.

      You could go on, but it's the end of a workday and you have to punch the ol' Microsoft time clock.

      --
      pr0n - keeping monitor glass spotless since 1981.
    4. Re:Why the Linux project fails by elflord · · Score: 2
      An important factor in Linux' cost is its maintenance. Linux requires a *lot* of maintenance, work doable only by the relatively few high-paid Linux administrators that put themselves - of course willingly - at a great place in the market. Linux seems to be needing maintenance continuously, to keep it from breaking down.

      Hogwash. Any operating system needs basic maintenance in the form of security updates. However, it's simply false that Linux "falls apart" all by itself.

      According to Linux advocates, an alternative to EXT2FS would be ReiserFS. Unfortunately, ReiserFS is still in beta stage.

      What do you mean by this ? The current release of ReiserFS is not a .0 release, it ships with production kernels, and IIRC SuSE uses it by default.

      This means it is not intended for production use

      Nonsense. Read the ReiserFS webpage. It's a mature project, and it's perfectly fit for production use.

      Crashes in Linux are a regular thing, and nobody seems to know what causes them, internally.

      On what basis do you make this claim ? I admin several Linux boxes, and crashes are rare. Downtime usually consists of kernel upgrades, power outages, and OS upgrades.

      I could go on and on and on, but the conclusion is clear.

      Given the fact that your reasoning seems to be based upon your conclusion, and not the other way around, I find myself agreeing with this assertion.

    5. Re:Why the Linux project fails by Anonymous Coward · · Score: 0

      Odd that you should say Linux "falls apart" by itself. I use Linux at work and Windows 2000 at home (don't ask), and I find that (even though I wind up tinkering much more with Linux) Windows still crashes more often and at the oddest times.

    6. Re:Why the Linux project fails by Scooby+Snacks · · Score: 1
      The reason Redhat is using ext3 as its new default FS is simple, there is no valid alternative. Ext3 is the *only* new Linux FS which is included in the newest kernel release, it is mature and fully tested. There however are alternatives on the way. Such as XFS and ReiserFS.
      Actually, ReiserFS has been in the kernel since 2.4.1-pre8, and is available as an install option in most distributions. Ext3 just got added in 2.4.15-pre2.
      --

      --
      Runnin' around, robbin' banks all whacked on the Scooby Snacks...
    7. Re:Why the Linux project fails by elflord · · Score: 1
      Odd that you should say Linux "falls apart" by itself.

      That's not what I said at all. Read my post again, and go beat yourself with a cluestick.

  50. How To Make Software Projects Fail by Anonymous Coward · · Score: 0

    Design it using Linux... youll spend more time fixing Linux than writing your program

  51. All things in moderation--including comments by achurch · · Score: 3, Insightful

    I'll agree with your other points, but this:

    Copious Comments - Lots of comments, clearly written and explanatory. [...] The best comment I heard was from a friend about a former coworkers code: "It's English with some C++ thrown inbetween the comments."

    is nonsense. If your code isn't written well enough to make it obvious to another programmer what it does, then no amount of documentation will help the poor sop who comes along after you and has to maintain your code. Programming languages are just that--languages--and can be used to express concepts just as well (better, in some cases) than human languages. For example, if I see:

    for (i = 0; i < array_size; i++)
    free(array[i]);
    free(array);
    then it's perfectly obvious that it's freeing the contents of an array; I don't need you to tell me so in a comment, and in fact if you do, it gets in the way. As one of my university professors said, "Use comments to tell me something I don't know."

    Comments are good things, of course--used sparingly. But there is such a thing as "too much of a good thing."

    1. Re:All things in moderation--including comments by lost_it · · Score: 1

      You're right, to some extent. Generally, my comments aren't explaining _what_ the code does, but _why_ it does it, and include a brief description of any peculiarities. Sometimes this isn't necessary, sometimes it's a godsend. Comments are particularly useful when you're searching for the section of code that does xxxx.

      You're code example of freeing an array is self-explanatory if it's in a destructor, or in some other function where freeing memory is in the name of the game. But if it's in the middle of a program's execution, it'd be really useful to know why you suddenly decided that the entire array is useless. Was the data preserved someplace else? Is it going to be refilled? Those are a few of the questions that come to mind.

      I realize that the answers would be somewhere else in your code, but when I'm trying to find a bug or understand that specific function, I don't want to have to go wandering around the entire codebase.

      If you don't believe comments are important, find code that you haven't touched in 2 or more years. Now try to add some significant features. I had to do this _once_, and now my code is always at least half comments.

      "A stitch in time saves nine." Comment code while you still remember what the heck you're doing!!

    2. Re:All things in moderation--including comments by Canthros · · Score: 1

      I would like to respectfully disagree: the problem is not that a thing seems obvious to you, the problem is that you can't assume on the experience or intelligence of those who have to maintain your code later.

      Your example seems obvious to you because you're used to concepts like memory (de)allocation and you're used to the C language. Someone without the same background won't immediately recognise that you're deallocating memory because they won't know that free() deallocates memory. Suppose they learned Java in college and not C or C++ (I know of at least one school which started teaching Java as the primary language in the curriculum).

      A comment like /* deallocating used memory */ or something to that effect doesn't strike me as troublesome. If you can't skim over something on your screen, perhaps the problem is with you? Code lives a long time. Write it with the assumption that the next person knows nothing about the system the program models, that the next person knows nothing more than the basics of the language.

      It's not like you need to comment everything you do. But explaining the purpose of a loop in brief statement won't kill you and shouldn't bother anyone else, either.

      As one of my university professors said, "Use comments to tell me something I don't know."

      Well, you need to write to your audience. Your professor doesn't want to read comments like that because he uses comments as a signal that something relevant to the class assignment just happened. The next guy who gets your code in a work environment, however, might be the idiot man-child in the cubicle next to you. You know, the one that can't figure out how to plug in his ethernet cable?
      --
      Canthros
    3. Re:All things in moderation--including comments by achurch · · Score: 2

      You're right, to some extent. Generally, my comments aren't explaining _what_ the code does, but _why_ it does it, and include a brief description of any peculiarities.

      Thanks, that's basically what I was trying to say. On the other hand, I've also seen code that was, as the original poster said, "English with C++ sprinkled in between" (well, plain C in my case), and it was surprisingly hard to maintain--just because what would normally be a 20-to-30-line block of code had expanded to several screenfuls worth, and it was taking more time to wade through all the comments than it would have taken to just glance at the code and say "oh, this is doing XYZ".

      If you don't believe comments are important, find code that you haven't touched in 2 or more years. Now try to add some significant features.

      I've had to do this, as it happens, and this is why I also comment a lot more than I used to. (Which unfortunately doesn't help the older code, but I guess I'll just have to fix it as I go along.)

    4. Re:All things in moderation--including comments by achurch · · Score: 2

      I covered most of these in another response, but two minor points:

      our example seems obvious to you because you're used to concepts like memory (de)allocation and you're used to the C language. Someone without the same background won't immediately recognise that you're deallocating memory because they won't know that free() deallocates memory.

      Then why are they trying to use C in the first place? When I stop to think about it, I find it truly odd that software companies have no qualms bringing in someone with little or no experience to work on critical projects.

      Well, you need to write to your audience.

      Well, that example looks like it was a bad choice, because it's getting misinterpreted all over the place; the professor in this case was talking about general programming style.

      (Oh, and I'm not usually the trolling bastard I probably sound like; I just got up on the wrong side of the bed, I guess.)

    5. Re:All things in moderation--including comments by Sunir · · Score: 1
      it was surprisingly hard to maintain

      I usually just delete any comments I find to be annoying (as well as rename variables, align indents, etc.) until the code is readable. Also, the more I code, the more idioms I learn, the more of my own comments I delete as being silly. I think everyone goes through this as part of the learning process, though maybe not everyone deletes their own useless comments.

    6. Re:All things in moderation--including comments by Old+Wolf · · Score: 2

      I don't agree with this. Certainly , useless comments suck, but "free the array" is not entirely useless here.

      It is easy to look down a function and quickly pick out all the English strings so you know what it does. It takes a little longer to pick the meaning of the code segment you gave, and even then, requires a little bit of consciousness, so you may miss it when browsing quickly.

      Of course this assumes that your code actually does what the comments say -- but if not then you shouldn't be programming

    7. Re:All things in moderation--including comments by beable · · Score: 1
      for (i = 0; i < array_size; i++)
      free(array[i]);
      free(array);
      then it's perfectly obvious that it's freeing the contents of an array
      Actually, it's freeing the contents of the array and it's also freeing the array. Maybe you need to write some more comments, dude. ;-)
      --
      ...
    8. Re:All things in moderation--including comments by dillon_rinker · · Score: 3, Insightful
      make it obvious to another programmer what it does
      The point of comments is not to say WHAT you're doing...as you say, that's obvious. The point is to say WHY you're doing it.
      d := d*360/400;
      x=gsin(d);
      d := d*400/360;
      Any programmer can see that I'm mangling d and calling a function. It might be useful to add the following comment, though...
      // gsin function requires argument in gradients
      // convert d from degrees to gradients before
      // calling the function, then convert it back
      Now, when you're trying to improve performance or figure out why d changes value subtly in this routine, you can rewrite the code as
      x=gsin(d*360/400);
      Comments are good things - you should use them copiously to explain your thinking. Any compiler can figure out WHAT you're doing; a human being can thus do likewise. Only a sentient being can determine WHY you're doing it. Use your comments to communicate with sentient beings. It may take a paragraph to explain a single line of code. A page of code may require only a single line of comment. Use your own judgement, but always remember that your target audience is someone completely inexperienced with your project somewhat inexperienced with the language you're using.
    9. Re:All things in moderation--including comments by rgmoore · · Score: 1
      If your code isn't written well enough to make it obvious to another programmer what it does, then no amount of documentation will help the poor sop who comes along after you and has to maintain your code.

      This is frequently true, but not always. Code that is heavily optimized for speed may wind up using some really nasty and non-obvious tricks to get the job done faster. Those are a small minority of cases, but they are an instance where good documentation of both purpose and method is important.

      --

      There's no point in questioning authority if you aren't going to listen to the answers.

    10. Re:All things in moderation--including comments by Cro+Magnon · · Score: 1

      I couldn't agree more! Many times I've looked it a portion of a program that hasn't been touched for years, and it did something strange and I'd say "WTF". I could tell WHAT it was doing, but I had no clue as to WHY. Of course, my predecessor didn't belive in comments, and he had won the lotto/gone senile/died long ago.

      --
      Slow down, cowboy! It has been 4 hours since you last posted. You must wait another few hours.
  52. A little unrealistic by Ars-Fartsica · · Score: 5, Insightful
    Joel assumes that crusty code is always filled with knowledge. No, sometimes its filled with crap. More code often means more bugs, not less.

    I agree with the spririt of what he is saying - often the "rewrite" is an ego thing - one programmer wanting to write his code instead of reading someone else's, but there is no doubt that most serious professional programmers have looked at code that simply needs to be thrown away.

    1. Re:A little unrealistic by dangermouse · · Score: 1
      Not to mention the fact that most serious professional coders would rather just fix a problem and move on to working on new development than rewrite some crusty old crap that already hobbles along satisfactorily.

      I can't tell you how often I want to just write the following comment and go on to the next project:

      /* this has been reduced to a previously solved problem */

    2. Re:A little unrealistic by Anonymous Coward · · Score: 0

      > Joel assumes that crusty code is always filled with knowledge. No, sometimes its filled with crap. More code often means more bugs, not less.

      And, often as not, that "knowledge" is based on 5-10 year old fixes & history, none of which is relevant to currently used systems or users. Cleaning up such crusty code is a Good Thing.

    3. Re:A little unrealistic by Reziac · · Score: 1
      A good example is WordPerfect. When Corel bought WPWin7, they found that given WPCorp's aversion to Windows and Novell's half-assed upgrade and lousy code maintenance (they did fine fixing WP6.1, but messed up with WP7) ... it was impossible to maintain let alone upgrade without piling on the kludges, and even then it wasn't going to be stable.

      So Corel made the decision to totally rewrite the codebase from scratch. The result is WP8, which is a third smaller, much faster, very stable, and still the same core product for those who liked previous incarnations. (Yeah, they missed a few things and didn't get the WP5.1 filter quite right -- tho that's only visible to people who view their documents with a hex editor -- but it's close enough that it's still clearly WordPerfect.)

      BTW this isn't hearsay, this is from a conversation I had with the Corel WP developer team during the WP8 roadshow (plus many years ongoing experience with WP itself -- I own some 17 or 18 licensed copies from v4.1 to v10).

      Now I suppose some moron will jump in with how Corel and WP are failures, but that's management, not coding.

      --
      ~REZ~ #43301. Who'd fake being me anyway?
    4. Re:A little unrealistic by Reziac · · Score: 1
      I forgot to mention that Corel's total rewrite of WordPerfect (as WP8) only took about 8 months, which was the same timeframe they'd allotted for upgrading WP7 to WP8 in the first place. So it didn't cost them any extra marketing time, and saved them lots of "who made this mess anyway?" fixing in the future.

      --
      ~REZ~ #43301. Who'd fake being me anyway?
    5. Re:A little unrealistic by mpe · · Score: 2

      And, often as not, that "knowledge" is based on 5-10 year old fixes & history, none of which is relevant to currently used systems or users. Cleaning up such crusty code is a Good Thing.

      So long as someone understand why the "kludges" are there. Which comes back to the issue of appropriate comments. (Documentation too, but the advantage of comments is that they are there with the code in question.)

  53. I know, I know! by skroz · · Score: 2

    I was just going to say "hand them over to me," but if you want to get all technical and long winded, be my guest.

    --
    -- Minds are like parachutes... they work best when open.
  54. Bloatware by Shafalus · · Score: 2, Insightful

    I have learnt a lot of good practices from one or two of Spolsky's articles, and for that I was prepared to put up with his cocky know-all attitude and routine rubbishing of every software company except the ones he has stock in, but lately he is full of tendentious statements like

    In 1993, Microsoft Excel 5.0 took up about $36 worth of hard drive space. In 2000, Microsoft Excel 2000 takes up about $1.03 in hard drive space. All adjusted for inflation. So stop whining about how bloated it is.

    So the space it takes on the hard drive is the only cost of bloatware? Try downloading IE 6 on a dialup connection and then check your phone bill.

    --

    Linux advocates are in a no Win situation

    1. Re:Bloatware by Anonymous Coward · · Score: 0

      Yah, dude, i fully agree. Try downloading that RedHat distro on a 28.8 line, shit!

    2. Re:Bloatware by NDPTAL85 · · Score: 1

      In the United States you could be on the phone for one minute or 100 days and it would still cost exactly the same per month.

      --
      Mac OS X and Windows XP working side by side to fight back the night.
    3. Re:Bloatware by Shafalus · · Score: 1

      Yes, I am aware of that, but there are still a few billion in the rest of the world for whom that isn't true.

      --

      Linux advocates are in a no Win situation

    4. Re:Bloatware by Shafalus · · Score: 1

      ... and neither does Joel Spolsky. My point exactly.

      --

      Linux advocates are in a no Win situation

    5. Re:Bloatware by Anonymous Coward · · Score: 0

      Try downloading konqueror, or mozilla. IE wins the prize right now, but KDE, Gnome, Mozilla, and other open source browsers are rapidly approaching the same size as IE.

    6. Re:Bloatware by Xoro · · Score: 0, Redundant

      Actually, I totally agreed with him on the bloat issue, especially this comment:

      Joel: There's a famous fallacy that people learn in business school called the 80/20 rule. It's false, but it seduces a lot of dumb software startups. It seems to make sense. 80% of the people use 20% of the features. So you convince yourself that you only need to implement 20% of the features, and you can still sell 80% as many copies. The trouble here, of course, is that it's never the same 20%. Everybody uses a different set of features.

      People keep citing 80/20 when discussing "almost there" free office suites, and this is exactly why that logic doesn't fly. Particularly when the users across a single organization don't even use the same 20% of the features.

      --
      Kill, Tux, kill!
    7. Re:Bloatware by G+Neric · · Score: 1
      I came in here specifically to comment on 80/20, and I searched for it an found your comment. I totally agree with him on pretty much everything he says, but he's wrong about the details of the 80/20 rule they teach in business school, and it's not a fallacy.

      The 80/20 rule is that 80% of your revenue comes from 20% of your customers. It's true. It's probably not that interesting because it simply reflects a normal distribution of spending or something, but its useful to keep in mind.

    8. Re:Bloatware by Anonymous Coward · · Score: 0

      Sure, and money is everything that matters and I have a bridge to sell you, cheap. ;-)

    9. Re:Bloatware by MilTan · · Score: 1

      Try downloading IE 6 on a dialup connection and then check your phone bill

      Well, deal here is to make the same extrapolation he did with hard drive space. Don't think about it in terms of 1993 (dial-up) technology. Try broadband. It took me all of 5 minutes to download IE 6, no different from how long it took me to download IE 3.

      In 1993, sure you had to pay by the hour to access the Internet. Now, you pay 40 bucks a month and get unlimited use. Again, by making the extrapolation to current standards, you realize that your definition of "bloatware" doesn't stand up.

    10. Re:Bloatware by reflective+recursion · · Score: 1

      Ahh. I thought his talk of 80/20 seemed a bit out of place. Didn't quite understand how percent of "features" would be a universal (economic) concept..

      Maybe he was thinking of a "Commercial Software Myth" when he was being interviewed.

      --
      Dijkstra Considered Dead
  55. not rewriting is why ME makes me nau by Velex · · Score: 3, Interesting

    It's supposed to be a simple function to display a window or something, but for some reason it takes up two pages and has all these ugly little hairs and stuff on it and nobody knows why. OK. I'll tell you why. Those are bug fixes. One of them fixes that bug that Jill had when she tried to install the thing on a computer that didn't have Internet Explorer. Another one fixes a bug that occurs in low memory conditions. Another one fixes some bug that occurred when the file is on a floppy disk and the user yanks out the diskette in the middle. That LoadLibrary call is sure ugly but it makes the code work on old versions of Windows 95. When you throw that function away and start from scratch, you are throwing away all that knowledge. All those collected bug fixes. Years of programming work.

    Now, maybe I'm just ignorant because I've never really developed anything with the 640k barrier or had to haggle with XMS and EMS and other whatnot, but it seems to me that those bugfixes are needed because there's something else fundamentaly wrong with the code. IMO, sometimes you just have to rewrite, because your code is just fundamentally wrong.

    Take DOS, for example. Microsoft added Windows. Then they made a bootloader, added real multitasking, and called it Windows 95, which wasn't that bad. Then they made some fixes, and called it Windows 98, which supported newer hardware, but was more unstable. Then only God and the developers at Microsoft know what happened to Windows ME, but that's when the bugfixes started causing bugs themselves. I mean, plugging in a USB printer shouldn't freeze the entire system!

    Microsoft knew that they had a fundamentally wrong approach to an OS, so they wrote NT, 2K, and are new phasing out ME in favor of XP. XP replaces ME because ME is crap. However, this dude doesn't seem to realize that his own company isn't following is "wisdom."

    Maybe I'm just cynnical, but I wonder if there is some kind of ulterior motive here.

    --
    Join the Slashcott! Stay away entirely Feb 10 thru Feb 17! Close all tabs to prevent autorefresh!
    1. Re:not rewriting is why ME makes me nau by Anonymous Coward · · Score: 0

      Hey genius, Joel hasn't worked at Microsoft for over 6 years. Microsoft isn't "his own company".

      Try actually READING the article next time. Feel free to ask for help with the big words.

  56. Re:Taking lessons from...Better Yet Check this one by tomreagan · · Score: 2

    I agree with one of these.

    3.) Actually, if there is one lesson we have learned in the past 20 years, it is that hardware vendors have an almost impossible time making people recompile.You need only witness the design of IBM's OS/400 platform, which places a thin layer of microcode between the processor and the OS, the problems Intel has had in generating support for Itanium, and the transition to Java/C# from recompiles on every platform. You can innovate, but you had better not break compatibility with the existing platform.

    So, as the old adage goes, if it ain't broke, don't fix it. That FORTRAN may be crufty, but it never blue screens or segfaults.

    --tkr

  57. True, but you're missing the point by ColGraff · · Score: 2

    Guys, if there's one thing we've seen, it's that good software does not always = profitable software. Like it or not, the big money is in programs like Windows that may not be all that great technically,. but have the marketing and OEM contracts to force it into becoming a standard.

    Likewise, Juno wasn't great from a technical perspective, but that's not why it's a giant FUBAR. It's the business model that's crippling the company - how many times do we need to see that even limited ad-sponsored ISPS Just Don't Work.

    Would I go to Joel for advice on how to actually write code for a given project. I don't think so, no - he's almost certainly a good programer, but there are plenty of other people out there who're probably more skilled. But from the perspective of managing software development - well, Joel does have a lot of experience doing THAT successfully (at least at MS).

    One last thought - I wouldn't hold Juno against him as proof of business stupidity - he wrote that client in a simpler time, an innocent time. A time when click-throughs really were worth something - or so the marketing mavens thought.

    --
    I'm the stranger...posting to /.
  58. You misunderstand by Shoeboy · · Score: 3, Interesting

    He's not talking about the Mozilla project, he's talking about the transition from 3.0 to 4.0. Basically Netscape threw away a lot of good code and some very nice algorithms for the sake of newness. They also developed a java fixation while the language and libraries were still very immature.

    By the time the Mozilla project was announced, Netscape was already out of marketshare and had a product that was cleary inferior to ie 4. Considering the amount of bugs in the initial release of ie 4, making an inferior product was no easy feat.

    Jamie Zawinski has a great deal to say about this period in Netscapes history.

    --Shoeboy

    1. Re:You misunderstand by ttfkam · · Score: 2

      The Java "fixation" started in one of the betas for Netscape 2.0. You criticize Java for its immaturity when Netscape itself was just as immature and IE was still called Spry Mosaic.

      Netscape4 was/is crap. Netscape 3 was faster, but simply avoids the "crap" label due to its immaturity. IE "ate Netscape's lunch" because it was component-based and people could embed it into their own applications easily, reducing their development time. Netscape4 would never be able to do this. Neither would have the Netscape3 codebase. Componentization/modularization must be done relatively ground-up to be used effectively.

      A new codebase was the only real answer at that point. The only better answer (20/20 hindsight and all that) would have been if they made it more modular to start with instead of stopping at the "plugin" model. Netscape focused on pluging other things into the browser. IE focused on letting the browser get plugged in to other things.

      At least with the rewrite, those who want something better like recent builds of Mozilla have that option. I'm not convinced that would have happened if the codebase had continued unmolested and bristling with thorns.

      It's taken a few years, but more than a browser is bearing fruit from the Mozilla vine, and I for one am glad they did the rewrite.

      --

      - I don't need to go outside, my CRT tan'll do me just fine.
  59. This is easy. by Anonymous Coward · · Score: 1, Funny

    Just hire an open source advocate to finish do the project. It will no doubt fail miserably. As an analogy, look at how Linus messed up Transmeta.

    This is a troll for those that don't get it.

    1. Re:This is easy. by Anonymous Coward · · Score: 0

      Linus isn't an open source advocate, he's not opensource only otherwise he wouldn't be working for Transmeta in the first place. The problem with Transmeta is that they need to get the product into small embedded devices, I think personally if they can afford it they should make their own. Transmeta needs to get their processors into small handhelds, atm's etc etc etc.

      They are going after the wrong market in Laptop's.. It's a small market to begin with and then you have the problem of getting an OEM to ship your product into one of the designed computer lines. Mostly all OEM's are inbed with Microsoft and they rule that game.

      Transmeta needs to get their chips in different devices; now is definitely the time.

  60. Re:How to make a good software project / product f by Anonymous Coward · · Score: 0
    Oh, and if you're wondering why I think this you'll need to read a lot of Joel to gleam it. It's a thousand little things, a gestalt that's easily dismissed but but in summary:

    He writes about the reasons other companies were bought out by Microsoft. When he worked there he noted that the most appealing things to Microsoft were both a codebase and interface that Microsoft might produce (see FrontPage buyout). He has emulated this in his web content sofware, Citydesk, at the expense of his product. Above all see how the software isn't advertised - that's not its' goal.

    His general esteem of Microsoft seems a little too warm. Sure, he worked there, but he didn't get at all annoyed and only blamed himself when the Microsoft FTP library couldn't do passive transfers. He didn't move to another FTP library that would do the job - he retained the broken Microsoft library.

    Yes, I have no evidence. But just spend a day reading Joel and then tell me what you think.

  61. Re:Not sure how to take Joel and the MS experience by Anonymous Coward · · Score: 0
    [Microsoft employees are uniformly smart and talented.]

    So where's all the evil come from?

    Well, you see... Back in the mid-1970s, one Richard M. Stallman went to schoool with a quirky fellow by the name of Bill Gates. While young Billy wasn't considered the coolest kid in the school, his wealth demanded a status of its own.

    One day, little Ricky Stallman wanted to head over to Billy's house to have fun in the swimming pool. But Billy said "No, Ricky, you aren't welcome, you stupid pinko bastard. Besides... You'd contaminate my pool with geekiness."

    Well, Ricky wasn't very happy about that reception, so late that night, he snuck over to Billy's house and peed in the pool, thus contaminating it with geekiness. Billy went swimming the next day, and the day afterward arrived at school sporting a new pair of glasses. Ricky bragged about what he had done.

    A few years later, The y-less Bill Gates and his friend, Paul Allen, founded a tiny software company, which, repeferring its size, they named Microsoft. Ricky, making the semantic misinterpretation of a lifetime, thought that they had named the company after a certain reproductive organ. He visited Bill, and asked to join his club. To support his membership bid, Ricky pulled down his pants and said, "Look!". Bill called the police, had Ricky Stallman charged with indecent exposure, and a lifelong resentment of all things Gates had begun to germinate in poor, little (note double-entendre) Ricky's brain.

    Twenty-some odd years later, Ricky has managed to convince many fellow misfits that rich people (much like mean people) suck. These people are relentlessly beating war drums, and heading off on regular jihads much like the lemmings they are.

    For all these reasons, and many others that I won't bother to bore you with, Microsoft is evil. This is, in essence, what such arguments boil down to.

    (The rest of us use whatever OS is needed to run the programs we prefer to use. All things being equal, we'll take the free-as-in-beer stuff to save ourselves a few bucks. Stealing a few lines from other people's public source code is a great way to save ourselves time, too.)

  62. Re:How to make a good software project / product f by Anonymous Coward · · Score: 0

    Mozilla.org doesn't look like a happy friendly bunch of open source developers. The site is a static pile of crud, and they never made clear the ties between Netscape and Mozilla (like, will the Netscape funding go away when they reach 1.0 - or will it have the wind knocked out of its sails).

  63. Re:problem = clueless management/directors/execs e by Maul · · Score: 2
    Yeah, this seems to be a problem where one of my friends works. All the execs would rather lay off people than cut their salaries. We're talking about people who are making AT LEAST $500,000, while the engineers, who to my understanding are now being "encouraged" to work extra hours and weekends, are making something like $40,000 at this company.


    It is rapidly becoming harder for them to maintain their code, and develop new software that might earn them a profit.

    --

    "You spoony bard!" -Tellah

  64. Re:How to make a good software project / product f by Anonymous Coward · · Score: 0

    (and yes, I realise it's still beta - but most software is still hyped before 1.0)

  65. Hmm, sort of. . . by JSBiff · · Score: 3, Interesting

    As for point 1, I don't really think Joel would say that bugs are "good" or that they shouldn't be fixed. Just fix them in the most economical manner.

    I do somewhat agree with you on the other points, though I'm going to take the liberty of doing some "charitable" interpreting of Joel on a couple of the points:

    2. Load in useless features to drive sales, knowing that your code will suck.

    I think, with respect to this, Joel isn't interested in useless features. What he is basically saying is that if users REALLY want a feature, you're stupid to to take the attitude that "I know better than you: you don't need this feature". You just lose customers that way. Remeber, the customer is always right.

    3. Once you have gobs of crap code and a large user base, there will never exist the possibility of re-designing things (eg, WinXP) since it doesn't matter that code sucks (see point 1) and all that counts is revenue.

    Well, although I do believe there are certain situations where a complete re-write is in order, I think he makes a valid point. I think Joel (again I'm interpreting here) would say that it is better to revise the current code, clean the current buggy code up and "perfect" it rather than to start over. After all, starting over doesn't even guarantee you that the new code will be any less crufty than the old code, just different! (Although, sometimes your design was fundamentally flawed to begin with and you need to start over to deal with the intrinsic problems in it, but hopefully those kinds of problem can also be dealt with by revisioning instead of starting over completely.) Start over with a new code base and you just end up with new bugs sometimes. Plus, as he points out, not releasing an updated product in the market for 3 or 4 years REALLY hurts a technology company.

    4. Being efficient is a waste of time. Let the hardware catch up with the crap code.

    Hmm, he does sound a bit like he's saying that. But, to be charitable again, I'll interpret him as meaning that it's not worth spending a lot of money and time to get small incremental performance increases or size decreases. But, obviously you're not going to set out to make your code as inefficient as possible. And he does have somewhat of a point about Moore's law. How many people are still using WordPerfect 5.1? Undoubtedly there are still a few people. . . but is Corel making any money from those people? Probably not, and since Corel is a company that needs (desperately at this point) to make money, they are going to add features that user want, that they think will give them a competitive advantage to Microsoft, even if that means increasing the size of the program a little bit.

    1. Re:Hmm, sort of. . . by Anonymous Coward · · Score: 0

      you:
      I think, with respect to this, Joel isn't interested in useless features. What he is basically saying is that if users REALLY want a feature, you're stupid to to take the attitude that "I know better than you: you don't need this feature". You just lose customers that way. Remeber, the customer is always right.

      joel:
      So the Program Management (design) teams just went out and talked to customers ourselves. One thing I noticed pretty quickly is that you don't actually learn all that much from asking customers what features they want. Sure, they'll tell you, but it's all stuff you knew anyway.

      sounds to me like the software engineers already know what the customer needs. so why consult them in the first place?

  66. It Could Be Worse by Anonymous Coward · · Score: 0

    ...imagine if your company hired a Medieval Studies major to lead a company of engineers. Oh..wait...that happened to me!

    Well, she can't be all bad, look at what she did for Lucent.

  67. Re:Trying to hire female and minorities as a quota by Anonymous Coward · · Score: 0

    There are not many famous asian coders, but in electrical engineering, they and the immigrant Indians dominate the industry. They go through puberty later and thus, they have a slightly higher average IQ than caucasions.

    But one thing seems certain, other than Tony Suzuki in 1983, I have not heard of too many innovative shrink-wrapped coding gods that are asian.

    Innovation is not exaclty correlated with raw IQ in some people I suppose.

    blacks hispanics and females go through puberty earlier and thus are more often closer to average intelligence and unlikely to be genius-level aptitude.

  68. Re:Taking lessons from...Better Yet Check this one by Anonymous Coward · · Score: 1, Insightful
    So, as the old adage goes, if it ain't broke, don't fix it. That FORTRAN may be crufty, but it never blue screens or segfaults.
    And you can't extend it or thread it and you can only throw hardware at it (which although being a good option, it's good when it's your only option).

    Joel doesn't advocate retaining that FORTRAN codebase. He advocates maintaining the codebase and moving it slowly to where you want - not just scraping it and starting from scratch. You could make a wrapper around the fortran and then move parts of the output to another language. This is what Joel teaches. Not just File|New at the first sign of trouble.

  69. Strange obsession by ScottMaxwell · · Score: 2, Funny
    Quoting from the article:
    [Netscape] had to sit on their hands while Microsoft completely ate their lunch.

    ... dBase for Windows [...] took so long that Microsoft Access ate their lunch.

    ... Microsoft ate Ashton-Tate's word processing lunch.

    Maybe they should interview him again when he's not so hungry.

    --

    ``Life results from the non-random survival of randomly varying replicators.'' -- Richard Dawkins
  70. You are a twit by Anonymous Coward · · Score: 0

    You do realize that NT, 2K and XP are of the same lineage and ME is a Win9X upgrade, right? NT came long before 98 and has been a long since stable OS, even version 3.51.

  71. Re:Taking lessons from...Better Yet Check this one by GiMP · · Score: 2

    My college asked me to rewrite their pascal program in Java. I asked why. Their excuse was that it ran under DOS. I think it was a lame excuse.

    Anyway, the never rewrite code idea.. never optimize.. We now see why Windows is such a terribly bloated hog,.

    I think he forgot to mention the move of MacOS from m86k to PowerPC, and finally to OSX which is a wholy different kernel and can be considered a pretty major rewrite. And they did it without suffering! Ok, apple hasn't always been doing well, but it wasn't directly related their rewrites or huge porting projects.

  72. Name a business thats never made a mistake by Convergence · · Score: 3, Interesting

    I challenge you to name a business that never made a mistake.

    They all do, or they all will make a mistake. Pointing out that Netscape or Real lost because of a mistake is disingenious, because EVERY business makes some sort of mistake. They spend too much time adding on buggy features, or they spend too much time getting it stable that they lack features, or both at the same time.

    But, Microsoft's monopoly position mean that they're almost immune from mistakes. They can afford to have 3 teams rewriting code. They can afford to be a loss-leader for YEARS. They can write crap, but make sure it gets users from version 2.0.

    And, Microsoft makes mistakes, mistakes that would put any other software house out of business. Look at how late they got into the internet, and how many people they bought out to catch up? The billions of dollars spent developing IE.

    At that level, Microsoft doesn't need to give a fuck if they make a mistake. They have immunity from mistakes. They can use their monopoly to hide it, cover it up, or get a second chance later. Others, without a monopoly, cannot afford the expense of keeping up.

    1. Re:Name a business thats never made a mistake by reflective+recursion · · Score: 1

      I disagree. Microsoft can now make mistakes because they were smart about making past mistakes. They understood how to market their products and obtain the profit needed to weather any storm. It is survival of the fittest, and I haven't seen much that can take on MS. I have seen competition, but it is nothing compared to what MS provides.

      On a related note: from what I understand, Quicken is still holding strong. They have tax-filing software, and various other products. They have been around very long and weathered many storms, I'm sure. Plus their products are easy to use and I believe they know this. I also believe they know what their customers want.

      --
      Dijkstra Considered Dead
    2. Re:Name a business thats never made a mistake by Anonymous Coward · · Score: 0

      The storms they have faced have come directly from Redmond several times. Intuit is an awesome company with awesome products and they are possibly the most clever and resilient competitor MS has ever faced. There is a quiet respect for Intuit in Redmond.

    3. Re:Name a business thats never made a mistake by Alomex · · Score: 2

      But, Microsoft's monopoly position mean that they're almost immune from mistakes.

      You got it ass-backwards. Microsoft was making mistakes and recovering from them better than anybody else way before they became a monopoly.

      If I had to attribute M$ success to one single thing (which is simplistic) it would be to their ability to completely, severely f**k up, pick up the pieces and carry on.

      They drop the ball with Pascal, Excel, Microsoft Word, FoxBase, Microsoft Works, Windows 2.0, Xenix, Windows 3.0, you name it...

    4. Re:Name a business thats never made a mistake by maxharris · · Score: 1
      The billions of dollars spent developing IE.

      This is totally wrong. Microsoft has about 50 to 100 engineers working on IE. Even with marketing, management, and other expenses, it doesn't seem like they've even spent more than $50 million on it directly. There's no way they've spent billions.

    5. Re:Name a business thats never made a mistake by Malcontent · · Score: 2

      "Microsoft was making mistakes and recovering from them better than anybody else way before they became a monopoly. "

      I think you just made his point. In a fair market with lots of healthy copetition a company can make a mistake or two and still survive. Before MS has a monopoly the market was wide open and lots of comapnies took risks, failed some, and still survived. Once MS got their monopolies all other companies who took risks and failed immediately collapsed. In todays software market one mistake will doom any company who competes with MS. MS can crive any company it wants out of business by netscaping them. Make a competing product, give it away for free, bundle it with windows, force people to use it when they want to use other software.

      In todays market there is only room for open source and MS everybody else is dying.

      --

      War is necrophilia.

    6. Re:Name a business thats never made a mistake by Malcontent · · Score: 2

      You do realize how much 50 million is don't you? Very few companies in the world generate revenues over 50 million let alone spend 50 million to develop a product that they will give away. I can't think of one other company which can afford to do such a thing.

      --

      War is necrophilia.

    7. Re:Name a business thats never made a mistake by jonathan_ingram · · Score: 2

      Why all this bashing of Microsoft Word? When it came out, it was better than anything else out there -- small, relatively fast, and relatively featurefull (ignoring word count :). I still have copies of Word 2 and Word 6 on floppies somewhere gathering dust (Word 2 was my favorite version -- I used to have to write macros for it). Word 95 introduced red underlining to indicate spelling errors, which personally I think is a wonderful innovation.

      True, since Office 95 they've gone the route of changing the UI every pointless revision to milk money out of the gullible, but that seems to be the fate of any large successful mature commercial software package.

      People forget that MS products get there initially because they are attractive to people. Some of this is monopoly abuse, if you want to call it that, but some is also because *what they produce is attractive and useful to people*.

    8. Re:Name a business thats never made a mistake by rseuhs · · Score: 1
      I can't think of one other company which can afford to do such a thing.

      IBM makes 4 times the revenue of Microsoft, Sony 10 times IIRC.

      It was easy for Microsoft to crush Netscape just like it is easy for an adult to beat up a 10 year old kid.

      XBox will be Microsoft's Waterloo. You can't piss off Nokia, Sony, IBM, Oracle, Sun and AOL/TW *at the same time* and expect no consequences.

    9. Re:Name a business thats never made a mistake by Alomex · · Score: 2
      When it came out, it was better than anything else out there

      The market did not think much of either Word 1.0 or Word 2.0. As usual, Microsoft succeeded in the third attempt: Word 3.0.

    10. Re:Name a business thats never made a mistake by Alomex · · Score: 2
      I think you just made his point.

      Not at all. The point is which came first, M$ resilience to mistakes or its monopoly?

      While the two feed from each other, M$ was on a class of its own when it came to recovering from mistakes much before it was a monopoly.

    11. Re:Name a business thats never made a mistake by mpe · · Score: 2

      But, Microsoft's monopoly position mean that they're almost immune from mistakes. They can afford to have 3 teams rewriting code. They can afford to be a loss-leader for YEARS. They can write crap, but make sure it gets users from version 2.0.

      They can also bundle something into the "operating system" and then make use of their dodgy OEM contracts to be sure that people have to explicitally take some action. Installing someone elses software, etc. Such that unless the other sofware is considrably better than the Microsoft offering most people will consider it "too much trouble".

    12. Re:Name a business thats never made a mistake by mpe · · Score: 2

      True, since Office 95 they've gone the route of changing the UI every pointless revision to milk money out of the gullible, but that seems to be the fate of any large successful mature commercial software package.

      The important issue isn't the UI, so much as changing the file format...
      Also since word processors are "mature" types of applications the only "features" which get added are "bells and whistles". Which in practice end up being "bloat" which slows down the core functionality.

    13. Re:Name a business thats never made a mistake by Anonymous Coward · · Score: 0

      On Win95 my favorite word processor was WordPerfect 5.2. Never has a software package created so much useless word art as that version of WP.

    14. Re:Name a business thats never made a mistake by Malcontent · · Score: 2

      Once again you miss the point. For MS (before or after the monopoly) it's different. Before the monopoly the market was open for everyone. Everyone (including MS) could survive making a mistake or two.
      After the monopoly MS could still afford to make mistakes and nobody else could. Even if a company makes no mistakes they could still be killed by MS because it can sufficate any company it wants by making free competing products.

      --

      War is necrophilia.

    15. Re:Name a business thats never made a mistake by Malcontent · · Score: 2

      Fine if you say so (I don't think you are including all the sub companies of MS but what the hell). IBM has debt, Sony has debt MS has no debt. MS has a larger cash reserve then most companies make in profit. COmpare the profitablity and the accumulation of cash and see how formidable they are. As long as they have a monoply (and are extending it to more markets) they can not be stopped. Right now the only thing that can stop MS is a well placed bomb or two. Neither the free market nor the govt is strong enough.

      --

      War is necrophilia.

    16. Re:Name a business thats never made a mistake by Alomex · · Score: 2

      Everyone (including MS) could survive making a mistake or two.

      That is what is just plain incorrect, but you keep coming back at it. You like to claim of a rosier past in which tech companies could screw up and survive. This never existed in the PC world. It just moves too fast.

      Most companies, even before M$ was a monopoly did not recover/survive after their first mistake, much less two. WordStar? CPM? Atari? Altair? Kay portables? Apple? Lotus? Ashton Tate? Borland?

      The list is endless....

    17. Re:Name a business thats never made a mistake by Malcontent · · Score: 2

      All those companies (CP/M was not a company) made mistakes? How many? What mistakes did lotus make? or Borland? Borland made and continues to make great software. MS ripped off lots of things from them like the tabbed worktables in excel and the tabbed interface for example. Quattro was superior in every way to excel (including the dos version) for a long time. Alas even when you make great products it's useless to battle a company which can outspend you in marketing, programming, lobbying, lawyering etc. On top of all that MS raided the borland staff by agressively going after Borland employees (they got sued for that and settled for close to 200 million IIRC). The only reason excel won is because it was bundled with word and PPT. At the time the MS office was introduced it undercut every body elses software. The entire office suit cost as much as quattro or wordperfect. This kind of "dumping" is only possible because MS has a monopoly in the OS market. They can subsidize all of their other software no matter how inferior it is. Of course everybody had to cut their prices, of course profitability suffered, of course marketing budgets were cut, of course personell had to be cut, of course R&D suffered. None of that was due to a mistake and all of it was due to predetory pricing by a monopolist looking to expand their monopoly to other markets. MS can always do this to anybody they want. Nobody can do anything about it but suffer and die. That's the harsh reality in today's market. Like I said the only hope is open source (or perhaps a few well placed explosives not that I condone that kind of behaviour mind you.)

      Borland continues to exist as a business and still makes some great products. Unfortunately they are alive only as long as they don't represent a threat to MS. The minute they do they will be wiped off the planet just like netscape.

      --

      War is necrophilia.

    18. Re:Name a business thats never made a mistake by Cro+Magnon · · Score: 1

      Microsoft has been a monopoly from the beginning. MS-Dos ran the first IBM PC's with no competition. It used Dos as the cash cow to finance its application market, which it later switched to Windows. It's much easier to recover from mistakes if your product ships on every PC built since 1981!

      --
      Slow down, cowboy! It has been 4 hours since you last posted. You must wait another few hours.
    19. Re:Name a business thats never made a mistake by Cro+Magnon · · Score: 1

      Nokia, Sony, IBM, Oracle, Sun and AOL/TW are all using MS Windows on their desktops! XBox may fail, but M$ has the resources to try again as many times as it needs to, financed by its desktop OS.

      --
      Slow down, cowboy! It has been 4 hours since you last posted. You must wait another few hours.
    20. Re:Name a business thats never made a mistake by Alomex · · Score: 2
      What mistakes did lotus make? or Borland?

      Their big mistakes are legendary. The fact that you don't know them proves that you have no idea what are you talking about. Go and read up about the history of 1-2-3 and Turbo Pascal, then we can carry on with this exchange.

    21. Re:Name a business thats never made a mistake by Malcontent · · Score: 2

      I don't have to read the history I lived through them. I used both Turbo Pascal (which was a breakthrough application) and lotus 1-2-3 which was the killer app that made people buy PCs.

      What mistake did borland make with Turbo Pascal? Turbo Pascal had a long and fruitful life. Have you ever heard of Delphi? It's a language based on pascal go look into it some day.

      As for Lotus MS purposefully sabotaged all it's versions of windows so that Lotus would not run. Every time you upgraded windows it broke Lotus. Have you ever heard of the phrase "windows isn't done till lotus won't run"? it was a mantra at Microsoft for a while. The Mistake lotus made was thinking that the people inside MS were ethical as they are. Lot's of people made that mistake and they all suffered. They simply could not accept that people would be that slimy and evil and it bit them in the end. MS proved to be the most abusive, unethical, and evil company on the face of the planet. If Borland and lotus made a mistake it was not realizing this fact. They simply assumed that they were dealing with human beings. Now they know they were dealing with walking slime buckets. Of course many companies got stabbed in the back by MS including IBM, Digital, compaq, HP, stac and of course netscape. Now nobody trusts them.

      Fool me once shame on you fool me twice shame on me. I guess even large corporations can learn that simple lesson.

      --

      War is necrophilia.

    22. Re:Name a business thats never made a mistake by Alomex · · Score: 2
      What mistake did borland make with Turbo Pascal?

      Easy, back in the late 80's TurboPascal was poised to become the language of choice for all developers. At that time Borland should have been porting TurboPascal to other architectures. In fact back then TurboPascal was so dominant that Microsoft stopped all work in compilers. What was Borland's next step:

      They took their best programmers of TurboPascal and had them work on TurboC, TurboBasic, TurboProlog, Eureka, Spriiiint...

      Borland singlehandedly revived C in the pc category, when they should have been killing it. They put Microsoft back in compiler's game.

      Delphi is but a shadow in popularity of what TurboPascal was.

      You really need to read up in PC history. When you do, pay special attention to the part on the development path from Lotus 1-2-3 v2.0 to Lotus 1-2-3 v3.0.

      That was the big snaffu from Lotus which created an opening for Quattro, WingZ and Excel. None of this imaginary "sabotage" that you like to claim...

    23. Re:Name a business thats never made a mistake by Cro+Magnon · · Score: 1

      "What mistake did borland make with Turbo Pascal? Turbo Pascal had a long and fruitful life. Have you ever heard of Delphi? It's a language based on pascal go look into it some day. "

      Turbo Pascal was a great product for its day, but IIRC, it couldn't handle large scale programs (>64K) as well as C. By the time Borland corrected that error, everyone else was using C. Maybe, if Borland had acted sooner, Delphi wouldn't be "that other language". Also, every other Windows based C++ vendor (Watcom, Symatic) standardized on MFC (Microsoft Frustration Classes), with Borland as the only one using its OWL classes (superior framework, but MFC became the standard).

      --
      Slow down, cowboy! It has been 4 hours since you last posted. You must wait another few hours.
    24. Re:Name a business thats never made a mistake by Malcontent · · Score: 2

      "They took their best programmers of TurboPascal and had them work on TurboC, TurboBasic, TurboProlog, Eureka, Spriiiint... "

      So let me get this straight. Acording to you borland should have stayed a one product company. Not exploring new avenues of revenue and growth right? Oh yes that would have been much smarter. I suppose if you are dumb enough to think borland could have killed C then you are dumb enough to think you can sustain a company with just one product. And what are the other architectures they were supposed to port it to? All there was was z-80 and 8080. Or do you mean they should have ported turbo pascal to pdp-11 or VAX? LOL! what a moron.

      "Delphi is but a shadow in popularity of what TurboPascal was. "

      Yes and that has nothing to do with Microsoft right?

      "None of this imaginary "sabotage" that you like to claim...

      "None of this imaginary "sabotage" that you like to claim... "

      I don't claim this. It is well documented just do a search for the phrase "windows isn't done until lotus won't run". The sabotage did take place and was reported widely in the computer media.

      Oh never mind I am talking to somebody who thinks borland could have killed C and survived on one product, why bother talking to idiots.

      --

      War is necrophilia.

    25. Re:Name a business thats never made a mistake by Malcontent · · Score: 2

      I seriously doubt anything borland did would have slowed down the growth of C.

      The problem was that the guys at borland actually wanted to provide superior products. That's why they invented things like OWL and VCL. Alas they did not have a monopoly and could not push their agenda forward like MS could.

      --

      War is necrophilia.

    26. Re:Name a business thats never made a mistake by Anonymous Coward · · Score: 0

      Oh never mind I am talking to somebody who thinks borland could have killed C and survived on one product, why bother talking to idiots.

      You've "challenged" me two times to produce data, implying that my statements were unfounded. Both times I delivered hand over fist.

      Do you stop and listen, then? Do you incorporate the newly arrived knowledge into your theory? Not at all. Your attitude simply gets more arrogant with each message and you parrot back your old theory unfazed by the facts.

      This proves that not only you are an ignoramus, but an a**hole as well.

    27. Re:Name a business thats never made a mistake by Malcontent · · Score: 2

      You have delivered nothing but inane statements like "borland tried to kill off C" and "borland should have ported turbo pascal to other architectures". Well I am pointing out that you are moron if you if think that those were sound business judgements. That's the most assinine thing I have ever heard in my like. Borland tried what every business does. Develop new products, try to diversify. Apparently you think this was a "mistake" and that they should have stayed a one trick pony.

      Like I said you are idiot and moron.

      --

      War is necrophilia.

    28. Re:Name a business thats never made a mistake by Anonymous Coward · · Score: 0

      you are moron if you if think that those were sound business judgements.

      Those are well known, well publicized failures about which entire books have been written; all of them unknown to you, not to me, I might add.

      Heck, your knowledge of PC history didn't even include a time when Microsoft was not a monopoly but one among many companies. Then you were surprised to learn (if you learnt anything that is) that even back then they M$ was recovering from errors better than their competitors.

      Your ignorance thus showcased you come back with transparent amateurish rhetorical arguments such as the false dichotomy between being a single product company and deploying your entire A team of programmers on a product that undermines your best offering, rather than complementing it (as if those were the only two alternatives).

      Keep trying Johnny, maybe one day you'll learn how to carry an argument...

  73. Re:He certanly is into lunch, isn't he?-Junk DNA? by Anonymous Coward · · Score: 1, Interesting

    Hmmm...side thought. Maybe all that 'junk' DNA is Mother Nature's "Bug Fixes".

  74. another problem by StationL5 · · Score: 0

    Another problem ....is a female project director who thinks her job it to keep other women way from programmers as a way to keep them on the job and control their behavior and output....as absurd as this may sound I have seen it happen....

  75. mod parent up by buzzini · · Score: 1

    This is a great response, couldn't have said it better.

  76. Uh, this interview is very Microsoft centric by jsimon12 · · Score: 1

    I get the impression that this guy really really really has his head up good old Microsoft's kiester. Don't get me wrong, I think people use code-rewites a little too often, but I don't think they are on a whole a bad thing. Sometimes you need fresh code, hell that is what Carmack does with each new ID game. As for the code-rewrite destroying Netscape, it is an intersting rationization, I mean we all know it was the freaking M$ monopoly that killed Netscape.

  77. Reminds me of this quote by Daath · · Score: 2

    By the late Douglas Adams, may he RIP:

    I love deadlines - I love the whooshing noise they make as they go by

    I still can't believe he's gone :(

    --
    Any technology distinguishable from magic, is insufficiently advanced.
  78. ::sigh:: and the sad part is... by npietraniec · · Score: 1

    He's right. Want to make a ton of money in the software buisness? quickly develop buggy bloatware and convice your customers that their software runs slow because they're soooooo behind the times with the computer they bought last year for 2000 bucks.

    Good, fast code takes too much time... While you're working on your great app, your company is going out of business...

    It will be interesting where things go in the next 5 years with GPL'd code that can't disappear when the business goes under... But instead can continue to be improved.

    You could say Microsoft won't be "eating anyone's lunch"

  79. Outsourcing Code by Bonker · · Score: 1

    Happens all the time.

    A bunch of the guys I work with left a pharmaceutical firm because their development jobs got outsourced to Romania.

    --
    The next Slashdot story will be ready soon, but subscribers can beat the rush and slashdot the links early!
    1. Re:Outsourcing Code by damas · · Score: 1

      I just don't believe this :)) Check my mail adress.

  80. note to moderators by fliptout · · Score: 1

    I do not see how this is a troll.

    Sure, marketing is an easy target to bash, but I'll be damned if I work at a company that has no clue how to sell itself.

    --
    A witty saying proves you are wittier than the next guy.
  81. Missing vital part of recipe by pdqlamb · · Score: 2

    Compete against a company with apparently unlimited resources. They can keep throwing programmers at you, buying more magazine ads, articles, and columnists than you*, and keep doing this until you fail. Microsoft, with a monopoly on operating systems and OS revenue, comes to mind.

    Borland languages? Hire away their best programmer. Netscape? Give away a product to undercut them. Wordperfect? Buy ads until the reviews start tilting your way, and (in the Netscape preview) bundle it with the OS for 1/4 to 1/8 the retail price of the competition. 1-2-3, ditto.

    *A recent newsgroup article said of a magazine, "Everything in [the magazine] is an advertisement, and some of them are marked as such."

  82. Valid point, but something else to think about: by JSBiff · · Score: 3, Insightful

    I agree with you that sometimes the design is fundamentally, intrinsically flawed and needs to be thown out; but more often times you can revise and evolve code.

    As far as Microsoft redesigning the OS with NT:
    Microsoft is one of the few companies who can afford, financially, to have parallel development teams. When Microsoft started building NT they had help in funding the development because IBM was helping them (remember that NT started out of the OS/2 project that Microsoft was working on with IBM). And later on they had made such a fortune on Win95 + Office 95/97 that they had more than enough money to fund parallel development.

    Microsoft realized that, at least in the early versions of NT, normal users would have a hard time administering NT and running a lot of the programs they wanted to use under NT. That is why they paid developers to keep developing Win9X/ME, EVEN AFTER they decided to redesign the OS. I would say that Win2k Pro is the first version of NT that most users would have no more problems with than if they were using Win9x.

    Since most companies can't afford to keep parallel development teams in order to maintain the old product until the new product is "ready" for all their users, it usually (though not always, I think) makes more sense financially to try to evolve and revise the current code base.

    Point 2: Microsoft IS, in most cases, following exactly the strategy that Joel outlines. Take Internet Explorer for example. Up until IE4, IE just plain sucked as a browser. Microsoft kept revising/evolving it though; With 4 it still had lots of annoying things about it, but was generally usable. With 5.x they fixed more bugs, got a lot of things working fairly well (of course, there were still some things that were annoying about it, especially from a web developers' perspective, like a bad implementation of Cascading Style Sheets, which still isn't quite right (but I'd hasten to add that Netscape 4.x's implementation of CSS is much worse; sometimes valid CSS would CRASH some of the 4.x browsers). Now they've released IE 6. Still not perfect, but adequate and productive for most users. The point of my writing about IE like this is that Microsoft has been able to, relatively quickly, revise their browser, whereas Mozilla/Netscape6 has basically become really useable only in the last 4 months or so (here's where I point out that I'm composing this in Mozilla under Linux).

    So, I'd say that Joel's point is somewhat valid, and that Microsoft, in fact, does follow his logic, in most cases (Office, SQL Server/BackOffice, IE, etc).

    1. Re:Valid point, but something else to think about: by IntlHarvester · · Score: 2

      Your first point -- it gets deeper than that. Windows 95 was a necessary product because experience (Xenix, OS/2, NT 3) had shown them that people wanted 90% driver compatibility and 99% software compat, and there needed to be a bridgehead. It's a beautiful kludge in it's way, but damn has it outlived it's usefulness.

      But, then a few things happened --
      1) NT 4.0 development got behind - major features (plug-n-play, power management) got pushed back to NT5
      2) NT5 got hitched to ActiveDirectory, a hugely complex system that took a long time to get right, and all of its other great features were delayed accordingly
      3) (I suspect) Microsoft found that segmenting the market into 'professional' and 'home' and charging according was making them tons of money.

      My guess is that Win 98/ME were the 'backup plans' in case NT5 missed it's target (which it did, even the planned Win 2000 "Home" edition), but reports indicate there was also the factor that "it makes tons of money so therefore it must be good!"

      The end result was an unpleasant situation where consumers had a choice of running their Win32 apps on an unstable Win98 or an unfinished WinNT. This brought about an enormous amount of pain (which for the most part they could afford, being the only desktop OS vendor and all...)

      The point is that keeping 9x in service for so long wasn't really "the plan". It's really too bad that the backup idea wasn't something like NT 4.5, which could have shipped for home and business users in 1998.

      --
      Business. Numbers. Money. People. Computer World.
    2. Re:Valid point, but something else to think about: by Anonymous Coward · · Score: 0

      SQL Server 7.0 was a complete rewrite from 6.5. What you have to realize is that MS does not have one big "law" on writing software. It usually stems down per product group. Decisions are made by managers of those product groups and different product groups have different project plans.

      Sometimes rewrites are called for. Don't take what Joel says as fact about MS in general. It might have been true for his team.

  83. Re:Taking lessons from...Better Yet Check this one by Anonymous Coward · · Score: 0
    I don't think you read it very closely.
    "Joel: Don't get me started! If you're a software company, there are lots of great business reasons to love bloatware. For one, if programmers don't have to worry about how large their code is, they can ship it sooner. And that means you get more features, and features make users' lives better (if they use them) and don't usually hurt (if they don't). As a user, if your software vendor stops, before shipping, and spends two months squeezing the code down to make it 50% smaller, the net benefit to you is going to be imperceptible, but you went for two months without new features that you needed, and THAT hurt."

    Can you spot the "seat of the pants/never piss of the installed base"-oriented design fallicies just in that one paragraph:

    1. More features are always better features

    Ok, but
    2. Coders are not responsible for optimization
    He didn't say that. He said that most memory "optimization" doesn't actually help much, which is true.
    3. Hardware vendors must not change h/w designs that would break installed base, even to improve their architecture
    He didn't say that at all.
    4. Your s/w is SOOOO... important that shipping delays for optimization/tuning/additional debugging are not to be accepted
    You threw in that "additional debugging". He never advocated shipping bugs. As for optimization and tuning... he didn't say that there are no circumstances under which you can delay the software for optimization. He did say that it's not generally a good idea... and he's right. Generally, it's better to ship something correct but slow on time, and release updates, so that you at least have something on the market, unless the thing is so unbearably slow that it's unusable.
    further from the rest of the interview;

    6. There's never a reason to rewrite extent code, EVER...(here's my nominee for that reason -- Microsoft Outlook)

    No, he said there's never a reason for a ground-up rewrite --- and he's right. Refactoring, on the other hand, is great: rewriting extant code a bit at a time.
    7. Architecture is secondary to UI, maintanence of the UI experience is the MOST important standard
    I don't recall him saying that either, but maybe I missed it.
    8. Any problems caused by #7 above should never be fixed by redesign, but instead should be prioritized and patched by response to User problems.
    Yeah, that is redesign, regardless of whether you want to use some derogatory term like "patching" or not.
  84. Re:Good point NOT by renehollan · · Score: 2
    For simple, exercize code, this is true. Once you enter the real development world, this is patently false. Let's examine these one by one:

    Clear, Consistent Formatting

    Forget about importing free third party code that doesn't adhere to your formatting standard them. you bend to the maintainer of a particular piece of code, and in a large project there may be many major maintainers. It helps of course if all in-house people can agree to a layout style, but you're going to have to deal with foreign code anyway, so don't stess over it.

    If it really matters for publication purposes, use a pretty-printer. All decent programmers are not put off by slightly different indentation styles across major code sections so long as there isn't too much stylistic scizophrenia in a given file. And no, you don't want programmers who can't "handle" it touching code -- they mess things up too much.

    Hungarian Notation? Ugh. Spare me the need to be ever so explicit about types. Good programming is all about layers of abstraction. It isn't a "pointer to an object with 5 abstract member functions: open, close, read, write, and control". It's a pointer to a DEVICE, damn it! Learn the paradigms and abstractions before delving into the code.

    Copious Comments

    How many times have you seen, "i += 1; // increment pointer"? Doesn't help, does it? You document the trees but ignore the forest that way. Get the internal abstractions and paradigm out of the way and you're done. "This state machine maps input data and current state to an output message and new state." There! Done!! Documented!!! You don't need the "what's a state machine?" people around.

    Documentation

    Less is more. Really. The trick is to maximize the ideas communicated per words written. It takes time to think up, time to write, and time to read. At some point there is no excuse for not reading the code. Documentation should be a roadmap, not a novel.

    Coders who follow these rules truly are an asset to their company. Geeks who hack, write unreadable code, and utter geek credos about enforcing obfuscation and being purposefully vague have no place in a business environment.

    Coders who follow these rules produce what? 3000-6000 lines of code a year? Ain't gonna get product out the door that way. What you get is code with lots of comments about what it is supposed to do, but doesn't because of all the time spent on documentation instead of design and debugging.

    As for unreadable code, I've found that good programmers who have low defect rates and high productivity can read code like prose, provided the paradigms ("what was he thinking?") are explained early on. It's the medeocre ones that need the handholding.

    These mantras are derived from the belief that coders should be interchangable, that design, and documentation should fit the needs of the lowest common denominator. Well, that's a waste of talent. You're forcing those who can crank out correct code an order of magnitude or more more productively than the average to slow themselves down by a corresponding factor.

    Stop hiring idiots. Pay three times the average wage and hire only the best. You'll have much better productivity/cost ratios. So what if 4/5 programmers can't understand the code? The one you've got does the work of 2 to 3. And others like him can pick it up with little or no effort.

    --
    You could've hired me.
  85. Re:He's only partly correct about the rewrite thin by Cato+the+Elder · · Score: 2
    I agree with much more than Joel. Of course, being able to hit the program with a testing suite that encapsulates all the known bugs implies you have such a thing. But code that has "all these little fixes" and all this "programmer knowledge" in its twistly little lines leads to bugs too. Dependancies get hidden, comments become out of date, an unsafe hack is put in for one particular operating system.

    Joel seems to conclude that because a lot of prominent companies have failed at code rewrites that they are a bad idea. He's right that you can't put your existing product on hold while you rewrite the code from the ground up. But if you don't take the hit one time, it will cost you in lots of little ways over a long time. Would he advocate never upgrading a companies IT infrastructure because of the disruption that would cause? Probably not. The key is to test stuff first, and try to get everything switched over when it will inconvience the fewest people.

    One big problem with rewrites that he doesn't address is the "second system effect" from The Mythical Man-Month. This is the urge of, when your doing your redesign, to but everything into it, conquer the world, put every single feature in. This, in my opinion, is what happened with Netscape. Joel seems to think that this kind of problem is inevitable with rewrites, I disagree.

    The buisness side of the equation I think he missed is all the companies that have disappeared because their product couldn't be updated for changing times, and they couldn't afford to do a rewrite. Some startup, or a new arm of Microsoft, comes and throws tons of money at a done from scratch solution, and becomes the next leader.

    Anyway, that's what I'd tell Joel if I worked for him on some project that was riddled with crappy code. And if he fired me, hey, plenty of other jobs.

  86. Umm, I think that's his point man by Anonymous Coward · · Score: 0

    His POINT is that Microsoft decided to write a new OS from scratch (NT) because the OS at the time (DOS/Win3.1 if memory serves correctly) was fundamentally broken in several important ways.

    But, Microsoft new that NT wasn't ready for mainstream home use, so they kept revising DOS into Win95, Win98, and finally WinME. And WinME, after all those revisions, has gotten so totally crufty that bug fixes introduce new bugs. That is the original poster's point.

    Microsoft, of course, was concurrently revisioning NT to make it so that eventually it would be useable by home users.

  87. Another college freshman by Anonymous Coward · · Score: 0

    If all code written was as simple strcpy() and moving numbers around in an array then there'd be no need for comments but unfortunately in the REAL WORLD things are never that simple and adding comments greatly increases the amount of time it takes maintenenace programmers to figure out what the heck a piece of code does.

    1. Re:Another college freshman by Abcd1234 · · Score: 2

      I would partially agree. Yes, in the real world, there is some very complicated code. BUT, if you write the code correctly, you should be able to understand it with relatively minimal commenting. Basically, comments should exist to clarify parts of the code that are difficult to understand, or to provide information not immediately obvious (ie, code assumptions, side-effects, etc). The rest should be self-documenting. If it's not, there's something wrong. Period. After all, how can someone else maintain the code if they constantly have to read the comments just to figure out what it's doing?

  88. Wasn't Foxpro A Rewrite? Didn't Access Cost $99? by theodp · · Score: 1

    Joel's memory seems a bit selective to me.

    In fact, Microsoft employed two of the very tactics that Joel blames for Borland's demise to enter and conquer the database arena, thereby hastening Borland's fall.

    After Borland paid $440 million for dBase, Microsoft picked up Foxpro - essentially a rewrite of dBase - for a mere $137 million to gain a foothold in the database market and underpriced the competition with the introduction of Access at $99!

  89. He missed one by drodver · · Score: 5, Interesting

    He missed expecting developers to work 9+ hour days as standard practice. A good book is "Debugging the Development Process". The author also worked at Microsoft, he was a project manager for a couple of different projects that were missing deadlines. He said often they were working 12 hour days all the time. When he started making people go home and also managed the to-do-list better the project would stabalize.

  90. That's a surprise? by Nindalf · · Score: 2

    All the execs would rather lay off people than cut their [own] salaries.

    Well, of course! When was the last time you took a pay cut for someone else's job?

    Perhaps this is incompetence on the part of the owners, but it's not management incompetence to take as high a salary as you are allowed. You just don't turn down money from the boss. Your work and everything under you is your problem, the expense of your salary and everything above you is your superiors' problem.

  91. Re:Trying to hire female and minorities as a quota by SoftwareJanitor · · Score: 2

    Their minds don't work like that

    I don't think that is a fair statement. I think it is more that their culture puts more emphasis on conformity than creative thinking and their educational system puts a lot of effort into more engineering type processes than artistic ones. But those are all pretty broad and vague generalities. It is better to judge each individual on their own merits.

  92. Re:problem = clueless management/directors/execs e by Anonymous Coward · · Score: 0

    lowball the workers/coders.
    But before dwelling.. if 9/10 software projects fail, then why so much money for project managers - that have moved on before the shit hits..
    lets define fail - throw more money/people at the issue - like MS and you will deliver something. AFAIK MS has never released project cost estimates publically. On budget is what we are talking about - over the life of the project.

    I know of an app that is now up to killerapp ver 10.5, which implies version 1..10 are not in use.

    the upshot is pm really is a science, but the head honchos spreading porkies are brought down to earth in an interview by asking 2 questions'
    was it on time and budget. - name example
    if so, why is that company now on version 4,5, and how many extra dollars were spent bringing it up to that level.

    a good consultant always leaves something unfinished, and never says no to anything - says yes, then qualifies that yes.

    avoid that sort.

  93. Believe this guy? by Anonymous Coward · · Score: 0

    MS has been able to win by working on a very simple base. It is easy to write single user apps. Just do it. Oh, lets add in networking. Security? What is that? We want all your passwords and credit card numbers on Passport, it takes 30 minutes for someone to figure out how to get the information. Get it out quick, shut it down quick.

    It will take a major blowout of .NET infrastructure due to insecurities to change the accumulated wisdom at Microsoft. This ain't dos, this ain't win3.1. The competition won't matter, it's the lawsuits that will. This is real computing, the stuff the mainframe people were mocked about when the pc ate their lunch.

    Derek

    1. Re:Believe this guy? by RGRistroph · · Score: 2

      Lawsuits didn't matter before, why should they start mattering now ? Especially since any major hole in passport will likely come with a convient scapegoat, a hacker, all the better if you haven't actually caught him and can make him out to be bigger and more dangerous than he is.

      The customers only indirectly bear the cost of fraud, so it's not like people will flee passport after being burned.

      When credit card fraud happens, it is often the merchant who gets burned. It is conceivable (although in my opinion, unlikely) that merchants might stop using the passport service after seeing a higher rate of fraud with it, the way some online merchants have switched to or away from paypal in response to fraud.

      The credit card company can carry the cost of fraud sometimes. Visa and Mastercard are looking into systems that would be more secure, and offering to accept the cost of fraud in order to convince merchants to use them. If cost of fraud is high enough, those companies might try to stop their cards from being used on passport, or charge a special fee to those customers who do use it.

      I'm not arguing that the customer's should bear the cost of the fraud. The one person who doesn't have much effect on the overall security of the system is the customer; in general the cost of fraud should be born by those who have the ability to fix the security -- this creates a system in which appropriate resources are directed to the problem.

      But one part of the whole credit card system is the fact that it hides the cost of the system from customers. Those 1.5 to 2.5 percent fees on every credit card transaction are carefully hidden from the consumer. It was at least once true that credit card companies would refuse a merchant who simply tacked on the fee like a slaes tax. (PC's For Everyone in Cambridge Mass. used to be a counter example.)

      Because the nature of credit card business is to invisibly pass the cost on ( and not just to it's own customers, mind you . . . since the merchant can't charge that 2.5 percent to the customer's who use credit cards, he raises all prices slightly, so you pay even if you use cash ) it is well suited to passing on the cost of fraud in a similarly undetectable way.

      I don't see any reason why cost of fraud on a weak passport system simply won't be spread around to all of us, even those who don't use it. Think of it like another windows tax -- you pay Microsoft if you order a computer without windows, if that OEM is selling Windows to any other customers; you pay Microsoft if you buy anything from anyone who accepts passport from other customers. Welcome to the new world order.

  94. NT was for nothing by Sloppy · · Score: 3, Insightful

    No one seems to be taking up this position in their replies to you, so I'll give it a try...

    Maybe NT really was a mistake. Maybe Microsoft would be even richer if they had just kept evolving Win9x and let it accrete more features.

    Did Microsoft really gain anything from NT? I don't mean gain things that important to geeks (reliability, performance, cleanliness, etc), I mean gain anything that is important to being commercially successful.

    Name one feature that NT has and 9x doesn't, which has resulted in increased revenue for Microsoft.

    --
    As copyright owner of this comment, I authorize everyone to defeat any technological measure which limits access to it.
    1. Re:NT was for nothing by Anonymous Coward · · Score: 0

      Stability and a good reputation. Business users would *never* switch to 9x to run their servers, but they will switch to NT.

      That's a whole market that would never have been tapped if not for the development of NT.

    2. Re:NT was for nothing by Sloppy · · Score: 1

      Ha! They will eat what they are fed, and they will like it!

      --
      As copyright owner of this comment, I authorize everyone to defeat any technological measure which limits access to it.
    3. Re:NT was for nothing by Malc · · Score: 1

      "Name one feature that NT has and 9x doesn't, which has resulted in increased revenue for Microsoft."

      Stability.

    4. Re:NT was for nothing by Thatman311 · · Score: 0

      The ability to run on multiple processors, ntfs, complete acpi support, stability, etc.

      --
      Silly Rabbit...Sig's are for kids.
    5. Re:NT was for nothing by Error27 · · Score: 2
      I think that if windows 95 and 98 had been decent operating systems Linux would not be nearly as popular.

      Microsoft has a pretty good operating system with either XP and 2000. But now Linux is too big to go away.

      Perhaps they could have turned 98 into a decent operating system in time but I doubt it.

    6. Re:NT was for nothing by Anonymous Coward · · Score: 0
      Name one feature that NT has and 9x doesn't, which has resulted in increased revenue for Microsoft.

      • Increased reliability, which allowed NT to be accepted as a server platform. (does your company's web/database/mail server run on Windows ME? - if it weren't for NT, the only server platforms in business would be *nix, netware and maybe os/2).
      • Support for RAID and multiprocessing. Again, allowed Microsoft to break into the server market.
      • Centralized user management. Big thing for businesses.


      Anyway, you get the idea - I understand you're just trying to play devil's advocate.


      However, let us examine some of Microsoft's business strategy with their OS line: Why are there so many different versions of Windows currently available? (98SE, ME, win2k Pro, win2k server, win2k adv. server, win2k data center, XP are all currently sold). This is an example of price discrimination. Is there a big difference in the various versions of win2k? Not really. Remember, NT4 workstation and server only differed in a few registry keys and the inclusion of IIS. However, people are willing to pay exorbitant amounts of money for just a little gained utility. If I remember my economics classes correctly, price discrimination is only a viable business strategy for a monopoly.


      So, NT was developed for the server side of the market. This is Microsoft trying to expand their available markets (horizontal monopoly). Microsoft packages many different OS products for two reasons: 1. so they can occupy all levels of the server market (vertical monopoly) and 2. so they can charge large sums of money for only small gains in utility (price discrimination).


      Anyway, my point is that MS is attempting to extend a vertical and horizontal monopoly in the computer OS market, and the price discrimination (and the large profits derived from that) is one of Microsoft's planned outcomes. This is why MS introduced NT.


      Then again, I'm a programmer, not an economist, so this is all idle speculation :)

    7. Re:NT was for nothing by zulux · · Score: 2

      Maybe NT really was a mistake. Maybe Microsoft would be even richer if they had just kept evolving Win9x and let it accrete more features.

      In a way, NT was a mistake. In the time spent from Windows 98 to Windows XP - Microsoft has lost ground to KDE. I the time that Microsoft has spent removing the paperclip and playskooling the desktop, KDE had gone from nothing to something cool.

      --

      Moneyed corporations, non-working 'poor' and criminal prisoners are turning productive citizens into tax-slaves.

    8. Re:NT was for nothing by barfy · · Score: 1

      However, people are willing to pay exorbitant amounts of money for just a little gained utility. If I remember my economics classes correctly, price discrimination is only a viable business strategy for a monopoly.

      That would explain Acura, Infinity, and KIA how? How about, Target, and say Brooks Brothers... Or Harley vs Kawasaki.

      Price discrimination often is used to successfully market otherwise small features to a large marketplace, that is often commodity based.

      Price discrimination is satisfied when the *CUSTOMER* percieves or heck even recieves value for the money, and the product they are looking for.

    9. Re:NT was for nothing by rseuhs · · Score: 1
      Name one feature that NT has and 9x doesn't, which has resulted in increased revenue for Microsoft.

      The higher price tag.

      Yes it's as simple as that. Microsoft supported the "shareware" idea. You get the bug-ridden version for free with your computer and have to pay for the "real" version.

      That's why I'm not so sure about WinXP helping Microsoft's bottom line.

  95. This guy's a twit. by bluephone · · Score: 1

    The single comment that made me say this was his response that without extreme circumstances, a rewrite isn't needed. What he fails to realize is that the world OUTSIDE of your codebase changes, and even without a radical platform shift, a rewrite could become vital to the continued success of the product. If I was coding for a static system, I'd agree with him. Drastic code changes would be rarely needed. But the world doesn't work that way. I rarely use harsh words like "twit" when replying to interviews, especially when I've never heard of the person being interviewed before, but he doesn't seem to understand the scope of the real world, despite having a much firmer grasp on software market conditions and workings than most programmers. Of course, he seems to have les of a grasp on code dynamics than the average programmer, so maybe this is all just an indication of him being less suited to coding than maybe being an average manager.

    --
    jX [ Make everything as simple as possible, but no simpler. - Einstein ]
    1. Re:This guy's a twit. by CBravo · · Score: 1

      this is about the most insightfull post, and it isn't moderated?

      --
      nosig today
  96. Do we really need... by phillymjs · · Score: 2

    ...a former Microsoftie explaining how Netscape failed?

    "Well, we bought another company's browser, threw the Microsoft logo on the splash screen, and gave it away for free. Nobody bought Netscape's when they could get ours for free, so there goes the R&D budget for Netscape. We're raking in *our* R&D money from the Windows/Office upgrade treadmill we put the planet on, and..."

    ~Philly

    1. Re:Do we really need... by demon · · Score: 1

      They didn't even actually buy it - they stole it. They licensed it on a royalty basis, under the assumption they were going to sell it, then gave it away. What a way to screw your "business partner", eh?

      --

      Sam: "That was needlessly cryptic."
      Max: "I'd be peeing my pants if I wore any!"
  97. Hey, we work for the same company! by sapped · · Score: 1

    Wow, we need to get together in the office tomorrow! Surely there cannot be 2 companies running such identically idiotic schemes out there. Could there?

  98. what? by krs-one · · Score: 1

    That LoadLibrary call is sure ugly but it makes the code work on old versions of Windows 95. When you throw that function away and start from scratch, you are throwing away all that knowledge. All those collected bug fixes. Years of programming work.

    Whats saying that a programmer can't go back into the function, rewrite it with new code, code maybe from a better API and then make the function run faster and be bug free.

  99. Joel listed all the reason's why I like free ... by Anonymous Coward · · Score: 0

    software. Products that failed because they were 'late' to market. Bloat is fine, just get everybody to buy bigger machines. If it sells, it is good. Sounds like the american auto industry in the 60's before the japanese invasion.

    Wordperfect 5x was written in C. They were caught off guard because the next thing was going to be OS2, then MS came out with win3.0, which took off. I couldn't bear to run anything in that, and since the haven't used any MS stuff.

    If linux is ever run by marketroids, I'm first one out.

    Derek

  100. Daddy, where does bloat come from?? by cowtamer · · Score: 1
    well, son...

    Joel: Actually they made a worse mistake: they spent something like 18 months trying to squeeze 123/3.0 into 640KB. By the time the 18 months were up, they hadn't succeeded, and in the meantime, everybody bought 386s with 4 megs. Microsoft always figured that it's better to let the hardware catch up with the software rather than spending time writing code for old computers owned by people who aren't buying much software any more.


    That notwithstanding, excellent article.

  101. Re:Joel listed all the reason's why I like free .. by WildBeast · · Score: 1

    Those Marketroids are the ones who figure what people need and what they dream about having so they can suggest a product that will appeal to the majority. What is the meaning of a good product when no one wants it?

    This reminds me of the movie industry. I see plenty of foreign movies receiving awards, oscars, etc. Maybe they're good but I don't usually like them. Hollywood movies appeal to the majority of the population and that's why everybody watches them.

  102. Macintosh by troykoelling · · Score: 1

    I'll be the first to admit that Mac made mistakes. Probably more than Microsoft as far as marketing and pricing is concerned. But I have yet to find any major mistakes with their new OS. I've been using it for four months now and it quite litterally hasn't crashed yet. My room mate has the supposedly 'unbreakable' XP and it is far from that. It crashes as much as old mac OS 9 did and lets just say that was one of Macintosh's mistakes.

  103. Actually, you could write code like Joel by Erris · · Score: 2
    He actually said this:

    A programmer will whine about a function that he thinks is messy. It's supposed to be a simple function to display a window or something, but for some reason it takes up two pages and has all these ugly little hairs and stuff on it and nobody knows why. OK. I'll tell you why. Those are bug fixes. One of them fixes that bug that Jill had when she tried to install the thing on a computer that didn't have Internet Explorer. Another one fixes a bug that occurs in low memory conditions. Another one fixes some bug that occurred when the file is on a floppy disk and the user yanks out the diskette in the middle. That LoadLibrary call is sure ugly but it makes the code work on old versions of Windows 95. When you throw that function away and start from scratch, you are throwing away all that knowledge. All those collected bug fixes. Years of programming work.

    Now we know, in the M$ world bugs=knowledge. No wonder SpyG^H^H^H^H MSIE takes up a 500M foot print. Whoo hooo!

    The real question is, "How do you sell that shit?"

    --
    DMCA, Hollings, Palladium. What might have sounded like paranoia is now common sense.
    1. Re:Actually, you could write code like Joel by Anonymous Coward · · Score: 0

      You, sir, are a goat fucker.

  104. Re:He's only partly correct about the rewrite thin by blamanj · · Score: 2

    One big problem with rewrites that he doesn't address is the "second system effect" from The Mythical Man-Month.

    Spot on. The key to successful rewrites is not to attempt to build the "ultimate architecture" for the application, but to target the actual problems in the code base. The ones that cause the code to be riddled with patches and work-arounds because the original design simply didn't meet the challenges of the real world.

    I don't doubt that Mr. Spolsky has learned some valuable lessons in his career, but in that article he certainly comes across as if he were saying "I'm a manager now and I know everything there is to know about the development process." When you start phrasing things in absolutes (never, always) it's usually a sign of trouble.

  105. I laughed, I cried... by A_Non_Moose · · Score: 1

    I posted to show my ignorance for all of slashdot to see.

    Ok to some extent, yes, but as I read the article I thought to myself "What is he saying in simple terms?"...it's late and I need to go to bed.

    Microsoft's "innovation", if you will, was a 2 out of 3 ain't bad scenario that proved ecologists correct "Reduce, Recycle, Reuse".

    Only in this case they figured out "Increase (bugs, bloat, features), Recycle, Reuse".

    Quite frankly it explains a lot. I had submitted a link at one time called ".asf == Another security flaw?"...because WiMP (win. media player) had {gasp} a security flaw.
    The kicker was it was the same flaw that kept showing up time and time again...I think someone at bugtraq called it "sheer idiocy" (don't hold me to that, as I lost the link).

    And, I've mentioned to people that the I.E. integration into windows was asked of beta testers: "Do you want IE integrated into the OS".
    78% said 'NO'...well, look where we are today, eh?

    Whoever said "I felt dirty just reading this" said it very well. It is like thinking about "your grandparents having sex"...you know it probably happens, but it best not to think about it.
    Same thing here...we know Microsoft "does it" with code...just try not to think about it.
    You'll sleep better at night. Perhaps.

    Is there a certain resignation involved?
    Yes, because, short of "nuking 1 MS way" off the planet (only way to be sure)...the have "won".

    MS has proved "no one ever went poor underestimating the stupidity of the American buying public". (WC Fields?, I forget).

    Nite, all.

    Moose.

    --
    Have you read the moderator guidelines? Well, have you, PUNK? (and I want a Karma: Gnarly option)
    1. Re:I laughed, I cried... by Anonymous Coward · · Score: 0

      "no one ever went poor underestimating the stupidity of the American buying public"

      Don't be so sarcastic - that includes you as well.

      PS.
      I fail to see much of a difference , as far as bugs are concerned, between MS and OS software.
      Both can be buggy like hell or work mostly OK - far cry from that "dirty feeling" ...

    2. Re:I laughed, I cried... by r_j_howell · · Score: 1

      "No one ever lost money underestimating human inteligence"
      - P.T. Barnum.

  106. MS successfulness != code quality by ortholattice · · Score: 3, Insightful
    According to Joel, the single greatest development sin a software company can commit is "deciding to completely rewrite your product from scratch, on the theory that all your code is messy and bug prone and is bloated...A programmer will whine about a function that he thinks is messy. It's supposed to be a simple function to display a window or something, but for some reason it takes up two pages and has all these ugly little hairs and stuff on it and nobody knows why. OK. I'll tell you why. Those are bug fixes. One of them fixes that bug that Jill had when she tried to install the thing on a computer that didn't have Internet Explorer. Another one fixes a bug that occurs in low memory conditions. Another one fixes some bug that occurred when the file is on a floppy disk and the user yanks out the diskette in the middle. That LoadLibrary call is sure ugly but it makes the code work on old versions of Windows 95. When you throw that function away and start from scratch, you are throwing away all that knowledge. All those collected bug fixes. Years of programming work."

    My God. So this is what Microsoft code looks like? It's a miracle it can be maintained at all. This sounds like sloppy coding by trial-and-error, at its worst. Code filled with "ugly little hairs and stuff" that "nobody knows why" is almost a guaranteed recipe for buggy, unstable code. If all these "bug fixes" were properly commented to begin with there would be no argument as to why they should be kept. Thank God for open source, where programmers are _proud_ to show off their code (well, a lot of them, anyway).

    I would attribute the successfulness of Microsoft, and the failure of others, to factors other than the quality of its code.

    1. Re:MS successfulness != code quality by neoevans · · Score: 1

      I'm not sure many /. posters can see much past the self-righteous Open Source movement, and your post is a prime example.

      The point of Joel's comment, the entire article in fact, was that companies don't NEED to care about messy code. Clean, compact code will not sell any more copies and re-writing it practically takes you out of the competition because while you're re-writing from scratch, companies LIKE Microsoft are bludgening you in the marketplace.

      As for maintaining code, how well were the bux-fixes for the VMM handled in the last distro of Linux? I wish I never even downloaded the latest kernel!

      At least in an environment where NOT everyone has equal say, are you ensured the code is controlled and MANAGED (a work some Linux developers seem to fear). Think of it like this: Not all doctors graduate at the top of their class. Do you want some surgeon who just BARELY passed having some say in the next new cancer treatment? I think not. You want someone GOOD.

      My theory, if ANY one of the Linux developers out there was offered a job at Micro$oft for $100,000/yr to go code for them instead, they would drop Linux in a SECOND.

      I would attribute the failure of companies (and non-companies), to thier unwillingness to fight the battle on equal terms. There is no such thing as a fair fight.

      --
      "You are not a beautiful and unique snowflake."...Tyler Durden
    2. Re:MS successfulness != code quality by simm_s · · Score: 3, Insightful

      You don't code much do you? The point is that the environment you are given may not work as told.

      This sounds like sloppy coding by trial-and-error, at its worst.

      Not always:
      Example: The hardware on device X has a timing hazard under conditions Y. Even if your code is perfect it will not work under every condition (that is the real world). So under that condition you do something that seems to have nothing to do with the design under normal condtions. Voila! Problem is solved your code is more robust.

      In the land of make-believe you can just ask the hardware maker to recall their million+ units to fix your silly little issue, but we live in reality.

      Those "ugly little hairs" may not make sense to the 10th maintainer on the project that was ported three platforms ago (Even if commented). I've seen alot of opensource code and some of its pretty damn unreadble. I've seen libraries given with no api reference or samples, drivers with no documentation, and the list goes on. I guess "real men" figure it out just by reading the source. While wasting hours trying to get the code to work in their project.

      Poorly documented open source is just as closed as proprietary code.

    3. Re:MS successfulness != code quality by decesare · · Score: 2

      Clean, compact code will not sell any more copies...

      No, but there's a second variable in the profit equation, and that is cost, which for software means not just development cost but support costs also. Depending on what the code actually does, it probably costs a lot less to support, fix, and add enhancements to that clean, compact, well thought-out code than it does to support a buggy, bloated alternative.

      The big problem here is that when working on the product specifications and plans, very few managers bother to even consider issues related to support and maintenance, much less actually try to anticipate and/or account for how much that support and maintenance is going to cost the company over time.

    4. Re:MS successfulness != code quality by neoevans · · Score: 1

      My main point, which I never fully elaborate on while posting to /. is that Microsoft may or may not be the anti-christ of software companies. They may lie, cheat, steal or even kill (I loved the movie Anti-trust even though it was pretty cheesy) to get what they want.

      BUT...

      Unless someone who posts here has even WORKED for Microsoft, or even catched a GLIMPSE of the code they produce, they have NO right assuming because they are evil they don't know how to program properly!

      I have seen some of the source code that came out of Redmond. Not for an OS mind-you but for the topic of this discussion, it doesn't matter. I thought the code (easily found in the Perl directories on the NT 4.0 Resource Kit CD) was pretty clean, compact and well documented.

      I just think for what is supposed to be an intelligent dicussion group, slashdotters tnd to be pretty bios with their opinions, and THAT'S not intelligent ANYWHERE...

      --
      "You are not a beautiful and unique snowflake."...Tyler Durden
  107. Re:Good point NOT by cjsnell · · Score: 4, Insightful
    Coders who follow these rules produce what? 3000-6000 lines of code a year? Ain't gonna get product out the door that way. What you get is code with lots of comments about what it is supposed to do, but doesn't because of all the time spent on documentation instead of design and debugging.

    Excellent point. My philosophy about commercial software is this:

    Never forget why you're writing the code to begin with. The point is to get working, stable code out the door as fast as possible. Anything that does not accomplish this is a waste of time.

    Doing your architecture work is fine, but do it on a whiteboard in your cube with your co-workers. Don't waste time holding formal design meetings and drafting useless documentation and diagrams because, honestly, nobody will ever read them.

    Modularize/componentize your code as much as possible. Document what the module as a whole does and what data it requires and what data it returns . You shouldn't have to waste time commenting every single peice of code. If you''ve modularized and documented what the module does, any decent programmer can figure out the rest.

    In addition to not hiring idiots, don't hire people who love to wallow in bureaucracy and process. Besides not getting jack shit done, they impede everybody else.

    If you want to comment and spend hours drawing Visio diagrams, fine. Wait until after the product is released to do this. These do not accomplish the goal (see point #1).

    Chris

  108. Yes! This is spot on! by IGnatius+T+Foobar · · Score: 2

    If there were ever a time to make an exception and allow a comment to be moderated up to 6 or 7, the above post would be it. I can't believe how many people here are actually believing the tripe in this article, which basically suggests that Microsoft won so many markets because they actually had better products. SoftwareJanitor's post is spot-on: Microsoft had (and has) enough monopoly ca$h to keep plugging along until they eventually get it right. Most other software companies can't afford that, so they just end up folding.

    Come on now, do you really think that a product as awful as Exchange would get very far if it didn't have Microsoft's money behind it?

    Give no credit to Microsoft here. They're the bad guys and they will continue to be the bad guys for the foreseeable future. Don't be swayed by this moron.

    --
    Tired of FB/Google censorship? Visit UNCENSORED!
  109. actually quite an amazing piece of OS engineering. by os2fan · · Score: 1
    Of cause it is, they run Pacemakers on the OS/2 kernel. That's why MS were keen on using it in their new operating system.

    Seriously, something that boots from the OS/2 boot sector is surely some form of hacked OS/2. They may have acquired a guy or so who wrote VMS, but the source they worked on is OS/2 1.3 through and through. Not that I am complaining.

    You know, for all this alleged VMS stuff, MS is awfully quiet on it in Technet, or in the NT Help files. On the other hand, OS/2 is quite well represented in both of them.

    And OS/2 support in NT is a good thing, since their networking runs on OS/2, and looks like something out of the eighties.

    And, no, I'm not a MS basher. I just have lived through the reality of NT and OS/2. I am awake to it. My information does not come from MS alone. I do not believe MEGO diagrams.

    --
    OS/2 - because choice is a terrible thing to waste.
  110. And just how much software have YOU designed? by achurch · · Score: 0, Offtopic

    Normally I don't reply to anonymous idiots, but I'm in a bad mood today, so I'll let you know that one of my programs just happens to be more or less a de facto world standard. And I graduated university two years ago, thank you very much.

    1. Re:And just how much software have YOU designed? by Anonymous Coward · · Score: 0

      And I graduated university two years ago, thank you very much.

      Given your opinion on commenting, it shows that have almost zero real world experience. Lord save me from l33t people like you who think they know it all.

    2. Re:And just how much software have YOU designed? by achurch · · Score: 2, Funny

      Given your opinion on commenting, it shows that have almost zero real world experience. Lord save me from l33t people like you who think they know it all.

      Given your opinion on commenting, it shows that have almost zero real world experience. Lord save me from l33t people like you who think they know it all.

    3. Re:And just how much software have YOU designed? by Anonymous Coward · · Score: 0

      I got your ircservices source code just to check
      the documentation level. That's what I would call
      minimal to non-existant.

      Young man, you may know a lot about programing,
      but you you don't know anything about
      documentation!

    4. Re:And just how much software have YOU designed? by deaddrunk · · Score: 1

      What experience do you have in a business environment? Have you ever had to deal with awful hacks that would have been far easier to deal with had the programmer put the intent of said hack in a comment block? I'm impressed that you wrote ircservices, but has anyone else had to maintain that code, and if so how did they get on?

      --
      Does a Christian soccer team even need a goalkeeper?
  111. Nice religion by Anonymous Coward · · Score: 0

    What kind of falsafilability is there on this?
    This sounds really religious here. Capitalism==good. Greed makes things good. Socialism==bad. Weird. I guess they should teach more _real_ science in schools instead of this pseudo-science.

  112. About Joel's company, Fog Creek by Anonymous Coward · · Score: 0
    From their About page:
    Smart people like to work with other smart people, so we are fanatic about hiring the absolute best people we can get: people who went to great schools, excelled at everything they did in the past, and astonished us with how easily they handled a day of difficult interviews.
    In other words, they want teacher's pets, the ones who spend all their time acing every homework, not the ones who allocated some of their time to things like coding for fun. Because as Joel would put it, if you're going to get a degree, drop everything else to do it perfectly!
    1. Re:About Joel's company, Fog Creek by addison · · Score: 1

      I'd suspect that's sarcasm.

      But perhaps its not, apparently Fog Creek has its pick of people. And you can be picky when that occurs. Heck, probably the people you'll get who meet your critera are probably not that far from the best for the position.... and the best people are so hard to hunt for. :)

      Its always nice to have goals.. and as long as you're small, you can get away with it. :)

      (We'll have to see if Joel keeps his Microsoft idolation when the next version of IIS puts content management into the package. :))

      Addison

  113. Rewriting is good. Money is even better. by Chuck+Messenger · · Score: 1

    I think the author has it completely wrong. It's suicide for (most) companies to keep alive ancient code. Indeed, the author makes this case strongly himself, in reference to (what he describes as) the ridiculous Word Perfect people who insisted on coding everything in assembler. At some point (he rightly implies), in order to remain competitive, Word Perfect should have dumped their old assembly-coded model and switched to C or Pascal (in the context of the time period). In other words, code it from scratch.

    The author takes the attitude that Microsoft's success was a function of its "correct" thinking vis-a-vis using old code. It doubt it very much. Firstly, there's the obvious example of the continuous replacement of 16-bit DOS code with 32-bit Win95 code. And of course, the completely-written-from-scratch OS, WinNT. At this point, they've completely dumped everything but NT. What percentage of code shipping with XP does the author imagine is more than, say, 5 years old?

    The author fails to see that Microsoft's technological success is primarily a function of the amount of money it has at its disposal. Indeed, the author provides an excellent example: where parallel teams developed Word -- one from an old codebase, and one starting from scratch.

    How can a company compete with Microsoft? That's the real question. Is success more likely by sticking with old code, or by writing from scratch? Very clearly, the answer must be -- by writing from scratch. Consumers only want the best. Microsoft has the wherewithal to be constantly writing from scratch. In order to even get a shot at them, you must at the very least have a very clean, very well-designed framework. That Netscape didn't have the resources to develop the old Netscape 4 line in parallel with the Netscape 5/6 line is not a failure of Netscape technical management. Indeed, in the long term, the only _possibility_ to continue to compete with Microsoft's deep-pocketed browser effort would be to have a very-well-designed (therefore, mostly-written-from-scratch) framework. The 2-3 year gap between Netscape 4 and a usable Netscape 6 is the unfortunate-but-necessary result of being squeezed by Microsoft's monopoly position.

    I think history will judge the rewrite (and, as importantly, the open-sourcing) as a very tough, but correct, decision. At least this way, Netscape is still in the game, rather than going the way of Word Perfect. The foundations are there to build on.

  114. Rewriting code by Todd+Knarr · · Score: 2

    As far as Joel goes, I've been there, done that, got the t-shirt. The problem is, he's wrong. Yes, it costs to rewrite code from scratch. What he misses is that it costs to not rewrite code from scratch too. The question is, which costs more? After a certain point, all those accumulated bug-fixes and patches and kludges to make the code work take longer to work around than it would take to throw it out, take what you learned from it and reimplement it right so it doesn't need all those kludges. At that point, if you refuse to rewrite you end up tying your hands. To borrow one of his cases, yes Netscape sacrificed a lot by throwing out the crap codebase of 4.x. Yes, they couldn't respond to MS's advances while they were rewriting. But if they hadn't rewritten, they wouldn't be able to respond to MS now because it'd take forever to try and turn a tag-soup browser into something that could actually parse XML given a DTD.

    I think I'll agree with the analysis I ran across in the IEEE software development magazine, that concluded that software has a lifespan of about 4-6 years, at which point it's cheaper and faster to throw it out and rewrite it based on what you've learned than it is to keep modifying it.

    Come to think of it, that applies to lots of things. There's a point where you just have to stop tinkering with a prop-driven aircraft, abandon the whole propeller idea and start building jets if you want to go faster.

  115. Rockefeller by Anonymous Coward · · Score: 0

    Actually, the story is about Rockefeller watching every penny, not cutting corners. And he reduced the number of drops from 40 to 39: http://www.csudh.edu/hux/syllabi/554/one_2.html

    That being said, the article had some good points about software engineering.

  116. Re:Good point - I disagree by Anonymous Coward · · Score: 0

    Is it really MY responsibility that someone coming after me has ease in picking up and reading my code.

    It was hard to write, it should be hard to read.
    From what I've seen the entire push towards good
    Software engineering practices is only aimed at
    making engineers irreplacable.

    It may be in the company's goal, but speaking as an
    individual, MY goals don't always match that of the
    greater good for the company.

    Call me selfish, but there is some benefit to being
    relied upon to know exactly how something works when nobody else does.

  117. Why by Anonymous Coward · · Score: 0

    Why do certain employees fail? JS didn't quit to spend more time with his b/f. Find that out and you have a real story.

  118. Re:actually quite an amazing piece of OS engineeri by Thatman311 · · Score: 0

    What are you smoking? The OS/2 subsystem doesn't exist in WindowsXP. It was pulled early in the product cycle. So how does its networking run on OS/2?

    --
    Silly Rabbit...Sig's are for kids.
  119. Re:Good point - I disagree by Anonymous Coward · · Score: 0

    URK... 'irreplacable' should have read 'interchangeable'

  120. Not relevent to free software movement by bug1 · · Score: 3, Interesting

    This article is really about the economics of rewritting software.

    The fundamental difference between free software and commercial software is that free software is about the product, commercial software places a higher value on the profit than the product.

    The classic engineering design method is to build something, break it, build it again break it again, etc etc.

    Ive never heard of good engineering design comming from build it, break it, fix just the bit that failed, break it, fix just the bit that failed, etc

    The whole program is one product, patches dont always fit in nicely with the overall program flow, thats when a program becomes ugly.

    Ugly code is more costly to free software because it stops people wanting to get involved, if commercial software is ugly they just pay them more money or something, managment doesnt care how much programmers like readign the code, they just care that it works and its on time/budget

    1. Re:Not relevent to free software movement by Anonymous Coward · · Score: 0

      "between free software and commercial software is that free software is about the product"

      That would surely explain what most free software is in unfinished, hardly usable ,"this feature is not implemented" state, while commercial stuff mostly works great out of the box.

    2. Re:Not relevent to free software movement by Anonymous Coward · · Score: 0

      Whats with all the MS wannabee's hanging around, are you getting paid for your comments ?
      Do they tell you what to say or can you think for yourself ?

    3. Re:Not relevent to free software movement by bug1 · · Score: 1

      You are absolutely INCORRECT.

      You clearly lack NO knowledge of what the free software movement is about, or are just a troll.

      Free software is much higher quality, and have more features than the average commercial software which is feature crippled compared to free software.

      Commercial software is buggy as all crap "out of the box", you just dont find out about the bugs until you are a victim.

    4. Re:Not relevent to free software movement by mpe · · Score: 2

      That would surely explain what most free software is in unfinished, hardly usable ,"this feature is not implemented" state, while commercial stuff mostly works great out of the box.

      You are missing the point that free software is available at all steps of development. You only tend to get to see proprietary commercial software when they think they have a viable product to sell...

  121. um, guys? by dangermouse · · Score: 1

    This is what we in the industry call a "troll".

  122. Thinking "simply"... by DocStoner · · Score: 3, Insightful

    [1st and foremost: I use and support Microsoft products. The software and OS's work "OK". No further explanation or flaming is necessary.]

    Everything this guy says tells programmers to consider the bottom line, the almighty dollar. This attitude works in other industries, but will eventually bite them in the ass. (Automotive anyone?)
    He's actually giving us the directions on how to beating MS. So, if you are producing such and are in this to make a fortune today instead of tomorrow... take notes they will be invaluable... for the near future.
    However, we all know this is the worst advice for those of us who use and program open source software. We want simple code. We want it to do just the basics. If it's too basic for you, here's the code, feel free to add to it.
    Remember the automotive industry? Japan (and Germany) started out with simple basic cars and trucks. And the typical American car buyer? "They're so small, so plain and slow." Hmmm, now these little 4-cylinders are blowing the doors off of the bigger American cars. Because each time they built their cars, they started out simple and refined each part before they added on.
    MS is winning today, but soon people will like their programs and OS's like they demnd their cars now, reliable and economical. It will happen, but how long will it take?

  123. Sometimes you just HAVE to throw out old code! by leonbev · · Score: 2

    Joel forgot to mention that there are some good times to throw out old code:

    * If the existing program is written in some old, obscure programming language (like Forth or INTERCAL), and no one on the existing programming team knows how to read it, rewrite. Unless the program is HUGE, it's probably cheaper to rewrite it than hire a new programmer that knows how to change it.

    * If the existing software has more bugs and incompatibilities than features that still work as originally intended, rewrite. Let's face it, some code is SOOO bad that it just isn't worth fixing.

    * If the code is poorly commented, or doesn't adhere to the most basic modern programming conventions (I'm thinking GOTO loops, 2 letter variables, and line numbers here), scrap it. You'll drive the programmers nuts trying to figure it out and fix it.

    * If using the existing code requires buying thousands of dollars worth of proprietary middleware and conversion software to make it work on a new platform, rewrite. Joel mentioned this one to some extent, but some pointy haired bosses out there just don't realize how much more complex and problematic a system can become once you start adding machines who's sole purpose is to act as a gateway or translate data between formats. Trust me, I have personal experience with this one.

  124. Re:Before everyone points at Microsoft ..... (fyi) by Anonymous Coward · · Score: 0

    To All,

    I believe that ICQ is always in beta so that if AOL decides they want to sell ICQ, they just remove the 'B' and call it a finished product.

    ICQs Agreement says it is a Public Beta.

  125. Nit on C2 "compliant" by addison · · Score: 1

    The Resource Kit says that the only subsystem you have to disable to get C2 complience is the OS/2 system: ie it's the only one that calls directly to the kernel. The DOS/Win31 and POSIX systems do not call to the kernel.

    No matter the insinuation - NT 4 and above are *not* C2 (Orange book) certified or compliant.

    Yes, Microsoft insinuates they are, yes, the US DoD uses them in places where legally they must have C2, but that doesn't change the fact that only NT 3.5 with 2 x86 and 1 Alpha configurations (and no NIC or floppy drive) EVER has passed C2 certification.

    (That's 3.5. Not 3.51).

    Addison

    1. Re:Nit on C2 "compliant" by os2fan · · Score: 2
      I'm paraphrasing what the Resource Kit says, not what has passed C2 classifications. I have seen elsewhere that Windows is C2 complient when turned into a standalone box with no external access.

      Personally, I would rather see installation routines individually C2 classified: ie if you select option 6, you get a C2 system. That means that one can reproducably install a C2 system from a given distro.

      --
      OS/2 - because choice is a terrible thing to waste.
  126. Re:Not "fron scratch" (commoditized browsers) by guisar · · Score: 1

    Netscape may have been a commodity but IE never was.

    In my view, the essence of MS's strategy was to make sure neither IE nor anything else produced by them was a commodity but in fact something exclusive to them.

    When I hear distance learning product managers saying they haven't "certified" their application to work with a particular browser I want to throw up my hands. They are idiots but it reflects the general understanding as MS has decreed- their stuff will only work with their stuff and they want your stuff to only work with their stuff too.

    MS doesn't want commodities and they will fight to remove any threat of standards impinging upon their exclusive rights to your dollars.

  127. Re:OFFTOPIC: Help me please by vsync64 · · Score: 0, Offtopic

    Why, no! Everyone uses RH7.2 on x86, and everyone has the current directory in their PATH. Stop encouraging anarchy!

    --
    TO BUY A NEW CAR WOULD MAKE YOU SEXUALLY ATTRACTIVE.
  128. Joel by Anonymous Coward · · Score: 0

    It's just a show, he should really just relax.

    Oops wrong show.

    Anyway um this message is for *JOEL*, Joel, who the frickin hell cares what *you* think? Just another version of an overinflated ego. Got your own webpage I see *yawn*, "publishing" your own opinions and passing them off as facts, getting interviewed by all the trade rag hacks, spinning yourself into celebritydom... It's punks like you who make me want to get out of software and become a plumber.

    Either way I gotta work with shit all day.

  129. Re:Yes! This is spot on! by SoftwareJanitor · · Score: 2

    Come on now, do you really think that a product as awful as Exchange would get very far if it didn't have Microsoft's money behind it?

    Let alone that Exchange wasn't even their first attempt to break into the email server market... Those who remember the horror that was MS-Mail know the revulsion of hearing Microsoft apologists say things like "well, at least Exchange is better than MS-Mail"...

    BTW, thanks for the compliments.

  130. LISP IS STILL GAY by Anonymous Coward · · Score: 0

    Sorry, but if anyone were to implement an entire software project using LISP, it would be sure to fail, and would be gay to boot.

  131. Here's some more by maunleon · · Score: 1

    Ease of portability. If you read the concept behind NT, they developed the HAL in order to move it easily to new hardware. This allow them to support Alpha, MIPS, and PowerPC (while they did) with a very similar code base. Should there be another hardware platform that they wish to support, their major task will be to rewrite the HAL. And I don't just mean new processors. Try porting Windows ME to PPC architecture.

    How about enterprise-level networking? 9x networking was very primitive. You try to use a 9x machine as a server, and let me know how well you will do.

    How about Unicode support? At the file system level? May not be an issue for you, but dealing with japanese characters in filenames from inside english Win 9x is next to impossible, unless you read the disk raw.

    How about multi-user support? Try terminal services on 9x. Even without terminal services, remember that apps can run under different security contexts even in 3.51. Think services, for example.

    Also, WinNT applications (and drivers especially) are easier and cleaner to write. This does provide development savings. Not all revenue has to be from the marketplace.

    Finally, it is very unlikely that a user-mode program will bring down an NT-based OS. That is why my development machine is Windows 2000. If it were 9x, I can easily corrupt the runtime.

    Laugh as you want, I was using NT 3.51 when 95 came out, and I wished I had the new explorer, but I wouldn't switch over and give up all the stability.

    1. Re:Here's some more by SoftwareJanitor · · Score: 2

      Ease of portability. If you read the concept behind NT, they developed the HAL in order to move it easily to new hardware. This allow them to support Alpha, MIPS, and PowerPC (while they did) with a very similar code base. Should there be another hardware platform that they wish to support, their major task will be to rewrite the HAL. And I don't just mean new processors. Try porting Windows ME to PPC architecture.

      Which has basically done nothing to improve the popularity of NT/W2K/XP, since the non x86 versions were complete marketing flops. It doesn't look like any other architecture is ever likely to become popular with a Microsoft OS. Even the Itanium is looking like it is going to have a slow and rough time. AMD's much more conservative 64 bit x86 extension has a serious and credible chance to beat the Itanium, especially if it is cheaper and does a better job of running legacy 32 bit x86 code.

    2. Re:Here's some more by os2fan · · Score: 2
      And unlike OS/2 3.x and 4.x, Windows NT4 is not going to get officially sanctioned USB drivers. Oh well.

      Ah yes, "stability". I laugh when I see that. Like some of the sessions that run in it look so shaky that you wonder if the conmputer is about to reboot: programs like DOS stuff.

      No, running DOS programs does not make a system unstable or insecure. But MS has imposed a penalty on NTVDM.EXE that conveys to the user that the underlying system is incredibly shaky.

      As for "user mode programs bringing down the OS", hmmm - yes, I've seen charmap.exe trash the machine so hard they had to rebuild it.

      The sad thing is that you HAVE to allow users to write to the OS home directory, because it stores all sorts of data goodies there. And with that, it is possible for users and applications to trash their WINNT directory. Trashed so bad that you have to rebuild the system. Oh well.

      Like MS has not been weaning developers off stuffing exes and data into the OS directory, so that it could eventually be run read-only. Oh no.

      --
      OS/2 - because choice is a terrible thing to waste.
    3. Re:Here's some more by Anonymous Coward · · Score: 0

      Well, since you brought up OS/2, I'll just remind you that you could knock that OS over by blowing on it. Given the choice, I'd take NT, thanks.

    4. Re:Here's some more by Old+Wolf · · Score: 2

      I thought Arthur C Clarke developed HAL ?

    5. Re:Here's some more by maunleon · · Score: 1

      One the charmap.exe issue, would you say it was a user mode bug, or a kernel mode bug? In other words, where did the problem happen?

      I am not familiar with that particular error, but I would suspect that something screwed up in kernel mode, even though it was called from user mode.

      And.. even the mighty linux can be crashed by a misbehaving driver.

  132. NT to the desktop by addison · · Score: 1

    It's taken them 6 long years to get NT technology to the desktop and all that time there were selling DOS-based, 3.1-based operating systems.

    Actually... They're still using their marketing muscle to force *that*. Many places, most I'm aware of have easier times with Win95/98 on the desktop.

    Similarly, 95 forced 3.1 off corporate desktops when the *preloads* disappeared. It was making progress, but not a lot.

    Amazing how that monopoly works. :)

    Addison

  133. Hubris, laziness, and impatience by ttfkam · · Score: 5, Insightful

    Let's compare:

    for (i = 0; i array_size; i++)
    free(array[i]);
    free(array);

    and now let's look at:

    // get rid of the array
    for (i = 0; i array_size; i++)
    free(array[i]);
    free(array);

    Has your life *really* been so harmed? Is this *really* so terrible? Comments should not be written with the thought that your university professor would know what everything else means. Comments should be written so that all of those folks without a PhD in CompSci. know what it means.

    What if the next joe to hit your code doesn't have a degree? What if the recently-hired intern was just handed a "C in 21 days" book and told by the manager to "fix it" because the programming team is snowed in (or similarly unavailable) and the customer is screaming? (Yeah, try and tell me that's never happened...)

    A fine use of comments is (for example) every ten lines to say, in general, what is going on. One thing I used to do is write a comment at least every 10-15 lines. Why? When the next joe who comes along has to read/edit my code, scanning through some periodically placed comments will *always* be quicker and easier than reading the code. ...assuming they are English speakers of course. Proof? I have programmed (I don't count the BASIC years) for ~10 years. I have been writing/speaking English for over twice that long. Which do you think I'm better at?

    The code effectively shows my implementation, but may not show my intention. I have coded for years. I started dreaming in code several years ago. Shortly thereafter, the code actually worked when I typed it in the next morning. That isn't the point. How good a coder you are isn't the point.

    When you have a hundred thousand lines of code to go through, comments become like "Cliff's Notes." For the quick patch (probably the majority of code being written by most people), comments are invaluable. Who cares if I didn't read Moby Dick if I can still pass the pop quiz? If I need to make an indepth study, I can still do this, but thank god for the "Cliff's Notes."

    Now then, on to the "proper" use of comments.

    1. Write out what you are planning to do in English. (or whatever else may be the dominant language in your development group) Fill in every step in the problem. This is NOT psuedo code. This is akin to: Find out who www.yahoo.com is, open a connection, ask for the main page, and check to see if our cache is still valid. If the cache is stale (the yahoo page has been updated), get a new copy of the main page. If the cache is still valid, pull the page from cache instead. Drop the page into the "ready" bin and send a message to the user that the page is here.

    2. Make a copy and label it "documentation."

    3. Go back to the original, fill in all of the logic in whatever programming language at the appropriate points in your "documentation," and label it "source file."

    This means that your documentation is done, your code is adequately commented, and your algorithm and intent(!) are clearly defined for both your co-workers (and yourself when you have to fix something ten months from now). If you can't spell out the problem and the solution in your primary native language, you sure as hell better not be trying to spell it out in a programming language that members of your team have only been using for two years.

    The only excuse not to do the above is laziness. For some people, laziness is not considered a bad thing. It was noted as being one of the main virtues of a hacker -- hubris, laziness, and impatience. Hell, according to this measure, I myself am lazy from time to time. But cut the bravado, the beating of the chest, the battle cries of "I'm smart enough to figure this out, so should you be," and call a spade a spade. Avoiding comments means that you are being lazy.

    --

    - I don't need to go outside, my CRT tan'll do me just fine.
    1. Re:Hubris, laziness, and impatience by Anonymous Coward · · Score: 0

      uh...

      neither of your examples are going to compile.

      for that specific case it's probably ok to leave out the comment. that's something you do often so it's pretty readable without the comment.

    2. Re:Hubris, laziness, and impatience by klui · · Score: 1

      // get rid of the array
      for (i = 0; i array_size; i++)
      free(array[i]);
      free(array);

      Actually, your example isn't more helpful because your comment doesn't tell me more than what the code says. Rather than commenting on the code verbatim, comments should have insight to the code. A comment like "get rid of the input filenames" is better than "get rid of the array."

    3. Re:Hubris, laziness, and impatience by Anonymous Coward · · Score: 0

      Oops... looks like we forgot to escape out the less than sign... you get the point though...

    4. Re:Hubris, laziness, and impatience by ttfkam · · Score: 2

      I wish I had remembered to switch that out (I had actually thought of it when I started the post). It goes to the point that comments should make the implicit intent of a particular piece of code, explicit.

      You're right of course.

      --

      - I don't need to go outside, my CRT tan'll do me just fine.
    5. Re:Hubris, laziness, and impatience by TeeWee · · Score: 1
      Hmmm, I agree with some with of this, but:

      // get rid of the array
      for (i = 0; i array_size; i++)
      free(array[i]);
      free(array);

      I actually think this is a bad use of a comment. A comment should do more than tell me what I can see from the code itself. It should tell me why something was done, or why it was done in the way it is done. It should show intent.

      [proper comments]: Write out what you are planning to do in English. (or whatever else may be the dominant language in your development group) Fill in every step in the problem. This is NOT psuedo code. This is akin to: Find out who www.yahoo.com is, open a connection, ask for the main page, and check to see if our cache is still valid. If the cache is stale (the yahoo page has been updated), get a new copy of the main page. If the cache is still valid, pull the page from cache instead. Drop the page into the "ready" bin and send a message to the user that the page is here.

      Again, this is an example of either a section of code that is too long and complex for a single routine, or it doesn't add more understanding than the code itself. Remember that comments need to be maintained as well! That is why documenting intent is so much more important than documenting the actual steps taken. If the comment showed intent ("We cache pages for efficiency, but we need to check against updates of the actual page") I know why the check is important.
    6. Re:Hubris, laziness, and impatience by Rocketboy · · Score: 2


      The code effectively shows my implementation, but may not show my intention.


      Possibly the most intelligent comment I've ever seen on Slashdot.

    7. Re:Hubris, laziness, and impatience by kiwaiti · · Score: 1
      for (i = 0; i array_size; i++) // get rid of the filenames
      free(array[i]);
      free(array);

      I prefer this one - the comment doesn't interfere with reading the code, and it can be seen even when scrolling by at 100+ lines/s.

      Kiwaiti

      --
      Member of the Legion Of Microsoft Haters
    8. Re:Hubris, laziness, and impatience by philg · · Score: 1

      "Let's compare:

      for (i = 0; i array_size; i++)
      free(array[i]);
      free(array);

      and now let's look at:

      // get rid of the array
      for (i = 0; i array_size; i++)
      free(array[i]);
      free(array);

      Has your life *really* been so harmed?"

      ---

      What's wrong with:

      freeArray(array, array_size);

      and an appropriate function definition? (Sorry, don't know enough C to get the typing straight on the function or overloaded functions.)

      If the for loop cited above is so idiomatic in C that it shouldn't need a function with a clear name around it, it also shouldn't need a comment. But virtually every piece of atomic logic that's complicated enough to be non-obvious probably deserves its own function with a good name. Not only does it make the code more readable, it follows the "once and only once" rule (no matter how many times you use it, define it once) and enables potential reuse of that code in the future (without compromising maintainability now).

      I generally take comments as a sign that the code they comment needs simplification, and then refactor it until the comments are redundant. The exception is comments that detail external forces acting on the function, like "This array can't have more than 255 characters, because that's the datatype in the database." That's a good candidate for inclusion in the unit test, though, if you code test-first.

      Of course, encapsulating a bit of logic in a well-named function is documentation, of a different sort. I find it provides more use than the slightly "deader" comment block.

      If you have to satisfy more than the programmer, you may have to rattle off a bit more than that; comments in the code are an excellent place to put that extra documentation, if you're using something like javadoc or doxygen.

      phil

    9. Re:Hubris, laziness, and impatience by Harri · · Score: 2, Insightful

      If your code is written so that it requires this level of commenting to understand, it is _crap_.

      If you have a block of code that says

      // do X
      [ code that does X ]
      // do Y
      [ code that does Y ]
      and so forth

      Change it so it says

      void doX(){
      [ code that does X ]
      }
      void doY(){
      [ code that does Y ]
      }

      // ....
      doX();
      doY();

      Each function should do _one_ thing. Comments should be reserved for stuff which it isn't possible to express in the code itself.

    10. Re:Hubris, laziness, and impatience by Fuseboy · · Score: 1

      I like Fowler's point that sometimes, comments indicate a problem. If feel you need to explain what you're doing, you might not be doing it clearly enough.

      freeTheArray( array );

      public void freeTheArray( int[] array )
      {
      for( i = 0; i = array.length; i++ )
      free( array[i] );
      free( array );
      }

    11. Re:Hubris, laziness, and impatience by Chris+Mattern · · Score: 2, Informative

      > Let's compare:
      >
      > for (i = 0; i array_size; i++)
      > free(array[i]);
      > free(array);
      >
      > and now let's look at:
      >
      > // get rid of the array
      > for (i = 0; i array_size; i++)
      > free(array[i]);
      > free(array);
      >
      > Has your life *really* been so harmed? Is this
      > *really* so terrible?

      Well, yes. Because instead of a comment that
      states the blindingly obvious, we *could* have
      had:

      // search is done, so get rid of array
      for (i = 0; i array_size; i++)
      free(array[i]);
      free(array);

      stating *why* we're getting rid of the array.

      Chris Mattern

    12. Re:Hubris, laziness, and impatience by Anonymous Coward · · Score: 1, Informative


      for (i = 0; i < array_size; i++)
      free(array[i]);
      free(array);

      and now let's look at:

      // get rid of the array
      for (i = 0; i < array_size; i++)
      free(array[i]);
      free(array);


      To me, there's no difference really. So sure, the comment's a good idea as it doesn't hurt too much.

      On the other hand, look at this code:

      i = 0;
      while (i < array_size) {
      free(array[i]);
      i = i + 1;
      }
      free(array);

      These snippets are completely identical functionally. However, one is much, much better than other (guess which one is better, my snippet or yours).

      Your snippet is far superior to the code I posted above as your code is idiomatic. In C, the standard way to loop through an array is with a for loop - a for loop that starts at zero and tests with less-than (not less-than-or-equals) against the allocated size of the array.

      So when I see your for loop, I can simply glance at it and I know what it's doing. However, when I see some non-idiomatic construct like the while loop I posted above, I have to stop for a short moment and mentally verify that it does the right thing. The while example would be idiomatic for many other languages (such as Python).

      For a more concrete example, look at this:

      for (p = list; p != NULL; p = p->next)
      printf("data = %d\n", p->data);

      and compare it to this:

      /* print out the list */
      p = list;
      while (p) {
      printf("data = %d\n", p->data);
      p = p->next;
      }

      The second one has a comment, but I claim the first is superior.

    13. Re:Hubris, laziness, and impatience by small_box_of_stuff · · Score: 1

      if you need comments to know what:

      for (i = 0; i array_size; i++)
      free(array[i]);
      free(array);

      does, I dont want you messing with my software.

      dont say what you do, say why you do it, and why you didnt do something else. That I cant get from the code. what it does, is quite clear in most cases. if not, rewrite it so it is.

    14. Re:Hubris, laziness, and impatience by klui · · Score: 1

      Yes, inline comments are nicer, but if there are more than 1 person working on the same source, you'll get conflicts like using tabs rather than spaces and eventually, your comments will not line up and it will look messy. Add people who use UNIX vs. Windows and you'll get line wrap problems. Actually, even in a UNIX world, personal preferences for tabstops will be a nusiance depending what tools you use for editing code. Using a beautifier can be a partial solution but I'd rather not waste more time with doing that.

    15. Re:Hubris, laziness, and impatience by ttfkam · · Score: 2

      If a code beautifier can't deal with the input, you've got bigger fish to fry than the comments...

      --

      - I don't need to go outside, my CRT tan'll do me just fine.
    16. Re:Hubris, laziness, and impatience by ttfkam · · Score: 2
      I generally take comments as a sign that the code they comment needs simplification, and then refactor it until the comments are redundant.


      Heh... so much work and vitrol to avoid a few measly comments. As was stated by my first post, having a few extra comments would rather likely not hurt anyone. Skipping a few extra comments (more often the case) can definitely hurt.

      See my other post regarding this thread.
      --

      - I don't need to go outside, my CRT tan'll do me just fine.
    17. Re:Hubris, laziness, and impatience by gidds · · Score: 1
      for (i = 0; i array_size; i++)
      free(array[i]);
      free(array);

      Surely it'd be even better to put something like:

      // Get rid of the array we allocated in <function>
      // (This is the earliest we know we'll never need it again -
      // up to now it could be used by the <module> subsystem.)
      for (i = 0; i < array_size; i++)
      free(array[i]);
      free(array);

      As you said, tell me something I don't know. And as someone else said, WHY comments not HOW comments.

      Java (okay, okay, you L337 C HAX0R5 can stop sniggering)'s JavaDoc syntax for embedded documentation is great for getting your comments sorted out - if you know people are going to be reading them away from the code, it forces you to put interface-level, rather than implementation-level, comments where they're needed.

      --

      Ceterum censeo subscriptionem esse delendam.

    18. Re:Hubris, laziness, and impatience by Salamander · · Score: 2
      Now then, on to the "proper" use of comments.
      1. Write out what you are planning to do in English...
      2. Make a copy and label it "documentation."
      3. Go back to the original, fill in all of the logic...label it "source file."

      I'm reluctant to discourage people from writing both specs and comments, but I think that advice needs to be taken with a grain of salt. One of the most common causes of error in programming is having two copies of the same thing that get out of sync over time. This "thing" can be specs vs. comments in your example, variables in a program, or cached disk blocks in a system. Maybe I'm especially sensitive to this sort of problem because this last example is pretty much my specialty (or maybe it's the other way around) but alarm bells go off for me whenever someone suggests duplicating something without specifying how the copies will be kept in sync.

      IMO comments should be complementary to what's in the spec, not a copy. Explanations of how the program is written, especially those that would apply regardless of module structure or implementation language, belong in the spec. Explanations of how the code is written, that might be hard to understand except when the explanation and the code are close together, belong in comments. Putting information of either type in the place designated for the other is IMO a mistake.

      --
      Slashdot - News for Herds. Stuff that Splatters.
  134. Re:Joel listed all the reason's why I like free .. by SoftwareJanitor · · Score: 2

    Bloat is fine, just get everybody to buy bigger machines. If it sells, it is good. Sounds like the american auto industry in the 60's before the japanese invasion.

    It will be interesting to see what does eventually come along to knock Microsoft off their pedestal. Something will, eventually. Those who say it can't happen don't have a big picture view of history. Sure, it might not happen tomorrow, or next year, but it will happen. And it doesn't mean they will dry up and disappear. GM, Ford and Chrysler didn't, although they were forced to adapt and no longer look very monopolistic. Examples... If you told people in the late 70's and early 80's that IBM would be knocked off as king of the hill of hardware vendors, almost everyone would have told you that you were nuts. Couldn't happen. Sure, IBM is still around, but they are no longer the 800lb gorrilla they once were. If you told people in 1980 that CP/M would be knocked off as the leading business micro OS, most people would have told you that you were nuts. The list goes on and on. But nothing is forever. If nothing else, even if a competitor doesn't come along to knock a dominant leader down, the leader often becomes old, tired and lazy and falls down often drunk on their own power. One of the things I've seen quoted from Gates is that he has a fear of Microsoft becomming (the old) IBM. It is starting to look more and more like it is happening, despite Microsoft's efforts to avoid it.

    Wordperfect 5x was written in C. They were caught off guard because the next thing was going to be OS2, then MS came out with win3.0, which took off.

    I don't think that it was an accident that Microsoft told IBM and all of the other software development companies that OS/2 was the future while at the same time they were already planning to pull the rug out from under it and go full out with Windows and NT. Microsoft wanted the development tools markets and applications software markets. Getting everyone to go for one platform and then switching to another was a great way to get a huge head start on everyone else. A very dirty trick, but who would expect fair play from Microsoft.

  135. Redevelopment is sometimes the answer by Johnboi+Waltune · · Score: 1
    So many ivory tower software architects sneer at anyone who would consider scrapping an entire codebase and starting from scratch. He appears to be one of these but he slightly redeems himself towards the end. I've only had to do it one time, when there were several factors working against the old code:

    • Written in Java but worked only on NT platform
    • Tightly bound to Microsoft Access, no clear line between business logic and database tier
    • Burned RAM at a rate of 5MB per day, even more if you actually used it during that time. (This app was meant to be high availability)
    • It was the product of 1 developer working without consistent peer review or any process whatsoever
    • When the guy gave notice they tried to make him document but he never came close to finishing

    EVERYONE who worked with that code wanted it redone. I was brought on to lead the effort. We rewrote the whole thing except some gui components. We were able to shrink the LOC in most modules by at least half. In one case I reduced a class from 4000 LOC to 200 simply by taking advantage of preexisting APIs. Redevelopment is sometimes the best solution.

    --
    "The advanced societies of the future will be driven by competing systems of psychopathology." -JG Ballard
    1. Re:Redevelopment is sometimes the answer by Anonymous Coward · · Score: 0

      Redevelopment for whose benefit?!

      Yours?! You are not the end customer. They may not want it rewritten. They could care less how many lines of code it is.

      Does it have more features the consumer (eg: $$$$ payer) want?! That's good!

      Does it have less bugs?! That's less good, and less of a selling point.

      Sorry to break it to you, but VS won over Borland because of more features that a more % of ppl wanted, not because of less LOC or bugs.

    2. Re:Redevelopment is sometimes the answer by SuiteSisterMary · · Score: 2

      That's not a re-write. That's a re-design. A re-write, in Joel's context, is where you're not trying to change anything, but instead, just build a new road to Rome.

      --
      Vintage computer games and RPG books available. Email me if you're interested.
    3. Re:Redevelopment is sometimes the answer by Anonymous Coward · · Score: 0

      I thought java had garbage collection.. that program sounds like a nightmare.

  136. You're wrong about Hungarian by G+Neric · · Score: 1
    Hungarian Notation? Ugh. Spare me the need to be ever so explicit about types. Good programming is all about layers of abstraction. It isn't a "pointer to an object with ..." It's a pointer to a DEVICE, damn it! Learn the paradigms and abstractions before delving into the code.

    FYI, it's not your fault, but you learned the wrong version of Hungarian Notation, the one deployed in the Windows API by a bunch of morons at Microsoft.

    True Hungarian Notation is exactly about layers of abstraction. Hungarian Notation tells you exactly that it's a pointer to a DEVICE and nothing else. Read Charles Simoni's paper about it In fact, if you read the bit about how traditional variable naming mnemonics tend to create ambiguity of reference, you'll see that Hungarian Notation is much more precise about economically distinguishing between different abstractions like files, file pointers, file handles, filenames, etc. (Simoni, BTW, implemented the first WYSIWYG word processor when he was at Xerox PARC)

    1. Re:You're wrong about Hungarian by abiogenesis · · Score: 1

      True Hungarian Notation is exactly about layers of abstraction. Hungarian Notation tells you exactly that it's a pointer to a DEVICE and nothing else. Read Charles Simoni's paper about it

      FYI, this paper is from MSDN online library. Also, Charles Simonyi was chief architect at Microsoft at the time he created the Hungarian notation (early 80s?).

      I fully agree about the ones who designed the Windows API notation, though.

      --

      Donate free food to the hungry at The Hunger site.
    2. Re:You're wrong about Hungarian by G+Neric · · Score: 3, Interesting
      Also, Charles Simonyi was chief architect at Microsoft at the time he created the Hungarian notation (early 80s)

      no, he developed Hungarian Notation in the 70s as a small part of his PhD thesis at Xerox PARC. His thesis has a very interesting concept in it: imagine that programming is a game where two programmers are given the same task to work on, independently. They are allowed to communicate before beginning, but not once they start. If they produce identical code, they win big.

      The point is that this is exactly how the software industry works: if you and I followed a set of conventions that caused us to generate the same code, we could maintain each others code with no extra effort (and rewriting it would produce the same result again :)

      it illustrates what is wrong with perl's "there's more than one way to do it"

  137. Slash bug by Anonymous Coward · · Score: 0

    When I posted the above comment, I had a between "...under NT." and "So, you...." Came out OK in preview mode, but the closing tag was eaten when I submitted. I'm logged in and using the "Post Anonymously" checkbox.

  138. Where I work.. by macdaddy · · Score: 2

    ...there is a handful of people that basically doom projects to failure. If they don't think of the idea, the project dies. If the project doesn't greatly involve them, they kill it. If they are involved too much, they cite how incompetent they think you are because they have to be involved so much, claim they're too busy, and kill it. I've found that if they kill something, the rule of 3's applies. 3 minutes, weeks, or months after they kill your project they either a) completely reverse their opinion on it to a superior, b) reinvent it as their own pet project of which they are of course an expert in the field, or c) a combination shot of both to the mid section. Even when you involve the big cheese that oversees all and get his endorsement on something, they somehow manage to later convince him with a, b, or c and cut you from the loop. One person in particular is as incompetent as they come. Literally this person doesn't know Jack®. Still this worthless person manages to get their hands into every single pot and slow things down, fsck the process up, or kill the thing entirely. There really is no reason for this person to be employeed with us. Worthless doesn't begin to describe this person in all honesty. What dooms projects to failure? Incompetent management, staff, and politics IMHO.

  139. In a nutshell ... by nicodaemos · · Score: 1

    To me, boiled down to its essence, what Joel was saying is that you must know what is important to a majority of your customers. If they value features x, y and z delivered in 2 months over having a faster product delivered in 3 months, then you give them the features. That's pretty simple for everyone to understand.

    The key element of this, is I said you have to understand what a majority of your customers want. Look around you, the geek sitting to your left or your right are not the majority in the population. Think in terms of your grandmother who may have heard of this internet thing in the last few years. She's part of the majority of Americans who think that Microsoft has added new features to its operating system because they have a different set of backgrounds to choose from. Try explaining the advantages of having a full blown linux operating system on a 1.44 Meg floppy -- it'll be lost on her.

    What we're really talking about is how much of the population is composed of software afficianados -- people who can appreciate the subtler distinctions between different pieces of code. Think about how you feel when interacting with a wine snob who's amazed you don't know the difference between an '83 Pinot Noir and a '72 Chateau Lafite - okay I know nothing of wines here so excuse my example. But you get the point. Not having a lot of experience with wine you might not be interested in all the details but may just want to dabble. Your grandmother and others feel the same way about computers and software. They can't appreciate whether you application has a good MVC architecture, but they can tell you if the font is pretty pretty or complain if they can't change the color scheme.

    Think about it.

  140. Re:Good point NOT by ttfkam · · Score: 2
    How many times have you seen, "i += 1; // increment pointer"? Doesn't help, does it? You document the trees but ignore the forest that way.


    I agree that doesn't help. They're just restating code. If, however, the author of this code snippet had said something like

    i += 1; // advance to the next character in the stream

    This gives semantic context to the action being performed and THIS is the point of comments; it's not about the restatement of code.

    Stop hiring idiots. Pay three times the average wage and hire only the best. You'll have much better productivity/cost ratios. So what if 4/5 programmers can't understand the code? The one you've got does the work of 2 to 3. And others like him can pick it up with little or no effort.


    And then when your wunderkind has left the company because someone else offered a raise that you can't match, or the star decides to go into business for himself/herself, or dies from a caffeine overdose, and you are left with no documentation, no comments, no variables longer than four letters, and the "talent" isn't returning phone calls, then what? In your scenario you either lose a year going through the code one line at a time to find the off-by-one bug buried somewhere, your company goes bust making the attempt, or someone rewrites it (also wasting time). You're point would have merit if programmers were know for staying at a company for ten or twenty years. But in "the real development world" two years is the average.

    So everyone should be screwed because some hotshot thought that LISP was a good idea for the problem at hand even though no one else at the company knows LISP? Sure the program is efficient and runs like a dream right now. Fat load of good that does you if it breaks or needs to be extended. And it will break. And it will need to be extended. All code has bugs. A large codebase has more bugs. And new requirements are a fact of life.

    Egos don't keep companies in business and they certainly don't put food on the table.

    If you can throw letters down in Emacs so quickly, why can't you seem to find time to have one line out of 15 be in English. It's not like you really have to switch tasks. You're supposed to be writing about the task at hand. I assume that you can program in more than one language; why isn't English one of them?

    (Apologies in advance to those programmers who are in non-English-speaking development environments)
    --

    - I don't need to go outside, my CRT tan'll do me just fine.
  141. Programming for programmers by achurch · · Score: 2

    to make a long reply short, I don't write code for non-programmers, especially when dealing with personal projects. I think it's reasonable to expect a certain level of skill out of anyone who intends to work on my code (or any code, for that matter), and I design and code with that in mind. You can call it laziness if you like; I call it "efficient use of limited time". I write documentation for non-programmers.

    And yes, when I'm doing something at work I put in more comments than usual--among other reasons, because the other folks in my group don't have that much programming skill--but I also don't consider comments a substitute for documentation, as you (and the original poster) seem to. Documentation is absolutely good; just let me push it aside when I've got a handle on it and want to work on the code.

    Oh, and here's a little question... I've been speaking English for 24 years, and Japanese for only a little over 5; why is it, then, that I have trouble expressing some concepts in English that I have no trouble with in Japanese? Hm? Maybe it's because some languages are better at expressing certain concepts than others.

    1. Re:Programming for programmers by ttfkam · · Score: 3, Informative

      I have to admit, my rant wasn't intended to target you specifically. It was more of a general rant. Maybe I'm just cranky because k5 is still down.

      And I agree that comments aren't a substitute for documentation. Use cases and UML don't lend themselves to source code comments. However, my comments about "Cliff's Notes" still stands. Comments judiciously sprinkled within code helps casual scanning for meaning much faster and easier no matter your coding skill. Coding skill simply speeds the case where comments are not present.

      In answer to your question, while certain logical constructs are best expressed in code, overall concepts are usually just as easy if not easier to express in a natural language.

      Unless you are writing programs and libraries that are only going to be used from end to end by other programmers, the outside world is dictating needs, requirements, and problems. That outside world speaks a natural language. If you cannot map the problem set and the solution set to a natural language, I submit that you do not have an adequate knowledge of the problem.

      However in this case, comments would be a side effect.

      Programming languages describe and work with the nuts and bolts. No programming language that I am aware of is sufficiently abstract to directly map to complex real world problems; no creative use of partial template specialization in C++, dynamic classloading in Java, dynamic function definition in Scheme, etc. can do this.

      Conversely, no natural language that I am aware of can adequately describe a truly logical, deterministic domain either (just check out legal documents for proof). There needs to be more translation between the two.

      For now, those bridges are comments and documentation.

      -----

      For a less abstract argument, let's leave computers out of it for a second. Two people from Indianapolis can communicate with each other better than either can communicate with someone from Sydney. They all speak English, but the dialects, the idioms, and the inside jokes may not translate. So when we write for general distribution, we try to keep those local colloquialisms to a minimum (and no, I admit that I haven't been a perfect example of this in my posts :-/).

      Now keeping this analogy in mind, a programmer has an intimate relationship with a computer/compiler/system libraries/whatever. Together they have many inside jokes, goofy idioms, and function prototypes that mean absolutely nothing to someone else who, not being necessarily stupid, simply has a different focus or area of expertise.

      While it may be more effort, and it may reduce some of the free-wheeling fun you would have had if you were alone with your CRT, doesn't it seem appropriate to make it more comprehensible if for no other reason that to allow others that specifically don't know as much as you to learn from a good example? Wouldn't that help to encourage others to continue using your code instead of scrapping it just as the interview topic suggests? Wouldn't it help to keep a few less wheels from being reinvented?

      Maybe I'm too idealistic. Maybe I'm just not jaded enough. But for me, part of being a lead software developer or a senior software engineer or a project lead is not simply to crank out a mountain of code while others look on and a select few help out. We don't code forever. Some of us get sick of it before too long. Some go into management. Doesn't it make sense to try and *teach* the ones coming up to do what we do? For me, it does. But, again, I am lazy sometimes. A few extra comments means that more than half of the time, I don't need to be asked what something I wrote was intending to do regardless of whether or not they are as good a coder as I am. They just read the comments.

      ...I'm also prone to being long-winded. ;-)

      --

      - I don't need to go outside, my CRT tan'll do me just fine.
    2. Re:Programming for programmers by achurch · · Score: 3, Informative

      In answer to your question, while certain logical constructs are best expressed in code, overall concepts are usually just as easy if not easier to express in a natural language.

      This is more or less what I was trying to get across (not all that effectively, I guess); comments are most helpful when they give the reader more information than they can easily get from reading the code, and code that's easy enough to understand without comments shouldn't be commented "on principle". I guess it's just that my idea of "easy" is a bit different from that of other people. <shrug>

      At any rate, I do comment and document my code (or at least, I'm trying to do better than I have in the past), and I agree with the point you make with your Indianapolis and Sydney analogy. I guess I'm just cranky today, too...

  142. Don't forget CVS by dimator · · Score: 2

    One thing I can't stand is when people check in some code, and the comment they associate with the check-in is "fixing some things" or "updating" or just "."

    WTF?! Put something meaningful, damn it. Comments are not for YOU, they're for others; be considerate.

    --
    python -c "x='python -c %sx=%s; print x%%(chr(34),repr(x),chr(34))%s'; print x%(chr(34),repr(x),chr(34))"
  143. I read the article..and he's 100% right! by Newer+Guy · · Score: 1

    Basically, he's right about everything he said. I'm not all that happy that he's correct, but I can't take that away from him.

    Generally, innovators don't win...they just provide fodder (read: ideas) for the copycats to do it better/faster/cheaper.

    Also, his examples were right on point...especially the one about Novell.

    Frankly, the same lessons could/should be learned by Linux.....a GUI (that's easy for the masses to use) is absolutely ESSENTIAL for Linux to be anything other then a niche OS!

    Anyway...that's my .02....

    1. Re:I read the article..and he's 100% right! by Anonymous Coward · · Score: 0

      I'm sick of your types whining for a GUI thats easy for the masses to use and that it be on top of Linux.. YOU ALREADY HAVE WINDOWS.. it's easier to use than Linux so USE IT?!?!? Why would you insist on a Linux system being easy for the masses to use when that's not what it was fundamentally built for?!

      Shutup and either
      1. Learn how to use a system that differs from windows
      2. Use windows exclusively

      But don't
      3. Bitch and whine about how you wish everything was as easy as Windows to learn. More power, more stability, more learning.. LEARNING IS AN ONGOING LIFE PROCESS.

  144. Re:make them fail using this! by Anonymous Coward · · Score: 0

    No, no, no. You've got it all wrong. The key to successful trolling is bizarre gay porn. Not just any gaping orifice will do.

  145. Microsoft wrote Apple II BASIC by yerricde · · Score: 1
    So certainly since at least 1984 or so Microsoft has basically had a monopoly position in OSes."

    In the late 1980's platforms from Apple and Commodore(and even Atari to some extent) were very viable

    The Apple II Plus and later II models had Applesoft BASIC, written by Microsoft, in ROM.

    --
    Will I retire or break 10K?
    1. Re:Microsoft wrote Apple II BASIC by Yunzil · · Score: 1

      BASIC 7.0 on the Commodore 128 was also from Microsoft.

  146. Re:Rewriting is good. Money is even better. by Thatman311 · · Score: 0

    Well considering I see lots comments from 1991 in the nt source code I would have to say alot of the code is 5-10 years old.

    --
    Silly Rabbit...Sig's are for kids.
  147. CEO salaries by ttfkam · · Score: 3, Interesting

    If the minimum wage had gone up at the same rate as CEO salaries since 1990, the minimum wage today would be $25.50/hr.

    Or is it that CEOs work that much harder than they did ten or twenty years ago?

    The guys at the top did NOT pull themselves up by the bootstraps. They were hoisted up on the backs of others. Don't get me wrong. I have met some truly brilliant minds that were in charge of some companies. But I've also met some true boneheads who still gleefully pulled in $500K/yr+. We're moving headlong back into the days of the robber baron who rules over his fiefdom with an iron fist. Yeah, those were good times. Well, of course! When was the last time you took a pay cut for some peon...er...someone else's job?

    --

    - I don't need to go outside, my CRT tan'll do me just fine.
  148. To succeed in commercial software... by jspolsky · · Score: 5, Interesting
    Let me tell you a bit about the context of everything that I write at Joel On Software. Everything I say should only be taken as advice if your goal is to write (a) commercial (b) software (c) for lots of people that (d) succeeds, or at least has a pretty good chance of it. I run a tiny software company, Fog Creek Software, in a niche where Microsoft has (at least) two competing products. I'm not any happier about Microsoft's dominance than anyone else. I don't own Microsoft stock. On the other hand, I try to be as rational, logical, and non-religious about every decision I make because it's the only chance I have of succeeding.

    Yes, it's true. If you make a major mistake, you get killed, often by Microsoft. Some people think it's a pretty sad state. I just think it's capitalism and evolution. Dodo birds are extinct, and so is Visicalc. I don't want to be extinct, so I try to learn from the mistakes of the companies that have tried to go up against Microsoft. It's easy for me because I was inside and I know something about the way R&D worked at Microsoft. I've tried to share many of these lessons on my site.

    To succeed in commercial software you have to get beyond being shrill and angry about Microsoft. You have to be cool headed and smart and study the past and make the right decisions for your company, not the right decisions for some arbitrary sense of aesthetics (although of course I am as big a fan of clean documented code as anyone.)

    Production code is not so pretty. Open source code is not so pretty. No real code is all that pretty. It takes time to study it, understand it, and read it, to understand how it got the way it is. The more widely the code is used, the more true that is. For Fog Creek's latest software product, CityDesk, we stayed up one night tracking down a bug that only happened on Chinese Windows, where asc(chr(x)) turned out not to be equal to x, an assumption we had been making. How many of you ever thought about getting your code to work on Chinese Windows? No matter how well that piece of code was designed, I'm sorry, I've been programming for 20 years and I never realized that asc(chr(x)) was not always equal to x on some platforms, and I designed it wrong, and until someone tried it on Chinese Windows, I never would have known. Now the code uses byte arrays instead of strings and doesn't have that problem. There's a nice comment in the code saying "use byte arrays instead of strings because of MBCS versions of Windows." The code now works perfectly, but the byte arrays are a little bit uglier than strings. If ten years from now somebody rewrites CityDesk from scratch, I'll guarantee you that 95% of the Windows programmers working today would make the same mistake again, and stay up all night again.

    If a piece of your code is ugly and doesn't work, by all means, rewrite that piece. If it's ugly and works perfectly, you're wasting valuable hours rewriting it, time that could be spent doing something that will gain you market share. If you really have an undecipherable mess of spaghetti, 9 times out of 10 you're just being lazy about deciphering it because it seems like more fun to create it from scratch, but it's the ultimate in arrogance to think that your newly created from-scratch version is going to be all that great.

    --
    Joel Spolsky
    spolsky@panix.com
    Joel On Software
    1. Re:To succeed in commercial software... by jspolsky · · Score: 1

      Lacking a PGP key, I'll have to direct you to look on Joel's homepage. Am I really THAT famous?

      --
      Joel Spolsky
      spolsky@panix.com
      Joel On Software
    2. Re:To succeed in commercial software... by Anonymous Coward · · Score: 0
      but it's the ultimate in arrogance to think that your newly created from-scratch version is going to be all that great.


      Oh, come on ... at the very least, you'll have a better understanding of the problem ...

    3. Re:To succeed in commercial software... by Anonymous Coward · · Score: 0

      I think he was making a humorous joke. In fact, I believe it was the person who submitted your article to Slashdot.

    4. Re:To succeed in commercial software... by Anonymous Coward · · Score: 0

      Remember that code that has "been around the block" might have been altered and rewritten and changed in order to accomodate problems, bugs, strange system configurations, etc.

      By rewriting it you run the risk of overlooking why the code ended up as it did and introduce errors once more.

      -- Lasse Vågsæther Karlsen

    5. Re:To succeed in commercial software... by King+Of+Chat · · Score: 5, Insightful

      People should try putting some damn comments in.

      Early on in my programming career, I was looking at such a piece of code - something which was simple when first written (in C) 5 years previously, but had so many mods, the function was pushing 1000 lines (ugh). Some guy had put in this change, commented it as "for performance improvement", then commented it out with an extra comment explaining that it was taken out because it didn't work. At the time I thought "why is this guy making himself look like a dick?". Later I got it - he'd left it like that just to stop some other poor bastard making the same mistake (it was a calculation thing which we were always pushed to improve performance).

      If you do something wierd or clever, for f*ck's sake put a comment in (do as I say, nbot as I do).

      --
      This sig made only from recycled ASCII
    6. Re:To succeed in commercial software... by slazlo · · Score: 1

      Just as a side note ... I enjoyed your article "Spring in Cambridge" and have investigated your&company site. Just curious have you checked out the OpenACS community (I know you mostly do Windows and can appreciate why) but you may be pleasantly surprised that alot of the early feeling of ADs goals seem to be carrying on with growing community over at www.openacs.org Best regards

    7. Re:To succeed in commercial software... by armb · · Score: 2

      > Some guy had put in this change, commented it as "for performance improvement", then commented it out with an extra comment explaining that it was taken out because it didn't work.

      Surely a clearer technique would be to replace the "improvement" with a comment saying "we tried here, but it didn't work", and use the revision control system (CVS, RCS, etc.) for anyone who wants to look at the exact details?

      (I find the opposite case is more common - think something can be removed, find why it was needed, add a comment saying "this might seem redundant, but really we have to allow for ".)

      --
      rant
    8. Re:To succeed in commercial software... by desha_ovahran · · Score: 1

      You claim to give advice to people on writing successful commercial software for lots of people and don't even take into account fundamental i18n concepts (ie not all chars are single byte chars). I think i'll take your advice with a huge block of salt.

    9. Re:To succeed in commercial software... by armb · · Score: 2

      Why doesn't "Plain Old Text" handle < and > without needing me to type < and >? I suppose I should have previewed. Anyway, that should be "we tried here" and "really we have to allow for "

      --
      rant
    10. Re:To succeed in commercial software... by TheSliver · · Score: 1

      It is important to remember though that the comment is not the code, just as the map is not the territory.
      Firstly, the code is the document, the final arbiter, the Holy Ghost and all. Comments if they are useful at all should be similar to headnotes and footnotes.
      A comment should introduce the function, method and state baldly its intent, it may also mention any dependancies. Further comments should only be added to either document bug fixes, give the bug number etc, or to indicate why the code does it this way and _NOT_ that way.
      There is no point in the comments documenting what the code does in some pseudo code since, not being code, it will be less accurate than the code it documents and being entirely separate from the code a maintenance problem. (Oh for a language that hooks dependent documentation)

    11. Re:To succeed in commercial software... by 3seas · · Score: 2

      Joel, it seems to me that right in what you have to say, you words from
      experience are based on the current methodologies of developing software.

      You are really speaking in terms of a race, like perhaps a horse race to
      be the first to the finish line, regardless of how chopped up you make the
      track. You recognied that, so does Microsoft. The people in the stands
      placing bets, aren't placing bets on who is the most graceful and tears
      the track up the least, but who will cross the finish line first.

      There will always be a rake to go over the track and hide the mess later,
      like a complier converting the code into something the machine understand
      but impossible to read by even the programmer.

      But here is the problem: The race has got to get alot faster.

      Imagine the programming task that would be required to do just the
      software side of a holodeck (star trek fiction or fantasy?) simulation so
      real and detailed and interactive as the show presents. (perhaps keeping
      in mind that when cell phones came about they were actually more complex)

      With current software development methodologies, it's not possible. Or at
      least no more possible to calculate by hand what computers were designed
      to do in a more reasonable time period. You can do it, just not within a
      reasonable timeline to make it useful. Computers simple just made the
      calculation run much much faster, even faster today. Running such a
      program is not the problem, it's creating the program within a reasonable
      timeline.

      And this is the bases of your experience and communications on the matter
      of software development.

      We used computers to automate calculations and then run then very fast.
      We need to do the same thing with software development. But upon doing
      that, it will change the race, change who the jocky is and even the horse.
      Maybe even change what the people in the stands bet on.

      Unfortunately for the track owners, this is something that is more likley
      to evolve out of community property such as the OSS/GPL side of the
      spectrum. But it will also be a good thing for everyone.

      Maybe all I'm doing here is simply pointing out why you are right, for
      now.

    12. Re:To succeed in commercial software... by Cederic · · Score: 2


      I see a lot of sense in what you are saying.

      However, a good enough development process can avoid a lot of the "lost knowledge" that you are so wary of.

      As a simple example, purchase and read Refactoring (Fowler et al, Addison Wesley 1999). ( http://www.amazon.com/exec/obidos/ASIN/0201485672/ qid=1007562004/sr=8-1/ref=sr_8_3_1/002-0755063-106 3244 )

      Simple effective techniques to change code. Use these techniques and you don't need to start from scratch, but you can also rewrite an entire system safely.

      ~Cederic

    13. Re:To succeed in commercial software... by King+Of+Chat · · Score: 2

      Sure - code is the "what", but "what" is not useful without "why". I suspect the lameness filter will prevent me from posting examples. I work on application software which can have some pretty bizzare user requirements and these do end up permeating through the entire system. To a newbie coder, some stuff can look like "no sensible user would want that" but they don't know the system and they don't know that "sensible user" is an oxymoron. It needs commenting.

      I agree comments should be kept to the useful - otherwise they can obscure the code. I don't think that there are any hard and fast rules though - apart from (good) peer review. If there were hard and fast rules for programming, then it wouldn't take any skill, would it? It ends up, as Joseph Heller said "like an experiment in mass lobotomy using rules instead of scalpels". The important thing is not "does it conform to the rules" but "can anyone else understand it".

      In my own personal rules of programming, rule 3 is: "The best, fastest, most optimised piece of code in the world is worth precisely f*ck all if no-one else can understand it". For the record, rules 1 and 2 are "It takes longer to do it quickly" and "nobody cares how fast it is if it doesn't work". I wont list the others.

      --
      This sig made only from recycled ASCII
    14. Re:To succeed in commercial software... by ericsink · · Score: 2, Insightful
      People here are missing the whole point. Everyone seems to be saying that programmers don't read code because the code is poorly commented. Ridiculous.

      Joel is right. Programmers don't read code because they don't like doing it.

      Most programmers act like the universe revolves around them, apparently believing that their job should never ask them to do something that isn't fun.

      It doesn't matter whether the code is well-commented or not -- it usually needs to be read. The natural tendency to read code is an excellent way to distinguish the best developers from the rest.

      --
      Eric Sink
      Software Craftsman
    15. Re:To succeed in commercial software... by Anonymous Coward · · Score: 0
      As a simple example, purchase and read Refactoring (Fowler et al, Addison Wesley 1999).

      Simple effective techniques to change code. Use these techniques and you don't need to start from scratch, but you can also rewrite an entire system safely.

      I second your opinion. In fact, this seems to be something Joel's has missed. For him, running code is always perfect code, no question asked, and if it looks complicated it's just that you're a lazy programmer. This made me jump out of my chair.

      From my experience, this is seriously wrong : I was amazed after a factoring of big chunk of code, how painful it was to add new features before, chase/fix the remaining bugs, and how it was a pleasure to be able to understand the whole logic, design extentions in a bliss, and code new features afterwise.

      Of course, business decisions are the main driver, but the initial article seems to have a blind spot about varying qualities of design and code.

    16. Re:To succeed in commercial software... by Anonymous Coward · · Score: 0

      What you said in the interview is absolute right.
      Something is right in technology but may be completely wrong in business.

    17. Re:To succeed in commercial software... by mpe · · Score: 2

      Surely a clearer technique would be to replace the "improvement" with a comment saying "we tried here, but it didn't work", and use the revision control system (CVS, RCS, etc.) for anyone who wants to look at the exact details?

      Because the comments will tend to stay with the code. The revision control system might not be available to the person at the time or the old version (which didn't work correctly) might have been deleted years ago...

    18. Re:To succeed in commercial software... by jaoswald · · Score: 2

      I don't get your example.

      If you expected asc(chr(x)) to be an identity operation, why didn't you just use x? If some conversion was necessary to satisfy the platform's API, why doesn't the platform provide a conversion that is guaranteed to work on all the frigging versions that are out there?

      What is the point of a widespread platform if you potentially have to special case for every known variation?

      If Windows hasn't gotten beyond this kind of inane kludginess, it's no wonder things are such a mess.

    19. Re:To succeed in commercial software... by Anonymous Coward · · Score: 0

      Yeah, that's a logical piece of thinking.

    20. Re:To succeed in commercial software... by Junks+Jerzey · · Score: 2

      If you expected asc(chr(x)) to be an identity operation, why didn't you just use x?

      Duh. He *did* use x, and it didn't work. And the reason it didn't work is because asc(chr(x)) is not an identity.

      How you manage to get through any classes is a complete mystery.

    21. Re:To succeed in commercial software... by jaoswald · · Score: 1

      OK, thanks for the explanation, although the snide remark is unnecessary; I've gotten through plenty of classes without condescending to those others who have missed some point.

      Still, the side point stands, which is that if asc(chr(x)) is not an identity, then the API has not provided the right tools. I.e., anybody actually using chr() or asc() is setting themselves up for a bug in Chinese Windows. Why have them around at all, except as a trap to the unwary? He claims this was a bug in his code; actually, it's probably a lurking bug in thousands of pieces of code. Given that APIs are, in principle, designed to enable third-party software, and not the other way around, it ought to be classified as a bug in Windows. Instead, thousands get it wrong, and a few persistent people get to lose sleep in order to figure out the mystical incantation that does the right thing.

    22. Re:To succeed in commercial software... by Zurk · · Score: 1

      its difficult to do that with software. why ? because software requires creativity and problem solving skills. automating calculations is easy because we know what the equation is. we just brute force more transistors at it and we can solve it faster.
      that said i know what youre getting at and its oable but not easy. see the following papers...might help you -
      http://fare.tunes.org/articles/ll99/mpfas.html
      http://www.emn.fr/cs/object/biblio/publications/ ho sc01.ps.gz
      http://plaza.powersurfr.com/jsavard/math/undint. ht m

    23. Re:To succeed in commercial software... by GersonK · · Score: 1

      Actually, once he gets done arguing in defense of old code and gets down to talking about what to with the old code that has to go, refactoring is exactly what he's arguing for, both in is his response here:

      <Joel>If a piece of your code is ugly and doesn't work, by all means, rewrite that piece.</Joel>

      and in his longer piece about saving old code on his site (about two thirds of the way down).

      But as a pretty regular reader of his site, he sometimes seems to have an almost religious devotion to old code.

    24. Re:To succeed in commercial software... by stevebhk · · Score: 1

      When it comes to re-writing messy code, I'm curious why so many people who should know better have to be taught what must be one of the oldest lessons in technology:

      "If it's not broken, don't fix it".

      That seems to say much the same thing you did, more succinctly. I guess, judging from the silly flames about asc(chr(x)) that it must be very much an emotional thing, as you suggested...

      --
      Steve Bougerolle, steveb@pacific.net.hk, http://home.pacific.net.hk/~steveb
    25. Re:To succeed in commercial software... by 3seas · · Score: 1

      First, thanks for the links. They could turn out to be very helpful in a number of ways. I'm now in the process of printing two of them out. The second link/paper I cannot access (it is either a corrupt file or I can't find a .gz dearchiver to work on it - using a windoze box).

      Anyway, if I can beat, dismiss, or whatever you want to call it in getting over the problems these papers present, will people listen to me better?

    26. Re:To succeed in commercial software... by pdc · · Score: 2, Informative

      Here’s a similar problem I had. I wanted to generate web pages using ASP, but I wanted to use UTF-8 as the character encoding. The easiest solution seemed to be to make my UTF-8 encoding routine return a string, which I then pass to Response.Write. Make sense?

      This seems to work, but behind the scenes there is a conversion between 8- and 16-bit character sets and back. UTF-8 encoding makes a sequence of bytes. I was storing these in a VB string, which stores Unicode character data, so it transcoded my byte sequence as if it were character data encoded in Window’s ANSI ecoding (MbcsToWideChar). But this is OK, because Response.Write does the inverse conversion: it takes UTF-16 character data and writes what it thinks is Windows ANSI character data (WideCharToMcbs).

      It all goes horribly wrong if WideCharToMcbs(McbsToWideChar(x)) is not equal to x, for some value x used in the UTF-8 encoding. Normally this isn’t a problem (for the platforms I have tested it on), but recent additon of the EURO SIGN to Unicode and Windows ANSI has caused me trouble: some code in SQL Server that does the transcoding itself rather than using the APIs causes this identity to be invalid... :-(

    27. Re:To succeed in commercial software... by 3seas · · Score: 2

      Ok, the third link basicly states two proofs that expose the limitations of mathmatics. And I take it as simply an example of the fact that you cannot solve a general language problem by creating another language. (math as an abstraction set is a subset of all possible abstractions). Perhaps this link you gave in effort to suggest a/the "meta-language" solution? (as is what link #1 is about.) At any rate, link #3 is a statement of fact that I can assure you I'm aware of, even without having ever heard of these two.

      As to link #1, Grabbed my attention but degenerated into "what if?" IP whining. Ok, so the whining expressed an apparent problem and projected concern, but it is either to speculative (what if upon what if upon what if...)or to entrapped within IP cannot based law thinking that it cannot manage to excape enough to see another solution. (or maybe a little something is lost in the translation that is admittedly a poor translation of the original french version. - But I must add, not so poor that it didn't get the message across.)

      Getting past that corporate-political projected bottomless pit depressing illusion of IP whips, chains and bars (though some valid points were made), it got somewhat interesting again.

      The solution the paper strives to reach, is in fact far more possible to achieve thru OSS and GPL side of the spectrum software development directions, than thru closed systems of any kind.

      In the writting of this respose/post I went to check on some things I read and recalled the comment "There exists, as far as we know, only one project resolutely oriented towards this direction" and upon accessing and spending several hours looking thru that site I realize that my comment above about the third link you gave, may in fact not yet be fully understood by the author of the paper or the tunes collective.
      And as such it is probably why nothing has yet to actually be established and done in the tunes project.

      I bet they all have been feeling like they have been trying to grab their own shadow and make it solid. Of course never being able to really quite do that, but it's oh so close, like words on the tip of your ......

      For they have smack dab run head first into the proofs of the #3 link you gave. And haven't yet realized it.

      try my home page!

    28. Re:To succeed in commercial software... by jawahar · · Score: 1

      Joel is absolutely right, because in theory, practice and theory are the same, but in practice they are different.

    29. Re: To succeed in commercial software... by Inthewire · · Score: 1

      Joel, I read the interview on your site and then followed the comments here. No one has seemed to point out is that it is a total rehash of things you've posted to joelonsoftware.com

      Either you are amazingly consistent or you let someone sew a bunch of selected paragraphs together...

      --


      Writers imply. Readers infer.
  149. requirements by brer_rabbit · · Score: 2
    Deciding to completely rewrite your product from scratch, on the theory that all your code is messy and bug prone and is bloated and needs to be completely rethought and rebuild from ground zero.

    From what I've seen, a complete code rewrite is what happens when requirements were failed to be met. Usually some novice designer comes in and fails to capture the requirements. They either blindly implement it leaving lots of holes or keep going back to marketing so often finding so many uttlery useless boundary conditions that the thing takes forever to write.

    A code rewrite is what a novice will do when they've insufficiently captured requirements.

    You can get one step closer to marketing by quick prototyping. A professional will do a quick prototype in Perl, cut so many conditions out of the requirements that the excuse for a code rewrite is merely adding a CPAN module or rewriting a portion in C.

  150. Re:Good point NOT by ClosedSource · · Score: 1

    "And then when your wunderkind has left the company ... then what?"

    This reminds me of the old saying "If one of your programmers is irreplaceable, fire him".

    In my experience, many of these "superprogrammers" leave the company just as a product is being transitioned from a demo to a real product. They know their code is not going to hold up in the real world, so they move on to the next gullible company.

  151. Joel on How Useless His Own Software Is by GoPlayGo · · Score: 1

    At the Joel on Software site he writes about his own product, CityDesk: "Porting *Joel on Software* to CityDesk involved a lot of manual copying-and-pasting -- something I never would have had the patience for if it wasn't for the opportunity to thoroughly test CityDesk."

    --
    The game of Go (Igo, Weiqi, Baduk) has the simplest concept and the deepest play.
  152. Microsoft DO good re-writting ! by warloch71 · · Score: 2, Insightful

    The first OS was DOS. Then came on top of that Windows 1, then 2, 3, and finally 3.1 and 3.11 At that point, someone at MS looked at the code and get sick. So They RE-WRITTEN FROM SCRATCH a complete new OS : NT, from which was born what is probably the best and most stable OS ever released by MS: NT 4. At that point there where two branch: the DOS legacy kernel (Win95, Win98, WinME), and the re-written kernel: NT4, 2K and now XP. I don't know where the non-rewritten legacy code of WinME is in ANY WAY better than 2K.

  153. Re:problem = clueless management/directors/execs e by Big+Jim · · Score: 1

    The balance of salary may be in managements court, out of your hands, but that's your fault - if you wanted the money game, why did you get into the code game?

    Many programmers complain and complain about how their salesmen and managers know nothing about computers.

    I ask how many programmers know the first real thing about management, about finance, about running a company.

    It's right there in the language that's used: "who maintains the code" - who cares? We don't make code, we make products.

    Anyhoo, that's my piece. If you knew your job as well as everyone elses, you'd be running your own company now. Not complaining about being a peon in someone else's.

  154. To maximize humor... by SuperKendall · · Score: 1

    The first line should have read:

    Step 1: Take my boss... please.

    --
    "There is more worth loving than we have strength to love." - Brian Jay Stanley
  155. Re:actually quite an amazing piece of OS engineeri by Anonymous Coward · · Score: 0

    The networking was ported over from OS/2 (NT 3.1 documentation proudly proclaimed this), but it never ran on the OS/2 subsystem.

    Besides Windows/OS2 networking is crap.

  156. Re:problem = clueless management/directors/execs e by Anonymous Coward · · Score: 0

    A lot of the .coms that I've worked with were clueless, period. Engineers who thought they could write code; marketers who thought they knew marketing; CEO's who thought they could motivate people. Total BS.

  157. Re:actually quite an amazing piece of OS engineeri by Anonymous Coward · · Score: 0

    > Seriously, something that boots from the OS/2 boot sector is surely some form of hacked OS/2.

    Of course.

    Just as Linux is obviously some form of Windows since I boot it via BootMagic on one machine, and Win98 is some form of Linux since I boot it from LILO on another.

    ..and both of these boot from the same boot sector as DOS, so they're obviously both DOS variants.

  158. JINGLE BELLS! by scanman857 · · Score: 1
    Nine tenths of a gig,
    Biggest ever seen,
    GOD this program's BIG,
    MS Word XP!

    Comes on ten CDs,
    It requires... damn!
    Word is fine, but jeez,
    200 Megs of RAM?

    Oh, Microsoft! Microsoft!
    Bloatware all the way,
    I've sat here installing Word,
    Since breakfast yesterday!

    Oh Microsoft, Microsoft,
    Moderation, please!
    Guess you haven't noticed,
    4 Gig drives don't grow on treeeees!

  159. Chars and bytes arrays are both the wrong solution by StrawberryFrog · · Score: 3, Insightful
    How many of you ever thought about getting your code to work on Chinese Windows? ... The code now works perfectly, but the byte arrays are a little bit uglier than strings. If ten years from now somebody rewrites CityDesk from scratch, I'll guarantee you that 95% of the Windows programmers working today would make the same mistake again, and stay up all night again.

    Nope.

    The right solution, which many would take if doing it again today, is to do it all in Unicode.

    --

    My Karma: ran over your Dogma
    StrawberryFrog

  160. Re:Good point NOT by Anonymous Coward · · Score: 0

    Writing stuff on the whiteboard for design is fine, but guess what? If you don't write it down, and if you don't create the corresponding Visio class hierarchy diagrams, etc., half of the ideas from the whiteboard get lost when the next design meeting wipes the board clean.

    I've seen it happen over and over and over again to developers I've worked with. Problems that were "solved" during a design meeting come back again because the developer didn't document the proposed solution. What's worse is that some great ideas get lost forever this way.

    If you don't document your design, you are nothing but a wannabe "h4x0r".

  161. mod this guy up by Anonymous Coward · · Score: 0

    for recording an mp3 for slashdot, at least!

  162. Re:problem = clueless management/directors/execs e by Anonymous Coward · · Score: 0


    It's "a lot", not "alot". Note the SPACE between the words.
    </petpeeve>

  163. Re:How to make projects fail by Anonymous Coward · · Score: 0

    that was kind of funny, actually...

  164. Re:How to make a good software project / product f by Anonymous Coward · · Score: 0

    Mozilla.org is a front organization for AOL. It only exists so that open source dupes can convince themselves that they are helping "the cause" and not Steve Case's wallet.

    Go read Mozillazine and see these clowns live in OSS fantasy land where there are no deadlines and the users drive the features. Even mention Netscape and they go through the roof. Nooo, they cry, Netscape is just one of many "contributors" to Mozilla.org (ignoring the fact that most 3rd parties quit after continually being lied to about shipdates).

    Mozilla.org will never mention Netscape. That would destroy the illusion.

  165. Thoughts about rewriting code by ggeens · · Score: 2, Interesting

    I'm an IT consultant, making a living by developing applications for large companies. This is a totally different environment than the one described in this interview. My programs have one buyer, and typically run on a single machine.

    I have been through a couple of code rewrites. In one project, we simply started from scratch. New database (Oracle 7 -> 8), new data model, new OS (UNIX -> NT) and a new programming language (C -> Java). I had the system requirements and the new data model as input, and I designed all the rest. I never looked at the original code, except to check the semantics of a few queries. (Joel's "hidden knowledge" doesn't apply here, since we were going to a new platform anyway.)

    On another project, I redesigned and rewrote parts of the system. Each of those conversions have cost me dearly, and I wasn't really satisfied with the results. (In a partial rewrite, the new code needs to fit in with the existing system, and things get messy very quickly.) I wouldn't have done any of thos rewrites if the old architecture had been able to handle the new requirements.

    Finally, I have one remark about aged code: comments are your friends. If you need to look at a piece of code twice before understanding it, you should add comments. If a particular construction is not obvious, explain why you do it that way.

    I've only seen it done properly once. Literally half of the screen width was reserved for comments. (Yes, that is excessive, but it encourages people to write things there.) Every change to the code was tagged with the change request it belonged to. In many cases, the old code was still there, but commented out.

    I'd argue that program code is not "hard to read" by itself. It is written that way. Programmers never consider the fact that their work will be read by humans (including themselves). Once you step out of that mindset, you will write readable code.

    --
    WWTTD?
  166. Joel is almost completely and totally wrong... by barfy · · Score: 4, Interesting

    He is correct that a rewrite is expensive, and can (and usually does) take a long time.

    However, the mistake is not in doing the rewrite, but in not managing the process well.

    The number one reason for doing a rewrite is for a cleaner, more stable architecture for writing new features against. The need for a new architecture is discovered in the process of adding new code to the old, and discovering issues that were not adequately addressed in the older version, or in learning better methodologies, or in the existence of better tools and programming processes.

    Programs that have been improved by a total rewrite...

    Windows NT/XP over DOS (and DOS windows)
    Excel over Multimate
    Word For Windows over Word for DOS.
    Adobe Indesign over PageMaker
    Quake over Doom
    Quake II over Quake

    That is off the top of my head...

    ALL real successful software was origninally generated by extremely small teams of EXCELLENT *STAR* quality programmers. (There are not very many of them. If you don't believe that programming is a talent industry, you don't really understand what it takes to make successful commercial software).

    The only real other option is unlimited resources (time and money) and it seems that where this exists is at Microsoft, and in some open-source projects.

    The biggest problem comes from management believing that random team of programmers can create a new platform from scratch and that it can be done in a schedule that permits dropping the old code base.

    ID does it by continuing to build new platforms with very small extremely talented teams.

    ADOBE and Microsoft did it, with lots of time energy and effort, with parallel development against the old code base.

    But this does not mean that it shouldn't be done. Those that do not rewrite eventually lose, because they are not able to respond to the market on the old code base, and are not able to make the kind of advances that a required by the customer base to upgrade if they use thier product already, or to switch or begin using their product if they hadn't already been convinced.

    Managers are going to be disserved in the long term by reading Joels thoughts on the process, and ultimately the companies they work for will be eaten for lunch by new competitors that are not burdened by legacy code, but also really understand well the problem space they are trying to solve.

    1. Re:Joel is almost completely and totally wrong... by Anonymous Coward · · Score: 0

      Point of order:
      Windows XP/NT is based on OS2.

      In fact, Microsoft and IBM had a code sharing agreement way back then (hence the win3.1 compatibility option for OS2...) Microsoft got access to the OS2 codebase, which became the foundation for a lot of NT.

      (NT3.1 had OS2 style error messages...)

  167. the crack good? by 7-Vodka · · Score: 2, Insightful

    GOD man, if i'd written software that worked perfectly the first time like that, i would MOVE ON and do something else to sell. Also, if you've sold your software to all the people who want to buy it (i'm assuming this is your point, that plp already own your earlier working copy thus you cannot charge them again), then you should have made a lot of money in the first place.

    --

    Liberty.

  168. They fail to innovate by Anonymous Coward · · Score: 0, Interesting

    Software projects fail because they fail to innovate in the places that matter:

    1. Software architecture - sorry, but a browser written using monolithic C++ isn't going to be as maintainable as MS's COM-based architecture.

    2. Features - new features have to actually be useful and work. Without this, no level of marketing is going to sell a piece of crap (Mozilla comes to mind).

    3. Tools and languages - new tools and langs often hold the potential to simplify development drastically, but many managers deliberately avoid new tech because they think they are being competent by playing it safe. In reality, it's actually safer to move to newer tech than to let your code decay.

    Engineering managers suck in general. The only good ones I ever knew were ones who knew how to make ballsy decisions that buck the trend of convenience and political correctness.

    1. Re:They fail to innovate by Anonymous Coward · · Score: 0

      Mozilla uses XPCOM which is a tidier ripoff of MS COM.

  169. Making software fail: 19 easy steps to success! by Ogerman · · Score: 2

    Yes folks, this method is absolutely tried and true. It has worked for the venerable software industry for years! There really is no other way to develop your software!

    1.) A good piece of software starts by scratching where's there's no itch. But that doesn't matter, because with the right marketing, you can create an itch where one previously did not exist. Your software should be covered by as many US patents as possible to prevent other software developers from trying to scratch the same itch.

    2.) Write everything yourself. Never reuse your own code or that of others. Modular code is your enemy. Avoid it like the plague.

    3.) If your first implementation doesn't work, kludge it until it does.

    4.) Interesting problems should be handed off to somebody else, or better yet, developed by a third party as an undocumented module with highly restrictive licensing. Your users will never know the difference.

    5.) If you lose interest in a program, your last duty is to make it disappear from the face of the earth as quickly and quietly as possible. (this includes discontinuing all tech support and preferably changing your 800 number) Turning the software over to public domain or releasing the source code might somehow help a competitor.

    6.) Treat your users as scum. You know far better than them how to develop the software and what features they need. If the complexity of the code base becomes overwhelming, you clearly need more middle managers to increase your programmers' productivity. Now is also a good time to double the price of the software to meet increased development costs.

    7.) Never, ever release source code to any of your software. Your customers don't have any use for it anyhow and you might somehow help your competitors. If customers complain about a bug, wait 6 months before fixing it and charge a nominal fee plus shipping for the update. Requests for features should be written on small slips of paper, placed in a hat, and drawn at random no less than one year after a major version release.

    8.) Your customers should have no part in the debugging effort. Beta-testers, if allowed, should be registered and be given time-expiring binaries only.

    9.) Choice of data structures is of lower priority than rapid code development. Your users can always buy faster hardware.

    10.) Do not attempt to foster an online community of your users. They'll just complain, flood your support resources, and worst, they might even band together and develop free software to replace their need for yours!

    11.) The next best thing to having good ideas is stealing them from others and then claiming them as yours. (preferably with broad patents) The latter is always better as it saves you R&D costs.

    12.) Often, the most striking and innovating solutions come from realizing that it's your users' needs that are wrong, not your software.

    13.) Perfection (in design) is achieved when your software has enough features to run untolerably slow on anything but the fastest currently available hardware. Some hardware vendors may offer kickbacks for this service.

    14.) As a tool, truly great software should have only one use. Your software should have safeguards to prevent customers from using it in ways you did not intend. Anyone who successfully finds new uses for your software should be sued immediately under the Digital Millenium Copyright Act.

    15.) Don't be afraid to mangle data in any way you see fit. After all, yours is the only software that needs to access it anyhow. Leaving it intact may allow competing software to operate on the same data or encourage users to request new ways for your software to process the data.

    16.) If your software requires its own language or command set, it should be as convoluted as possible to discourage users from using anything but the GUI you've designed. Syntax of the language should be based on an innovative combination of Old English, Arabic, Hiragana, and Swahili.

    17.) Any secret encoding schemes or passwords critical to your software's security should be stored in a file called 'no_secrets_here.dat' to confuse would-be hackers. The contents should be ascii-armored and successively encrypted an even number of times using ROT-13. Anyone who dares break your security scheme can be sued under the Digital Millenium Copyright Act.

    18.) Give your programmers the problems they are least interrested in. Otherwise, they might get excited and try to change the program specifications without first consulting middle management.

    19.) Provided your lead software development manager has a medium at least as good as an overhead slide projector and knows how to increase productivity with threats of downsizing, you can always let go of a programmer or two.

    This satire made possible by Eric Raymond, author of The Cathedral and the Bazaar. Read his works if you want your software to succeed instead. (-:

    1. Re:Making software fail: 19 easy steps to success! by Zurk · · Score: 1

      hear hear. thats a fairly brilliant summary of the state of software today (and for the future as long as microsoft maintains its monopoly). the only goo things i see coming out of this is that open source software *has* to be written since the users have no choice except to write their own code.

  170. Summary (Re:problem = clueless management...) by osolemirnix · · Score: 1
    Yeah I couldn't agree more. It's summed up very nicely in the article:

    Too many MBAs at all levels and not enough people with a technical understanding of what could and needed to be built.

    That pretty much says it all, doesn't it.

    --

    Idempotent operation: Like MS software, wether you run it once or often, that doesn't make it any better.
  171. Re:Good point NOT by Wastl · · Score: 1

    Commenting the code may be unimportant for many pieces of code, but there are many algorithms that you simply won't understand if they are written in C/C++/Java without comments in the code.

    Sure, if you pack it in a module and say what it does, this should be sufficient, but unfortunately there is no code that is bug-free (except perhaps TeX:-) ), so it is always necessary to fix bugs. You cannot fix a bug if you don't understand how the algorithm works.

    Sebastian

  172. And... by Anonymous Coward · · Score: 0

    ..Bob Abooey to you!

  173. Re:Good point NOT by StaticEngine · · Score: 2
    Coders who follow these rules produce what? 3000-6000 lines of code a year? Ain't gonna get product out the door that way. What you get is code with lots of comments about what it is supposed to do, but doesn't because of all the time spent on documentation instead of design and debugging.

    No, they produce much, much more. I wrote about 4000 lines of C++ in 2 months for the networking component of a Racing Game. It worked great when it was demoed in front of the Company Board. It was well commented. And then I spent three days typing up 47 pages of documentation on my work before adding and improving on the project.

    So to reiterate, 2 months, at about 50 hours a week, writing 4000 lines of well commented, well formatted code, and writing complete system documentation for that component. Design Time included. And I am not an Uber-Programmer.

    This is not hard. It's highly doable. Only the people who think it can't be done are the people who won't be able to do it.

  174. Bloatware by dreamquick · · Score: 2, Insightful

    "If you're a software company, there are lots of great business reasons to love bloatware. For one, if programmers don't have to worry about how large their code is, they can ship it sooner. And that means you get more features, and features make users' lives better (if they use them) and don't usually hurt (if they don't)."

    The thing about bloat is that it's not a bad thing until it *kills* your product.

    Lets say my product has been through several major versions and has a reasonable userbase - but is bloated & the majority of the users complain about it seeming slow.

    Now according to that interview we should just learn to deal with this via moore's law rather than actually having the vender write code more responsibly.

    However if my competitor introduces a smaller, less bloated product with more features than your product that also runs faster, then you run the risk of having the userbase start to convert.

    Once that happens if you follow the rules from this interview you are doomed - you cannot rewrite to reduce bloat, you are not supposed to be interested in reducing bloat.

    The only exceptions are :

    the userbase has to be smart enough to appreciate what advantage any change would bring, otherwise they just act like sheep (the AOL arguement).

    the product is not "sticky" - e.g. i can just copy all my existing content into the new system, meaning transition is painless.

    cost of ownership is high - if i have to spend $200 to buy my product then i will naturally be reluctant to waste my investment / look stupid.

    Moral of this story - only build bloated software if you have stupid users, or you have them pinned in a corner with no-where else to go, or if they paid through the nose to buy it.

  175. Man, you are a bunch of sad, sad people by bilboyablan · · Score: 2, Insightful

    Man, I have been a Slashdot reader for several years, and I have noticed before that the audience/posters really can be really acidic/negative at some times.

    But this is ridiculous. All of you people nagging on Spolsky, have you at least read some of his articles at all? They are really good, suggest a pragmatic hands-on approach to software development, and are a real joy to read.
    And please, I am not a Microsoft freak at all, but could you for once acknowledge that they have done some things right?

    And you are really anal, focusing on small details instead of getting the point. What does it matters if Spolsky had this or that position at Microsoft, or if he in fact participated in active programming or not.
    In fact he did, read
    http://www.joelonsoftware.com/articles/fog000000 00 75.html (yes, I could have done a HREF, but I don't care about it, just copy the damn text and paste it on your web browsers address bar, I know you can do it).

    You are really a bunch of sad whiners, and I am sick of you. Bye slashdot, I am tired of your inmature and negative crowd.

    1. Re:Man, you are a bunch of sad, sad people by Anonymous Coward · · Score: 0

      You are really a bunch of sad whiners, and I am sick of you. Bye slashdot, I am tired of your inmature and negative crowd.

      I felt like this post was really whiny and negative.

      As for you leaving.. you'll be back.

    2. Re:Man, you are a bunch of sad, sad people by Anonymous Coward · · Score: 0

      pot?
      kettle?
      black?

      more whining unconstructive comments like yours.. this is what i read slashdot for :)

  176. Re:Chars and bytes arrays are both the wrong solut by Anonymous Coward · · Score: 0

    What kind of 'solution' is this? This solution precludes running on Windows 95, which represents a good chunk of the user base.

  177. This guy just isn't real... by jamieo · · Score: 1


    I've read a number of "joel on software" rants in the past and in almost every case I've come to the conclusion that this guy is just a prat who's trading on a couple of years work at MS (which impresses some people).

    A *fair* amount of what he has to say is valid (in other articles too), but generally he's just a bit clueless and one of those people you really want to avoid working for.

    As long as the joels of the world keep mismanaging big software companies (I work for one, and believe me, they're full of them), software will continue to be buggy, delievered too early, never do what users want and be written by miserable people who don't love the product.

    Thank god for open source... ;)

  178. Re:Not sure how to take Joel and the MS experience by Anonymous Coward · · Score: 0

    One of the things that they go over in psych 101 is that good people(like 63%+) can do evil things (willingly shock people w/ 200+ volts) if the person that gives the order (doesn't have to even threaten) is the one that seams to have authority and there're no examples of rebellion...

    Kinda intersting - the person giving the orders can morally justify that they did not (kill someone)/whatever and the person doing the killing/whatever can justify their actions by saying they had no choice - and everyone's happy.

  179. I guess we just have different tastes by vscjoe · · Score: 2
    Joel's approach (you know, never rewrite from scratch, VB is the best thing since sliced bread, etc.) works in a sense: it's what has made Microsoft such a successful company and lets him churn out Windows applications. Yes, rewriting is bad for business.

    But, frankly, I don't care. I loathe the kind of incrementalism that the software industry practices and that results in the kind of commercial software we are getting. If it takes 9 failures to produce something great on the 10th try, great, so be it. The alternative, decades of slowly evolving, uninspired, tedious, bloated, market dominant software is much worse for anybody other than the software publisher. Software needs competition and failure, just like biology and economics.

    Of course, failures are painful. Investors and managers don't like them and will anything to avoid them. But, hey, that's probably one of the reasons I prefer open source software. On a project that has no commercial aspirations, you can afford to fail and start over.

  180. To succeed in religion... by darekana · · Score: 1

    "...I try to be as rational, logical, and non-religious about every decision I make because it's the only chance I have of succeeding..."

    But many religions are very successful without worrying about being rational... or logical. How do you explain that!? Ha!

    1. Re:To succeed in religion... by TheSliver · · Score: 1

      Explaining the irrational rationally is not the act of a rational being.

    2. Re:To succeed in religion... by Anonymous Coward · · Score: 0

      I don't think you understand Joel's arguement. Practicing a Religion is like purchasing software, which is irrational. People purchase software for irrational reasons like I have stock in that company, or I don't like the competition so I will buy this second tier product.

      Software development needs to rationally choose a feature set that customers will buy. This doesn't mean that the reason customers will buy software has to be rational, just the selection of the feature set has to be rational.

      I worked for a company that told customers, directly, that money was the rational reason for feature set priority. Some customers paid to have their feature needs put to the top of the list, others didn't. Guess who got their desired features in to the next release and who had to wait two or three releases to get their desired feature.

  181. API specs? by BlueWonder · · Score: 1

    [...] asc(chr(x)) turned out not to be equal to x, an assumption we had been making. How many of you ever thought about getting your code to work on Chinese Windows?

    I'm not a Windows programmer, but don't you use API specs? It strikes me as a very risky way of programming to assume anything about the API not in the spec.

    No matter how well that piece of code was designed, I'm sorry, I've been programming for 20 years and I never realized that asc(chr(x)) was not always equal to x on some platforms.

    Sorry, but I disagree. Unless it can be deduced from the API spec that asc(chr(x)) equals x (which would be a bug in either the API or the spec if it doesn't hold unconditionally), I wouldn't call a piece of code which makes this mistake "well designed."

    1. Re:API specs? by CArmeanu · · Score: 2, Insightful

      Well, how should we understand your comment? If there is a bug within the API you use, just don't care and use it as documented in the specs? So you would try to sell/share/use some product that fails due to a lack in the API?

      I think Joel is right and should not care about the specs. If it doesn't work, it doesn't and you find a solution to get around. The client or user wouldn't care why it doesn't work. He would simply stop buying your products and tell his friends and colleagues not to do so also.

      But, this is exactly what he is talking about anyway ...

      Chris

    2. Re:API specs? by praxim · · Score: 1

      Well, nobody ever told me explicitly that -5000 + 5000 = 0, but I was able to deduce it. Similarly, if I were to take an ASCII code, get the character that corresponds to it, and then get the ASCII code of the character the previous function gave me, you'd think I'd be back where I started.

    3. Re:API specs? by Anonymous Coward · · Score: 0

      Try to check if (1 + 10^40) - 10^40 = 1 on a 32bit floating point machine. That's how computers are different from humans. The don't assume or deduce. They follow spec. Or they don't.

    4. Re:API specs? by BlueWonder · · Score: 2, Informative

      Well, nobody ever told me explicitly that -5000 + 5000 = 0, but I was able to deduce it.

      Exactly my point: It can be deduced from axioms ("specs") about integer numbers, addition, etc that -5000 + 5000 = 0. Therefore, I would not assume that asc(chr(x)) equals x unless it can be deduced from the specs.

    5. Re:API specs? by Ionized · · Score: 0, Troll

      how stupid are you?

      asc(chr(x)) is the same as -5000 + 5000

      you are performing an action on x, and then performing an inverse to that action

      you make it sound complex but really its quite simple.

    6. Re:API specs? by Anonymous Coward · · Score: 0

      not as stupid as you obviously.

    7. Re:API specs? by BlueWonder · · Score: 2

      you are performing an action on x, and then performing an inverse to that action

      No, unless the specs explicitly say that asc is the inverse of chr.

  182. MS Word was never the best word processor by Moritz+Moeller+-+Her · · Score: 2

    and arguably it still isn't today. AmiPro 3.0 beat Word in 1993 by a long way. The only reason it became No. 1 was by bundling it with Windows... Basically MS gave Word away as a gift.

    If you have never used another Word processor (like e.g. StarOffice) you don't know what you are talking about.

    I could cry if I look at the problems my colleagues have with their MS Word programs.

    --
    Moritz
    1. Re:MS Word was never the best word processor by jonathan_ingram · · Score: 1

      I *have* used other word processors... from Impression on the school Acorn Archimedes (still one of the best word processors/DTP packages, and quite similar in use to KWord), to Pagemaker, to AmiPro, to StarOffice/OpenOffice, to Word.

      ... or am I not allowed to actually *like* something made my Microsoft?

    2. Re:MS Word was never the best word processor by ErikZ · · Score: 1

      Sigh. I still miss my DOS Qedit. Type things up, and print them out.

      That's all I ever wanted. A nice way to type things up.

      --
      Democrats or Republicans. They are both taking us to the same place and they are not afraid of us anymore.
    3. Re:MS Word was never the best word processor by Anonymous Coward · · Score: 0

      1993 is late to the ballgame -- Word was kicking ass on the Macintosh back in 1989.

      AMI was a underground enthusist program, and it was never seriously marketed in the US. It might have been the greatest thing in the world, but nobody heard of it until Lotus bought them a few years later. Word beat the people who mattered (WordPerfect, mainly).

      (And please get it straight -- Windows was bundled with Word, not visa-versa. Word did not take over 80% of the market due to some backroom OEM deal. Word is actually the profit center. Please have some sense.)

    4. Re:MS Word was never the best word processor by jonathan_ingram · · Score: 1

      Yes. Looking at the programs I listed, I've just realised that I've only listed graphical word processors... how I could have forgotten Wordperfect (version 5.1, which I still have on floppies somewhere) I really don't know -- it was the WP we used at our school (on our enormously expensive IBM PS/2 Model 50s...)

  183. the Dodo by Anonymous Coward · · Score: 1, Insightful

    The dodo died because man hunted them to extinction for pleasure (because "they looked funny"). Nothing to do with evolution.

    1. Re:the Dodo by Anonymous Coward · · Score: 0

      No, it was evo

      The dodo was called the dodo because you could kill one and eat it for lunch and it's buddies would just watch the whole thing. Not getting the significance until, say, dinner time.

    2. Re:the Dodo by Anonymous Coward · · Score: 1, Informative

      I believe you are wrong. The Dodo died due to its evolutionary failure to protect ground nests. The Dodo was never hunted to extinction for sport or food (that is an old myth). Nor was it stupid (as suggested in another email). FYI: It was a poor food due to minor breast muscles (& fatty rump) and of little value for sport. The Dodo was killed for evolutionary reasons, The Dutch introduced Pigs etc to Mauritius, these ate the ground nests.

  184. Engineering... by Cuthalion · · Score: 1

    It's all about compromise.

    --
    Trees can't go dancing
    So do them a big favor
    Pretend dancing stinks!
  185. yes it is by Anonymous Coward · · Score: 0

    That's what evolution is all about: survival of the fittest (and mankind is obviously part of the environment).

    1. Re:yes it is by Phillip2 · · Score: 2

      "That's what evolution is all about: survival of the fittest (and mankind is obviously part of the environment)."

      Its normal to distinguish between "the environment" and "mankind". Hence "artificial" as opposed to "natural" selection.

      Phil

  186. Hungarian notation considered harmful by beable · · Score: 5, Insightful
    Clear, Consistant Formatting: [...] variables use Hungarian Notation or some other standard
    I find Hungarian notation much harder to read than not using it. For example, I find the Unix man page for strcpy which looks like this:
    char *strcpy(char *dest, const char *src);
    much easier to read than the Windows-style Help which is full of stuff like "LPCSTR lpBuf" and suchlike. The idea which is commonly called "Hungarian Notation" says that a variable name should include the type of the variable as a prefixed abbreviation in front of the name. This leads to stuff like:
    byte[] baBuf;
    whereas without Hungarian, it might be called:
    byte[] message;
    which would be much more meaningful.

    Especially in object-oriented programming, the type of a variable is the least important piece of information about the variable, and has no place being abbreviated and prefixed to the name. The most important thing about a variable is what the programmer is using the variable for, and that information should be what the name of the variable tells another programmer. If somebody really wants to know the type of a variable, then their editor or IDE should tell them what it is. If it doesn't tell them automatically, then they should look at the variable declaration, which will state exactly what type the variable is. If programmers want the variable name to tell them the type, then what is the point of declarations? And why bother putting a comment near the declaration saying what the variable is for, because people aren't going to read the declaration or comment anyway, because they are just going to look at the Hungarian warts.

    The argument that Hungarian notation reduces the possibility of assigning variables of different type to each other is long dead with compilers well capable of throwing errors if any incompatible type assignments are attended. I think that Hungarian notation is dead, or at least should be.
    --
    ...
    1. Re:Hungarian notation considered harmful by CounterZer0 · · Score: 2, Insightful
      This leads to stuff like:
      byte[] baBuf;
      whereas without Hungarian, it might be called:
      byte[] message;
      which would be much more meaningful.

      Or you could do this:
      byte[] bamessage;
      whereas without Hungarian, it might be called:
      byte[} Buf;
      which could be much less meaningful.
      If you're going to knock on something at least do it correctly. I agree, Hungarian notation can be harder to understand sometimes, but other times, it makes more sense. Plus, it enforces a STANDARD naming system, not just 'This looks good to me' conventions. BTW: Unix man pages are usually easier to read than windows help for just about anything ;)
    2. Re:Hungarian notation considered harmful by Keeper · · Score: 2

      And you can't call it "baMessage" for what reason?

      Let's say I'm writing software for a portrait studio. Each picture you take is called a pose.

      What would you think "PoseNumber" would be? Would it surprise you to discover that it is actually a string, and not a number?

      What about the difference between an int, long, a short, or an unsigned __int64? "index" doesn't tell you anything about what you're dealing with. It tells you you're dealing with a datatype that represents the index, but nothing about the datatype itself; so every time that becomes important (say, when you want to write it out to disk in some ass backwards format that the client needs it in, or display it on the screen), you've got to wast 5 minutes finding where the variable is declaired. You may think it's fine to spend time searching through 300mb of source code to see where a variable is declaired, but it's a waste of my time -- especially when one or two characters would have told me what I needed to know.

      Stop being lazy and spend time making your code clear, not ambiguous. Your variable names should be descriptive and tell you what they are. Not most of what they are.

    3. Re:Hungarian notation considered harmful by A.Gideon · · Score: 2, Insightful

      Embedding type information within variable names is an artifact. It stems from poor coding practices, which permit great "distance" between declaration and use. It stems from poor tools, where these tools don't facilitate locating a declaration.

      This practice is also inefficient, potentially very so, in that redundancy is being increased. Worse case, some function's name must be changed because of a change in the return type (or argument list).

      There are such changes - depending upon the language being used - that will not require alterations in the calling code. For example, if a return of type T is changed to return a type derived from T (which therefore supports the full T interface), then callers remain uneffected. But if the return of type T was embedded within the function name, then all calling code must be changed.

      Expensive.

    4. Re:Hungarian notation considered harmful by Samrobb · · Score: 1

      I'm a personal fan of minimal Hungarian (single character prefixes for some variables). I'll agree that "full" Hungarian as practiced by MS is downright infuriating. Still... I like to be able to tell simple things about a variable without having to dig back through the code to see where it was declared.

      For example:

      char[] aMessage; // a for array
      char* pMessage; // p for pointer
      IMessage piMessage; // pi for pointer to COM interface
      CMessage; // class name
      eMessage; // enumeration value
      auto_ptr spMessage; // "smart" pointer

      These warts are there to give hints and raise questions - like when you've got an integer variable named bFoo, which you know is intended to hold a boolean value[1]... so why is this code trying to stuff a literal '3' into bFoo? Which variables need to be free()'d before the function can return? Is this function call going across a COM boundary (and possibly out-of-process), or is it a call on a local instance of a class? And so on, and so forth...

      Hugarian does have it's uses, though it's in much the same way that punctuation has it's uses - it's something used to help communicate meaning. On top of that, not everyone uses a syntax-highlighting, error-checking, code-parsing, whiz-bang GUI editor, and some folks still like to look over their code and see if it scans well before they crank it through the compiler.

      --
      "Great men are not always wise: neither do the aged understand judgement." Job 32:9
    5. Re:Hungarian notation considered harmful by beable · · Score: 1
      And you can't call it "baMessage" for what reason?
      You can call it "baMessage". I don't really know why, but a lot of code I've seen that uses Hungarian doesn't do that. I think that once people stick the four or five characters on the front indicating the type and the scope of the variable, they start to think the variable name is too long and abbreviate the rest. This leads to names like "m_baBuf".
      Let's say I'm writing software for a portrait studio. Each picture you take is called a pose.

      What would you think "PoseNumber" would be? Would it surprise you to discover that it is actually a string, and not a number?
      This is precisely the problem that object-oriented programming is there to solve. I don't care what data type you use to represent "PoseNumber". Hide it inside a class so that I never see it. Encapsulate the data type so that you can change it to a String, an int, or a bitfield if you feel like it, and it makes no difference to the users of that class.
      What about the difference between an int, long, a short, or an unsigned __int64? "index" doesn't tell you anything about what you're dealing with. It tells you you're dealing with a datatype that represents the index, but nothing about the datatype itself; so every time that becomes important (say, when you want to write it out to disk in some ass backwards format that the client needs it in, or display it on the screen), you've got to wast 5 minutes finding where the variable is declaired.
      Stick it in a class, then when you want to write it to disk you call index.writeToDisk(). If you want to display it on screen, index.displayOnScreen(). You don't need to worry about what type the internal variables are except for one time when you write the class.
      You may think it's fine to spend time searching through 300mb of source code to see where a variable is declaired, but it's a waste of my time -- especially when one or two characters would have told me what I needed to know.
      No, I get my editor to tell me where the declaration is. Emacs can do that fine using tags. Other editors like JBuilder already know the type of the variable and will tell you if you want. If your editor won't tell you, get a new editor.

      Stop being lazy and spend time making your code clear, not ambiguous. Your variable names should be descriptive and tell you what they are. Not most of what they are.
      Your variable names should tell you what the variable does, not what type it is. The declaration tells you the type.
      --
      ...
    6. Re:Hungarian notation considered harmful by Dwonis · · Score: 2

      Hungarian notation is fine...until you change around your datatypes (think of promoting char -> int -> long -> long long, or float -> double). Then, it's just confusing.

    7. Re:Hungarian notation considered harmful by ZZDad · · Score: 1


      But there's a good reason to use Hungarian that no one ever mentions.

      The first thing I do when I inherit someone else's code is change everything to Hungarian. Why? So that I can figure out more quickly what the hell they're doing. Yes, if *I* had written the code, C++ genius that I am, no one would *ever* have to do this - but, for some reason, I keep getting crapware from people who are much worse programmers than I (does that happen to you, too?), and Hungarian de-obfusticates their code fast.

      Yeah, yeah, I know, "It's an object, you don't need to know what type it is." Sure, if the monkey who wrote it keeps a copy of "Design Patterns" under his pillow (as I do). Otherwise, I'm just the guy with the shovel at the circus... if speaking Hungarian helps me shovel faster, all the better...

      Sign me,

      lpctstrBuffer in Buffalo

      --
      "Slower Traffic Keep Right"
    8. Re:Hungarian notation considered harmful by Keeper · · Score: 2

      Search and replace is a wonderful thing.

    9. Re:Hungarian notation considered harmful by Keeper · · Score: 2

      You don't get it.

      Unfortunately, the world is not a perfect place, and writing a wrapper for every basic datatype you ever use is NOT practicle. OOP is nice. It's a good way to abstract GRAND concepts. It's not an efficient or practicle way of dealing with low level details. C++ is not a pure OOP language. And good lord, don't get me started about COM or exception handling...

      Re: "get a better editor"

      Emacs won't help you if you're looking at a printout doing a code review. Type is an important bit of information when trying to know what a variable does.

      Should I delete [] or delete? Is ++ a valid operation or is (*)++ what I really want?

    10. Re:Hungarian notation considered harmful by cduffy · · Score: 2

      I was agreeing with 'ya (well, except about exception handling) until you got down to here...

      Should I delete [] or delete? Is ++ a valid operation or is (*)++ what I really want?

      If you don't know all the variables (type, &c) in scope in the code you're writing, lack of *understanding* is your problem -- not lack of *notation*. Once you understand how the data is layed out (which should be done before mucking with the code), Hungarian notation is superfluous and does nothing but decrease readability.

    11. Re:Hungarian notation considered harmful by Dwonis · · Score: 2
      Tell that to the users of libc.

      Search and replace kills source-compatibility.

    12. Re:Hungarian notation considered harmful by Keeper · · Score: 2

      No, it just means that without hungarian notation I have to lookup which variables are members of my class, how I need to deal with them, and what operations need to be done.

      Ex:

      Is customers a linked list (delete customers)? Or is it an array of customers objects (delete [] customers)?

      Am I dealing with a pointer to an integer (*InvoiceNumber)++, a reference to an integer (InvoiceNumber++, with the understanding that the calling function's value will be modified), or just an integer (InvoiceNumber++, with the understanding something else will need to be done to transfer the result to a more permanant location)?

      Hungariant notation isn't necessary, it's convenient. Using it means I don't have to remember/lookup the minute details of 50 variables used in a function.

      I don't know about anyone else who's used it, but I find that it drastically increases readability. It also drastically reduces the amount of time I have to spend investigating a segment of code to asses what the hell is going on.

      m_iInvoiceNumber tells me immediately that I'm dealing with a member of my class that is an integer, which represents the invoice number -- not a long, not a short, not a char *, not a std::string, an integer. I didn't have to check the top of the file to see if some schmuck made it a global variable. I didn't have to check the whole subroutine to see if it was declaired locally. I didn't have to open the header file, search through the text to figure out if invoice number is declaired there, or one of it's base classes. Instead of spending 5 minutes trying to figure out what the hell "InvoiceNumber" was, because I couldn't remember it from the last time I had to look it up an hour ago, I knew everything I needed to know in 1/10th of a second.

      And lord help you if you're forced to maintain VB code ...

    13. Re:Hungarian notation considered harmful by Keeper · · Score: 2

      Changing your type is just as likely to kill compatibility, except it'll exhibit itself as odd subtle bugs next time you link to the library.

      Or am I missing a finer detail here?

    14. Re:Hungarian notation considered harmful by Dwonis · · Score: 2
      Yep, you are. First of all, depending on the case, it's quite possible that it will not "exhibit itself as odd subtle bugs next time you link to the library". This is especially true when using macros to declare types . . . like when you use autoconf.

      For instance, time(2) has returned a long int pretty much forever. So, it would have been safe to name a variable storing time(2)'s return value as lCurrentTime. Let's say you also have another long int somewhere else called lFoo

      When the 64-bit platforms roll in, and even possibly replace 32-bit platforms, you use autoconf to compile your program perfectly on those platforms (since you used a macro to declare type). Now, you have the wonderful situation where lCurrentTime is a long long int, yet lFoo is a long int.

      What happens? New developers are confused and frustrated, and experienced ones are still confused, but they soon make a habit of relying on variable declarations, rather than the notation (and will curse your name every time they screw up because of the notation).

      In the long run, Hungarian notation can't be trusted, and if you need it to remember your types, your code is probably already too complex, and needs re-thinking (eg. modularization) anyway.

    15. Re:Hungarian notation considered harmful by Keeper · · Score: 2

      I'm still missing the point ...

      Let me see if I'm following:

      You've got time(2) returning a value. Time(2)'s return value is really a macro definition called "TIME" (or something).

      When I write my program TIME is really a long int, so I write my code under the assumption that I'm dealing with a long int.

      So I write "TIME lBlah = time();" ... which is wrong way to name your variable, because lBlah isn't a long int, it's a TIME value. tmBlah or something equally descriptive would be more appropriate. If your code was "long int lBlah = time();" it's still broken, regardless of your variable naming.

      Now, if I'm following what you're saying further on, I (using that term loosely) go on to make the mistake of declairing long int lFoo to hold a time value, which was mistake number two, as lFoo shouldn't be declaired long int; it's a TIME value.

      You are STILL going to have this problem regardless of what kind of naming convention you use.

      Hungarian notation can be trusted if you trust your coworkers to use it properly. I have yet to discover a bug that was caused due to a misunderstanding of a mislabeled variable type. I have seen one instance of a variable name being wrong (a long which was really a string) in 3 years.

      A blind search and replace is always a bad idea; however, I don't recommend a blind S&R, just a search and replace (examine what's going on with the line before you make the replacement).

    16. Re:Hungarian notation considered harmful by cduffy · · Score: 2

      Yes, I see what you're trying to say.

      However, I think that looking up "which variables are members of my class, how I need to deal with them, and what operations need to be done" isn't something which should be avoided, but rather a necessary step *before* trying to modify some code. Any crutch intended to allow one to code without understanding the larger data structures and algorithms involved is, as far as I'm concerned, ultimately counterproductive.

      If you don't know what's a global variable, what's an int, what's a pointer, &c. in some function before you start, you don't understand that code well enough to hack at it yet. And yes, I use the word "hack" intentionally -- because if you don't understand the wider context (and if you did, you wouldn't need or use that crutch), hacking is all you can do.

      Okay, I'll admit: I've worked on horribly written code, with tens of global variables, where Hungarian notation would have been useful if available. However, that doesn't mean that using Hungarian notation is The Right Thing; rather, writing code with data structures which can be easily grokked is The Right Thing.

    17. Re:Hungarian notation considered harmful by Keeper · · Score: 2

      [quote]
      If you don't know what's a global variable, what's an int, what's a pointer, &c. in some function before you start, you don't understand that code well enough to hack at it yet. And yes, I use the word "hack" intentionally -- because if you don't understand the wider context (and if you did, you wouldn't need or use that crutch), hacking is all you can do.
      [/quote]

      I agree with you here. What I'm saying is that hungarian notation makes it easier to figure out what it's doing! It's an aide; it reduces the amount of time you have to spend investigating the code and it's purpose. It's like a footnote at the bottom of the page. Without it is like reading one of those choose your own adventure books -- goto page 10, goto page 40, goto page 13.

      I'm not saying that it's necessary to do code, but to suggest that it's superflous, promotes bad coding practices, or is a waste of time isn't true either. It CAN be superflous, it CAN promote bad coding practices, and it CAN be a waste of time, but it is only those things when it isn't used properly.

    18. Re:Hungarian notation considered harmful by flegged · · Score: 1

      I agree 100%. I don't care if a variable is an integer, a string, some subclass of string called superstring, or purdled_grobbleblotchit. I can just say

      variable ++;

      And that's it.

      Or I can do

      if (variable1 < variable2)
      doStuff(variable1);


      and not care whether I just compared a string with a superstring. This is the point of OOP. This is why Hungarian Notation sucks ass. The equivalent would be

      if (sVariable1 < ssVariable2)
      doStuff(sVariable1);


      Which doesn't look right at all!

      --

      "I think he was truly surprised at how little I cared about how big a market the Mac had" - Linus on Jobs
  187. IE does make money - as part of the OS sale by DunbarTheInept · · Score: 3

    IE does make money, in precisely the same way that the Windows Eplorer file manager makes money, and COMMAND.EXE makes money, and the CD Player makes money. It's cost is recouped on the sale of the OS into which it is packaged.

    --

    Don't label something "offtopic" unless you know the topic well enough to tell what's on topic.

  188. You can tell he worked for M$ by Zero__Kelvin · · Score: 2


    "SMS: Joel, what, in your opinion, is the single greatest development sin a software company can commit?"

    "Joel: Deciding to completely rewrite your product from scratch, on the theory that all your code is messy and bug prone and is bloated and needs to be completely rethought and rebuild from ground zero."


    So folks ... there you have your reason why M$ code that should take up 20 Megs takes up 200 instead, and is bug-ridden. If your code is messy, bug prone, and bloated ... so what? People have been buying it for years, so why change it?

    OK, so that was partially tongue in cheek, but seriously, there are lots of times when such a drastic measure is just what the doctor ordered. You see, the biggest sin a company can make is not ensuring consistent variable naming, copious - quality - commenting, and solid and thorough documentation. This means, among other things ... gasp regular code reviews! The 'it seems to work, and might with other things in the future' mentality is the Achilles heel of the industry. If it works, why fix it? Because it's not a wheel, dumbass, it's a complex compileable document that has been made as simple as possible, but never simpler when done right. Don't re-write your bloated, buggy code indeed!

    Maybe he should have a sister sight ...

    JoelonSeriousHallucinogensMixedwithPshychtropics.T heyreComingWithThe.net ;^}

    --
    Guns don't kill people; Physics kills people! - John Lithgow as Dick Solomon on Third Rock From The Sun
  189. Verbosity isn't bad as long as it's WHY not HOW. by DunbarTheInept · · Score: 3, Informative

    Comments should explain WHY, not HOW.

    If all the comments are doing is telling you exactly what you already knew from being moderately literate in the language, then they are just ugly chunks of text that get in the way of reading the program.

    But that doesn't mean verbose comments are bad. If the verbosity is dedicated to telling you *why* something is being done, rather than giving a play-by-play description of how, then it is very useful. If I see a for-loop that counts backward from ( array_size -1 ) down to zero, don't give me a comment that says "counting backward in a loop". I can TELL that. But what I can't necessarily tell at a glance is *why* the author chose to count backward instead of forward - what was the algorithmic purpose to doing it that way - THAT is what I want to see comments explaining. And with THAT type of comment I am very happy when it comes with a lot of verbosity.

    The worst examples of useless verbosity are when you see code written by someone who has *just* learned a new programming language and is unfamiliar with the "culture" of that language. They tend to document things that everyone already knows like the back of their hand. (For example, a novice C programmer tends to go into excessive detail about the use of null chars to terminate strings.)

    --

    Don't label something "offtopic" unless you know the topic well enough to tell what's on topic.

  190. Re:Good point NOT by scrutty · · Score: 1
    How many times have you seen "i += 1; // increment pointer"?


    Not as often as I've seen


    i++; /* increment pointer */


    I'll admit

    --
    -- Oh Well
  191. No truth at all in Cringely's article by Baki · · Score: 2

    First, the question remains whether Java won't be a Microsoft killer. As applet it has not delivered what was expected (though it isn't dead yet), but at the server (servlets, EJB's etc) and in embedded devices (soon there is a JVM in all cell phones, and cell phones are predicted to at least partially replace the desktop computer) Java is very alive an a big threat to Microsoft.

    He claims that Java is bulky and slow still, after 5 years, and C# is supposed to be winning because it "feels better" and is "snappier"? Where on earth did this guy get such benchmarks from to prove this? It simply is NOT TRUE. Java performance has come a long way, and I haven't seen any evidence to date that C# is faster nor a better language. In fact C# is lacking in one major area, checked exceptions (meaning you are not obliged to catch or explicitly throw exceptions, which will lead to massively unreliable C# code bombing out all over the place).

    MSFT once more is pushing an unproven and less superior alternative, just and only because it wasn't able to apply it's embrace and extend strategy to Java, that is the ONLY reason MSFT rejected Java.

    Exactly the Java/C# example shows that Microsoft may drive other companies or technologies out of business, not because it makes less mistakes or has more technical excellence, but just be unethical tactics, misleading, false promises and massive marketing, leveraging its OS monopoly to kill off competitors.

    1. Re:No truth at all in Cringely's article by skaladin · · Score: 1

      you were looking for some proof about c# being faster than java....here you go

    2. Re:No truth at all in Cringely's article by Anonymous Coward · · Score: 0

      Are you just purely astroturfing, or do you lack critical thinking skills?

      Gee, SQL stored procedures are faster than EJB entity beans*, and if you lop a tier out of your application, it might run faster. No Shit, and nothing to do with dotnet whatsoever.

      * Not that you know what a EJB Entity Bean is or why you would use it.

  192. Re:Sure-fire way of making a software project fail by Bert+Peers · · Score: 2
    5. Have a combo of developers and managers explain to salespeople what the product does, what its highlights and features are, then watch those sales people take off and sell something completely different. "What do you mean, I sold something nonexisting ? The deadline is next month".


    Real story.

  193. Basically brilliant and accurate by Anonymous Coward · · Score: 0

    ...and I'm sure, these comments will be mostly slammed by the lame self-centered idiocy that is slashdot as its myopic best.

    Very good ,very accurate - what about the programmer who comes back to his own code several weeks, months, or years later and has to figure out again from scratch what the hell he was thinking when he wrote this crap... and then realizes he wrote it... Code is completely useless if it can't be maintained and have clarity - cleverness is unnecessary and there is an elegance in clarity.

  194. Where all true evil comes from by Anonymous Coward · · Score: 0

    ...management. Where else ? and corporate morality (doesn't really exist, always justified in terms of creating shareholder value, a slippery term, justifying things like Nestle sending baby food to Africa in the 1980s)

  195. Zero defect software by Bert+Peers · · Score: 2
    A lot of the comments here are trashing Joel for his anti-rewrite stance. I just wanted to point out that if you read some of the work on his site, he does offer advice that is more "acceptable" from a CompSci point of view, too.


    One of the things in particular that striked me as suprisingly simple but yet powerful is the Zero Defect concept : in theory, you try to eliminate all bugs before adding any new code to a product. The reasons being

    1. it's harder to hunt the bugs later when the amount of code is even higher
    2. the longer you wait, the less you'll remember about the code containing the bug
    3. with zero/few bugs, you can always ship a product when you have to, not "later on" when you will have "removed the bugs" -- you can always ship right here, right now, with zero bugs, only maybe not all the features you'd want.


    All in all, I think this concept makes a good argument for refactoring, redesigning, partial rewrites maybe. He's just saying that it often does not make sense to fix one bug by rewriting a piece of code, in the process undoing the fixes to ten earlier bugs. So before you go trashing this guy for being a total moron, check out his site...
  196. Re:Chars and bytes arrays are both the wrong solut by Anonymous Coward · · Score: 1, Funny

    The right solution is not Unicode either.
    How would you get a single code point for a character which is in the surrogate pair region?

    Since CityDesk is written in VB6 (rigorous documentation has never been it's strong point), then one wonders why FogCreek didn't use the Unicode-aware AscW function, rather than the ASCII Asc function.

    This leads us nicely to the people who wrote the documentation for VB6. Well, VB6 is based originally on VBA1, from around 1992. This originated from the MS Excel team, of which the program manager responsible for VBA was.....yes...jspolsky who wrote the original VBA spec from which the documentation was produced.

  197. Re:Chars and bytes arrays are both the wrong solut by Nicolas+MONNET · · Score: 1

    "The right solution, which many would take if doing it again today, is to do it all in Unicode."

    Isn't there several way to encode a given char in Unicode?

  198. Competition on a platform against it's owner by slaida1 · · Score: 1
    NS, Real and others don't have even playing field on win32 against MS. They cannot control how Windows changes from version to version and can begin planning the changes needed only when MS already has working and ready product to ship with the new beta-stageOS. We're lucky to have Linux indeed.

    Other problem is unrealistic goals for profits. Big companies don't even think of single-payment licenses anymore, they're after continuous cash flows from users. Until then they're shortening their release cycles from years to months and selling once free updates now as new versions, hoping their customers to get used to the idea of constant upgradings.

    "Think constant learning. That's what todays people need to stay productive. Same goes for our software!" They're hoping we begin to think that all software is like antivirus scanners: update update update! "World changes every day, keep up and hang on! We help you!"

    It's just the way business works: predictability means everything and steady income flow is predictable. Marketing new stuff is not.

    --
    Preserve old classics: copy your collection onto all hard drives.
  199. Didn't work for Detroit?!? by kaisyain · · Score: 2

    Even with the huge DaimlerChrysler merger, GM and Ford still have revenues that dwarf the competition. Ford has 1.5 times the revenue of Toyota, 2.5 times the revenue of Volkwagen, 3.5 times the revenue of Honda or Nissan, and 5 times BMW or Mitsubishi.

    Ford also owns Aston Martin, Jaguar, Volvo, Land Rover, 1/3 of Mazda, and 10% of Kia. GM owns Opel, Vauxhall, 20% of Fiat, half of Saab, half of Isuzu, 20% of Suzuki, and one-quarter of Subaru.

    The American auto industry made horrible mistakes from 1967 straight through 1978. Yet they still dwarf the competition. If you call that not working out, I'd love to see what you actually consider success!

  200. Re:Chars and bytes arrays are both the wrong solut by Anonymous Coward · · Score: 0
    What kind of 'solution' is this? This solution precludes running on Windows 95,

    Current shipping home-user version ofWindows: WinXP. Versions before that: WinMe, Win98, Win95. It is normal good practice to ensure that your software runs on the latest and previous version of it's platform.

    Conclusion: Anyone targeting the version of an OS four revisions back, in a new software project deserves all the pain & suffering that they get.

  201. Re: Netscape rewrites by Dom2 · · Score: 1

    Everybody so far seems to be saying that netscape 5/mozilla was a complete rewrite. Which is true, but its missing the point that netscape 4 was a complete rewrite of version 3. And that's where things started to go badly wrong...

    -Dom

  202. Re:Not sure how to take Joel and the MS experience by G+Neric · · Score: 2

    the evil comes from the monopoly. "...absolute power corrupts absolutely"

  203. Re:Chars and bytes arrays are both the wrong solut by qasama · · Score: 1
    The right solution is not to pick the latest technology "buzzword". While it may challenge you, that's the not the point of the job. (you want challenge go get a PhD.)

    It doesn't matter what technology you pick, the user doesn't care, just so long as it works. It matters in how quickly it allows you to get a product out the door that people are going to buy....

    take the unicode example offered...

    Let's be realistic, the bulk of your sales are likely going to be in the US, Canada, and the EU. All places you can get by with 8 bit ascii. By the time your package gets to the point where you need Arabic, and Chinese, and Japansese versions, you're likely going to be long gone from the project and stiffs who specialize in that conversion will be making it.

    So unless using Unicode reduces your time to market significantly, it doesn't make the company any money, and you should save it for your recreational programming.

  204. Re:Good point NOT by Balp · · Score: 1

    > If you want to comment and spend hours drawing Visio diagrams, fine. Wait until after the product is released to do
    > this. These do not accomplish the goal (see point #1).

    Actually paining drawing and whiteboards are good tools in discssing problems with other programers. Before juming into around 30000 or 300000 rows of code a good drawing in maybe Visio is realy nice. You know a picture sais more that 1000 words.

  205. Re:How-To charge for IE@500M by Anonymous Coward · · Score: 0

    Technically the dont sell MSIE - it can take up the 500M cause its given away... HOWEVER what they lurn on IE that they give away - can quickly go into their other products (which they charge for) thus while IE is free and costs the company money to produce, the goal of haveing the development flaws show up on an overly tested program before the code is moved to some program they want to charge for is actually quite smart, whos going to take them to court for fuxing up IE? you probably cant cause its free... but if they fuxed up in your precious MSOffice you would go mad, so its actually quite smart they make IE in this way, and we all get the benefits of IE while waiting for the next version of office (unless your smart enough to use Star Office)...

  206. EA know the answer by cheekymonkey_68 · · Score: 1

    Theres one sure fire way to get your software project to fail.....

    Get EA to buy your company ;)

    Well it worked for Lord British.....

  207. Re:How to make a good software project / product f by Alex+Belits · · Score: 2

    1. You are a moron.

    2. Open source programmers simply don't care if AOL will make more or less money off their work. Their problem is completely different -- they have to have a standards-compliant browser on non-Microsoft platforms that they happen to use, and the only viable project is still Mozilla -- Opera and Konqueror have their inherent limitations precisely because they became faster by ignoring or breaking cumbersone standards, and there is no reasonable way to fix the standard in the situation where W3C has basically idiots+Microsoft at the helm. Mozilla, by following W3C madness such as DOM and countless stylesheets models, allows people such as myself to keep Microsoft products away from their desktops, and that goal has nothing to do with AOL or any other company's money.

    --
    Contrary to the popular belief, there indeed is no God.
  208. Re:Chars and bytes arrays are both the wrong solut by TheSliver · · Score: 2, Insightful

    The anti-Unicode stance, which tends to be wholly American is interesting since before the attempts to unify character set encoding there was complete chaos in non Roman character sets. This wasn't thought at all interesting or useful because it didn't affect US english software.

    Each of the language systems had their own methodologies and for some multiple encoding schemes.

    Unicode is a painless way to protect your app from different character set operating systems so long as it is implemented at the core. Bolting it on afterwards is nasty.

  209. The real reason MS really whacked WordPerfect by jyoull · · Score: 2, Insightful
    OK so I sold computers and software during the time that this all went down and this is what happened...

    1) WordPerfect for DOS, coded in assembly language, was one damn fast, tight, piece of work. The best word processor for DOS, hands down, no question about it. Everyone used it.

    2) MS and IBM announce OS/2. I go out and buy a big fat book about "Programming for OS/2". MS starts pumping the application developers to build OS/2 products. At this time, MS Windows 286 and 386 exist, and MS says they're to be phased out in favor of OS/2, the future of operating systems.

    3) Fast forward a couple of years, not too far... MS dumps its OS/2 partnership with IBM and releases new versions of Windows, saying that Windows is now the future of operating systems, and they don't need IBM's help. Shortly after this, Word for Windows 1.0 magically appears. WordPerfect Corp. sends a letter to all its dealers that says (paraphrasing from memory) "MSFT told us that OS/2 was the only OS we needed to code for, we believed them, and consequently we have no Windows product at this time... but we're retrenching and will put out WP for Windows as soon as possible. Oh shit."

    So, this game was not lost to assembler EXCEPT in this sense -- if WP for OS/2 was written in assembler lang. instead of something higher up, a quick port from OS/2 code to Windows code would have been impractical or impossible. Would love to hear from some of the WP developers about what actually went down around this event.

  210. Hunger by Anonymous Coward · · Score: 0

    Oh great - all that talk about Microsoft eating so-and-so's lunch made me get hungry...

  211. Re:Rewriting is good. Money is even better. by SuiteSisterMary · · Score: 2

    You confuse redesign with rewrite. Moving wordperfect from assembler to C would be a redesign; a major undertaking. Taking the WordPerfect, say, 6.0 codebase, throwing it out, and rewriting it, in the same language, with your end goal being not to have to reprint the user docs (i.e. nothing changes) just because 'the old code looked poor' would be a rewrite.

    --
    Vintage computer games and RPG books available. Email me if you're interested.
  212. how good doesn't matter, it is if you kiss ask by Anonymous Coward · · Score: 0

    The modern software project is run by liberal arts majors who are not software architects.
    The people who make the decisions are not engineers but marketting people.

    Interfaces are not designed with reuse and ease of understandability, but as ways to cripple potential competitors.

    If you are an American White male with an engineering degree you probably don't have a job if you have been a software architect for more than five years.

    So. . . the software as designed by corporations and money mongering shrink wrap software companies is CRAP.

    I am a seasoned hard-core C/C++ guy who is an AMERICAN. There are no jobs for me.

    I think I'll say I'm from Bangalore. Then I can get a job even if I am just faking.

    Or, if I had a two year degree, I would be writing a TCP/IP stack for my last company. You can't have someone who you have to pay the real coin.

    Companies who think that engineers are generic and that one is the same as another are IDIOTS. Engineers are like athletes. Some are MUCH better than others. But modern money monger companies think with their wallet.

    Methodology? They don't know or care. Fugde it and ship it. If there are 'bugs' then tell the clients that the software was not installed properly.

    Hey, if all American's are out of jobs, it doesn't matter what we do in Afghanastan. We have already lost the war.

    I say send them all back to India and China. Oh, I am a racist because I want a job in my home town.

    Do you think that if I moved to India that I could get a job? Or China? I doubt it.

    So let's send these people back to where they are from so that they can improve things there. Oh, but they want my house and my job. Oh, I'm sorry I don't have a job.

    Are there any American Engineers left working?
    I haven't had an interview with an American hiring manager in months.

    If I pretend I am Indian, I could get a bunch of interviews.

  213. Re:problem = clueless management/directors/execs e by Anonymous Coward · · Score: 0
    Another problem is hiring non-technical managers to manage technical people. At my last job we had a manager off of an automobile manufacturing production line quit his job at the auto company to take a job as the manager of a group of Unix admins. This "bumper jockey" had NO CLUE what we did for a living, and treated us like a bunch of unionized UAW slobs, and not like professionals.

    Holy crap! That's the exact situation that I'm in! My boss in an army computer unit is a former artillary commander! Doesn't know shit about computers and drives all the admins and programmers out of their minds!

  214. Borland failed? by thunker · · Score: 0

    Wow, I did not know this. Why didn't someone tell me. I better stop using their compilers. Damn.

  215. Re:Chars and bytes arrays are both the wrong solut by Anonymous Coward · · Score: 0
    Let's be realistic, the bulk of your sales are likely going to be in the US, Canada, and the EU.

    That's exactly why Wordperfect never standed a change in Europe in front of MS Word.

  216. sometimes, rewrite is absolultely needed by small_box_of_stuff · · Score: 1

    You cant just keep fixing something. Your clients wanted an airplane. They couldnt afford one. they bought a car. Theve been paying you for years to slowly graft propellers and wings to the car. Now, they realize they really need a boat. But, being cheap, and following this guys idea, they dont want to just redoit, they want you do tie pontoons to the car.

    Never did anyone ever ask if you could actually convert a car to an airplane, or the result to a boat. What you end up with is a car that cant turn, a plane that cant fly, and a boat that will sink faster than a brick.

    Fix bugs, sure, add a few features, sure. but when what you want to do ceases to be possible with the base yove got, youve got to leave it behind.

    Also, this model of never rewrite, assumes that you always have the best people working on it, and that they all know everything, and that the world of software development never changes. Sure, I could fix the code that the inexperienced co-op down the hall wrote, and make it do something else, but I know much more than him, know better tools, better designs, better implemetataion strategies. So I could either spend a week fixing this crap, or I could just redoit with the right design, the right tools, and the right implementation, and not only be done sooner, but have a much better product.

    As another poster said, there is often good information in a piece of code thats been worked on for years. There are also crumbs of attempts in the past that went no where. And stuff that doesnt work, but you dont know it, cause its never been used until you made that last little fix. It can also be full of dumb ideas, bad implementations, and simple old ideas that dont work anymore.

    So, if your a wank that doesnt know anything, and your given code written by someone that knows what they are doing, read it. youll learn something. If in stead, your a good programer, and given something written by someone with exactly 3 hours of experience programming, it may be much easier to just rewrite it, rather than try to fix it.

    or even if not easier, much better, and in the long run, more supportable. much small, tight, well thought out unix code is still being run, because it was done well first, with out regards to getting it out the door. Old dos and win31 code that was pounded out the door as quick as possible was thrown away years ago.

    -sbos

    -glo

  217. Not exactly the most impeccable source by Blackjax · · Score: 1

    I'm not weighing in at all on the question of which is faster, because I honestly don't know. But I do feel obligated to point out that very limited benchmarks on a site that is clearly focused on promoting .Net development are barely worth reading much less citing as an example of something. The chances of these benchmarks representing anything like actual facts are so slim they aren't worth considering.

  218. Software that works by Vortran · · Score: 1

    As a programmer, and a user I am sick to death of feature rich software that doesn't work. I don't care if you have to re-write the whole thing or just part of it, but market driven software development does not make me productive in my daily work.

    When software vendors throw basic funtionality to the wind and rush to market with new features and new versions and the new software STILL doesn't work, I get very frustrated.

    I just want software that works. All the time. 100% as advertised and according to the documentation. I don't need features. I need basic functionality.. bedrock. More and more I am finding that I have to write things myself to get that. The commercial software quality just isn't there... and how can it be?

    The quality isn't there in the development tools or the operating system or the firmware. I frequently come across situations where documented functionality simply does not work as documented or doesn't work at all or locks up something else. This is a case where, in my opinion, business interests (e.g. making a profit) have occluded the central purpose of writing software: to make information systems into useful, reliable tools.

    Please.. just give me software that WORKS. I'll gladly pay top dollar. We can worry about the "features" later.

    --
    Knowledge is like ignorance.. too much can be just as bad as not enough.
    1. Re:Software that works by zzyzx · · Score: 1

      'Please.. just give me software that WORKS. I'll gladly pay top dollar. We can worry about the "features" later'

      Here's a perl script for you:

      print "I just WORK";

      Since you don't care about features, I'll get that top dollar from you, ok?

  219. Bad point by quark2universe · · Score: 2, Insightful

    Repeat after me ... Job security is a fallacy. It does not exist. It never has and it never will. It is supposed to be your protection from being laid off, right? If your company has any least little bit of financial struggle and they want to appease Wall Street, LAYOFFS. You're not safe. "Job security" is a lousy excuse for not commenting your code.

    --

    Believe in things of which no person has ever learned
    1. Re:Bad point by MrBoring · · Score: 1

      Companies will prioritize who they want to lay off first. Making your job harder to be done by someone else will decrease your chances of being laid off if the product or support function for the company is needed. In that sense, job security does exist. To what extent is a different question.

    2. Re:Bad point by Anonymous Coward · · Score: 0

      Tell that to the guy who's been making $200/hr doing COBOL consulting on a system he wrote 25 years ago. That kind of shit happens all the time.

      It's not a fallacy at all -- it's a crapshoot. If they've made the association between You and The System, you'll go down when the system goes down.

  220. commented code is easier to scan through by Anonymous Coward · · Score: 0

    Cat got your tongue? (something important seems to be missing from your comment ... like the body or the subject!)

  221. Re:Good point NOT by dazed-n-confused · · Score: 3, Insightful

    After the product is released, nobody will allow you the time you'd need to write comments or user documentation or Visio diagrams. The only effective way to produce documentation and commented code is to generate it as you go along.

    I'm surprised you haven't yet been modded down as a Troll, you are so far off-base. See Dave Parnas' "Software Fundamentals" for a detailed exposition of why your approach is wrong, wrong, wrong.

    Your objective should be to get working, stable, maintainable, supportable code out of the door. This means it's commented and documented (and, yes, diagrams count as documentation). If you fail to do this, you're failing your users and (ultimately) your company.

  222. But M$ can have parallel development! by gosand · · Score: 2
    It must be real easy to let go of a project when you have the cash to finance parallel development teams! When you have one team, one project, it is REAL hard to let it go and switch gears. When your monopoly affords you the luxury to just throw money at the problem, life is good.

    That isn't creative and innovative, that is wasteful. I would hate to see how much money and resources M$ wastes on failed projects that we never hear about.

    --

    My beliefs do not require that you agree with them.

    1. Re:But M$ can have parallel development! by praxim · · Score: 1

      It's not wasted money if someone gets to eat because MS paid them to do it.
      I bet you think FDR's New Deal was a waste of money, too.

    2. Re:But M$ can have parallel development! by reflective+recursion · · Score: 1

      I agree with you that small companies cannot simply drop projects. This is why smaller companies must choose wisely what they are to pursue. They need to choose a product that they can develop and market within their "window of opportunity." I think my post sounded like Eazel should have dropped Nautilus and started a new project. It should have probably read "Eazel should never have started Nautilus without a plan of making money on it." Netscape, on the other hand had a little more wiggle room and already had more projects going on.

      I don't believe MS is _all_ wasteful. I'm sure there are many failed projects, but they claim to innovate. How do you innovate without making a few (or many) mistakes? To learn anything you must be willing to make mistakes. I'm also sure they go about their projects in an efficient way that is least wasteful (time and money).

      If you really want to see wasteful projects, check out academia. Most research is rarely utilized (and I'm talking _tons_ of research) and is locked up by the schools (read the past Cisco & Stanford article on slashdot). Many of the projects are done with tax-payer dollars (government grants, etc.) also.

      --
      Dijkstra Considered Dead
    3. Re:But M$ can have parallel development! by Anonymous Coward · · Score: 0
      FDR's New Deal was worse than a waste of money. It shifted the entire ethos of the American worker from "It's my responsiblity to take care of myself" to "Hey, will you take care of me?".

      Long term bad effects. FDR was our worst President. (Okay, maybe not as bad as W.G. Harding)

    4. Re:But M$ can have parallel development! by Anonymous Coward · · Score: 0

      I don't think there's any evidence that Eazel ever intended to be a real company.

      More like some nice venture capitalists decided to take pity on the Linux GUI and throw some money and talent it's way. At least they didn't totally flush it, like so many dotcoms.

      Anyway, it was a gift.

  223. Oh the religion, oh the pain by Junks+Jerzey · · Score: 5, Informative

    Like Joel, I have been programming for 20 years, so I'm certainly not trolling just because what I have to say isn't the in thing with the core of the Slashdot audience.

    I read Joel's interview yesterday, before it was mentioned here. Good interview, I thought, he makes lots of good points. But the debate about it here has nothing whatsoever to do with what was said there. Many of the comments key off of the word "Microsoft" and so immediately assume that the interview is crap and has something to do with justifying Microsoft's monopoly position (are these people really bots?).

    Most of the the comments, though, are taking little bits of advice and twisting them around into mini-lectures about commenting style or programming issues, or they're simply being used as jumping off points for the poster's own spouting. Let me make this perfectly clear:

    These people are not professional programmers.

    Anyone who has been through the wringer of commercial software development, and not just a few classes and some tiny open source projects, wouldn't be so religious about such trivialities. Real software development is different. It is not a battle between the Evil Bad Commenters and the Perfection of Beautiful Computer Science (or more correctly What My Professor Said in Class Last Semester). That's not how it works at all. All programmers know about commenting, about indentation style, and so on. There's more to developing commercial products, though: deadlines, missed features, last minute requests from the client, strict requirements for supported platforms, and so on. In this kind of environment, commenting style is a very minor issue (not to say it isn't important, but ranting about it is like ranting to an experienced guitarist about your pet music theories--when you barely know how to play guitar at all). A good way of spotting such people is to ask them what they think of "goto." Odds are you'll get all sorts of vitriol about the evils of goto and the benefits of structured programming and how you should never, never, ever, even if your life depended on it use a goto. An experience programmer would shrug and say "sometimes they are useful, sometimes not."

    My advice: Learn, practice, work on projects, and over the years you'll become a pro. A college student without significant software engineering experience is not in a position to rant about how commercial development doesn't fit his ideals. The true sign of experienced developers is that they've been through it all and have enough experience that they don't feel the need to rant every chance they get--or at all.

    1. Re:Oh the religion, oh the pain by jeffc128ca · · Score: 1

      "Good interview, I thought, he makes lots of good points. But the debate about it here has nothing whatsoever to do with what was said there"

      Are you saying you agree completely with Joel's comments? I do agree with some of what he has to say but I wouldn't go all they way. Joel seems to be saying code re-writes are crap and it's more important to meet the deadline than get a good program out the door. That's where I take exception.

      With your Goto example I agree, sometimes yes, sometimes no. But while one side says "NO!", Joel seems to be saying "YES!". There are posts that both agree and disagree with what Joel talks about. Have you read them? Or are you fixated on the kiddies posts....

    2. Re:Oh the religion, oh the pain by Junks+Jerzey · · Score: 2

      Are you saying you agree completely with Joel's comments? I do agree with some of what he has to say but I wouldn't go all they way. Joel seems to be saying code re-writes are crap and it's more important to meet the deadline than get a good program out the door. That's where I take exception.

      You can't take exception to his examples. Sometimes a rewrite is good, very often it is bad. There's a newbie tendency to think that rewrites are a silver bullet, which is why there's so much debate about it from the kiddies. Joel backs up his argument with examples. The kiddies just rant.

  224. Re:problem = clueless management/directors/execs e by bobaferret · · Score: 1

    The simple answer to this solution is to ask about what the executive staff is like before going to work at a place. Your interview should be as much about them as it is you..

    -jj-

  225. read the resume by Reziac · · Score: 1
    Now here's a helluva recommendation..

    "As a Technical Manager at Juno Online Services, Joel designed and implemented many of the Internet features of Juno."

    'Nuf said.

    --
    ~REZ~ #43301. Who'd fake being me anyway?
  226. Job security? by LinuxParanoid · · Score: 4, Insightful

    Dude, think about what you are saying. Do you want to keep maintaining your old crappy code or pass that job onto someone else? Or do you want to go write some new code?

    Your perspective assumes your company requires a fixed amount of software. Think more imaginatively.

    Better documentation means you can shove maintenance to a more junior programmer with less pushback.

    Also, without good documentation, its a b*tch to try to outsource/handoff pieces of the code you don't want to bother writing.

    Besides, I don't care how well documented your code is, you should always be able to convince a boss that its more efficient for you to make changes to it (even at higher salary) than some cheaper guy who has never seen the code before.

    --LP

  227. This guys makes some interesting points by rutledjw · · Score: 1

    but he falls victim to th edesire to overstate something and make it into an absoute.

    Very few places where a total re-write is justified is one. While IMHO, this should be very carefully decided upon, all those little hairs and bug fixes add up. Eventually the code loses it's maintainability because it's so hard to read. What's the point of going through and maintaining code that's held together with duct tape (if you're lucky) or bubble-gum.

    Further, what about improvements in HW and SW development tools/languages/methods? I think each has a viable arguement for re-writing code. If your code isn't too tightly coupled you can do the re-write piecemeal, module at a time. This is obvoiusly better than trying to re-write an entire project.

    The other argument against his theory IS MS. I mean this seriously, not in the traditional screw-MS mentality. Do people REALLY think folks are getting the VALUE they should out of Windows, esp given its SIZE?

    Let's not forget that NT was originally written by the same guy who led the VMS effort. VMS - dead or not - was an excellent OS - stable and multitasking. I don't really believe that MS has taken advantage of the skill of this gentleman (forget his name) and worked to make Windows have those same qualities...

    --

    Computer Science is Applied Philosophy
    1. Re:This guys makes some interesting points by jeffc128ca · · Score: 1

      Nice post.. I agree with you.

      "Eventually the code loses it's maintainability because it's so hard to read. "

      This is very true. You may not be able to do the re-write before the deadline but if the software is a long term product it should be considered at some point.

      Programming in modules is the best way to go and IMHO I don't know any group that doesn't do it this way. You can quickly re-write the different parts with little difficulty.

  228. my two cents worth by jeffc128ca · · Score: 1

    For what it's worth... I agree with the guy that re-writes shouldn't be done all the time. If your a manager and a programmer insists on starting from scratch it's a good idea to get cost evaluations and time lines for the work. However thinking you never have to re-write is going to the other extreme.

    It's a judgement call. I have passed on code and programs to my boss that I know was messy but let it go because to start from scratch would take too long and wasn't worth the expenditure. Other times I did do the re-write and it save us time and headaches.

    The website doesn't look like a news reporting organization. They may be more concerned with promotion that news based on a quick search around the site. It also seems more business oriented than programming centric. From a business perspective and everything Joel talked about was more around quick turn around and generating quick revenue. Making due gets your product out the door quicker and money from customers faster but it doesn't guarantee you'll still be around 20 years from now.

  229. Re:Good point NOT by renehollan · · Score: 2
    And then when your wunderkind has left the company because someone else offered a raise that you can't match, or the star decides to go into business for himself/herself, or dies from a caffeine overdose, and you are left with no documentation, no comments, no variables longer than four letters, and the "talent" isn't returning phone calls, then what?

    Of course you don't hire one wunderkind, you hire five or six, and team them up in pairs (a good Extreme Programming tip). But you don't hire 20 average joes. Let the competition hire them and suffer.

    Sure the program is efficient and runs like a dream right now. Fat load of good that does you if it breaks or needs to be extended,

    If it runs like a dream, you get to sell it right? And make money, right? Out the door, fast, right, make the window of opportunity.

    Contrary to popular belief design for extensibility is not hard -- it comes naturally to experienced coders.

    If you can throw letters down in Emacs so quickly, why can't you seem to find time to have one line out of 15 be in English?

    Perhaps the English would not be as descriptive or useful as the 15 lines of code, and very distracting. The kinds of docs you want are along the lines of "this rebalances a 2-3 tree". You don't want an essay explaining 2-3 trees, but that's what many call for.

    --
    You could've hired me.
  230. Joel on Software by dazed-n-confused · · Score: 2

    His site's FAQ ("What's going on here?") includes unsolicited praise for the discussion group: "The forum is great because you attracted a group of thoughtful people who can write clearly. No flames. No all caps. No crap. Little HTML showing where it shouldn't. No one replying just to be the first to reply."

    And then he gets featured on Slashdot. Poor Joel. Poor discussion group.

  231. Except for January and February 1900? by dpbsmith · · Score: 1

    "Joel takes particular pride in the fact that on the day Bill Gates asked if date math functions were compatible across the company's different procedure and function libraries, he, Joel Spolsky, was able to reassure the great man himself that with the exception of January and February 1900, all Microsoft application libraries counted dates the same way."

    This is a joke, right? Like "a little bit pregnant" or "extended subset of?"

    Besides, I personally encountered 4-year shift issues moving Excel spreadsheets between Windows and the Mac (1904 became 1900), so what was he talking about? Is this more doublespeak, like "you'll never see any UAE errors under Windows 3.1" because the name of the error was changed from UAE to GPF? "Sure, end-users may encounter all sorts of date problems but you can rest assured none of them are the result of anything in our 'applications libraries'?"

  232. The little guy needs to know the stakes! by aantix · · Score: 0

    Which is all the more reason that if you're going to take on Microsoft, you *have* to be smart about your approach. Because Microsoft is so powerful, it raises the level of software engineering.

    If the little guy is getting squashed, then the little guy has no reason stepping into the ring in the first place.

    ID Software is an example of how to do things right. ID releases a major product once every two years, and a majority of their revenue is based on this product. If they release a sub-par product, they will not have another chance to recoup their losses for another two years.

    But the fact of the matter is, ID's sales have always outpaced Microsoft(maybe with the exception of AOE).

    Even though ID Software is a company of only a handful of employees, because they consistantly make smart decisions they are competitve. ID knows it place, knows the stakes, and knows the consequences of it not releasing a good product. And *that* is why they compete and beat giants like Microsoft. Consistently good business and design decisions. There's no room for anything less.

    --
    "Shake yur bon bon"
    1. Re:The little guy needs to know the stakes! by SoftwareJanitor · · Score: 2

      Wow. That is a whole lot of rationalization. I don't think that fear of being crushed by an all powerful bully raises the level of software engineering most of the time. I think in fact it does the opposite. It stifles innovation because a lot of people will just say 'why bother'. In a truly competitive market, where no player has more than, say 30 or 40% market share, there is a lot more room for smaller players to carve out a niche. I think that the level of software (and otherwise) engineering is raised a lot more when there are two or three comparable, credible alternatives to choose from and they have to compete based on merits rather than who can outspend who on marketing, exclude others through restrictive licensing or dealership policies or whatever.

      Your example of the stress that ID is subjected to due to monopolistic seems more like evidence that the current market situation is screwed up rather than working correctly. If every company other than Microsoft is forced to be so cautious that they can never make any sort of mistake lest they be crushed, then before long there will be nobody else left, and nobody will be willing to take the risk to ever enter any business that Microsoft might somehow, somewhere decide to think about. And since Microsoft seems to have intentions to expand from computers into television, news media and entertainment, pretty soon there will be nothing on TV or movies but what Microsoft wants...

  233. Death March by beanerspace · · Score: 3, Insightful

    Ed Yourdon wrote a book a couple of years entitled "Death March: The Complete Software Developer's Guide to Surviving 'Mission Impossible' Projects".

    Whenever I hear of a software project failing, I think of this book because it explains in gory details what happens when software is treated like fast food instead of architecture.

    When Joel Spolsky gripes about "re-writing" as the cause to failure, he's both right and wrong at the same time. Rewrites don't kill projects, MISMANGED rewrites kill projects.

    There are some other points that raise my suspicious about Spolsky's training and experience. Since the 90's, there has been a big effort in the industry to develop large scale products with some semblance of reuse. Hence, one of the determinat reasons for the lurch into object oriented program.

    Spolsky descriptions sound to me like he's still thinking of code, and of failed projects that were lacked modularity. Nor did he give much attention to other major factors such as FEATURE CREEP, where a small system becomes spagetti over years and years of maintenance. Same with scalability, challenges definately occured in the past decade or so with the massive changes in processors, operating systems and their associated APIs/internals.

    But again, it all gets down to one's approach. If you treat software development like you're flipping burgers for the lunch crowd, then you're going to have to deal with the indigestion that comes along with building a house sloppily.

  234. Excellent References on Software Project Failures by Mike+from+Canmore · · Score: 1

    I found the following references to be excellent references on the success/failure of software projects:

    Anti Patterns
    Refactoring Software, Architectures, and Projects in Crisis
    William J. Brown, Raphael C. Malveau, Hays W. "Skip" McCormick III, Thomas J. Mowbray
    ISBN 0-471-19713-0 [1998]
    John Wiley & Sons Inc.

    Death March
    The Complete Software Developer's Guide to Surviving "Mission Impossible" Projects
    Edward Yourdon
    ISBN 0-13-748310-4 [1997]
    Prentice Hall PTR

    I highly recommend the above two references.

    I have had the misfortune to work at my last two jobs at companies that fit the profiles as described in the above two references.

    --
    Politics is the Great Equalizer for People of Lesser Abilities.
  235. Cringley doesn't know what's he's talking about! by fz00 · · Score: 0
    First of all most of the technology in Sun ONE's architecture has been available for over two years as opposed to dot.net pieces that don't even exist yet. Sun has acknowledge that they had a packaging and branding problem in not letting people know about it and how the pieces fit together. To say that it exists SOLEY to compete against dot.net is ridiculous... it's technology that EXISTS is being developed and improving.

    The second fatal assumption is believing that Sun actually cares about Java being run on desktop PCs. Sun in more concerned about future devices such as cell phones, media, storage, entertainment systems, etc.. If microsoft focuses its efforts on the desktop, all the better for them. Sun has a better shot with consumer goods manufacturers because they don't want microsoft eating into their businesses although the competition is more intense... as it should be. Cringley does alot better when he talks about things he knows about.

  236. Differing goals by bakuretsu · · Score: 2, Insightful

    I think a lot of people are confused into thinking that quality software makes successful software. This could not be further from the truth.

    True, successful software should *work*, but that doesn't mean there isn't a less commercially successful software package out there that just works better.

    Case in point: BulletProof FTP for Windows is a highly acclaimed and highly successful FTP client. Their marketing strategies are right on the mark, and thanks to this, they have raised the revenue required to maintain their code, their website, and even acquire G6 FTP Server from Gene6 Software.

    BulletProof FTP is commercially successful.

    I, personally, use LeechFTP, it's distributed as freeware, and isn't even supported anymore. Sure, it has it's quirks, but it didn't cost me anything. Commercially successful? No. Quality programming? Yes. LeechFTP is the only FTP client I know of to implement a multithreaded design for uploads and downloads, a feature that I use daily to transfer entire website directory trees (having three simultaneous logins to the FTP helps drastically).

    LeechFTP was never marketed to produce a profit, and if it were, it would fail. BulletProof Software undoubtedly followed all of the cut-throat and low brow schemes that Joel outlined to maintain their market share and draw a revenue. That doesn't mean their product is no good, but to some extent the goals of producing quality software and producing PROFITABLE software have to be separated.

    Microsoft has built themselves up to a point where they can spend enough money to retain enough programmers to keep their products working as well as Mr. Joe Average requires for his needs. That is a luxury for them. Without those resources (or the help of many dedicated programmers that will work for free), other companies will have a very hard time balancing those two goals.

    --

    --
    The Bailiwick - DESIGNHUB2005
  237. Re:ep by talesout · · Score: 1
    Wow! I never thought I'd see the day that Bob Abooey would get a front page article on Slashdorks.

    Heya Bob, from your old pal FDR. (Yeah, I'm still around, just in a different name.)

    --


    Bite my yammer.
  238. Sure-fire way of making a company fail: by streetlawyer · · Score: 2
    1. Never act like a salesman. Grudgingly tell your customers you might, possibly, deign to design the project that they want. Always make them feel like idiots for even asking whether something might be possible if you don't feel like implementing it.
    2. Don't listen to the customer ever again. Tell them that the spec agreed is frozen, and that their changing business needs are their problem, not yours. If they accidentally get through to you on the phone, remind them how much more important your carefully designed project architecture is than they are.
    3. Let your developers take as much time as they feel they need. Never put them under any pressure, because hey, that would be unfriendly. Tolerate sloppiness and lack of delivery, because otherwise your employees will all probably resign and go play Quake somewhere else. Never fire anyone, and never, ever even think about judging someone by results. After all, it's the programmers who run your company, not you.
    4. Go bust. Hey, there's no shame in bankruptcy these days!
  239. [OT] Re:To succeed in religion... by LinuxParanoid · · Score: 1

    But many religions are very successful without worrying about being rational... or logical.

    How do you explain that!?

    Simple. The above statement about religions is false.

    To understand why, try substituting the words "relying exclusively upon" for your words, "worrying" and examine the semantic difference. Or similarly remove the words "worrying about" and the difference between your false statement, and a more rational one.

    Nevertheless, your post conveyed a point pretty well, without being particularly rational. Perhaps religions work the same way, eh?

    Why would a religion attempting to communicate with and to people, whether made by man or by god, adhere to the formalism you seek and find in science?

  240. Re:Good point NOT by renehollan · · Score: 2
    ...and those 47 pages are worthless the minute someone changes your code and doesn't update the documentation. Unless you're in a literate programming environment, you've just wasted three days that could have been spent getting the dweeb in the next cube out of his bug-ridden hell. I can't see a protocol description taking more than 10 pages for something like that, and if it does, the protocol is probably unnecessarily complex.

    If you have the luxery of time when such protocols stablilize, then, by all means, embelish.

    The correct code production rates that you need are on the order of 1000-5000 lines of correct code a week, or at least with defect rates over the life of use down to 0.1 line per kloc.

    The bottom line is that I've seen people apply best practices and get a correct code production rate of around 6-8 LOC/hour. I've seen (and apply) extreme programming techniques, and routinely beat that by a factor of five, sometimes much more (when the code is routine, like the umpteenth generic marshalling/serialization package you've written, or recursive-descent parser).

    --
    You could've hired me.
  241. Amusing, no? by swordgeek · · Score: 1, Redundant

    I just thought it was funny that an article on "How to make software projects fail" followed immediately after an article related to OS/2.

    --

    "People who do stupid things with hazardous materials often die." -- Jim Davidson on alt.folklore.urban
  242. On Java success... by mindstrm · · Score: 2

    The one thing that really gets ME about java (which I like, btw)..... is how damn confusing it is to figure out what Sun is talking about most of the time.

    Now.. I'm not a software engineer... I'm not a professional programmer.. though I do code quite a bit. But I'm very computer savvy... and I find it *very* difficult, in reading through sun's Java stuff, to figure out what the hell they are talking about. I know there is something there... I know they have some really nice ideas and stuff.. but.. it's very, very confusing.
    And I just have to wonder.. if I can't figure it out.. who can?
    You see. that's where MS comes in... even if they sacrifice technical superiority.... It seems to me that Sun's stuff is just aimed at too high a level. You need some serious software engineering people to figure out how to use some of Sun's stuff.. with MS.. it's a level or two lower (and yes, less sophisticated)

    1. Re:On Java success... by Zurk · · Score: 1

      huh ? i thought the java documentation was the most clear cut braindead documentation any company could ever produce.
      whats there to it ? its just :
      Class name
      ...random garbage on what it does...
      how to instantiate it
      function1 ..some random explanation
      function2 .. ditto

      thats it.

    2. Re:On Java success... by mindstrm · · Score: 2

      Yes.. that part is clear. But when you get into them discussing JINI and all their other 'technologies'... it's confusing.

      Hey. Maybe I'm just stupid, and everyone else gets it. I'm just saying that one reason I found java difficult to accept was the fact that sun threw so much buzz at it.

  243. Crossing the Chasm by doodaddy · · Score: 1

    So problem engineering destroyed these companies according to Joel, the engineer? That's odd because marketing was the problem from a marketer's point of view.

    Every geek should probably read "Crossing the Chasm" by Geoffrey Moore, the marketer. All of the same companies appear in his books. Overall, "Crossing the Chasm" and "Inside the Tornado" make insightful reads.

  244. Re:Verbosity isn't bad as long as it's WHY not HOW by gakguk · · Score: 1

    For example, a novice C programmer tends to go into excessive detail about the use of null chars to terminate strings.

    This is a way of taking notes inline the code ,instead of somewhere else, on the aspects of the language you are using until you memorize that feature/requirement by default. Maybe we need an editor that hides the comments under some pre-given grade by the author (if I can judge the grade of the comment I wrote properly). Everybody would adjust their viewing preferences just as in /. here.

  245. Comment rules by markmoss · · Score: 3, Interesting

    Do programming classes still make you put a comment on each line of code? E.g.:
    x = y + 3; /* set x to y plus offset of 3 */

    Come out of that sort of training, and it takes a while to realize that comments aren't stupid, your teacher was. Comments should NOT say what a line of code does. Except in obfuscated code contests, if what one line does isn't obvious, either the writer or the reader is incompetent.

    Every module and function should have a block of comments to say what the module or function does, what the function arguments are, and especially give the specs, and tell what assumptions are hidden in the interface If possible, go back after software testing is done and note the conditions in which the module was tested -- this is invaluable for re-use, since it avoids the assumption that "this part was thoroughly tested", when it wasn't actually tested for what is now being done with it. Every time someone has to update the program, it's a "code re-use" for the modules that weren't touched...

    In large functions, you might want to put in comments for each major block of code, but first think about whether the function ought to be split up... Line by line comments are needed only when you are doing something that is unusual, not straightforward, or handling an issue not stated in the specs; say WHY you are doing it that way, or why you have to do it at all.

  246. OS/2 was the complete rewrite. NT was not. by Anonymous Coward · · Score: 0

    and the backwards compatibility with DOS was also part of the design goals.
    So there is no direct link between code reuse and compatibility. The is such a strong link only when the specs are inexistant or screwed up, which leads to the necessity to support bugs and arbitrary interpretations for 100% compatibility.

  247. Re:Trying to hire female and minorities as a quota by Anonymous Coward · · Score: 0

    But those are all pretty broad and vague generalities. It is better to judge each individual on their own merits.

    Uhh... Okay. Share the roads of your city with Asian drivers, and you'll start to draw your own broad conclusions: they're dangerous.

    It's probably cultural, but there's also the possibility that the shape of Asian eyes reduces their peripheral vision, making the silly little Acura in the next lane veer in front of your Dodge Ram, a vehicle more than twice the size and mass of his tinfoil shitbox, because he allegedly didn't see you.

    Evidently, I won. But I digress.

  248. Re:Hungarian notation misunderstood by Anonymous Coward · · Score: 0

    I'm not sure why one can't use the more meaningful baDest or baSource, rather than the baBuff. The adoption of hungarian notation does not force the creation of stupid names (like baBuff).

    Hungarian like notation is useful because it allows information that commonly is embedded in names anyway to be done in a consistent manner.

    I personally find "strict" hungarian notation confusing.

    The LPCSTR stuff was only necessary for mixed-memory model Windows. There's no real reason for it in a pure 32bit world.

  249. Odd article to see on Slashdot by benedict · · Score: 2

    I'm surprised to see such a programmer-bashing article linked from Slashdot. I'm glad it was, though; it was interesting. It bashed users pretty badly too, and had a very silly outlook on bloat.

    The real cost of bloat isn't disk space or even memory, Joel; it's bugs.

    This "SoftwareMarketSolution" site seems to be by and for marketroids. There's a lot of the testosterone-filled jargon of marketing in there. Joel refers to a "great book" called _High St@kes, No Prisoners_, a title which puts my back up pretty badly. The focus all throughout is not on how to deliver value to customers but rather how to beat the competition.

    I see little merit here.

    --
    Ben "You have your mind on computers, it seems."
    1. Re:Odd article to see on Slashdot by rickchapman · · Score: 1

      ++This "SoftwareMarketSolution" site seems to be by and for marketroids. ++

      Good God! How did you figure THAT out? OK, OK,the home page does say "Software marketing resources for software marketers," but how can one not be in awe of your acute ability to figure out the strikingly obvious?

      ++There's a lot of the testosterone-filled jargon of marketing in there.++

      Errr, you mean stuff like "Extreme Programming?" That sort of "testosterone-filled jargon?"

      rick

    2. Re:Odd article to see on Slashdot by benedict · · Score: 2

      Since it's so obvious, you should figure it out for yourself.

      Oh, ok. Go to the article that this story points to and
      look at the yellow box in the upper left, that talks
      about Novell.

      There's lots of use of words like "moaning" and "whining".
      These are loaded words, used here to dismiss what certain
      people have to say.

      The premise of the article itself tends towards machismo,
      though the interviewer and interviewee didn't have to
      take it in that direction.

      --
      Ben "You have your mind on computers, it seems."
    3. Re:Odd article to see on Slashdot by rickchapman · · Score: 1

      ++Oh, ok. Go to the article that this story points to and look at the yellow box in the upper left, that talks about Novell. ++

      That article was not written by Joel but by me, and reflects the opinions of Novell insiders and others who were closely connected with the company. I don't think it talks much about ANYONE moaning or whining, though considering what has happened at the company, no one could blame anyone for sincere lamentations.

      +++The premise of the article itself tends towards machismo, +++

      Oh, Heaven Forfend anyone subject you to "machismo!" As you press your nosegay against your sensitive nostrils to defend them against the too fetid air of this rough rough world we would not want to add to your suffering!

      (Wow, I didn't know programmers were such fops.)

      rick

    4. Re:Odd article to see on Slashdot by benedict · · Score: 2

      You're making my point for me very effectively.

      --
      Ben "You have your mind on computers, it seems."
  250. Re:Trying to hire female and minorities as a quota by jazzyjez · · Score: 1

    Their minds don't work like that

    This could easily be construed as racism (before anyone marks me down for being a troll, no I am not necessarily accusing the poster of being racist).

    Asian culture, and Indian culture particularly (the only one I know much about) places very high emphasis upon respect for authority, especially with respect to knowledge. This has many important consequences, of which a couple are:

    1) The education system emphasises learning by rote over learning problem-solving skills. It is not unusual to see people reciting books in order to learn them by heart who do not understand much of what they read. These people go on to do very well in Indian exams.

    2) There are a lot of exceptionally good Indian mathematicians and theoretical physicists. This is probably because mathematics is a deductive system rather than a hypotheco-inductive system like experimental physics, and hence is easier for people who have studied under the education system.

    The most important thing to remember though is that there are many many Indians (some of whom I am lucky enough to know) who are extremely creative and intelligent people, despite their flawed education system.

    Brain structure displays a disappearingly small variance across race. The vast majority of genetic differences between races are, unsurprisingly, concerned with external body morphology. If you understand "how your mind works" to be a combination of (racially independent) genetic brain structure plus, more importantly, very powerful cultural influence, then yes, the poster is to some extent correct, except that of course this is a massive generalisation and the number of Asians for whom it is *not* true is probably comparable in size to the population of the US.

  251. Alternative to hungarian notation by marick · · Score: 1

    Recently, I've stumbled upon (read: been forced to use) a nifty notation for OO stuff. For variables, the first letter gives the scope of the variable:

    p_foo means variable foo is a parameter (passed in to the method)
    m_foo means variable foo is a member variable.
    l_foo means variable foo is a local variable, created in this method.

  252. MS IExplorer is NOT free! by Anonymous Coward · · Score: 0

    > The result of this action is that Microsoft is stuck developing the worlds most popular web browser for free with no way to recoup development costs.

    Don't be fooled. The money for developing IE is hidden in the price you pay for M$ Windows(and other M$ products). There is no such thing as free beer. The free IE just made the price for other M$ products increase, thats where they get the money back from...

  253. Evolution by Anonymous Coward · · Score: 0

    I'd say not being able to fly and a lack of resistance to diseases and being outcompeted by newly introduced European animals (and vermin) is a severe Evolutionary disadvantage.

    Its More important what he was saying than how exactly he said it.

  254. Re:The best programmers can make sense out of crap by Anonymous Coward · · Score: 0

    That even got a chuckle out of my frosty girlfriend.

  255. Odd "interview" by cant_get_a_good_nick · · Score: 2

    Did they actually talk to him, or just read his articles and construct what they think would be Joel's responses? If you read his articles (I don't agree with all of them, but they do make you think) you'll notice a lot of similarities, even in wording. Or maybe Joel read all his stuff the night before for background notes.

    1. Re:Odd "interview" by rickchapman · · Score: 1

      Yes, I actually talked to him, and many of the questions, such as what happened over at WordPerfect and Lotus, were my idea, not his. And it's not surprising that some of his answers would sound like...some of his answers. rick

  256. Right. by addison · · Score: 1

    I'm paraphrasing what the Resource Kit says, not what has passed C2 classifications. I have seen elsewhere that Windows is C2 complient when turned into a standalone box with no external access.

    Which is why I commented.

    Its a form of the Big Lie - that "common thought" spreads, and soon its the "truth". Just like you said "I've seen.."

    Right.

    But it was 3.5, with a certain service pack, and on 2 Pentiums from Compaq and 1 Alpha from DEC. That's the *only* C2 certified NT that there ever has been.

    NT 4 was submitted and failed. So they insinuate that its "C2" with a program, with comments - and in Official Training they don't make the distinction.

    So I felt the need to point that out when you made the comment - NT 3.51 and above is not, (nor likely ever will be) C2 certified.

    Addison

  257. Re:Taking lessons from...Not Quite by darkPHi3er · · Score: 2

    Normally, i don't respond to AC posters, but you weren't obnoxious and you seemed to be actually trying to deal with my points, so, out of courtesy (can i say that on /.?), here's a rather abbreviated response (prob still 2 long for lameness)

    "I don't think you read it very closely. "

    Not to be pissy in that /. kinda way, but actually i did, i appreciate your literalism, but, i've been dealing with these kind of coders for a long time (and in large teams), so my reaction is about 70% to Joel's words and about 30% to what i've SEEN when you design/code his way:
    eliminating our agreements, here's my response

    1. More features are always better features

    Ok, but

    2. Coders are not responsible for optimization

    YOU: "He didn't say that. He said that most memory "optimization" doesn't actually help much, which is true."

    I wasn't referring to his quote about memory optimization, I was referring to his repeated statements about "bloatware" and "features". Optimization is not merely about reducing run times or footprint, it also is about choosing the right design and architecture. If you have a program where a given feature is used >1% of the time by >1% of the users and you keep it in new version, you have "non-optimized" code. Giving marketing droids free reign to include features leads to bloatware products like Word and Excel, where even MS acknowledges that most users NEVER use most features. I think Joel makes it pretty clear right here with "For one, if programmers don't have to worry about how large their code is, they can ship it sooner". That's a defintion of the ESSENCE of non-optimized software design.

    3. Hardware vendors must not change h/w designs that would break installed base, even to improve their architecture

    YOU: "He didn't say that at all."

    No, he sure didn't SAY it. Because essential to Joel's thinking on code/design is that you "fix it in the next version". He makes that perfectly clear in numerous places in the interview. Well, if you have version after version ....and each of them getting bloatier, your hardware vendor has lost his ability to do any major redesign of the h/w without either breaking his h/w or your computer. As someone pointed out earlier in this thread, that leads, for example, to the microcode solution (and in devices, shimware). The best example of this is both Transmeta and Intel, both of whom have to mask more efficent cpu designs under an inefficient microcode layer in order not to break the installed base. Transmeta (bless them) is at least doing it by design.

    4. Your s/w is SOOOO... important that shipping delays for optimization/tuning/additional debugging are not to be accepted

    YOU: "You threw in that "additional debugging". He never advocated shipping bugs. As for optimization and tuning... he didn't say that there are no circumstances under which you can delay the software for optimization. He did say that it's not generally a good idea... and he's right. Generally, it's better to ship something correct but slow on time, and release updates, so that you at least have something on the market, unless the thing is so unbearably slow that it's unusable. "

    WHOA! "Generally, it's better to ship something correct but slow on time", REALLY? better for WHO? Certainly NOT the user (Wordperfect Windows 6, dBase Windows 1, Access 1.0 and the 1.1 release are perfect examples of this) who ends up paying $$$$$ for crap and then hope the vendor is going to get around to fixing it. And on your/his point about "it's not generally a good idea.." to delay RTM/ship for additional optimization, if you've lead a commericial software team (even a small one) you know "it's not a good idea..." from managment, will turn into "Don't". by the time it gets to your coders.

    6. There's never a reason to rewrite extent code, EVER...(here's my nominee for that reason -- Microsoft Outlook)

    YOU: "No, he said there's never a reason for a ground-up rewrite --- and he's right. Refactoring, on the other hand, is great: rewriting extant code a bit at a time."

    Now, it's YOU who are taking him out of context (as you have accused me of doing). NOT ONCE does he mention "refactoring" code. The closest he comes to it is suggesting that if something is really broken, you can rewrite it a little bit at a time.

    There are actually LOTS of reasons to do a ground up rewrite. I wasn't being sarcastic when i mentioned Outlook, nor was i bashing MS, i know and like a lot of them and respect many of their products. Many Softies are terminally embarassed by Outlook and all the problems it has caused.

    The architectural design of Outlook is so poor that it has led to billions of dollars of lost data and systems damage. Yet, because of all of the things that Joel has promoted (and MS' ego), they keep recreating that program, version after version. The mistakes of the earlier versions are retained and the new version have new exploits created as a consequence of the old architecture

    7. Architecture is secondary to UI, maintanence of the UI experience is the MOST important standard

    YOU:"I don't recall him saying that either, but maybe I missed it."

    I can see how, if you don't do a lot of design or architecture, how that would be non-obivous.

    Simply put, if you can't ever change the base code, you can't ever effectively change the UI, as the integration between the UI and base code is (or should be) the tightest of all the design bindings in the entire OS or App. Witness "Windows Explorer", it's a clunky, ugly, non-effective piece of crap because it is bound to the files systems design and the UI. Everyone hates it (incl many Softies), but you can't do much, if anything, about it.

    8. Any problems caused by #7 above should never be fixed by redesign, but instead should be prioritized and patched by response to User problems.

    YOU: "Yeah, that is redesign, regardless of whether you want to use some derogatory term like "patching" or not."

    NOPE, sorry, these are both very clear "terms of art" with five decades of clear definition and usage behind them. You don't "design" a patch they way you "redesign" a app, system or even a feature.

    Patches fix things that are broken. Usu with a "one patch" to "one problem" ratio, unless you really messed up your design and QC (if you want to see what happens when you attempt to "redesign" by "patch" -- see the NT4 "Service Pack of Death").

    "Redesign" is not done at the "support" or "QC" level, but at the "architectural" level, redesign consists of stepping back from the extent product and saying "how can we do this better next time?" NOT "How can we save ourselves some future design time by using this patch to throw in additional features?"
    ........

    --
    Ten quid, she's so easy to blind. And not a word is spoken...
  258. What is .NET if not a rewrite? by IamTheRealMike · · Score: 1

    So let me get this straight..... The .NET programming model is basically designed to object-orient the Win32 API which until now has been split into many different object frameworks (MFC, VCL , Visual Basic etc) How is this _not_ a rewrite of the Windows API? Sure, you could argue it's just a wrapper around it, but as the idea is that developers should never use the API themselves, it's basically as if they are rewriting it. I have to say that although Joel is obviously a talented guy, I disagree with him on many things. Especially his ideas about rewriting code. Yeah, sometimes rewrites aren't needed, and it makes more financial sense to carry on the old code. But look at Netscape - no matter how much he slags it off, he can't avoid the fact that Mozilla is now light-years ahead of IE in terms of, ooh, I don't know, let's pick XML support. IE6 proudly trumpets support for DOM/CSS Level 1, while the Moz crew are starting on Level 3. IE may be the browser most used today, because Netscape did a rewrite. But there's another round of browser wars coming, and this time, Netscape has fundamentally better product. It's taken a long time, but Mozilla will last for many years. How long with the IE rendering engine last, before people realise it's hopelessly clunky, out of date, and well.... hairy? Not long I'd bet Sorry Joel, but the view that rewrites are never good is too simple. Sometimes, they're the only true way forward.

  259. Practice what you're preaching, Joel by meonkeys · · Score: 1

    Joel seems to be a strong advocate of code reuse and understands the stalwart value of "old code". Why then, does his comany, Fog Creek Software implement their own proprietary bug tracking system, "FogBugz" when there are perfectly awesome bug tracking systems out there, like Bugzilla?

  260. Re:Trying to hire female and minorities as a quota by SoftwareJanitor · · Score: 2

    Share the roads of your city with Asian drivers

    Uhh. I live in Austin, TX. We've got lots of asian drivers. I don't think they are any worse than the hispanic drivers, black drivers or rednecks driving their red F150's. Everyone around here drives like fscking maniacs. Either way too fast or way too slow and changing lanes without looking seems like standard proceedure regardless of racial background.

  261. projects or products? by jafac · · Score: 2

    Y'all seem to be missing the point here.
    Engineering practices do come into play, I'm sure. Commenting code, etc. yadda yadda, all very important.

    Let's just assume you have competent engineers (and managers) who know how to do their jobs.

    Then, how do you make a software project fail?

    Turn over engineering decisions to marketing and sales people so that the engineers CAN'T do their jobs.

    I've been in this business for 10 years, and I work for a fairly large software company, and I'm telling you, this is the #1 problem we all face.

    If you have a sales guy who's the golfing buddy of the CEO - you'll get features, MAJOR features, added to a project 2 weeks from the ship date.
    And if the CEO's OTHER golfing buddy is the head of marketing, that ship date WILL NOT SLIP, because hell, you don't want to piss off the trade rags who are all lined up to do reviews on your product and publish on that date. Otherwise the next trade show will be awkward.

    These are pretty simple examples of what goes on - and the fallout from this is, code changes happen - after beta testing is finished, features are slapped in without code review. Testing suffers - if you do a complete regression pass prior to actually shipping.
    Then you end up either shipping late (which most companies do anyway) - or shipping on time, and in both cases, you end up with a buttload of field issues that didn't appear in your abbreviated beta testing, or in your QA lab.

    Buggy software makes for poor sales (unless there's no competition). In addition, 9 times out of 10, the feature that the sales guy asked for gets in, but it doesn't work the way he imagined it worked, so this absolute drop-dead feature he needed to make that $10million deal isn't what the customer wanted, and so that sale falls through.

    I've seen this happen again and again. When you throw out careful engineering practices, and let the marketing and sales guys design a product that should be designed by engineers - the end result is - just what you'd expect.

    Sure - you MUST give a product a certain feature set in order to have market appeal. You MUST make target dates in order to synch with the marketing strategy.
    But these non-engineering influences need to adopt some better practices.
    1) Do REAL market research. Study the feasibility, keep engineering in the loop from day one.
    2) Make REAL detailed descriptions of new, requested features. (including "performance enhancements") Figure out what problem the customer is trying to solve with this feature, and why. See if alternate approaches can solve the same problem more elegantly. (this is how GREAT software is written, as opposed to the hobbled-together crap that's being sold by most companies today).
    3) Write the engineering spec for the product IN STONE - set a date. From this point on, unless there is a technical problem - NOTHING about this product changes. Any new features have to go into the next version. Sorry charly. That last great whizbang idea missed the boat. Trying to get engineering to put it into your product at the last minute to save your ass in that ONE big deal that's going to get you that christmas bonus.
    4) provide adequate time for testing. I can't stress this enough. If you're hitting problems in the field due to diverse customer environments, then expand your beta testing.

    --

    These are my friends, See how they glisten. See this one shine, how he smiles in the light.
  262. Death marches by JonathanKorman · · Score: 1

    Aye. Joel attributes sees the impulse to rewrite as a result of programmers' laziness about supporting existing systems. But I think many programmers who were present at the original creation of software recall the compromises and mistakes that came as a result of deadline pressure. Many suits say "we have to make deadline; we can clean that stuff up later." We all know that organizations rarely have the discipline to actually do that, and Joel makes it clear that it's not such a good thing even when they do.

  263. Re:Wasn't Foxpro A Rewrite? Didn't Access Cost $99 by ChrisWong · · Score: 1

    Foxpro was not a rewrite of DBase, but a different product. It was a longtime competitor to DBase, and was itself an update from Foxbase. It was an excellent product -- outstanding performance, efficient memory usage, modern WIMP environment in text mode, event-driven programming -- even if not completely compatible with its DBase competitor. To their credit, Microsoft did not mandate a rewrite of Foxpro: the Dos product continued to evolve, and the Windows product was already in development before Fox Software got purchased. So, no: MS did not rewrite Foxpro, but paid $$ for the privilege of using existing code to compete.

  264. Re:problem = clueless management/directors/execs e by K-Man · · Score: 2

    It goes beyond making the job unpleasant - the same cluelessness means that products don't get the innovations they need, and the entire business direction is defined by "don't go there, that's hard". Then they pack the ranks with VP's of this or that, and they might as well bury the engineers and forget about them. I call it the compost pile model - they keep adding fresh layers on the top, hoping something useful will form at the bottom.

    My last employer was (at one point) an internet search engine, but in the three years that I was there, they made absolutely no technological improvements to the search code (I know, I read it), but they doubled the layers of management, made hundreds of changes of priorities, etc. Then they decided that search was unprofitable, so they formed a bunch of distribution partnerships with other portals - except Google. Now Google is eating up the market and everyone else is chapter 11. So what do they do? They lay off all their R and D people :-)

    --
    ---- "If we have to go on with these damned quantum jumps, then I'm sorry that I ever got involved" - Erwin Schrodinger
  265. Are there developers here??? by Anonymous Coward · · Score: 0

    Hi,

    I'm astounded at most of the arguments made here. Let's talk REALITY for a second - not just "politically correct" answers...

    Fallacy #1
    ==========
    "We write over 1000 lines of code for a function - so we need to comment our code" - Please tell me the name of the company you work for - because you obviously have NO idea how to write code. I'll avoid your company like the plage. You also obviously don't understand that a function should encapsulate a single concept - and in my 15 years of commercial software development i've *NEVER* required a 1000 line function.

    Fallacy #2
    ==========
    "I left the comment in there so some sucker won't make the same mistake". Have you EVER heard of version control, configuration management, baselines etc.? Can't afford it? (yeah right) - try TkCVS or WinCVS. It's not perfect but it will do all you need for free. It allows you to "compare versions" and "write comments of what was fixed and why" - and more importantly, control change (mind you, you can't rely on the tool alone. You must have a thing called process...)

    Fallacy #3
    ==========
    "Don't design your code, just write it". Sort of goes along the lines of "well, things change - so you only document after the project is finished". Rubbish. Often commercial products have a thing called a "requirement specification" (Microsoft don't need one - they have a monopoloy. Therefore, they 'dictate'). A "requirement specification" says "you SHALL" and "you WILL". If something is not designed properly it will not work. If you want to know "what something does" or "why it was done that way", you read the "design" (NOTE: design is not a copy of comments in the code).

    Fallacy #4
    ==========
    "Code should have lots of comments through it". Someone else here summed this up beautifully... If your code is encapsulated correctly (basically, functions associated logically), written consistently with meaningful names then code will be much easier to read and maintain.

    You ONLY comment code where the code is complex or non-obvious from the design. If you need to understand why, read your design or the requirements (or maybe even a statement of work).

    From what i've seen here - MOST responses clearly indicate a clear lack of experience in software development.

    Oh yes, in response to the "blatant propaganda re: hungarian notation" - there are big problems with hungarian notation - but your examples were weak. Let me (slightly) exaggerate what you wrote :-

    Unix C (???)
    ============
    char message[1024]

    Hungarian notation
    ==================
    char strSomeBytes[1024]

    hahaha... you make me laugh. If you "really" knew about hungarian notation, you would have pointed out more obvious flaws, like "how do you name variable based on a class - when typically, people deal with many different class types"???

  266. Re:How to make a good software project / product f by Anonymous Coward · · Score: 0

    How to be not a moron according to Alex Belits:

    1) Believe that anyone opposing Microsoft is good.
    2) Put up with lies that meet your ends.
    3) Insult anyone who disagrees with your stance.
    4) Look the gifthorses in their mouths.

    Don't you have some carbombs to set off down at MS HQ?

  267. Re:Bloatware 80/20 by dpreviti · · Score: 1

    I'm glad someone commented on this, I was reading the artical and had the same thought. I'm not sure were he got his version but at my school it was 80 percent of your income comes from 20% of your customers.
    It's actually an interesting concept because it allows a buisness to address issues like the choice to continue to stop a product line, and if this is going to save money, or rob the company of it's best income source, it is also used when making other strategic buisness decisions.

  268. Pretty content-free link there by cculianu · · Score: 1

    That java will die guy was pretty free of any technical content.

  269. Legacy DOS Code by llywrch · · Score: 2

    This has been an issue that has puzzled me for the longest time: if your company has a program that runs on -- say -- DOS 5.0, & you can't afford to pay someone to port it to Win98/Win2000/Linux/BSD/whatever, why not leave the aging 486 running this ancient program alone?

    Either you have an idiot in charge of IT who wants every computer at the same iteration of hardware & OS for ``simplicity" reasons, or you have a bunch of lazy users who don't want to leave their cube to walk over to the old computer to run this legacy application, then move the data to a shared directory from whence they can work on it at their cube.

    And if a case can be made that it has to run on several current-generation computers, then it's justification to be rewritten & migrated to the office standard.

    Something just doesn't compute here. Unless this is MS's way of hiding the fact they have to leave a butt-load of legacy function calls because no one in Redmond is sure they aren't being called in some dusty corner of Word or Excell that no one still working there understands.

    Geoff

    --
    I think I see a trend here. Maybe for them it really would be easier to muzzle the entire internet than to produce p
  270. Wow... by Anonymous Coward · · Score: 0

    I couldn't even make it through all of these posts. Lost somewhere down the thread about the Cringley article.

    The Microsoft issue seems pretty divisive. On one hand, you have the people who think that they are the evil incarnate and a relentless death machine for anybody who stands in the way of "where they want to go today." On the other, you have the market-types who see them as an Adam Smith wet dream. Either side seems pretty fatalistic to me.

    We need more optimism here. I'd guess that a good amount of the readership on this site are programmers, as well as open source enthusiasts. Lets start using this for something!

    Monopolies do not last forever, a fact that has been well established over the years. The fact is, nobody has tried to strike Microsoft at their heart: the consumer. I mean this quite literally. Many have flitted around the edges, talked about technical superiority, showed this great new feature, and then stood dumbfounded as MS came and ate up their market share.

    While the anti-trust settlement struck many of us (myself included) as a little lenient, it did open up several new points of attack for those of us looking to take the fight to MS' home turf. 1) they can't discriminate in pricing based on how they feel their OEMs are treating them. 2) they cannat control every aspect of what goes where on the desktop. 3) they have to open up some of the APIs they use to integrate their apps.

    Between us, I propose we go on a lowest-common-denominator programming binge for Windows. Write plug-in replacements for MS products on the MS Platform. Lets start with the databases, mail servers, web servers, and other "enterprise" packages which use commoditized protocols. While many of these are available in several forms, this new court mandated "openess" and OEM freedom could be just the ticket we need to push our things into the mainstream. The marketing will come if the software gets there. Quite frankly, I believe that open-source has failed in the marketplace because companies have come to the realization too late that they cannot dictate to customers the terms of sale. ("sure you can use our database package, but you need to run linux. No, it doesn't have such-and-such extensions") As bad as NT and Win2k are (and I'm not even talking about XP) the fact is people buy them and will keep on buying them. Are we going to forsake all those poor lemmings to using exchange and SQL server when we have sendmail and postgresql just sitting around? NO!! If our community can get the software together, there are plenty of players out there to push it for us. IBM would be glad to try to talk people into using open-source packages when a customer chooses NT; it gives them a clear migration path to their AIX and linux servers. WE JUST NEED TO MAKE THE SOFTWARE A PLUG-IN REPLACEMENT! Its not about who's technology is cooler, its about simplicity and convenience, and giving people solutions that fit with what they know.

    I just hope we learn this before IBM, Sun and Oracle aren't around to help us out anymore.

  271. Have you programmed your VCR? by Anonymous Coward · · Score: 0

    I have programmed for TOPS-10, OS-360, RT-11, DOS, and Windows 32, but not my VCR. If you have too many features, it becomes hard to do simple things.

  272. Perfect is the enemy of good enough by Anonymous Coward · · Score: 0

    I read the article a while back, and for the most part agree. The aphorism "Perfect is the enemy of good enough" expresses the fundamental idea pretty well, I think.

    I've worked with many programmers who were more focused on a theoretical, ivory-tower sort of idea of what software "should be", and forget that the object of the game is to DELIVER software that is USEFUL or HELPFUL, but not necessarily PERFECT.

    They can never seem to complete a task, because there is always something more to do. In many cases, the programmers take it upon themselves to redefine the requirements to make their job more interesting. This does not necessarily accomplish what the business needs.

    In many cases, programmers "gild the lily" because it is something they want to do, not because it contributes to the above goals.

    In my own case, a client once hired me to rewrite a trading application for NT which had been implemented on Unix. At first glance, it did look like "spaghetti code", but after spending a couple of weeks understanding it, I convinced them that a rewrite was not needed. I managed to port the code without a whole lot of trouble, and this ended up saving the client at least six months in time to market.

    Sadly, many programmers (esp. consultants) do the opposite -- they encourage their clients to throw away code which is OK, because it lines their pockets. What is missed here is that once the new code has made it through QA, system testing and user acceptance, it may not be all that pretty anymore either.

  273. Non-aggressive personalities by Grax · · Score: 1

    A lot of this has to do with self-marketing. The marketing department has lots of talented marketing minds who are quite capable of convincing folks of their importance to the company.

    The IT department, on the other hand, is made up of (hopefully) intelligent computer programmers. If the IT department could hire one or two of those marketing guys to get the message out within the company of what IT does for that company and what it needs to do that job better, they just might be able to swing the higher salaries, catered lunches, etc.

    IT needs to be more aggressive. They need to show the C?Os and others how the company will save money and/or be more profitable with better hardware and dedicated staff.

  274. Be careful for who you thrash... by addison · · Score: 1

    For it is you who require a clue by four.

    The file you mention is used by the OS/2 subsystem. You won't see those error messages unless you run an OS/2 program under NT.

    Of course, its always easier to ignore history. Yes, there's a OS/2 subsystem. If you go do a strings on the NT 3.51 DLLs - and even some 4.0 ones , you'll find IBM's OS/2 copyrights. (Novell made a big deal out of that at one point in sales presentations, and I think the next service pack replaced those that had been pointed out).

    Because NT and OS/2, at one point, were the same project. It seperated for a number of reasons, but primarily because Microsoft had the "damn the customers, make 'em buy new hardware". THe OS/2 layer is part of the seperation agreements, and it was disabled/junked as soon as possible (as well as not well done, on purpose).

    But your disbelief of history doesn't in the slightest change it.

    Addison

  275. Re:problem = clueless management/directors/execs e by Anonymous Coward · · Score: 0
    How can a non-technical boss effectively manage technical people???

    It can be done - I think - IF the boss realises the technical stuff is important, and listens to the techies.

    My last boss didn't - she* seemed to assume that the business side was the only important thing, and that the techie stuff `just happened'. Okay, that's how it should appear to the higher-ups, but she was an IT project manager!

    (* Before I get flamed, I'm not suggesting that her sex had anything to do with it. I don't think I've had any male bosses with quite this problem, but that's just the luck of the draw. And they had other problems instead!)

    When she told me my contract was being ended early, she asked me about what I'd been doing over the last six months, and I think a lot of it came as a surprise to her...

    Mind you, my worst gripe is with managers who ask you for an estimate for something you've never done, and expect the times to be accurate to within 5%. After they've talked you through it in detail halving all your times, of course... [fx: scream]

  276. Re: He certainly is into lunch, isn't he? by gidds · · Score: 1
    Trouble is, in my experience most of the cruft that accumulates is working around bugs that:
    • have been fixed in the system software (OS/compiler/VM/etc.),
    • have been fixed elsewhere in the app,
    • didn't actually exist because the programmer misunderstood,
    • the stupid programmer put in ten lines above, or
    • a proper redesign would fix anyway
    ...none of which would be needed in a rewrite! Their comments can be useful to remind you of conditions that need to be checked for, but most of the cruft is just a waste of code and programmer time.

    And don't underestimate programmer time. It's hard to quantify the time you'll save in future by having a neat, concise system instead of a mass of gunk, but just coz it won't fit into a neat box in a business case doesn't mean it's not worth doing.

    Some of the best bits of redesign have been done in people's spare time... Programmers often know the most efficient way to work even if the higher-ups don't.

    --

    Ceterum censeo subscriptionem esse delendam.

  277. IE for the Mac: Why is it good for M$? by hearingaid · · Score: 2

    You raise an excellent point.

    I have a theory; it's only a theory, mind.

    I think the reason why M$ produces IE5 for the Mac (which I think is a better browser than Windows IE5 or 5.5; haven't used IE6 yet) is because of tradition.

    M$ historically has had a fairly strong presence in the Mac market; for a long time, for example, MS Word was mainly a Mac product. (At the time, Serious PC Owners used WordPerfect exclusively for word processing.) Many Mac users have a generally positive attitude towards M$.

    Even Mac users like me (an admitted /. reader :) have something of a fondness for some M$ programs, especially MS Office (I own Office 2001).

    I think they're doing it to keep Macheads happy, and thus to keep sales of Office fairly brisk.

    --

    my old sig used to be funny, but then slashcode ate it and now it's not funny anymore

  278. Re:Chars and bytes arrays are both the wrong solut by WNight · · Score: 2

    While you may be able to tell yourself that you don't have any obligation to support Win95, you're going to lose more customers (likely) by not supporting it than you would by supporting the Chinese language.

    Now, if you were writing an app with a lot of Chinese appeal this might not be the case.

    Or, if your app likely wouldn't work on old computers. (Doom 3, etc).

  279. Re:Chars and bytes arrays are both the wrong solut by clone304 · · Score: 1

    In business, it's not necessary to tell yourself that you will be losing customers by not supporting Win95. In fact, making the decision NOT to support Win95 will save you money in the long run, because you are not dealing with the support issues dredged up by these anachronistic idiots and the ridiculous incompatibilities of old ass Winblows operating systems. Meaning, you don't have to develop with an eye to how your code will work (or not work) on Win95, because you have made it a policy to ridicule the dumbasses that still run it.

  280. Re:Small chunk minds take longer to pick up by thirdrock68 · · Score: 1

    Comments should explain WHY, not HOW.

    If all the comments are doing is telling you exactly what you already knew from being moderately literate in the language, then they are just ugly chunks of text that get in the way of reading the program.


    If you weren't so emphatic about that, I probably wouldn't take exception, because I agree with you to certain extent, however ...

    It is rare that you will need to explain 'WHY' you did something, because these cases are exceptions rather than the rule. Most of the time in programming, you are doing fairly straightforward stuff.

    Even the unusual, innovative or 'cutting-edge' stuff is usually supported by lots of vanilla functions, that interact with the OS in the usual ways.

    So I believe that you should also comment the 'WHAT' of a function/method in plain english for one very simple reason. Those with able minds pick up and start coding on projects much faster when they have an 'overview' of how the pieces fit together.

    And sure, documentation is usefull, but when I am looking at one function, that calls many other functions that work fine, I very quickly pick up the project and start coding when the code has been commented in the following manner.

    // first I try and connect to the server
    [some code]
    // then if I can't connect, I ping to check if the server is up
    [some code]
    // if the server is down, I write an error log and get out of here
    [some code]
    // otherwise .... etc etc


    Sure there is some redundancy there, but believe me, the next guy who takes up your project regardless of his level of skill will thank-you from the bottom of his heart when he can concentrate on doing what needs to be done, rather than going through every freeking line of every freeking function, like some anal-retentive accountant, just to find out what the programme is trying to do.

    TR

  281. Re:Chars and bytes arrays are both the wrong solut by Anonymous Coward · · Score: 0

    There are several ways to encode a given glyph, for example eacute, as in "cafe". This can be encoded either as the latin-1 compatible eacute character, or more properly as the character e followed by the non-spacing combining diacritic acute symbol. Also, Angstrom has three encodings IIRC, 'A' with 'o' above, 'Angstrom' symbol and 'A' followed by a combining 'o'.

  282. People will buy 'Pretty Good' by ghoti221 · · Score: 1

    After wading through everything that's been posted, I think that's the conclusion -- it doesn't matter how good your code is beyond a certain point. It just has to be 'pretty good', because that's where most consumers will make the buy decision.

    Argue the point all you want, but the people buying stuff don't really give a damn about all this software engineering stuff. They just want something that will write letters and balance the books and help distract them a little from their lives, and they don't care if it's particularly efficient or fast, or uses a cute new optimizing algorithm, just as long as it gets the job done. There are exceptions, but not enough to make a real difference.

    That's how Microsoft succeeded -- not by engineering, but by business practices. Whether that's moral or not is left as an exercise to the reader. The level of success can be explained by the billions of dollars that Bill Gates has. To challenge this, you must either a) be better than Microsoft in business, or b) you must educate the public that 'Pretty Good' isn't good enough.

    To quote Charles Osgood from 'Pretty Good':

    ...
    There once was a pretty good nation,
    Pretty proud of the greatness it had,
    But which learned much too late,
    If you want to be great,
    Pretty good is, in fact, pretty bad.

    --
    "The competent programmer...approaches the programming task in full humility. -- Edsger Dijkstra
  283. Hope no Managers Read Joel's interview by Anonymous Coward · · Score: 0


    "I've seen plenty of companies with prima donna programmers who literally drive their companies into the ground. If the management of the company is technical (think Bill Gates), management isn't afraid to argue with them and win -- or fire the programmer and get someone new in."
    <snip>

    ... because Most Upper Management believe they are technical, so now you give them great ammunition to get rid of you if you try to bring along some "yesman" lacky who will continue to maintain your companies brutal Hack of code which was written by some High School Student...

    Let's get serious, in any Client Server environment You can try putting a rocket on rollerskates, but if stuf was written bad from the beginning, it wont scale, and youll be paying the price tracking down memory leaks and badness... Stop the madness! Yeah it might function if 5 or 10 people use it, but when you need stuff which works for 100's, good luck maintaining that nightmare!

    I agree sometimes programmers go overboard with "ReArchitect" ideas, but, I still maintain the problem is Managers who force programmers to spend 90% of thier time on functionality used 10% of the time... While the entire project suffers

  284. Re:Futurama by Anonymous Coward · · Score: 0

    "They think they have a good union but they don't, they're practically slaves."

  285. Re:Chars and bytes arrays are both the wrong solut by rodgerd · · Score: 2

    I guess you didn't actually read the rest of Joel's comment. He's interesting in writing commercially successful software. Lots of people still use Win95.

  286. Microsoft Meta-Moderators??? by Anonymous Coward · · Score: 0

    Who the #@%#@ has been moderating this discussion? People from Microsoft???

    I started reading this discussion the day it was posted, and the moderation was pretty good. When I checked back today, I found that a bunch of good comments were now rated 3, and were listed as Troll, Flamebait, Redundant, and even Off-topic.

    WTF!?

    I hope /. is keeping stats of the number of moderators from microsoft.com that are biasing this discussion.

  287. Re:Chars and bytes arrays are both the wrong solut by Anonymous Coward · · Score: 0
    I am 100% certain that it is possible to write commercially sucessfull software in late 2001 that doesn't run on Win95. I can also think of lots of platforms for which Unicode is a better string representaion than byte arrays. Some of them are even from Microsoft.

    Would you care to revise that statement in in light of the later slashdot article
    Win95 Lifecycle Draws to a Close" - Microsoft has picked November 30th, 2001 as the date that Win95 moves into the unsupported phase of it's career

  288. Re:Small chunk minds take longer to pick up by DunbarTheInept · · Score: 2

    I may not have communicated my intent clearly. The examples of comments you gave *are* the sorts of comments I like to see. They summarize at a level much more vague than the code. They explain why you wrote the code, not what it is doing in a detailed fashion. ("I wrote these next few lines in order to make it do foo.")

    --

    Don't label something "offtopic" unless you know the topic well enough to tell what's on topic.

  289. Code does decay... by 24601 · · Score: 2, Interesting
    I do agree with you that a lot of developers spend time rewriting code not to make it better but rather just to make it different.

    However, I have to take issue with your position that rewriting code is bad because it throws out all the bug fixes that past programmers spent time and effort finding and fixing. I suggest reading an article in IEEE Transactions on Software Engineering 1/2001 issue. "Does Code Decay?" I would like to post a URL to that article .. but unfortunately it requires payment.

    Eick, et al's conclusion was that indeed code does decay. Their definition of decay was "A unit of code is decayed if it is harder to change than it should be, measured in terms of effort, interval, and quality." (italics theirs) The source of their data was the entire change history of a 15-year old real-time software system for telephone switches with over 100 million lines of code. What they did is measure the number of files that a single change had to modify. What Eick found was that once the initial development flurry of activity died off the probability of a change needing to result in modifying more than one file was less than 2%. Within five years the probability had increased to greater than 5%. It is Eick's contention that this is a sign of code decay because the number of "simple" changes was dropping and the number of complex, involved changes was increasing.

    Furthermore, they found that modules began to exert "gravitional" effects on nearby modules. This resulted in blending and stronger and stronger coupling of the modules.

    They listed a number of causes of decay:

    • Inappropriate Architecture
    • Violations of the original design principles (The program is required to do something that was not anticipated at design time)
    • Imprecise requirements
    • Time pressure
    • Inadequate programming tools
    • Organizational Environment (low morale, high turnover, poor inter-developer communication)
    • Programmer variability (some code that should only be touched by experts is mucked up by novices.)
    • Inadeqate change process
    Bad management of course will magnify the issue.

    To that list I would also add that as the field matures we learn better and better techniques. A very good example of this was the seachange that I saw when the use of exceptions were first introduced. I remember all the effort of trying to communicate an low-level error condition up to the calling chain. Error codes return values -- what a nightmare! Once I saw exceptions and understood them -- It made the quality of my code much, much better.

    So to Eick's list I would add general advances in the field result in the realization that what was previously considered "best" practice is no longer the case. This happens in every scientific field and computer coding is no different.

  290. Re:Chars and bytes arrays are both the wrong solut by Anonymous Coward · · Score: 0

    Uh, ASCII is 7-bit.

  291. Re:Chars and bytes arrays are both the wrong solut by Anonymous Coward · · Score: 0

    But WinME and Win98 don't support UNICODE either. Only NT/2000/XP support UNICODE.

  292. Part II of the Invterview with Joel Spolsky now up by rickchapman · · Score: 1

    Part II of the Interview with Joel Spolsky is now up for your perusal.