For thoses who knows, escrow.com is a service that protect buyer and sellers in an online auction from fraud. To check the transaction fee escrow.com is charging, they've set up a little
javascript calculatorHowever, if you enter the value :
1010101010101010
It returns the same amount as if you entered 0$, that is the base fee of 25$.
However try it for a smaller number.. like 1000$, you will see it doesn't reflect at all the reality.
I know that it is a really big amount of money, and probably no internet transaction will be made through that service, however, I think a basic point of software engineering is : testing. This internet calculator is only an example of what I try to talk write about.
People in the industry really don't test enough their products : softwares, cars, hardware, and others !
What makes me the most sad : softwares are relativley easy and cheap to test. To test a motherboard, the motherboard compagny need to buy a test bench (several hundred thousands dollards), pay an engineer to write a test plan, than pay a guy who is specialised in test bench programming to write a program that will test this particular motherboard line ! The chances are the process will be to do again on the next motherboard line.
In the software industry, you don't really need to test each individual units. Yes, you need to test the CD for non defectuosity if the software is transported on a CD, but if the software is transported on electronics way (internet), the testing is done via MD5 automaticaly..
All this to say that, since you don't really have to test each individual units of software you distribute (the reproducability ratio of a program copied is really high.. if you copy the same file twice, both file should really looks alike), the cost of your individual tests is really really decreased.
However, why do people still continue to distribute badly tested applications (many examples, not limited to microsoft, but also including solaris x86 bug with usb mouse and keyboard layout in java applications, and multiple others) ?
I cannot answer this question. For shure, time to market of software is a great constraint. However if testing is done from the beginning to the end of the developpement project, time to market is unaffected, you just need to hire more people, maybe 3-5% of your developpement staff, and dedicate them to tests, from the beggining to the end of the project.
5% of your staff. If you have 100 developpers, that means hire 5 people. Per years, that represent about a quarter a milion dollards, I know that. However assuming the testers are paid equally or less than most of your developpement staff, 5% of your staff means less than 5% of your developpement cost, which represent 0-5% of your project costs, and that should represent a lot less than 1% of the sale price.
On the other hand, the testing cost of a motherboard, including the additionnal cost caused by deffective units, is more than 1% of the total sale price.
On the other side, if you are a company using that software, and one of your employee just lost 2h of work (40$, assuming employee is paid 20$ per hours) because of a computer bug, that usually represent more than 1% of the price you paid for that product.
Are people willing to pay 1% more to get 100% better products ? I think so.
Why isn't that practice implemented in the industry ? Well it's on his way, with concurrent engineering making his way and with the obligation to get a PDP (product developpement product) (which we hope will contain extensive tests) in order to get iso 9001:2000 certified, I hope soon I will be able get higher quality softwares.