This month I’m posting every day, picking the top voted reader question and answering it. With 50 votes, today’s winner, submitted by Peter Colligan, was:
Software Ethics – When is it acceptable to ship a low quality product?
I develop enterprise software. Sometimes the decision is made to ship when quality is low. I have as a professional software engineer no ethical recourse to such actions. Sometimes the impact is not death but extreme inefficiencies that cause overspending and unstable conditions for customers… Other professions such as medicine, drug research, etc. have professional guilds that extend beyond employment boundaries. Is this really a problem?
The short answer is there are no short answers on ethical questions.
If you sell something as “low quality” and the person buying it wants a cheap low quality product, what’s the problem? If both parties feel they got what they asked for, there is no ethical challenge regardless of quality (for addictive drugs or products producing toxic waste there may be communal ethics, but that’s another discussion). The rub then is what a product promises to do vs. what it actually does which leads to marketing ethics (e.g. are infomercials ethical? What about alpha or beta-software?)
Deciding when something is finished is highly subjective. The Brooklyn bridge was designed by Roebling to have cables 6x stronger than necessary, a very high engineering standard. This level of “quality” is rarely used in modern engineering work. Is this lower standard ethical? Or was Roebling unethical in wasting so much in city resources to build a “wasteful” bridge? Subjective indeed.
Quality, as the book Zen and the Art of Motorcycle Maintenance painfully explores, is hard to define. Creators and consumers often have widely varying standards for what good and bad mean (see Why Software Sucks). McDonald’s, the fast food restaurant, has nearly 2 million employees world wide. Is it unethical to work there because the quality of food is so low? Even if the quality is low, is it ok to sell low quality things if people want them anyway? When is it ethical to publish low quality writing? Could you win a law suit against a musician because you thought the song you bought was poorly sung? Is it wrong to post grammatically incorrect status updates on Facebook every day about your favorite socks? Objectivity in ethics is hard to find.
The simplest place to start is to spend as much time as possible with people who share your ethics. Does anyone else meet your standards? Can you find people who want to pay a premium for your higher quality work? If the answers are yes then your problem is solved. if the answers are no, then your standards might be too high.
The standards for many kinds of products are often set by the market. Progress often happens by companies making superior products rather than a committee decreeing a new higher standard. Sometimes there is a role for government to solve certain market limitations, e.g. automobile seat belts or fuel economy regulation, but that’s more of an exception than the rule.
The birth of medical malpractice and professional negligence as legal concepts are also worthy of study. The ISO had its first standard in 1951 and that standard was for… getting engineers to agree on how to measure things. Certainly an important development, but not a triumph of product quality. Professional associations are slow and even when they create good standards they mostly impact the reduction of the worst malpractices. The ACM does have a software engineering code of ethics but until doing research for this post I’d never seen or heard of it before and I bet most makers and consumers of software haven’t either.
It’s most germaine element for our interests is:
3.01. Strive for high quality, acceptable cost and a reasonable schedule, ensuring significant tradeoffs are clear to and accepted by the employer and the client, and are available for consideration by the user and the public.
The statement ensuring significant tradeoffs are clear is great advice for anyone making anything. In your case the decision to ship a lower quality product might be the best choice to balance out all of the clients tradeoffs. Software, unlike bridges, is easy to upgrade allowing for quality to be improved over time.
And in this notion of tradeoffs is perhaps the real answer you’re looking for. Improve your skills at selling the positive trade-offs of high quality work. Express how much clients will gain in the long term if they’re willing to invest more in quality work upfront. That’s an important skill that has nothing to do with design or engineering.