Why Does Software Cost So Much?
Summary: An older collection of essays, some good, some bad, from one of the most respected names in the software management field. An interesting read, not least because of the amusement to be gained from how things have, and haven't, changed. Worth reading if you have the time, but not as essential as some of his other titles.
Check your sources. Tom DeMarco is an established industry figure who occupies that rarest of market niches - he's a management consultant/guru who has the respect of technical people. He's the co-author (with Tom Lister) of the classic "Peopleware" (which I suggest you rush out and read), and it's on the strength of that title that I read his work. I normally lack even the slightest interest in management titles, on the basis that Sturgeon's Law seems to be especially strict in that genre. For example, both my copies of "The 7 Habits of Highly Effective People" and "The Monk Who Sold His Ferrari" ended up in the bin. (If it helps, I have a library of about 5K books [mainly novels], and have only ever thrown out 4.)
What's this book about? This is a 1995 title, and as such is interesting for historical value. The blurb states:
"Drawing together several essays published previously, plus ten all-new papers never seen beyond his circle of colleagues, Tom DeMarco tackles a multitude of tough subjects and wrestles fresh insight out of them. Here's a compact, compelling edition of this acclaimed consultant's views of managing the software process."
What you get is 230 pages of essays or opinion pieces. There are 24 pieces, ranging from a couple of pages to a couple of dozen pages. A smattering of titles:
- Why does software cost so much?
- Management-aided software engineering
- Lean and mean
- If we did only one thing to improve...
- Software development: State of the art vs State of the practice
- Software productivity: The Covert Agenda
As the titles suggest, the focus is on software projects specifically, although much of the discussion re managing the effort could apply to many technical disciplines. All pieces which refer to surveys don't use numbers pulled from a hat, they use numbers pulled from the bibliography at the back.
Target audience It's a mix. Most of the pieces seem aimed at management, from team leader to project manager, but the discussion will be of interest to most programmers, especially those suffering from the Bad Management Blues, or who are thinking of taking a step sideways into a team lead role.
What's good? Quite a lot. This isn't a long book, and it's not going to revolutionize your life, but it makes for a decent couple of hours reading. The author can certainly write, with a chatty style obviously honed by a career based on presentations. All the pieces are easily digested, and usually contain a nugget of something interesting.
There are a few nice points in here re how and why you should manage your software project, but for me, the interesting thing about this older title is that it's a very different world he's talking about! For example, one piece, from 1989, talks about the difference between programmers working on identical tasks. They show nice charts and I was amazed to see PASCAL and BASIC in there. I expected to see COBOL of course, but the small size of the C wedge was shocking. Of course, there was no wedge for C++, let alone Java or Perl.
As with any older title, there are technological fossils like this to be marveled over in several essays, but it's quite interesting how the author pronouncements are generally, well, reasonable and right. He's not Nostradamus, and doesn't predict specifics, but there is a nice discussion on language uptake (he rails against FORTRAN and COBOL in a world of Modula-2, Oberon and SmallTalk! I suspect more people now now use the either of the former languages than all the latter languages put together). In this essay, he talks about how some of the third generation languages are wonderful, but suffer from inadequate or confusing libraries. He suggests that only wide and deep libraries really make people change languages in the real world. I know (from reading his new title, "Slack", review coming) that he's much further from the code now, but I wonder what he makes of Perl or Java? (Certainly the thing that lured me from C++ to Java was the libraries. Well, I missed the STL which makes the Collections API look like a child's homework.)
Other essays talk about the Microsoft anti-trust trial, or the fate of IBM. In both cases he seems to be more-or-less on the money, simply by being slightly cynical and not making any mad assumptions. Of course, by the same token, nothing he predicts is particularly startling, but still, of interest when reading.
There are a quite a few pages devoted to things which don't relate to technology specifically, and hence, don't appear dated now. These generally concern scheduling, or people management, and generally are as good as people expect this author to be. When he's good, he's very good. I want to work with a manager like him someday, just to see what it's like! However, even in these people-skills sections, I can't help but wonder what he'd revise in the light of the whole dot-con debacle.
What's bad? Well, this is a fix-up title, and some of the essays are, to be frank, crap. I doubt any but his most ardently completist fans want to read an essay on his experiences trying to work with desktop video for example. A couple of the essays just struck me as, well, rather pointless. Sometimes funny, but pointless. These tended to be the "Not previously published" ones, and I think there's a reason for that.
Alternate titles Oh, sure. There's a shelf full of titles like this in your nearest bookshop. I don't generally like any of them though, so I'll just recommend his earlier Peopleware and his latest, Slack.
You can purchase Why Does Software Cost So Much? from bn.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page.
Without having read the book, I would expect this question is best answered by reading any introductory (micro)economics book.
And that's getting fixed too. Every software shop in Silicon Valley is opening up development centers in India.
Good, cheap, fast. Pick *two*.
There's always terrific pressure from Marketing to make the product RIGHT NOW, if not sooner!
Someone always insists that it has to actually *work*, too.
Okay, that's fast and good. It isn't going to be cheap.
TyZone
This is an easy one. Software costs so much because people are willing to pay for it. It's basic economics. Would MS Office cost $500 per license if nobody was paying it? Of course not. Office is MS's number one product, because people want it and are willing to pay for it.
do not read this line twice.
You have different costs and goals for:
- commodity products
- new inventions (R&D)
- business process automation
- technical process automation
and so on.
Most software is actually surprisingly cheap, because, like table salt, we have managed to produce it on an industrial scale.
But anything that falls outside the 'box' - and this includes the R&D that can give a business its 'edge' is costly.
It is like 'chemicals'. Sodium chloride is cheap. Anything made by a solitary lab scientist somewhere is horribly costly.
This book was written in 1995, when we were finishing the mass automation of most normal business processes.
Buying the same software today is really cheap unless you go for SAP & Co.
There is a significant gap (people selling salt as if it were gold) that is only possible because software is so hard to understand, compare, and measure.
With time, this gap will close and commodity software will go for commodity prices.
Sig for sale or rent. One previous user. Inquire within.
Why software costs so much (to make).
Many of us are responding to the question
Why software costs so much (to buy).
My opinion (FWIW):
Answer to question #1: good, cheap, fast...pick two.
Answer to question #2: a company that's interested primarily in making a profit will spend some effort finding out how high a price the market will bear, and then charge that price. It'll be uncomfortably high, but not *too* uncomfortable for their target market. People will buy it at that price.
TyZone
Most shops out there look at the price tag of software and equate that to "worth". Here is a personal example. I wrote some bioinformatics software in the early 90's that I used in my research. When others were looking for the same thing, I added the creature comfort features that I did not need, plus documentation. I _could_ give it away (under the radar), but for shops who had to buy software, no one would touch it if it was free. I stuck a $200 price tag, no nibbles - feedback was they were expecting shareware grade product at that price. Had a custom box made, charged $5,000 - and sold several!
.2-1M. Sometimes you have to charge a punitive amount to make them feel like they are getting something. They are not evil, just missing the point.
Anyhow, point being it does not matter how much jboss rocks if those with the checkbook think webxxx is worth the
+++ UGUCAUCGUAUUUCU
Software is expensive because is hard to develop it.
There is not free food.
Conversly, those that run "acquired" software, say that they do so because they cannot afford the cost of the software.
Given that, which happened first, and caused the other?
The correct answer is probably "neither". I strongly believe that the (relatively) high cost of software stems from two factors:
Any product worth putting on the shelves will take anywhere from 1 to 20 man-years to develop (minimum). Multiply this by a developer's annual salary (and add salaries for marketing, finance, and administration), and you start to see where the costs come in. The number of people who buy your product is very subject to market whims. Try to increase it through aggressive marketing, and you just up the stakes (marketing costs money too).
So, if you've paid to develop a product, you generally end up charging what the market will bear to be as sure as possible of recouping your expenses. If you're trying to amortize over several projects (i.e. use your successful projects to finance your unsuccessful experiments), it's even worse.
If a product is pulling in money left and right, a company would be very stupid to cut the revenue stream by lowering the sale price. Make a lower-end offering, sure. Lower the price of the old version when the new version comes out, sure (if they're confident they won't compete with themselves). But companies are intrinsically selfish (they're _supposed_ to maximize revenue). A for-profit company won't just start giving away its product once development costs have been recouped.
In conclusion, I think that high prices would exist with or without software piracy. Software piracy is just another marketing angle to spin to justify the price.
I have tried lots of demo video editors, all were crap.
Even GPL'd VirtualDub? No wait, that's not a demo, that's a full version as Free software.
Will I retire or break 10K?
Now, some people will argue that a car is much more complex than a piece of software, and it certainly has a higher raw material cost. I'd agree with the latter, but not the former. Software is immensely complex, and software engineering usually doesn't have the benefit of tolerances. A door panel on a car can be 1/4" too small and the car will still work. You can't really do that in software; the software will break if everything isn't exactly right. That type of precision takes a hell of a lot of time/effort/etc. How much does GM spend to develop a new car? Billions. And they're still more expensive than an operating system, which is at least as complex. Given the amount of stuff that went into it, Windows XP is a bargain at only $99 or whatever (usability considerations aside). And then there's Linux....
One-off software is significantly more expensive than consumer software, but even there it's cheap when compared to the rest of the world. Want a custom car? What does that cost? (Hint: a lot, for any kind of quality). Or how about a custom dump truck for your mining operation? A custom or low-volume piece of software can run $10k-$1M or more, depending on what it is. Even those prices are on par for custom vehicles. While those numbers represent a lot of money to me, that's not a lot in the grand scheme of things. Software is damn cheap, especially when you consider the benefits it can provide (like the spreadsheet....VisiCalc + its followers literally changed the world).
I don't think software costs a lot. That said, I'm sure it can be made more cheaply + reliably given better tools. The same thing is true for every industry.
You condider this a fix? this is one of the horrors of the modern age. Rather than places like India, Indonesia, Mexico, etc getting decent working conditions and wages, we want them to become our little slave labor camps (oh but they aren't slaves, we pay them wages... sorry, let's call it indentured servitude). All so that the top parasites can get higher and higher profit margins. And this has the additional benefit of giving said parasites leverage over workers in the US and Europe to remove their fair wages. It's particularly bad in the blue collar circle, and now it's hitting the IT industry too! Some Fix!
And let's not even talk about the horrors engaged in by my government (the good old u s of a) to make sure none of them uppity little 3rd worlders try to institute any kind of worker reforms!
Why is software so expensive? Is it TOO expensive? I don't know that it is. Why is some software too expensive? Monoplies, and excessive profit margins. Bill and his billions ought to indicate that there is a problem aside from just paying excessive wages. And to my mind excessive wages only start at management level. The people producing the work seldom get paid enough, let alone too much.
Wish I hadn't used all my moderator points.
Software tests are the other half. And both are only half of the effort put into them.
Software costs a lot because people think it's easy to put an idea down in a piece of code. But the code you end up with is a reflection of the sculpting of the code you started with. And you have to write at least an equivalent amount of just-as-well-sculpted code in order to test that the original code works.
So one piece of running software costs twice as much to write from scratch as you'd think just from looking at the spec, and another twice as much to test properly. Three times if you need exhaustive testing under load.
Add 1 more unit if you want it documented properly. 2 more if you want the tests documented.
And then, if you're going to certify it for flight or safety, add another two to five units for the reviews of the software, the tests, the documentation, and of the reviews themselves.
Nominally, figure 2x for working code, 4X for tested code, 5X for tested, documented code, and 7X-10X for certified code (that will still have bugs but most of them will be documented and approved).
And then modulate it by the quality of your managers. Your wizards may do in a day what your lusers will take a month to get right. Wizards don't come cheap, for a reason. The great management smoke-in of 2000-2001 resulted in a lot of lusers being hired for Wizard pay. The backlash is occurring now. Bad managers estimate poorly and either overpay or underschedule. Managers that do the opposite are good by definition. And there's no way to prove managers except by trial and error.
$100 for a "line of code" in a cockpit system isn't unusual, and isn't unreasonable, considering how many uses you can get out of it, and the price of failure.
Lots of features aren't always a good idea, no matter how much they cost.
Software is complex, and nearly everyone is in denial about it. Many people think it is some sort of magic, where just adopting the right buzzwords will make something everything they dreamed for. Everyday, someone breaks out of this fantasy after learning a very very hard lesson, but, sadly, for each of these people there are three more who are just beginning the process.
The software industry is also infantile when compared to ship building, chemical rocketry, airplanes, electronics, book publishing, and house building. These industries have already learned all the hard lessons, and there is a culture in place that guides young and old.
The software culture is more like the fashion industry than engineering, right now. Everything is in flux, established procedures are never established for long, what broke the last system is quickly forgotten, and youth rules the roost.
In time, this will change. Software Engineers won't be laughed at for their vagueness of title. Newness of technology will actually be considered before risking a whole project on it. One day, people will be conservative (but smart and creative) when creating such complex systems.
And, in time, people will come to understand what software really costs. Million-dollar contracts won't be alwarded for ten-million dollars worth of work. People won't want their Golden 6-speed Lexus delivered this afternoon for the price of a Chevy Cavalier. One day, they will learn.
Healthcare article at Kuro5hin