Assignment # 1

Essay on Ethics

prebyld@umkc.edu

            Ethics are very important.  Without ethics we would have a hard time differentiating what is right and what is wrong.  Likewise software engineers also need ethics to assist in guiding us in making business decisions.  Recognizing this, an IEEE-CS/ACM joint task force was created to craft a Software Engineering Code of Ethics and Professional Practice.  In this essay, I plan to discuss the Code.  However, before I can discuss the various aspects of the Code, I must first seek to define the code and the eight important principles which guide it.  Only then, after I have outlined the Code of Ethics can I consider possible situations and apply this code to work through those situations.

            As I said earlier, first the code should be defined.  The following section describes the eight principles of the Code of Ethics.

            Software engineers should act in a manner that is good for the public.  This includes things such as accepting responsibility for your own work.  Evaluating software to ensure that it does not harm the public either directly or indirectly.  This principle also includes being forthright when distributing information about your product, so as to avoid deception.  Also you should ensure that your software should strive to be equally accessible to everyone, regardless of economic and physical shortcomings of the public.  Finally, your professional skills should always be volunteered for the public good or education whenever possible.

            Software engineers should work in the best interest of their clients and employer.  This means that you should provide the best service you can to your employer, disclosing any professional shortcomings and limitations that you possess to your employer.  You should also never use software that was obtained either illegally or unethically.  Software engineers should only use the property of their employers in ways that are properly authorized by their employer.  Confidential information should not be revealed to the public unless this information is either illegal or goes against the public interest.  Also, software engineers should be diligent in bringing up any cases to their employer if projects are likely to become problematic.  Finally, any jobs accepted outside of your primary employer should not be detrimental to your primary employer.

            The products that software engineers design should adhere to the highest professional standards.  This means that software engineers should always strive for the highest quality taking in account the costs, time schedules, and other various tradeoffs when creating products.  Areas in which one may want to examine tradeoffs include ethical, cultural, legal, and environmental.  Software engineers should follow professional standards that include adequate reviewing of software and adequate testing of software.  Software should be development in such a way that privacy is respected.  Also software engineers should only use accurate data obtained from ethical and legal sources.  Finally, in order to maintain the integrity of data, all forms of software maintenance should be treated with the same care as new development.

            Software engineer’s professional judgment should be full of integrity and independence.  Software engineers should always maintain professional objectivity during all of their professional judgments.  Also, one should never participate in deceptive schemes.  Finally, one should never participate with parties in which there are potential conflicts of interest.

            The leaders of Software engineering should promote the highest ethical approach with respect the management and development of software.  Managers of software engineers should ensure that their employees are clear on what is expected of them, how they are to protect the security of the system that they are on, and methods of promotion.  Also, employers should ensure that realistic estimates in cost, scheduling, and personnel are always achieved.  Also managers should ensure that their employees are treated fairly and equally.  Finally, their employees that follow this code should never be punished in anyway.

            Software engineers should ensure that the integrity and reputation is always being upheld.  In a word, this means acting professionally at all times.  Software engineers should always act in such a way to keep the environment ethical.  This includes supporting other software engineers following this code, not promoting your interests over that of your employers, and of course obeying all laws.  You should also promote public knowledge of the various aspects of software engineering at such places as organizations and meetings.  Software engineers should always take responsibility for accurately detecting and correcting any errors in the software that they work on.  Finally, software engineers should avoid those who are in conflict of this code by first expressing any such concerns, and if necessary reporting violations to the appropriate authorities.

            Software engineers should support their fellow colleagues.  First and foremost, software engineers should assist their colleagues in their own professional development and encourage them to likewise adhere to this code of ethics.  One should never steal credit for the work of others.  Also, software engineers should give honest advice to their colleagues when called upon to do so.  Finally, call upon help from other individuals more competent in certain areas to assist you in your tasks

            Software engineers should always seek self improvement and promote these codes when regarding their profession.  Probably the most important aspect of this principle is to take every opportunity to further your own knowledge of the various aspects of development, maintenance, and testing of all software that you come in contact with.  You should also increate your ability to create safe, reliable, and useful software, as well as producing accurate and informative documentation.  Software engineers should furthermore improve their understanding of all the aspects of the various software that they use.  Finally, with respect to this code, software engineers should seek always to understand this code better and always strive to prevent either yourself or anyone else from breaking this code of ethics.

            Now that we have described in a fair amount of detail what the code of ethics is let's take a look at a couple of examples and use the code to work through them.

            The first example comes from the assignment itself.  The concept of creating software for terrorist was just too intriguing to pass up(given the state of the world today, I feel it is a excellent idea to intelligently discuss the subject of terrorism, if for no other reason to help in getting over the fear of them).  We are concerned if creating reliable, high quality software for a terrorist organization would be consistent with the teachings of the Code of Ethics.

            Let's start first by noting which of the eight principles this situation does successfully follow.  Let's start with the second principle, which briefly states that software engineers should act in the best interests of their employers.  I feel that for the most part, yes our current situation does correctly follow this principle.  However, a small section of this principle could be thought as in violation, however I believe that that thought is covered better under a different principle so it can easily be overlook under this principle.  Principle three, four, and five (Product, Judgment, Management) are all very easily successfully followed.  Yes, our product is of good quality.  Yes, we exercised good judgment in creating this product.  Yes, management upheld their end of the bargain the helping to foster a productive environment (I'd like to think that software engineers are too valuable to waste in suicide missions).

            However, the principle that we would violate is principle number one (the principle of public good).  It can easily be reasoned that creating software for terrorist to more efficiently achieve their objectives is certainly bad for the general public.  This is hardly a surprise.  Yet, in examining the code I noticed that a breach in any one principle immediately cascades to a breach in three other principles (six, seven, and eight)!  This is because these three principles each have statements concerning encouraging you or your colleagues (assuming, of course, you are indeed working with other colleagues) to follow these principles.  One idea is even repeated twice--with only a tiny variation in wording!

            This leads us to now what I would do if I was employed by an agency associated with terrorist activity.  In this case, the answer is easy.  I would not want to confront my employers directly as that could cause me or someone that I care about harm.  Instead, I would go to the authorities and look to them for further guidance. 

            Now that we finished exploring the first situation, let’s take a look at the other side of the terrorist conflict.  We'll start with our hero; let’s name him Dave (I'm rather partial to that name) is offered a job working for the government on programming missiles to more accurately hit their targets.  The question is, then, should I accept this job on the basis of it being ethical?

            Let's use the same procedure that we did last time starting off with the principles that are ethically achieved with the position.  I believe, as in the above example, that principle two, three, four, and five are all easily met.  We are professionally servicing our employer--in this case the government agency that asked us to design the missile targeting software for them.  We are also creating a high quality product using our best professional judgment whenever possible.  Finally, management likewise has also created a positive workplace environment by giving us every federal holiday off to be with our families.

            Now comes for the tricky part.  Is designing these missiles better for the public?  Certainly, national defense is good for every citizen of the United States, but what about the countries the missiles are being deployed against?  They, too, much be considered when thinking about the public.  To this question, I would have to answer yes.  As far as I understand, our government is seeking to strike only military targets, and to this end you need to have excellent targeting in order to prevent the missile from striking civilian targets.  So to this end, I would have to think I am doing my part to help at least the civilian public from becoming casualties of war!

            Now let's take a look at principles six, seven, and eight.  Just because we haven't violated an ethical principle yet doesn't guarantee that there isn't another statement in one of these three principles that I would be violating.  Principle six primarily deals with your own professionalism.  The only statement that might be questioned is whether or not you are following the laws of the land.  I'm not an expert lawyer, but it does seem to me that in this case I would be following the laws since it is a government entity that hired me in the first place.

            Principles seven and eight go hand in hand.  The major difference is principle seven considers your interaction with your peers while principle eight considers the interactions with yourself.  Neither of these two principles have anything in them which would lead me to think that programming missiles for the government is unethical.  In this case, considering all eight principles I would have to think that I could accept the job creating software to more accurately guide missiles.  Now, let's talk about the salary, shall we?

            It seems, after reviewing all of the principles and of the statements associated with each principle that they can be easily summed up with the following rule of thumb:  Use good old fashion morals when making business decisions concerning software engineering.  Of course, this doesn’t cover every situation that a software engineer may run into out in the real world.  However, it does have the advantage of being quick and easy to remember.  I believe that during the heat of the moment that if you follow that rule of thumb, any decisions you make will likewise follow the code of ethics.