Professional programmer etiquette. Professional and ethical requirements. New programs - I. Roshchin. HELP_Z80. V. Davydov. Catalog's Base v1.8

Software Engineering Code of Ethics and Professional Practice

ACM/IEEE-CS Joint Task Force on Software Engineering Ethics and Professional Practices

Short version

Introduction

The short version of the code summarizes the main provisions rather abstractly; The full version provides detailed examples of how these provisions change the way we operate as software engineering professionals. Without basic principles, details become formal and boring; without details, the main provisions sound pompous, but turn into empty sound; together, the main provisions and details form a complete code.

Software engineers should strive to make software analysis, specification, design, implementation, testing, and support a rewarding and respected profession. Consistent with their high responsibility for the welfare, safety and prosperity of society, software engineers must adhere firmly to the following eight Principles:

  • SOCIETY – Software engineers must act strictly in the public interest.
  • CLIENT AND EMPLOYER – Software engineers must act in the best interests of the client and the employer unless they conflict with the public interest.
  • PRODUCT – Software engineers must ensure that the quality of their products and their modifications meets the highest possible professional standards.
  • EVALUATIONS – Software engineers must maintain the integrity and independence of their professional judgments.
  • MANAGEMENT – Software engineering managers and key employees must adhere to and promote ethical approaches to managing software development and support.
  • PROFESSION – Software engineers must advance the prestige and reputation of their profession in the public interest.
  • COLLEAGUES – Software engineers must be fair to their colleagues, helpful and supportive.
  • PERSONAL RESPONSIBILITY – Software engineers must continually learn the skills of their profession and help promote an ethical approach to their work.

Full version

Introduction

Computers play a central and growing role in commerce, industry, government, medicine, education, leisure and society in general. Software engineers are those who contribute, either directly or through training, to the analysis, specification development, design, implementation, certification, support and testing of software systems. Playing an important role in the development of software systems, software engineers have significant power to do good or do evil, enable others to do good or do evil, or influence those who do good or do evil. To ensure, to the extent possible, that their efforts are put to good use, software engineers must continually make software engineering a rewarding and respected profession. To do this, programmers must strictly adhere to the following Code of Professional Ethics.

The Code contains eight Principles that influence the behavior and decision choices of software engineers, including practitioners, educators, managers and senior management, as well as students. The principles define the ethics of relationships between individual engineers, groups and organizations, and the obligations associated with them. Each Principle includes illustrations of some of the obligations imposed by this relationship. These commitments are based on the humanity of the software engineering profession, the special concern for the people affected by the work of software engineers, and the uniqueness of this work. The Code proclaims these obligations to all who consider themselves to be software engineers or intend to become one.

Parts of the Code cannot be used in isolation to justify omissions and misconduct. The list of Principles and Regulations is not exhaustive. The provisions cannot be construed as dividing professional conduct into what is acceptable and what is unacceptable in all actual situations. The Code is not a simple ethical algorithm that generates ethical decisions. In some situations, standards may conflict with each other or with other standards. Such situations require the software engineer to act in accordance with the spirit of the Code of Professional Conduct, depending on the specific circumstances.

One should use the basic principles of ethics thoughtfully, rather than blindly rely on its detailed instructions. These Principles encourage software engineers to recognize who is impacted by the work they do; understand whether they and their colleagues treat others with due respect; consider how society, if properly informed, would react to their decisions; and finally, evaluate whether their professional actions are consistent with the ideals of software engineering. In all these assessments, concern for the welfare, safety and prosperity of society is primary; that is, “Public Interests” are central to this Code.

The dynamic and demanding context of software engineering requires a code that can be adapted to new situations as they arise. However, even in this general form, the Code provides support for software engineers and their managers who need to make appropriate choices in specific situations by documenting professional ethical guidelines. The Code provides an ethical framework that both individual team members and the team as a whole can refer to. The Code helps define actions that are ethically inappropriate to require of software engineers or their teams.

This code is not only intended to evaluate controversial actions; it also has important educational value. Because it expresses a general view of the ethical aspects of the profession, it is a means of communicating to both the public and the profession the ethical responsibilities of all software engineers.

Principles

Principle 1: SOCIETY.

SOCIETY – Software engineers must act strictly in the public interest. In particular, software engineers must:

  • Take full responsibility for your work.
  • Limit the interests of software engineers, employers, clients and users to the benefit of society as a whole.
  • Approve software only if they firmly believe that it is safe, meets specifications, has been properly tested, and does not threaten quality of life, violate privacy, or harm the environment. The result of the work must certainly serve the benefit of society.
  • Bring to the attention of authorized persons and organizations any actual or potential hazard to users, the public or the environment that they believe is associated with the use of the software or accompanying documentation.
  • Participate in work on issues of public concern related to software, its installation, development, support or documentation.
  • Be honest and free of lies in all statements, especially public statements, regarding software or related documentation, techniques and tools.
  • Pay attention to issues related to physical disabilities, resource allocation, economic backwardness, and other factors that may limit access to software use.
  • Be willing to voluntarily use your professional skills for the common good and contribute to the dissemination of knowledge about your profession.

Principle 2: CLIENT AND EMPLOYER

Software engineers must act in accordance with the interests of the client and employer, unless they conflict with the interests of society. In particular, software engineers must:

  • Provide services within the limits of your competence, be honest and do not hide the limitations of your education and experience.
  • Do not use software obtained either through illegal or unethical means.
  • Use client or employer property only in an appropriate manner and with their consent.
  • Make sure that all documents they use that need to be approved are actually approved by the authorized person.
  • Keep confidential any confidential information obtained in the performance of professional duties, unless this contradicts the interests of society and the law.
  • Identify, document, gather facts, and immediately notify the client or employer if, in their opinion, a project is close to failure, is proving to be too expensive, violates intellectual property laws, or may cause other problems
  • Identify, document and report to the employer or client social problems associated with software and related documentation of which they become aware.
  • Do not accept offers of side work that could be detrimental to work performed for the main employer.
  • Do not act against the interests of the employer or client, unless this is contrary to higher ethical considerations; in this case, the employer or other authorized person should be informed of these considerations.

Principle 3: PRODUCT

Software engineers must ensure that the quality of their products and modifications to them meets the highest possible professional standards. In particular, software engineers must:

  • Strive for high quality, reasonable cost, and reasonable turnaround time in projects by communicating significant alternatives to the employer and client, obtaining their acceptance of the choice, and making them known to users and the public.
  • Ensure that goals and focus are appropriate and achievable for all projects they work on or intend to work on.
  • Identify, define, and take action on issues related to the project they are working on that relate to ethics, economics, culture, legality, and the environment.
  • Ensure that their education, training and experience are sufficient for all projects on which they work or intend to work.
  • Ensure that all projects they work on or intend to work on use proper methodologies.
  • Work according to the most appropriate professional standards and deviate from them only when justified for ethical or technical reasons.
  • Strive to fully understand the specifications of the software they are working on.
  • Ensure that the specifications for the software they work on are well documented, meet user requirements, and are properly approved.
  • Ensure that quantitative estimates of cost, schedule, effort, quality and costs for all projects they work on or intend to work on are realistic, as well as the uncertainty of these estimates.
  • Ensure the adequacy of testing, debugging and revisions of the software and associated documentation they work on.
  • Ensure adequate documentation, including identified problems and their approved solutions, for all projects they work on.
  • Develop software and related documentation while respecting the privacy of those whose interests are affected by the software.
  • Use only reliable data obtained through morally and legally acceptable means, and use it only in an appropriate manner.
  • Maintain the integrity of data subject to obsolescence and loss of relevance.
  • Treat all types of software support with the same professionalism as new developments.

Principle 4: ASSESSMENTS

Software engineers must maintain the integrity and independence of their professional judgment. In particular, software engineers must:

  • To direct all technical judgment in the service of human values.
  • Recommend only those documents that were either developed under their control or those that are within their area of ​​expertise and with the contents of which they agree.
  • Maintain professional objectivity with respect to the software or supporting documentation they are asked to evaluate.
  • Do not take part in financial fraud, such as bribery, double payment and other illegal financial activities.
  • Disclose to all interested parties conflicts of interest that cannot be avoided by reasonable means.
  • Refuse to participate as a team member or advisor in private, governmental, or professional software-related activities that could potentially harm their own interests, those of their employers, or their clients.

Principle 5: MANAGEMENT

Software engineering managers and key employees must adhere to and promote ethical approaches to managing software development and support. In particular, managers and leading specialists in the field of software engineering should:

  • Ensure quality management of all projects they work on, including effective quality improvement and risk reduction procedures.
  • Ensure that software engineers are trained in standards before they intend to follow them.
  • Ensure that software engineers are aware of the employer's policies and procedures regarding the protection of passwords, files, and confidential information relating to the employer or others.
  • Distribute work only after determining the employee’s education and experience, taking into account his desire to improve his education and experience.
  • Ensure that quantitative estimates of cost, schedule, effort, quality and profit for all projects they work on or intend to work on are realistic, as well as the uncertainty of these estimates.
  • Engage software engineers only after they have been provided with a complete and accurate description of the working conditions.
  • Offer fair compensation for work.
  • Do not unreasonably prevent an employee from being appointed to a position for which he or she is suitably qualified.
  • Ensure that there is a fair agreement regarding ownership of any software, technology, research, manuscripts, or other intellectual property to which the software engineer has contributed.
  • Properly report liability for violations of employer policies or this Code.
  • Do not demand anything from the software engineer that contradicts this Code.
  • Do not penalize anyone who raises concerns about ethical issues related to the project.

Principle 6: PROFESSION

Software engineers must raise the profile and reputation of their profession in the public interest. In particular, software engineers must:

  • Contribute to the creation of an atmosphere within the organization that is conducive to ethical behavior.
  • Disseminate knowledge in the field of software engineering.
  • Develop knowledge of software engineering through participation in professional organizations and meetings, and through publications.
  • Support other colleagues in their efforts to follow this Code.
  • Do not put your own interests above professional interests, the interests of the client or employer.
  • Obey all laws governing their work, except in special situations where doing so would be contrary to the public interest.
  • Be accurate in their assessments of the software they work on, avoiding not only promises that are patently false, but also promises that could reasonably be perceived as speculative, unsubstantiated, misleading, confusing or questionable.
  • Assume responsibility for detecting, correcting and reporting errors in the software and associated documentation on which he/she works.
  • Inform clients, employers, and management that software engineers follow this Code of Ethics and the consequences of doing so.
  • Avoid organizations that are in conflict with this Code.
  • Recognize that violations of this Code are incompatible with being a professional software engineer.
  • Express your concerns in the event of a significant violation of this Code to the people involved, except in cases where this is impossible, leads to serious conflicts or is dangerous.
  • Report cases of significant violation of this Code to the appropriate authorities if it is obvious that dialogue with the people involved is impossible, leads to serious conflicts or is dangerous.

Principle 7: COLLEAGUES

Software engineers must be fair to their colleagues, helpful and supportive. In particular, software engineers must:

  • Encourage colleagues to adhere to this Code.
  • Help colleagues with professional growth.
  • Respect the work of others, but refrain from placing undue reliance on it.
  • Review the work of others objectively, without bias, and document appropriately.
  • Listen to the opinions, concerns or complaints of colleagues.
  • Assist colleagues in understanding current work standards, including policies and procedures for protecting passwords, files and other confidential information, and security measures in general.
  • Do not interfere unnecessarily in the work affairs of colleagues; however, genuine concern for the interests of an employer, client, or society may cause a software engineer to question the competence of a colleague.
  • In situations beyond their own competence, seek the opinions of other professionals competent in the field.

Principle 8: PERSONAL RESPONSIBILITY

Software engineers must continually learn the skills of their profession and promote an ethical approach to their work. In particular, software engineers should continually strive to:

  • Increase your knowledge in the analysis, specification, design, development, support and testing of software and related documentation, as well as development process management.
  • Improve your ability to create secure, reliable and functional quality software at a reasonable cost and in a reasonable time frame.
  • Improve your ability to produce accurate, informative, well-written documentation.
  • Develop knowledge of the software and related documentation they are working on, as well as the environment in which they will be used.
  • Improve knowledge of relevant standards and laws governing the software and related documentation they work on.
  • Improve your knowledge of this Code, its interpretation and use in your work.
  • Avoid treating anyone unfairly because of irrelevant prejudices.
  • Do not incite others to act in violation of this Code.
  • Understand that personal violation of this Code is incompatible with being a professional software engineer.

code of ethics in the field of information technology

Conference on Philosophy. DonNTU, 2007

St. gr. TKS-06m Khailo Andrey, head Dodonov Roman Alexandrovich

The report analyzes existing codes of ethics for information technology professionals.

Computer ethics has not yet emerged as a normative discipline and as a set of rules of human behavior that are inherent in oneself and reinforced socially. Computer ethics is a field of study that straddles and is dependent on new technologies and normative ethics. However, in recent decades there have been intensive attempts to create it.

In the 80s of the twentieth century, American ethicists introduced the term “computer professional,” denoting a person who makes a living working with computers. This meant not only programmers, system analysts, systems engineers, computer equipment sellers, but also users of software and hardware. In the USA, they tried to regulate the relationship between computer professionals and society through the “Code of Professional Conduct” developed by the Association for Computing Machinery (ACM),

In fact, computer professionals not only enter into specific relationships with each other, but also gain power over individuals, social institutions and even over the environment, so the development of codes of professional conduct in this area is of particular relevance.

Currently, there are several codes of professional ethics in the field of information technology. Perhaps the best known are those developed by the ACM and the IEEE, their joint Code of Ethics and Professional Practice for Software Developers. In Russia, in 1996, the National Code of Activities in the field of computer science and telecommunications was adopted.

Code of EthicsACM/IEEE.

The Code contains eight Principles related to the behavior and decisions made by professional programmers, including practitioners, educators, managers and senior executives.

The Code also applies to students and “apprentices” studying this profession.

Preamble.

The short version of the code summarizes the aspirations of the code at a high level of abstraction; The paragraphs included in the full version provide examples showing how these aspirations are reflected in the activities of professional programmers. Without these higher principles, the details of the code will become casuistic and tedious. Without details, aspirations will remain lofty, but empty and declarative. Together they form a complete code.

Professional programmers will strive to make software analysis, specification, design, development, testing and maintenance a rewarding and respected profession. Consistent with their commitment to the prosperity, safety and well-being of society, software engineers will be guided by the following eight Principles:

1. SOCIETY

Software engineers will act in a manner consistent with the public interest.

2. CLIENT AND EMPLOYER

Software engineers will act in the best interests of clients and the employer, consistent with the public interest.

3. PRODUCT

Software engineers will ensure that the products they produce and their modifications meet the highest professional standards.

4. JUDGMENT

Software engineers will strive for integrity and independence in their professional judgment.

5. MANAGEMENT

Software engineering managers and leaders will take an ethical approach to guiding software development and maintenance, and will promote and develop this approach.

6. PROFESSION

Software engineers will enhance the integrity and reputation of their profession in a manner consistent with the public interest.

7. COLLEAGUES

Software engineers will be fair to their colleagues and will support them in every possible way.

8. PERSONALITY

Software engineers will be lifelong learners of the practice of their profession and will promote an ethical approach to the practice of their profession.

Many codes do not reflect the specifics of the profession; they contain too general canons that cover the obligations of any professional: honesty, competence, responsibility, advanced training, etc.

A code of professional conduct can be used as a socialization mechanism. If a code of professional conduct exists, there is some guarantee that all members of the profession will at least be aware of the standards set out in the code.

The most important function of a code of ethics is to articulate the collective wisdom of those within a given profession. A code of ethics should be a collection of what those in the profession with many years of experience have considered to be the most important things to think about and do when working in the field. The Code is an expression of the experience and agreement of the majority of persons in the profession.

Bibliography.

1. Galinskaya I.L., Panchenko A.I. Ethical and legal space of information and computer technologies (Review). Theory and practice of social scientific information. Vol. 17, M: RAS INION, 2001.

2 . Software Engineering Code of Ethics and Professional Practice.

3. A.A.MALYUK, O.Yu. Polyanskaya, XIV All-Russian Scientific Conference, “Code of Ethics in the Field of Information Technology as the Basis for Ensuring Information Security.”

Professional ethics in IT is a rather delicate matter. We do not take oaths, sometimes we can gain access to any information from computers and gadgets that fall into our hands, and an ordinary human client has almost no chance of tracking the leak of any personal data.

Good morning! Today I, Eugene levashove I'm on duty with Oleg from Kaliningrad! I want to talk to you about ethics in IT.

There are laws of the Russian Federation that protect users, but most often only a professional colleague can expose an unscrupulous IT specialist. And even then not always. Of course, large outsourcing companies and services have strict rules and instructions and are responsible for their employees, but even in such cases there is the possibility of leakage.

The information that comes into our hands is different. Starting from very private photos and ending with access to clients’ personal accounts. And just some information, financial documents, correspondence, photographs from drinking parties and corporate events, and similar incriminating evidence often appears before our eyes. What prevents you from copying for any purpose?

Most often, of course, this is one’s own moral code. The average IT specialist is educated, educated and has strict life principles.

Then comes the reputation and the fear of losing your job. Any IT specialist, from a programmer to a system administrator, understands that reputation is very important in his work. Sometimes a person can even screw up some work, but if he does everything honestly and corrects his mistakes to the maximum, then he will be invited again. But if one time the information floats away somewhere or you try to rip off extra money, then, even if you are a top-class specialist, you can lose your reputation and, therefore, orders for a long time.

All these reflections were born from a dialogue with a colleague from Moscow, who spoke about the unpleasant situation in which the organization where he came to work found himself. It turns out that the previous specialist quietly copied personal and work information from servers and computers and sold it somewhere. Well, users’ databases are often needed by competitors. Naturally, they opened a case and are looking for an asshole, but that’s another story. Plus, a colleague found several hidden network accesses and bookmarks in 1C. In general, an extremely unpleasant story. If you open a popular site of stories from IT specialists "IT happens", then you can easily find a dozen similar cases in different variations.

As a result of the discussion, the ethics of an IT specialist emerged:


  • Never, under any circumstances, post personal information and photographs of clients online.

  • Never save client (employer) information on personal hard drives. Unless, of course, the client himself asks to do this.

  • Delete all entries with nicknames/passwords after submitting the project or warn the client (employer) that you will keep a copy for further revision. Delete everything after finishing work.

  • Remove all remote access programs from the client’s (employer’s) computer after completion of work. Or warn that the program is installed and explain how to use it.

  • Warn the client (employer) about possible problems with pirated software. Offer alternatives whenever possible.

  • Warn the client (employer) about possible problems of the lack of anti-virus programs and firewalls on computers.

Perhaps, to begin with, these simple rules will be enough to be considered a decent specialist. Well, then everyone can add the necessary points of their own “ethics of an IT specialist” for themselves.

But I want to say right away that there is another side to the work of an IT specialist, which often goes against ethics. This is protecting yourself from the customer. There are so many stories about how the work was completed but the money was not paid. Large organizations can afford lawyers and courts, but for small firms with two or three programmers or system administrators, such expenses can be absolutely devastating. Therefore, very often so-called “bookmarks” are left, which, upon some signal or after some time, turn off the system. I cannot condemn or blame colleagues who use similar methods. If the operation of the system into which the “tab” is built cannot in any way harm a person (software in medicine, factories, thermal power plants, nuclear power plants, etc.), then such methods may be justified. This is completely unethical, sometimes illegal, but... there is no other way to get your money.

What cases of dishonest work by an IT specialist (programmer, system administrator, Enikey specialist) have you encountered? How did you fight? Was it difficult to find a specialist in your city who would work on your computer honestly and for reasonable money? Share.

Thank you for your attention and, colleagues, be honest in your work.

Forum

(c) Gura Andrey (EAGLE SOFT), Kurgan.In one of the REVIEW articles, I read a proposal from the editors, in which it was proposed to create a kind of code for demomakers. I believe that we need a programmer’s code in general and I think that my code will be an example to all programmers and will be accepted as a basis.SWITCHING RAM PAGESIt is better to switch pages using port #7FFD, and not half of #FD. In this way, you can avoid many problems with program compatibility with other computers. Let's take the well-known example of INSULT MEGADEMO. This program runs on PROFI, PENTANGON 128, but does not want to work on SCORPION, which is what caused the dissatisfaction of many SPECCY-USERS (I think the owners of SCORPIONs will understand me).PORT #7FFD ┌─┬─┬─┬─┬─┬─┬─┬─┐ │ │ │ │Z│Y│X│X│X│ └─┴─┴─┴─┴ ─┴─┴─┴─ ┘X - RAM page number, from 0 to 7, connected from address #C000;Y - screen switching, Y=0 - #4000, Y=1 - #C000 (page);Z-switching ROM, Z=0 - ZX128, Z=1 - ZX48;It is easier to access the port to switch pages as follows:KEMPSTON needs to be polled on port #1F, and not on #DF, as is done on the ZX-NEXT. But the #DF port (for those who don’t know) polls the FULER joystick.PORT #1F ┌─┬─┬─┬─┬─┬─┬─┬─┐ │ │ │ │F│U│D│L│R│ └─┴─┴─┴─┴ ─┴─┴─┴─ ┘F-FIRE-fire; U-UP-up; D-DOWN-down; L-LEFT-left; R-RIGHT-right.The port is accessed using the IN mnemonic.SINCLAIR 1 or INTERFACE 1 the following keys are present here: 1-LEFT; 2-RIGHT; 3-DOWN; 4-UP; 5-FIRE.SINCLAIR 2 or INTERFACE 2: 6-LEFT; 7-RIGHT; 8-DOWN; 9-UP; 0-FIRE.CURSOR:5+CS-LEFT; 6+CS-DOWN; 7+CS-UP; 8+CS-RIGHT, and CS is not required here, and its absence is even convenient, but not in all cases.KEYBOARD: here it is better to adhere to the following standard: O-LEFT; P-RIGHT; Q-UP; A-DOWN; M-FIRE. Polling takes place over port #FE.PORT #FE ┌─┬─┬─┬─┬─┬─┬─┬─┐ │ │Y│ │X│X│X│X│X│ └─┴─┴─┴─┴─ ┴─┴─┴ ─┘The survey is carried out as follows:In all programs, when using the IM2 interrupt mode, you need to create an address table consisting of 257 identical bytes (where these bytes come from, I think you know). Why?, you ask, “After all, this is a waste of memory!” But no!, I’ll say. It is believed that #FF comes from the data bus, but all Western programmers use the table.It is undesirable to send numbers to the interrupt vector that facilitate accessing the address to the ROM, namely numbers 0-63, although the screen and the area of ​​system variables should not be touched either.It is better to synchronize all effects on the screen relative to the screen. Let's take INSULT again as an example. In the first part, scrolling jerks when TURBO mode is turned on. In the second part, everything happens so fast that you don’t have time to read the running line, and the music plays faster."ATRIBUTES PORT" ════════════════Never use the #FF attribute port in your programs, as it is an imaginary port. For example, let's take the game TOP GUN.********************************

OTHER THINGS ═════════════


In games, you must pause when you press a certain key and load a situation at any time during the game, and each situation must have its own specific name. Anyone who has additions to my code, write to the editors of ZX REVIEW.

Other articles in the issue: TR-DOS for beginners

- Part 1. Author's development

- General Sound - multimedia for ZX Spectrum! Business card

- Introducing the new electronic magazine "Major Wares" (c) Codebusters & V.M.G. Computer novel

- Knight Lore "Legends of knightly times."

New programs- I. Roshchin. HELP_Z80. V. Davydov. Catalog's Base v1.8.

New programs Description of the magazine shell "ZX-REVIEW"

Crossroads of Dragons- Aavlon, Castle of Dreams, Erik the Viking.

- Eureka!, Eye of Bain, Kentilla. Crossroads

- Sherlock, Apollo, Shadows of Mordor, Rigels Revenge, Temple of Terror, ID, That's the Spirit, Return to Ithaka. Retro

Forum- J. Hardman, E. Huson. 40 best procedures.

Forum Forum games

Forum- V. Davydov. Based on materials published in ZX-REVIEW: Some questions related to the autostart of BASIC programs. Redefine Keys. Procedure for printing 42 characters per line. Multiplication procedure HL=B*C. Improvement of sector-by-sector loaders. Mini disk driver.