A recognized Code of Ethics provides broad support for a true profession of software engineering. It establishes minimum performance expectations. It gives employers and clients confidence about the professional standards and character of engineers who adhere to the Code.
The Code provides a way for companies to show their support for professional software engineering. When a company commits to the Code, it commits to providing an environment in which professional software engineers can make ethical conduct a priority without jeopardizing their advancement within that company. This is beneficial both to the company and to the software engineers it employs. The company attracts software engineers with high professional standards, and its engineers find professional fulfillment in an environment that appreciates their high standards.
Some of the strongest benefits of the Code arise from the guidance it provides for software engineers’ ethical and professional conduct, guidance that has been sorely lacking. Consider the following cases:
- Death-march projects. Without a code of ethics, software engineers who believe a project’s schedule is unachievable might debate whether to report that to their client or manager. With the Code, if software engineers think a project is likely to fail, they should collect evidence and document their concerns. The Code says they have a professional duty to report their concerns promptly to their employer or client.
- Low-ball bidding. The practice of submitting unrealistically low bids to clients is common in the software industry. Software developers might not like the practice, but many feel uncomfortable defying their bosses by refusing to support a low-ball bid. The Code states that software engineers should ensure that estimates are realistic and should not endorse documents unless they agree with them. It also calls upon software engineers to make software engineering a respected profession, a goal that is undermined by participating in low-ball bidding. The ethical software engineer should refuse to endorse low-ball bids.
- Code-and-fix development. Uninformed clients and managers sometimes insist that software developers engage in code-and-fix development. Software developers know that code-and-fix development is ineffective, but, after repeated battles with clients and managers, many finally sigh, “I’ll let this company get the results it deserves.” Use of code-and-fix development, however, is inconsistent with a software engineer’s ethical duty to produce high-quality products for acceptable costs and within reasonable schedules. Continued use of code-and-fix development also undermines the advancement of software engineering as a profession, and ethical software engineers should refuse to use code-and-fix development.
- Knowledge stagnation. Keeping up to date in software engineering can be time-consuming, and many software developers don’t even try. One publisher reported that the average software developer reads less than one professional book each year and subscribes to no professional magazines. This might not seem like an ethical issue, but it is certainly a professional practice issue. A person cannot perform at a professional level without keeping current in the knowledge of the profession. A person who doesn’t want to engage in ongoing self-education can continue to perform software work at some level, but according to the Code of Ethics and Professional Practice, a person cannot be a professional software engineer without participating in lifelong learning.
Without a code of ethics, software engineers must rely solely on their individual judgments to resolve ethical dilemmas. Engineers who act consistently with the Code will know that the consensus of engineers is behind them; they don’t have to take their ethical stands in isolation.
Some situations will be less clear-cut than the examples listed above. The interests of a client may come into conflict with the public interest. Or the interests of an employer might conflict with the interests of a software engineering colleague. The Code cannot foresee every possible ethical dilemma, and the Code calls for software engineers to use their best ethical judgment to adhere to the spirit of the Code, considering the Code as a whole.