Financial Software Developer
Code of Ethics and Professional Practice
Computer software has a central and growing role in finance, banking, and accounting; whether it be for a large exchange, or a cottage industry business start-up. Financial software developers contribute, by direct participation or by teaching, to the analysis, specification, design, development, certification, maintenance and testing of financial software systems. Because of their roles in developing these software systems, financial software developers have significant opportunities to do good or cause harm, to enable others to do good or cause harm, or to influence others to do good or cause harm. To ensure, as much as possible, that their efforts will be used for the betterment of society, financial software developers must commit themselves to making software development a beneficial and respected profession. In accordance with that commitment, financial software developers shall adhere to our Code of Ethics and Professional Practice, as outlined here.
This Code contains eight Principles related to the behavior of and decisions made by professional financial software developers, including practitioners, educators, trainers, managers, supervisors and policy makers; as well as trainees and students of the profession. The Principles identify the ethically responsible relationships in which individuals, groups, and organizations participate and the primary obligations within these relationships. The Clauses of each Principle are illustrations of some of the obligations included in these relationships. These obligations are founded in the software developer’s goodwill, in special care owed to people affected by the work of financial software developers, and the unique elements of the practice of financial software design and development. The Code prescribes these as obligations of anyone claiming to be or aspiring to be a financial software developer.
It is not intended that the individual parts of this Code be used in isolation to justify errors of omission or commission. The list of Principles and Clauses is not exhaustive. Where practical, we have sometimes included brief examples to help prevent self-serving misinterpretation of this Code. The Clauses should not be read as separating the acceptable from the unacceptable in professional conduct in all practical situations; nor is it a simple ethical algorithm that generates ethical decisions. In some situations standards may be in tension with each other, or with standards from other sources. These situations require the financial software developer to use ethical judgment to act in a manner that is most consistent with the spirit of the Code of Ethics and Professional Practice, given the circumstances.
Ethical tensions can best be addressed by thoughtful consideration of fundamental principles, rather than blind reliance on detailed regulations. These Principles should influence financial software developers to consider broadly who is affected by their work; to examine if they and their colleagues are treating other human beings with due respect; to consider how the public, if reasonably well informed, would view their decisions; to analyze how the least empowered will be affected by their decisions; and to consider whether their acts would be judged worthy of the ideal professional working as a financial software developer. In all these judgments concern for the health, safety and welfare of the public is primary; that is, the "Public Interest" is central to this Code, as embodied by the ethical principle: the greatest benefit for the greatest number in society, as considered to be beneficial by its members.
The dynamic and demanding context of financial software development requires an ethical code of conduct that is adaptable and relevant to new situations as they occur. However, even in this generality, the Code provides support for financial software developers and managers of financial software developers who need to take positive action in a specific case by documenting the ethical stance of the profession. The Code provides an ethical foundation to which individuals within teams and the team as a whole can appeal. The Code also helps to define those actions that are ethically improper to request of a financial software developer, or teams of financial software developers.
The Code is not simply for adjudicating the nature of questionable acts; it also has an important educational function. As this Code expresses the consensus of the profession on ethical issues, it is a means to educate both the public and aspiring professionals about the ethical obligations of all software developers.
For the purposes of this agreement, use of the terms “client” or “employer”, especially with regards to prohibitions of conflicts of interest, also covers work relationships of a less formal and less than transparent nature for which there is still compensation through other means such as: deferred appointments to lucrative positions, lavish gifts, granting of special privileges, etc. (also known as: “revolving door appointments”, “golden parachutes”, or “soft-dollar favors”).
Financial software developers shall act consistently with the public interest, serving the greatest public benefit for the greatest number, as considered to be beneficial by its members. In particular, financial software developers shall, as appropriate:
1.00. Whenever and wherever possible, educate the public as to the significant advantages of “open” standards and software licensing agreements; specifically, how open standards improve the transparency and accountability of financial services, and how open standards facilitate innovation in the software sector, and thus provide further transitive benefits and stimulus to the economic well-being of society.
1.01. Accept full responsibility for their own work.
1.02. Moderate the interests of the financial software developer, the employer or client, and the users with the public interest.
1.03. Approve software only if they have a well-founded belief that it is safe, meets specifications, passes appropriate tests, and does not diminish quality of life, diminish privacy or harm the environment. The ultimate effect of the work should benefit the larger public interest.
1.04. Disclose to appropriate persons or authorities any actual or potential danger to the user, the public, or the environment, that they reasonably believe to be associated with software or related documents if requests of and efforts with the client or employer to prevent that from happening in the first place have failed.
1.05. Cooperate in efforts to address matters of grave public concern caused by software, its installation, maintenance, support or documentation.
1.06. Be fair and avoid deception in all statements, particularly public ones, concerning software or related documents, methods and tools.
1.07. Consider issues of physical disabilities with regards to accessible design, allocation of resources, economic disadvantage and other factors that can diminish access to the benefits of software.
1.08. Be encouraged to volunteer professional skills to good causes, especially the teaching of those who would not normally have ready access to computer training (such as those economically disadvantaged or physically disabled); and contribute to public education concerning the discipline.
Financial software developers shall act in a courteous and respectful manner that is in the best interests of their client or employer, consistent with the public interest. In particular, financial software developers shall, as appropriate:
2.00. Whenever and wherever possible, educate clients and employers as to the significant advantages of “open” standards and software licensing agreements; specifically with regards to savings in development costs, and for accommodating reporting requirements as frequently mandated by law.
2.01. Provide service in their areas of competence, being honest and forthright about any limitations of their experience and education.
2.02. Not knowingly use software that is obtained or retained either illegally or unethically.
2.03. Use the property of a client or employer only in ways properly authorized, and with the client's or employer's knowledge and consent.
2.04. Ensure that any document upon which they rely has been approved, when required, by someone authorized to approve it.
2.05. Keep private any confidential information gained in their professional work, where such confidentiality is consistent with the public interest and consistent with the law.
2.06. Identify, document, collect evidence and report to the client or the employer promptly if, in their opinion, a project is likely to fail, to prove too expensive, to violate software licensing or copyright agreements, or otherwise to be problematic.
2.07. Identify, document, and report significant issues of social concern, of which they are aware, in software or related documents, to the employer or the client.
2.08. Accept no work detrimental to the work they already perform for their primary employer or client(s); or is a clear conflict of interest between their employer or among their client(s).
2.09. Promote no interest adverse to their employer or client, unless a higher ethical concern is being compromised; in that case, inform the employer, client, or another appropriate authority of the ethical concern.
Financial software developers shall ensure that their products and related modifications meet the highest professional standards possible. In particular, financial software developers shall, as appropriate:
3.01. Strive for high quality; whenever practical, strive for acceptable cost and a reasonable schedule, ensuring that significant tradeoffs are clear to and accepted by the employer or client, and are available for consideration by the end-user and the public.
3.02. Ensure proper and achievable goals and objectives for any project on that they work or propose.
3.03. Identify, define and address ethical, economic, cultural, legal and environmental issues related to work projects. Whenever practical, technologies and facilities that leverage low power consumption and/or mitigate the use of fossil fuels should always be explored and brought to the attention of the client or employer. The purchase of hardware whose manufacture and assembly does not engage in inhumane work conditions should also be promoted and preferred.
3.04. Ensure that they are qualified for any project on which they work or propose to work by an appropriate combination of education and training, and experience.
3.05. Ensure an appropriate method is used for any project on which they work or propose to work.
3.06. Work to follow professional standards, when available, that are most appropriate for the task at hand; departing from these only when ethically or technically justified.
3.07. Strive to fully understand the specifications for software on which they work, and advise an employer or client whenever they are deficient or faulty.
3.08. Ensure that specifications for software on which they work have been well documented, satisfy the users’ requirements and have to the best of their knowledge the appropriate approvals.
3.09. Ensure realistic quantitative estimates of cost, scheduling, personnel, quality and outcomes on any project on which they work or propose to work and provide an uncertainty assessment of these estimates.
3.10. Ensure adequate debugging of software and related documents on which they work; ensure adequate testing and review of software and related documents on which they work provided the employer or client has furnished budget to do so; and fully disclosing to the client or employer when allocated budget is insufficient to accomplish this, and failure to ensure such quality controls is ill advised.
3.11. Always strive to employ a “self-documenting” style of software code, using descriptive variable and procedure names, and whenever practical any indentation and formatting that makes such code easier to read. All attempts at code obfuscation are to be shunned, unless prior software licensing commitments preclude it. Ensure adequate documentation, including significant problems discovered and solutions adopted, for any project on which they work provided the employer or client has furnished budget to do so; fully disclosing to the client or employer when allocated budget is insufficient to accomplish this, and failure to ensure such documentation is ill advised.
3.12. Work to develop software and related documents that respect the privacy of those who will be affected by that software.
3.12.a. Only participate in, or provide assistance for, the monitoring and/or interception of communications of a client, an employer, or the Open Source Financial Developers Association (OSFDA) provided the client, employer, or duly constituted board of the OSFDA presents documented evidence, either substantive or circumstantial in nature, that some manner of malfeasance, illegal activity, or misrepresentation involving the client, employer, or OSFDA has taken place; and provided the parties subject to that monitoring or interception of their communications have been formally notified of that review of their communications by the client, employer, or board of the OSFDA, respectively.
3.12.b. Any member of the OSFDA having specific knowledge of monitoring and/or interception of communications of the OSFDA by third parties shall bring it to the attention of all other members of the OSFDA.
3.13. Be careful to use only accurate data derived by ethical and lawful means, and use it only in ways properly authorized.
3.14. Maintain the integrity of data, being sensitive to outdated or flawed occurrences; and advise the client or employer whenever data integrity has been compromised, be it willfully by a third party with malicious intent, or accidentally by anyone.
3.15. Treat all forms of software maintenance with the same professionalism as new development.
Financial software developers shall maintain integrity and independence in their professional judgment. In particular, financial software developers shall, as appropriate:
4.01. Temper all technical judgments by the need to support and maintain standards and practices that are consistent with principles of fairness and equality.
4.02. Only endorse documents either prepared under their supervision or within their areas of competence and with which they are in agreement.
4.03. Maintain professional objectivity with respect to any software or related documents they are asked to evaluate.
4.04. Not engage in deceptive financial practices such as bribery, double billing, or other improper financial practices.
4.05. Disclose to all concerned parties those conflicts of interest that cannot reasonably be avoided or escaped.
4.06. Refuse to participate, as members or advisors, in a private, governmental or professional body concerned with software related issues, in which they, their employers or their clients have undisclosed potential conflicts of interest.
Financial software development managers and leaders shall subscribe to and promote an ethical approach to the management of software development and maintenance. In particular, those managing or leading financial software developers shall, as appropriate:
5.01. Ensure best management practices for any project on which they work, including effective procedures for promotion of quality and reduction of risk.
5.02. Ensure that software developers are informed of standards before being held to them.
5.03. Ensure that software developers know the client's or employer's policies and procedures for protecting passwords, files and information that is confidential to the client or employer, or confidential to others.
5.04. Assign work only after taking into account appropriate contributions of education and experience tempered with a desire to further that education and experience.
5.05. Ensure realistic quantitative estimates of cost, scheduling, personnel, quality and outcomes on any project on which they work or propose to work, and provide an uncertainty assessment of these estimates.
5.06. Attract potential software developers only by full and accurate description of the conditions of employment or work-for-hire.
5.07. Offer fair and just remuneration.
5.08. Not unjustly prevent someone from taking a position for which that person is suitably qualified. Provide honest references attesting to an employee or subcontractor's prior good efforts in the position they held if budgetary constraints or demands for hours worked imposed by upper management can no longer be met by an employee or subcontractor.
5.09. Ensure that there is a fair agreement concerning ownership of any software, processes, research, writing, or other intellectual property to which a software developer has contributed.
5.10. Provide for due process in hearing charges of violation of a client's or employer's policy, or of this Code.
5.11. Not ask a software developer to do anything inconsistent with this Code.
5.12. Not punish anyone for expressing ethical concerns about a project.
Financial software developers shall advance the integrity and reputation of the profession consistent with the public interest. In particular, financial software developers shall, as appropriate:
6.01. Help develop an organizational environment favorable to acting ethically.
6.02. Promote public knowledge of software development.
6.03. Extend financial software development knowledge by appropriate participation in professional organizations, meetings and publications.
6.04. Support, as members of a profession, other financial software developers striving to follow this Code.
6.05. Not promote their own interest at the expense of the profession, client or employer.
6.06. Obey all laws governing their work, unless, in exceptional circumstances, such compliance is inconsistent with the public interest.
6.07. Be accurate in stating the characteristics of software on which they work, avoiding not only false claims but also claims that might reasonably be supposed to be speculative, vacuous, deceptive, misleading, or doubtful.
6.08. Take responsibility for detecting, correcting, and reporting errors in software and associated documents on which they work.
6.09. Ensure that clients, employers, and supervisors know of the financial software developer's commitment to this Code of ethics, and the subsequent ramifications of such commitment.
6.10. Avoid associations with businesses and organizations that are in conflict with this code.
6.11. Recognize that violations of this Code are inconsistent with being a professional software developer.
6.12. Express concerns to the people involved when significant violations of this Code are detected unless this is impossible, counter-productive, or dangerous.
6.13. Report significant violations of this Code to appropriate authorities when it is clear that consultation with people involved in these significant violations is impossible, counter-productive or dangerous.
Financial software developers shall be fair to and supportive of their colleagues. In particular, financial software developers shall, as appropriate:
7.01. Encourage colleagues to adhere to this Code.
7.02. Assist colleagues in professional software development.
7.03. Credit fully the work of others and refrain from taking undue credit.
7.04. Review the work of others, when obligated to do so, in an objective, candid, and properly-documented way.
7.05. Give a fair hearing to the opinions, concerns, or complaints of a colleague.
7.06. Assist colleagues in being fully aware of current standard work practices, including policies and procedures for protecting passwords, files and other confidential information, and security measures in general.
7.07. Not unfairly intervene in the career of any colleague; however, concern for the employer, the client or public interest may compel financial software developers, in good faith, to question the competence of a colleague.
7.08. In situations outside of their own areas of competence, call upon the opinions of other professionals who have competence in that area.
7.09. Shall take care not to misrepresent personal viewpoints as if they were those held by other members of the Open Source Financial Developers Association, when they are not.
7.10. Shall make themselves accessible on a practical basis to other members of the Open Source Financial Developers Association for advice on technical matters; and advise as to best technical practices and techniques for accomplishing projects and solving problems that their colleagues might be faced with.
7.11. Shall not misrepresent to potential or actual clients or employers the ability to allocate the services of other members of the Open Source Financial Developers Association, unless those members have first consented to do so.
Financial software developers shall participate in lifelong learning regarding the practice of their profession and shall promote an ethical approach to the practice of the profession. In particular, financial software developers shall continually endeavor to:
8.01. Further their knowledge of developments in the analysis, specification, design, development, maintenance and testing of software and related documents, together with the management of the development process.
8.01.a. Try to obtain current industry recognized technical certification in their respective areas of expertise, whenever feasible and practical to do so (examples: Red Hat Certified Engineer for Linux-based systems deployment; SANS Security Expert for securing information assets and secure coding practices).
8.02. Improve their ability to create safe, reliable, and useful quality software at reasonable cost and within a reasonable time.
8.03. Improve their ability to produce accurate, informative, and well-written documentation.
8.04. Improve their understanding of the software and related documents on which they work, and of the environment in which they will be used.
8.05. Improve their knowledge of relevant standards and the law governing the software and related documents on which they work.
8.06. Improve their knowledge of this Code, its interpretation, and its application to their work.
8.07. Not give unfair treatment to anyone because of any irrelevant prejudices.
8.08. Not influence others to undertake any action that involves a breach of this Code.
8.09. Recognize that personal violations of this Code are inconsistent with being a professional financial software developer.
-Open Source Financial Developers Association
April 12, 2014