When I was doing my engineering course in Computers and IT; a professor jokingly mentioned "Software is the only product that can be shipped with flaws and bugs". It did seem a joke then but that is the fact. We take months to build a software; lot of energy goes into planning, designing, coding, testing and finally releasing it to the customers. And then bang on! few months after being deployed at a customer site; the customer raises a red flag. Something broke; its not behaving the way its expected to behave and all hell breaks loose.
The organization's reputation is at stake; so much so that if the damage is worse; human resources working on it may be fired. Yet, we still have the freedom to ship the product with flaws and limitations. Most of us know the style and aggressive business progess made by MS under the leadership of Bill Gates. The following joke was doing the rounds few years ago. It goes like this -
Bill Gates reaches the pearly gates guarded by Angel Gabriel. The angel proposes him to choose between heaven and hell. When Mr.Gates inquires why this privilege is being offered to him; the angel replies "You have been a good human being with your philanthropic activities and helping the poor and needy the world over. So pick your choice". Bill thinks for few minutes and asks the angel if he can take a look at both the places. The Angel takes him to hell first. The hell surely looks inviting - people partying and having fun, liquor flowing and everyone dancing and making merry. He then visits heaven where people seem to be working hard and leading a measly life. Bill decides to choose hell. He lets know about his decision. The angel asks him if he wants to reconsider and Bill is sure that he wants to stay in hell. The decision made; the gates of hell open and Bill gets registered at entry. As he proceeds the scene changes. He sees people being boiled in hot oil, screaming and yelling with pain. He is shocked and turns to angel Gabriel and asks why the hell is hell different than what was shown to him. To which the angel coolly replies -
"What you saw then was a simulation software that we bought from Microsoft"
One main parameter to discuss ethics in software development/IT has been defects/bugs in software product. A product is a wholesome, complete entity aiding a need. But if the software has bugs; how can it be designated as a product? Is the presence of bugs UNETHICAL? Application of engineering practices and philosophy and use of software to build mission-critical and human critical systems where the failure of such systems can mean huge losses to life and property does call for ethics.
Numerous organizations have defined code of conduct for writing software, quality check and for doing business keeping the above in mind. These ethical codes are similar to any other - adhere to client/public interest and conduct business with integrity. Ethics in the field of software is too broad and is not fully defined as the field itself is young. There are lot of areas to define ethical process - software piracy, information stealing, information manipulation, software development, intellectual property.........
Information is not a physical object; so its difficult to apply the same rules that makes sense for physical property. Talking about developing a software; its the 'design' that is utmost important. The 'manufacturing' of the software to a product is a mere automated process. Once the product is ready; it has to be marketed and sold. Let me talk about two groups of people involved here and the associated process/ethics.
1. Designers, engineers, developers, analysts, testers
These group of people design the software, build it, develop it, test it and integrate it to a product. What are the ethical issues here to be taken care of? One most important issue that we often encounter here is the Intellectual Property. There are lot of famous IP infringement cases fought between famous and powerful software companies. In fact, these companies have a dedicated set of attorneys specifically for this purpose. Can I use someone else's ideas while developing a new idea? Can I reuse a piece of software written by someone else? Are they taking client's/employer's/public's interest in mind when designing the software? Who do you blame if a software fails? The designers who did not see the flaw? The developers who forgot to plug in a "assertion code" to prevent the breakdown? The testers who did not catch the bug? Or any computer engineering student's favorite line - "It worked on my computer" take you off the hook?
Or one level higher. Is it the complexity of the OS? the libraries? faulty application? The hardware its sitting on? Is the program doing what its not supposed to do? Is it NOT doing something its supposed to do? These different layers puts the blame in different places.
But software companies do not have liability and they have no pressure. They can blatantly lie about the liability - "High quality, faster performance". But how do you define high quality? Or how faster is faster performance? Try any MS product and you know what I am saying.
2. Marketing and selling software
The engineers job is done once the software is built and tested and packaged. Its now the technical marketing team that has to sell the product. Sell a product by talking about its features and not about comparing it with other products and not by highlighting the flaws in the competitor's product. Its pretty much the same for any product. Don't trick or force your customer. Be open about the credibility and the quality. But its not done this way. Numbers, analysis, prognosis and comparisons - with your competitor. Its always "What different we offer than our competitors? Is the feature provided by them really good for you?" More often than not; the marketing team spends time and energy is learning what the competitor's product does not offer and its limitations than learning about their own product and its features.
These are only few points touched upon. Ethics are defined for usage of product by end-users, against information sharing, information copying, information manipulation, the computer that is used as an agent and such. Computer and information ethics is a broad area and is not defined well yet; and is still in infancy stage in our country.