THE PROFESSIONAL CODE OF ETHICS OF THE INTERNATIONAL PROGRAMMERS GUILD GENERAL In this document "Guild" represents "International Programmers Guild". 1. A professional programmer owes certain duties to the Guild, to the public, to an employer, to other members of the profession, and to themselves and shall act at all times with: (a) fairness and loyalty towards the Guild, associates, employers, employees, and clients. (b) fidelity to public needs. (c) devotion to high ideals of personal honour and professional integrity. DUTIES OF A PROFESSIONAL PROGRAMMER TO THE GUILD 2. A Professional programmer shall: (a) acknowledge the Guild as the self governing body that represents the profession of programming world-wide. (b) adhere to the constitution, bylaws and regulations of the Guild unless they conflict with the legal statutes of the nation in which the programmer applies his/her profession. (c) accept programming as a true profession and accept the Guild's mandate to inform and promote programming as a profession to all directly or indirectly involved. (d) adhere to the Code of Ethics of the Guild as declared herein. (e) accept the Guild as an authority empowered to provide evaluation and certification of programmers. (f) adhere to the methods and procedures of professional evaluation of the Guild. (g) recognize the Guild, it's meetings and electronic communications as a source: - of fellowship with other programmers - of sharing professional data and techniques - both to seek gainful employment of his/her services and to obtain the services of other programmers. (h) inform other programmers of the existence, nature, and mandates of the Guild and of the need and benefits of being a Fellow of the Guild, and present for membership any programmers expressing 2 interest. (i) assist and encourage others training to become professional programmers. (j) assist and encourage other programmers who are relatively new to the profession and who are working toward becoming established. (k) inform the Guild Master or governing body of any actions within the body of the Guild that have created or could create a serious contravention of professional integrity or cause harm to the Guild or its members. DUTIES CONCERNING THE INTEGRITY OF PROGRAMS AND CODE OF A PROGRAMMER 3. With regards to all programs and programming code a programmer creates, markets, installs, maintains or is otherwise involved with, he/she shall: (a) never create, implement or support any code that is knowingly malicious, harmful, detrimental or directly contrary to the effect and actions that the programmer's services are being called upon to effect. (b) in particular, shall never create, implement or support any programs or sections of code that are of a parasitic, self replicating nature, of which computer viruses or Trojan horses are vivid and destructive examples. (c) shall not knowingly create code in such a manner as to make it virtually impossible to understand and maintain in situations in which the client or employer is allowed to retain source code. In addition, documentation shall not knowingly be written in a deliberately confusing or erroneous manner that is contrary to the actual code for which it is written. (d) with regards to Guildware, code and libraries shared within the Guild: - ensure that all code in the Guildware libraries and source code are not divulged outside of the Guild membership except with the explicit written permission of the author. - acknowledge code derived from the ranks of the Guild in all work done by the programmer. (e) avoid and refuse to use code that was: - created by another programmer and not released by the original author for public use - released with the stipulation that remuneration to the original author must be paid and such due remuneration has not been paid. (f) not use code or programming techniques that are knowingly obsolete unless the party requesting such work is first informed and still requests such work to be done. If so, no malicious intent must be implied or enacted. (g) not knowingly alter or corrupt data with malicious intent. 3 DUTIES OF A PROFESSIONAL PROGRAMMER TO THE PUBLIC 4. A Professional programmer shall: (a) abide by the laws and statutes of the country in which the programmer's services are rendered. If there is a conflict between the statutes and Code of Ethics, the programmer shall abide by the laws of the country and report such conflicts to the Guild Master. The Guild Master shall inform the Council in Geneva of the conflict or conflicts. (b) have high regard for his/her duty to public welfare. (c) endeavour at all time to enhance the public regard for his/her profession by extending the public knowledge thereof and discouraging untrue, unfair or exaggerated statements with respect to professional programming. (d) not give opinions or make statements on professional programming projects that are inspired or paid for by private interests unless he/she clearly discloses on whose behalf he is giving the opinions or making the statements. (e) not express publicly, or while he/she is serving as a witness before a court, commission or other tribunal, opinions on professional programming matters that are not founded on adequate knowledge and honest conviction and integrity. (f) make effective provisions in creating or maintaining programs to ensure health and safety of life and avoid financial loss. (g) act to correct or report any situation which could cause losses, whether humanly injurious or financially damaging. (h) make effective provisions and strive to meet lawful standards, rules, or regulations in connection with any work being undertaken by him/her or under his/her responsibility. (i) give final approval only on code, plans, specifications and reports actually made by him/her or under his/her personal supervision and direction. DUTIES OF A PROFESSIONAL PROGRAMMER TO AN EMPLOYER 5. A professional programmer shall: (a) act in professional programming matters for each employer as a faithful agent or trustee. (b) regard as confidential any information obtained by him/her as to the business affairs, technical methods or processes of an employer unless released by the employer in writing or with explicit verbal consent. (c) avoid or disclose any conflict of interest which might influence his/her actions or judgement. (d) present clearly to his/her employers the consequences to be expected from any deviations proposed in the work if his/her professional 4 planning and/or analytical judgement is overruled by non-technical authority in cases where he/she is responsible for the technical adequacy of professional programming. (e) have no financial interest, direct or indirect, in any materials, supplies, equipment, hardware or commercial software used by his/her employer or in any persons or firms receiving contracts from his/her employer unless he informs his/her employer in advance of the nature of the interest. (f) not tender on competitive work upon which he/she may be acting as a professional programmer unless he/she first advises his/her employer. (g) not accept compensation, financial or otherwise, for a particular service, from more than one person except with the full knowledge of all interested parties. DUTIES OF A PROFESSIONAL PROGRAMMER IN INDEPENDENT PRACTICE TO A CLIENT 6. A professional programmer in private practice, in addition to all other sections, shall: (a) disclose immediately any interest, direct or indirect, which might in any way be construed as prejudicial to his/her professional judgement in rendering service to his client. (b) if said programmer is contracting in his/her own name to perform professional programming for other than his/her employer, provide the client with a written statement of the nature of his status as an employee and the attendant limitations on his services to the client. In addition,the programmer shall satisfy himself/herself that such work will not conflict with the programmer's duty to his/her employer. (c) carry out work in accordance with applicable statutes, regulations, standards, codes, and by-laws. (d) co-operate as necessary in working with such other professionals as may be engaged in the project. DUTIES OF A PROFESSIONAL PROGRAMMER TO OTHER PROFESSIONAL PROGRAMMERS 7. A professional programmer shall: (a) conduct himself towards other professional programmers with courtesy and good faith and without malicious intent. (b) not accept any engagement to review the work of another professional programmer for the same employer except: - with the knowledge of that programmer, or - except where the connection of that programmer with the work has been terminated or - with special knowledge and dispensation obtained by a Guild Master in situations where serious breach of safety, health, financial loss or integrity is suspected from the prior actions 5 of a programmer. (c) not maliciously injure the reputation or business of another professional programmer. (d) not attempt to gain an advantage over other members of his profession by paying or accepting a commission in securing work relating to professional programming. (e) not advertise or represent his/her services in a misleading manner or in a manner injurious to the dignity and integrity of the profession of programming. The professional programmer shall seek to use the media of advertising with a level of integrity that will permit establishing a well merited reputation for personal capability. (f) give proper credit for programming work done by another person. (g) uphold the principle of adequate compensation for programming work. (h) promote opportunity for professional development and advancement of his/her associates and subordinates and provide opportunities for this to happen where and when it is reasonable. (i) assist in extending the effectiveness of the profession through the interchange of programming information and experience except where sharing of information or data would contravene confidentiality. (j) not copy programs (source code, object code or documentation) unless it is clear that the author and owners to the rights of the software (including corporate owners if applicable) would not object to this copying and all licensing requirements are met. (k) abide by all licensing requirements accompanying the software that he/she shall use. DUTIES OF A PROFESSIONAL PROGRAMMER TO HIMSELF/HERSELF 8. A professional programmer shall: (a) maintain the honour and integrity of his/her profession. A professional programmer shall report without fear of reprisal, unprofessional or dishonest conduct by any other members of the profession to the Guild and other proper tribunals. (b) undertake only such work as he/she is competent to perform by virtue of his/her training and experience except where the programmer has explained his/her current knowledge with understanding that the needed knowledge to be competent for the work to be done will be acquired with on-job training and research. (c) where advisable, retain and co-operate with other professional programmers or specialists. (d) endeavour to constantly keep updated on the most recent technology and methods in programming and the hardware on which it must run. 6 Revised: June 19th, 1991 REVISION OF THE CODE OF ETHICS The Code of Ethics of the International Programmers Guild may be reviewed for revision annually. - Fellows, Masters and Guild Masters of the Guild in good standing may suggest changes in additions to the Code of Ethics. - They shall expect no obligation or duty for the acceptance of these suggestions into the Code of Ethics. - All suggested changes shall be well documented, showing why the changes are considered by the member as beneficial or necessary. - All suggested changes must be provided in writing to the Guild Master who shall review them, then forward them to the Council within one month of the time that the Council is to meet to deliberate changes. All revisions, additions, or deletions must be approved by the Council at the International Headquarters in Geneva Switzerland after careful deliberation of these changes. Once accepted by the Council, the old Code of Ethics shall immediately cease to be of effect and the new Code of Ethics shall be in force and used. In those countries where special restrictions to the Code of Ethics may be needed due to the statutes, laws, regulations and political climate of the country, the Guild Master or Guild Masters of that country may apply to the Council for special revisions to the Code of Ethics to accommodate the legal existence of the Programmers Guild in that country.