Professional ethics of the programmer. Presentation of "basics of professional ethics". Now make comments meaningful
In this article I want to talk about ethics
programming. experienced programmers,
judging by the sources, they can determine
level of knowledge directly
programmer. How? And it's very simple. There is
so many unspoken rules
called the ethics of programming. Why
we need this ethics, we will burn in this
article.
Part 1: The Commentary Saga.
Well, if you've ever seen
source codes of programs, and even more so
programmed, you know very well that
such comments. But why then would anyone
uses them a little more often than others? On the
in fact, when writing programs,
it's good to leave comments.
First, for yourself. That is, for
ease of navigation through your own code.
Clear and pertinent comments
save the programmer up to several hours
time only because he is not
will think once again what he is responsible for
every part of the text.
Secondly, for the followers. If a
a person develops a program to order,
knowing that the source codes will later be
transferred to the customer. Is there a guarantee that
it is you who will refine these
sources to the next version? A third party
man will have to lose a lot
time to understand what and how. Is it a matter
with comments. Read the program on
Russian (at least in
English) is much easier than in the language
programming. Especially if the program
uses quite complex
syntactic constructions.
Here are two important reasons why
to which comments should be written.
Hence the logical question: how
write comments correctly? In the introduction
Books "Extreme Programming",
its author, Kent Beck, responds in part to our
question. He's writing:
If code revision is a good thing, then we
we will review the code constantly
- If testing is good, then
each project participant will test
program code constantly (testing
modules), even customers (functional
testing).
- If commenting code is good,
so we will give comments
as much attention as
will require our code to be easy to
reading even to a child.
It can be seen from these lines that the comments
are needed, and they need exactly as many as
need. Yes, I turned it down beautifully, but judge
themselves. It is impossible to say: 10Kb of code should
account for 2Kb of comments. It would be
stupid. Therefore, only one thing remains:
write comments "in the subject", revealing
with their help the most intricate areas
programs. It should not be forgotten that
comments don't affect performance in any way.
compiler, exactly as for the size
the resulting program. Comments
ignored by the compiler, but very
help us humans.
Part 2: Code saga.
If you have ever written programs, you
you probably know what's going on right now
most compilers are loyal
refer to the writing style of the program. That is
compiler on the side, will you put
line break character or not. Judging by
all of the above, to the same
the result will be Code and Code:
The code:
begin
WriteLn("Hello, world");
end.
The code:
begin WriteLn("Hello, world"); end.
If you don't believe me, you can check for yourself. Same
situation with C compilers. I'll tell you one
a story that happened to me for several years
back: One of my friends boasted
program he wrote (he wrote in C). AT
the answer to this I told him that this program
written in Pascal in three lines. He was
furious, because just like I could
write this program in Pascal, but not in
three lines - that's for sure (at 15-20 somewhere).
I had to show the man all the power of logic,
and the program really took exactly three
lines. Why 3 and not one? I don't know how in C
but in Pascal the maximum string length is 256
characters (correct me if I'm wrong).
Hence my program took
approximately 256 * 3 characters (this is exactly the same as
how much would it take my friend for
writing the same program). This example is me
brought not in vain: my code was ABSOLUTELY
unreadable. Reviewing and editing it in
further - this is not so much a perversion, it is
Kamasutra complete. If anyone had to
play Quake3 and save your config from the game
- they will understand me. Kwaka by default writes everything in
one line, and puts some kind of separator
stupid symbol. It can't
compare with a manually written config,
with comments, etc. Should be remembered for
all life: you want to gain respect from
side of others - make your code more
readable. The more free space
between lines - the easier it is to read the code.
Hence this is our choice. ALWAYS write
mathematical signs (+ - = * /) separated by a space.
That is, approximately as it is written in the sidebar
Pr, and never as it is written in the sidebar
Etc. So, read and remember:
Etc:
iCounter + iChan:= iRoute;
Etc
iCounter+iChan:=iRoute;
To be honest, I had a hard time typing Pr: habit
worked out so much that I already pressed Space
subconsciously. I wish you the same...
Part 3: Variable Saga.
What can be said about variables? Actually
actually, a lot. For example, did you notice
that in the insets Pr and Pr I several
named variables unusually? No, this is for you
unusual. For me it's quite normal.
titles. For example, looking at the title
iCounter variable, I can safely say that
this is not an Internet counter (otherwise it
would be called iInetCounter or iICounter), and the variable
of type Integer, which is anyone's
counter. The first letter "i" stands for
variable type: i: Integer, s: String, c: Char, b: Boolean, etc.
etc. Thus, I make the code more
understandable to yourself. For ease of navigation
other people by your code, at the beginning
programs describe how you
name the variables. This will increase your
professional level of programming.
The next thing I would like to say about
variables - give them meaningful names.
Name variable "a" or "x"
stupid, except for those cases where "a" and
"x" - elements of the equation. Otherwise
name variables meaningfully,
so that their name roughly reflects the principle
variable action. It's best to call
variable full or abbreviated
words of English language. This will allow
navigate your code faster
Russian-speaking population of the planet. Each
the word should start with a capital
letters. As for object-oriented
languages that they strive to call
components with dumb names i can tell
the only thing: give up the standard
Edit1, Label1 etc because when the number
identical components go off scale for 5, there will be
very hard to keep in mind
indicates the number of some component.
I advise you to name the components as well as
variable, with the only difference being
that instead of the type of the variable, in the first place
put an abbreviated name of the class
components. So, for example, Edit14, in which we
enter the password, will be named edPassEnter or
something similar to this. Preferably in
Good morning! Today I, Evgeniy levashov from Kaliningrad I'm on duty with Oleg! I want to talk to you about ethics in IT.
There are laws of the Russian Federation that protect users, but most often bring to clean water an unscrupulous IT-specialist can only be his colleague by profession. And even then not always. Of course, large outsourcing companies and services have strict rules and regulations and are responsible for their employees, but even in such cases there is a possibility of leakage.
The information that comes into our hands is different. Starting with sooo private photos and ending with access to personal accounts of clients. Yes, and just some information, financial documents, correspondence, photos from booze and corporate parties, and similar compromising evidence often appears before our eyes. What prevents to copy for any purpose?
Most often, of course, this is their own moral code. The average IT specialist is educated, well-mannered and has strict principles of life. Naturally, they most often do not apply to the use of pirated software for personal purposes (we have such a life), but almost no one will ever even think about downloading and distributing some of your personal information or using your account for personal purposes. Scum, of course, happen, but these are exceptions to the rule.
Then reputation and fear of losing a job. Any IT specialist from a programmer to a system administrator understands that reputation in his work is very important. Sometimes a person can even screw up some work, but if he does everything honestly and fixes the jambs to the maximum, then he will be invited again. But if once information floats somewhere or you try to rip off extra money, then, even if you are an extra-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, what, user databases are often needed by competitors. Naturally, they started a case, they are looking for an asshole, but that's another story. Plus, a colleague found several hidden access to the network and bookmarks in 1C. In general, extremely bad story. If you open a popular site of stories from IT people "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 appeared:
- Never, under any circumstances, post personal data and photos of customers online.
- Never store customer (employer) information on personal hard drives. Unless, of course, the client himself asks to do this.
- Delete all records with nicknames / passwords after the project is delivered or warn the client (employer) that you will keep a copy for further development. Delete everything when finished.
- Remove all programs for remote access from the client's (employer's) computer after the work is completed. Or warn that the program is installed and explain how to use it.
- Warn the client (employer) about possible problems with pirated software. Suggest alternatives whenever possible.
- Warn the client (employer) about possible problems of the lack of anti-virus programs and firewalls on computers.
But I want to say right away that there is another side of the work of an IT specialist, which often goes against ethics. This is protecting yourself from the customer. How many stories go about that the work is done, but the money is not paid. Large organizations can afford lawyers, courts, but for small firms with two or three programmers or system administrators, such expenses can be absolutely deadly. Therefore, so-called "bookmarks" are often left, which, at some signal or after some time, turn off the system. I cannot judge or blame colleagues who use such methods. If the operation of the system in which the "bookmark" is built in cannot harm a person in any way (software in medicine, in factories, at thermal power plants, nuclear power plants, etc.), then such methods may be justified. This is completely unethical, sometimes illegal, but ... otherwise you can’t get your money.
What cases of dishonest work of an IT specialist (programmer, system administrator, enikey worker) have you encountered? How did you fight? Was it difficult to find a specialist in your city who honestly and for reasonable money dealt with your computer? Share.
Thank you for your attention and, colleagues, be honest in your work.
Description of the presentation on individual slides:
1 slide
Description of the slide:
2 slide
Description of the slide:
The history of the emergence of professional ethics Since ancient times, philosophers and scientists have noted the relationship between the profession and morality. The first professional and ethical codes are the Hippocratic Oath, the moral regulations of the priests.
3 slide
Description of the slide:
Bases of formation of professional ethics Necessity of regulation of mutual relations of people of a certain profession. Public opinion. professional traditions. Situations arising in the process professional activity.
4 slide
Description of the slide:
The concept of professional ethics Professional ethics is a set of moral norms that determine a person's attitude to his professional duty. It regulates the moral relations of people in the labor sphere.
5 slide
Description of the slide:
The structure of professional ethics The relationship of labor collectives and each specialist individually. Moral qualities of a specialist. Relationships within teams. Features of professional education.
6 slide
Description of the slide:
Moral qualities of a specialist This is the basis of professional suitability. They include the attitude to work and to the participants in the labor process. Professional morality is associated with generally accepted moral norms. Violation of professional ethics is a violation of general moral principles. It affects not only others, but also the subject of labor.
7 slide
Description of the slide:
Types of professional ethics Medical ethics. Pedagogical ethics. Ethics of a scientist. Actor ethics. The ethics of the artist. Ethics of a psychologist. Etc.
8 slide
Description of the slide:
"Code of Ethics and Professional Practice in Software Engineering". Relationship with society For a programmer, the public interest is paramount. The programmer is obliged to: bear full responsibility for his work; try to balance the interests of all participants in the process, so that the benefit to society from the work done is maximum; publish software only if it is safe and useful to the public; inform private persons or authorities about the occurrence or potential danger for users, the public or the environment caused by the software; assist in solving socially significant problems related to the use, support, maintenance and documentation of software; provide honest and objective information about the software and its capabilities; communicate physical limitations, resource requirements, economic risks, and other factors that may reduce the effectiveness of the software; improve their own professional level and contribute to the improvement of computer literacy society.
9 slide
Description of the slide:
Relationships with Clients and Employers All efforts of the programmer should be aimed at satisfying the interests of the client and the employer, unless this is contrary to the public interest. The programmer is obliged to: fully ensure the execution of his official duties honestly and objectively inform the client or employer about their professional knowledge, skills and education; prevent the use by a client or employer of software obtained illegally or dishonestly; use the resources of the client or employer only within their own authority and with his consent; in work rely on documentation certified by a person authorized by the client or employer; keep confidential client or employer information confidential; timely inform the client or employer about various aspects and possible problems arising in the process of project implementation; do not combine the performance of the main work with the implementation of side projects if this is detrimental to the client or employer; not take any action in their own interests that is contrary to the interests of the client or employer.
10 slide
Description of the slide:
Product Quality The programmer must ensure that the software product meets professional standards. The programmer is obliged: to fight for the highest quality, acceptable cost and reasonable terms for the implementation of projects; guarantee their professional viability in the framework of the projects on which the programmer works; ensure that the methods used by the programmer are appropriate for the implementation of current or proposed projects; work in accordance with professional standards; be fully aware and understand all the requirements for the software product the programmer is working on; ensure that all functionality of the software product the programmer is working on is well documented, meets user requirements, and is approved by stakeholders; guarantee an objective assessment of the cost, the necessary technical and time resources, the quality and compliance of the results with the goals set for each project that the programmer works on; guarantee high-quality testing and debugging of software, a reliable description of the test results; Ensure that correct and objective documentation for the software being developed is available. The documentation should include a description of the identified shortcomings in the implementation and methods for their elimination; in the process of working on the project to prevent the leakage of personal information of clients; use in the work only accurate data obtained legally and honestly; ensure the relevance and correctness of the data used; use modern methods software maintenance. Expert evaluations The programmer's expert evaluations must be objective and unbiased. The programmer is obliged: to approve only those documents that are prepared personally or under the direct supervision, are within the competence of the programmer and with the content of which he fully agrees.
11 slide
Description of the slide:
Project Management A programmer who manages the development and maintenance of software must adhere to certain principles in his work. The programmer must: provide effective management all projects; subordinates should be familiar with the standards and rules applicable to software development before starting work; entrust subordinates with work, taking into account their education and professional skills, making it possible to further increase the level of knowledge and skills; provide an objective assessment of the cost of projects, the time spent on development, the necessary personnel to work on projects, the quality and results of project implementation; during the implementation of the project, ensure fair use of the program code, developments, methods, research and other intellectual property of subordinates; not force subordinate programmers to violate the provisions of this Code; do not punish subordinate programmers for expressing criticism of the project.
12 slide
Description of the slide:
Professionalism A programmer must raise the profile of his profession in the eyes of the public. The programmer is obliged: the organization of the programmer's work must contribute to the observance of ethical standards; educate the public about the essence of the software development industry; expand their knowledge in the field of software development through participation in professional organizations, conferences and seminars, from publications; provide assistance to programmers who try to adhere to the provisions of this Code in their work; follow all the rules governing the work of the programmer, except in cases where this is contrary to the public interest; accurately characterize the software being developed. Avoid characteristics that may be misleading; be responsible for errors found in the developed software, document them in a timely manner and work on their elimination; avoid dealing with employers and clients who do not adhere to this Code; be aware that violations of this Code are not compatible with the title of a professional programmer; influence people who violate this Code, if possible; if it is impossible to influence people violating this Code, notify interested persons or authorities that have the appropriate competence about violations.
13 slide
Description of the slide:
Relationships with Colleagues The programmer should be friendly in dealing with his colleagues, always try to help them. The programmer is obliged: to encourage his colleagues who strictly follow the provisions of this Code; assist colleagues in improving professionalism; trust the work of colleagues, do not give unreasonable hopes and promises to yourself; evaluate the work of colleagues objectively, reasonably and kindly; pay attention to the opinions of colleagues, their suggestions and requests; help colleagues follow the standards governing the protection of confidential information, the rules for storing passwords, access to files and other security measures; not interfere with the careers of colleagues, except when exposing the incompetence of a colleague is in the interests of the employer, client or society; in a difficult situation, seek help from a more experienced colleague.
14 slide
Description of the slide:
Self-awareness A programmer must improve himself throughout his life. The programmer is obliged: to constantly improve his knowledge in the field of software creation and development process management; constantly improve skills that allow you to quickly and efficiently develop software without excessive financial costs; improve the skills of writing high-quality program documentation; improve knowledge in the field of application of their professional knowledge; study the standards, rules and laws related to the field of software development; know and comply with this Code; not encourage anyone to violate the provisions of this Code; understand that if you do not comply with this Code, you cannot be called a professional programmer.
15 slide
Description of the slide:
Development of computer facilities, communications and software systems
(Internet, telecommunications, distributed systems, IP telephony, computer games
and training programs) has an increasing impact on society. The role of specialists in software while increasing all the time. They work in a specific legal and social environment and are subject to international, national and local laws.
It is clear that programmers, like specialists in other professions, must be honest and decent people. But at the same time, programmers cannot be guided only by moral norms or legal restrictions, because they are usually associated with more subtle professional obligations:
· Confidentiality - Software professionals must respect the confidentiality of their employers or customers, whether or not they have signed an agreement.
· Competence - A software engineer should not overestimate their true level of competence and should not knowingly take on work that does not correspond to this level.
· Protection of intellectual property - the specialist must comply with the law and the principles of protection of intellectual property when using someone else's intellectual property. In addition, it must protect the intellectual property of the employer and client. Warning: The intellectual property it creates is the property of
employer or client.
· Computer abuse - the software specialist should not abuse the computer resources of the employer or customer; under. By abuse, we here understand a wide range - from playing computer toys in the workplace to the spread of viruses, etc.
Computer ethics has not yet developed as a normative discipline and as a set of rules of human behavior, which are embedded in him and are reinforced socially. Computing ethics is a field of study that straddles and depends on new technologies and normative ethics. However, in recent decades there have been intensive attempts to create it.
In the 1980s, American ethicists coined the term "computer professional" to refer to a person who makes a living working with computers. This meant not only programmers, system analysts, system 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 environment Therefore, 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 Institute of Electrical and Electronics Engineers, their joint code of ethics and professional practice for software developers. In Russia, in 1996, the National Code of Activities in the field of informatics and telecommunications was adopted.
ACM/IEEE Code of Ethics.
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 to high level abstractions; paragraphs included in full version give 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 coherent code.
Professional programmers will work to make the analysis, specification, design, development, testing, and maintenance of software a rewarding and respected profession. In accordance with their commitment to the prosperity, safety and well-being of society, software engineers will be guided by the following eight Principles:
1. SOCIETY
The software engineers will act in the public interest.
2. CLIENT AND EMPLOYER
Software engineers will act in the interests of clients and the employer, in accordance with the public interest.
3. PRODUCT
Software engineers will ensure that their products and modifications meet the highest professional standards.
4. JUDGMENT
Software engineers will seek honesty and independence in their professional judgment.
5. MANAGEMENT
Managers and leaders of software engineers will be guided by an ethical approach to the management of software development and maintenance, and will also promote and develop this approach.
6. PROFESSION
Software engineers will improve the integrity and reputation of their profession in a manner consistent with the public interest.
7. COLLEAGUES
Software engineers will be honest with their colleagues and support them in every possible way.
8. PERSONALITY
Software engineers will learn throughout their lives 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.
The Code of Professional Conduct can be used as a socialization mechanism. If there is a code of professional conduct, then there is some guarantee that all members of the profession will at least be aware of the standards enshrined in the code.
The most important function of a code of ethics is to articulate the collective wisdom of the profession. The code of ethics should collect what people in the profession with years of experience have found 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 the profession.
The development of computer technology, communications and software systems (Internet, telecommunications, distributed systems, IP telephony, computer games and educational programs) has an increasing impact on society. The role of software specialists is growing all the time. They work in a specific legal and social environment and are subject to international, national and local laws.
It is clear that programmers, like specialists in other professions, must be honest and decent people. But at the same time, programmers cannot be guided only by moral norms or legal restrictions, because they are usually associated with more subtle professional obligations:
Confidentiality - Software professionals must respect the confidentiality of their employers or clients, whether or not they have signed an agreement.
Competence - A software specialist should not overestimate their true level of competence and should not knowingly take on work that does not correspond to this level.
Protection of intellectual property - a specialist must comply with the law and the principles of protection of intellectual property when using someone else's intellectual property. In addition, it must protect the intellectual property of the employer and client. Attention: the intellectual property it creates is the property of the employer or client.
Computer misuse - the software specialist must not misuse the computer resources of the employer or customer; By abuse we here mean a wide range - from playing computer toys in the workplace to the spread of viruses, etc.
Code of Ethics ieee-cs/acm
Professional communities play a leading role in developing such ethical commitments. Societies like
ACM–Association for Computing Machinery - Association for Computing Machinery,
IEEE - Institute of Electrical and Electronic Engineers - Institute of Electrical and Electronics Engineers
CS- British Computer Society - British Computer Society
Members of these organizations are committed to following this code at the time of joining the organization.
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.
The code has short and long versions.
Code of Ethics - Preamble
Short version of the code
sums up the aspirations of the code at a high level of abstraction.
the full version shows how these aspirations are reflected in the activities of professional programmers.
without higher principles, the details of the code will become casuistic and tedious;
without details, aspirations will remain elevated but empty;
together they form a coherent code.
Software engineers must ensure that the analysis, specification, design, development, testing, and maintenance of software become a rewarding and respected profession. In accordance with their commitment to the prosperity, safety and well-being of society, software engineers will be guided by the following Eight Principles