Actually, this is a pet subject of mine.
*If* you can buy a car for $10,000, and *if* it will last 100,000 miles, and *if* it required no maintainence, it would be costing you $0.10 per mile to drive it, minimum. And that's assuming someone gave you the gasoline, the oil, etc.
Now, I can go buy an $800 car, and assuming I use just a tad bit of analytical skills, wind up with a car that will go 8000 miles, and then can be thrown away. $0.10 a mile! And, I get to drive a different car more often (I mean, get real, do you *really* want to drive a Ford Escort for 100K miles? It's bad enough driving one just to the grocery store...)
But, you don't get a warranty, you don't get that new car smell, and the risk factor that you wound up with a piece of junk is higher (although not eliminated, let me tell you!).
Of course, the business world doesn't work like driving a car. Software typically has a deadline to be completed in. It's typically expected to have some sort of return for the investment (big or small), because it's not a companies job to be in business to lose money. Companies will *often* operate fairly short-sightedly, because they have a vicious group of sharks to satisfy, call "investors". Investors want to make money, but the majority are not going to continue to pour money into a company that doesn't generate some return, or at least an indication of progress.
There's also this thing called "market window", that can be more important than the circling sharks. Market window is the term used to describe the amount of time before someone *else* comes out with a product that obviates the need for yours. No one cares if you write the ultimate spreadsheet program, if someone else releases theirs a year early, and scoops market share, and the product becomes firmly entrenched, even though yours is better. Sound like a company we all know, and some of you hate?
Investors have to look at all sorts of factors: What's the market window? What's the viability of the product? Can it be accomplished in the investors lifetime, or fianancial window of opportunity? What's the existing market share? Who are the competitors? Is this a leading technology, or something that's going to be a flash in the pan?
If you've never been around these people, they can seem very cold and callous. But the reality is, they're out to make money. All companies are out to make money. Such a thing as an altruistic company doesn't really exist, because they can't *afford* to exist.
As a result of all this, software and hardware is sometimes forced to ship early. Sometimes, and this is sad to say, it can be more important to have a product with a mediocre reputation and get it to market early (or first), than it is to wait, and ship yours *after* Microsoft does. It's often easier to assauge the user problems than it is to get market share back. It may not be something that *we* like, but it's a real world business model, and real world business models factor in things like these. If you've never seen a business plan (and not one out of a cookbook, but one written by people who've had companies go down), go and find one. Read it. It's very interesting.
Now, one thing you'll never find written in a business plan is the phrase "And at this juncture, we plan to screw the users.". Investors don't like plans like that, because it indicates a company is unstable, or at least, the principals are. No, the customers get screwed later, and (if you have any brains) with no written memos about it. And it happens because of poor scheduling (unrealistic schedules), people that don't know how to manage, and a business plan that doesn't say "And at this point in time, we fire the prima donnas". (If you don't know what one is, go look it up. You don't want to be one. It's bad karma).
As you can see, there are a huge number of factors that affect "Good, Fast, Cheap, Pick two". And it has to do with competition. Perhaps it's not the best kind. But investors can't sit waiting indefinitely waiting for the return on their money, companies can't allow market share to be ursurped, and as long as there is money to be made, someone else won't play nice (they'll pick 2, and deliver a product), while you're still trying to write the perfect Doom game.
You can be a good citizen, and try to help people get out of this mindset, but as long is there is cutthroat business practices, people willing to undercut anyone else, blah blah blah, it's gonna happen. So just do the best you can do, within the time frame and and budget given, and try to prepare for the next phase. Don't set out to write obsolete software, but don't kill a company by trying to write the perfect XYZZY that they don't need, either.
--Chris
e-mail jcwren