Computer Science Ethics
Title: Computer Science Ethics. As time progresses and moves forward the human race is always maintained in the mindset and zone of development. Humans are always seeking to reach higher grounds in every field unleashing a new dawn on the planet with the future realm. Technology is one of the main things that progress frequently with new fields being introduced day by day which helps the planet understand a lot of different things about our universe together with easing our daily work and routine. Ever since the introduction of the machinery to our planet humans have been fond with the fact that some physical object can carry out the same work intended for us without having to worry one bit about the outcome or what is happening in the process.
Times kept progressing and the reality has changed to the virtual world where humans focused on creating means to envision the unknown and to achieve your work in a virtual world called the internet which is now the most commonly used technology in the world. However, one of the main tools that helps in making all of this possible is the computer science and software engineering fields as a whole.
These two professions or fields are the essence and core of the machinery and the virtual world even though they are staged on what they call “the backend” of the whole project. A computer scientist is the person who developed lines of code, in a certain coding language, that when put together can form a functional asset.
This asset can be a software, a program, a website or even something as big as the internet. It should be stated that the most wanted jobs on earth through the past 5 years and the next 10 years is going to revolve around computer scientist and software engineers as this is current century we live in and this is the leading technology for humans at the moment leading for more need of computer science ethics. The programmer holds the power to shape the software as intended together with collecting personal information from the users and can easily track the tasks being conducted by the users as well. This gives them a huge room and deal over owning a software, service or even a website as they hold many priceless data.
There might be millions of software engineers out there in the world with high paying jobs and capabilities that can rule this world. However, with great power comes great responsibility as there are many different setbacks and hard situations that such people face while carrying out their job which might change their whole life. This is due to the fact that such jobs have the opportunity to collect any type of personal data needed from the users of the particular product they are developing.
Computer Science Ethics and the British Computer Society (BSC)
As a simple example, Facebook has a database that saves your e-mail, phone number, interests, likes, photos and almost everything you are interested in. Imagine what would happen if fakebook gives this information about you to a certain person; it kills all the privacy you should have as a person. This leads us to the most controversial topic related to software engineering which is the different ethical issues that circulates the profession as a whole. These kinds of ethical issues can be met and faced in various different forms which are hard to keep track off and should be respected at all times to protect the information of users and other stakeholders.
The main basic mean that helps a programmer in maintaining healthy ethics in this job would be the British Computer Society code of conduct (BCS) which is a book that holds the basic rules and ethics of being a programmer together with the dos and don’ts that should be carried on. Furthermore, it states what would be the consequences of breaching the code of conduct in full details helping the programmer understand the importance of the ethics.
This code of conduct has four main points that forms the ethics that should be followed together with somehow detailed information of each point. The first main point stated in the BCS is to respect and have regards towards the public interest of the society. This would mean to respect certain points like public health, privacy, rights of third parties and to never discriminate between people while conducting the work.
The second point to look out for in the BCS is to focus on the professional competence and integrity. This point holds within it the guidelines on which you should accept a task or not, based on your skills and knowledge. Furthermore, it speaks out to the professional work frame that you should always have like delivering work on time and always accepting criticism no matter what. This point might be common between any code of conduct in the world regardless of the profession. The third point included in the BCS revolves around the responsibility that the programmer has towards the authorities. This point is important as it assess the fact that programmers should not get involved in tasks that might affect any authority out there and should respect the laws in that certain place.
Furthermore, it speaks out generally on respecting the authority that you are working for prohibiting you from sharing the information to a different authority or causing a conflict between authorities. Last but not least, the BCS tackle the point of the programmer’s responsibility to the profession itself. This would mean to be effective and efficient at all times and try to show good case practices to other people in order to promote and encourage outsiders to join the software engineering society.
This BCS should be kept in mind at all times by any programmer no matter how big or small the task is without any exceptions as following the guidelines stated above is the key to a healthy and ethical work journey. On the other hand, not compelling with the states guidelines of the BCS would led to severe legal issues and might probably stop you from being able to work again in this field.
This code of conduct forms the general frame of situations that might be faced during the conduction of your profession together with a general idea on how to take decision regarding accepting jobs. However, it does not include every single event you might face in your life as a programmer which forms a problem for software engineers especially in this modern era due to the different small loopholes that exist in this field. This has led many different programmers to be confused regarding their decision making and the extent to which they can carry on their job. Other reasons why programmers break the code of conduct would be different incentives that might be introduced by the client, which is usually the case with money.
Yet, let’s move forward and discuss the different and most common situations out there which modern programmers face regarding maintaining their ethics. To begin with, the first main faced problem by programmers, as stated before is the fact that they have log files. These log files are records of literally every single step taken by the users of the certain software which can act as a tracker to the users. These files are important to help the programmer debug the system if it faced any type of problem.
However, having these files would mean that the programmer can see exactly what is being done by the users, thus it kills any privacy the user has the right to have.An example of a business that deals with log files in a smart way is Snapchat. Snapchat deletes log files the second it has been dealt with by the intended user, which from a programmer’s point of view is a very weak system. Yet, the users have loved and respected the idea of the privacy and the system that forgets easily.
This might not seem as a big deal when you look at the smaller picture, but you need to understand that these types of personal information in the wrong hands might affect the users in many different ways negatively. Imagine the insurance company gained more information about the smoking situation of a certain client, they will be sure to increase the rates in no time.
The second ethical issue faced by programmers worldwide is the fact that all the different clients out there are always looking to suck up money out of the pockets and wallets of users as a whole. This forces some programmers to change their business model from a service to an ATM machine that only allows depositing the money.
There is generally no free service on the internet, but actually the non-free service is already ready but it is being promoted for free in order to attract the highest number of users and then slowly charging fees for the same service that was free a week ago.In order to prevent any problems from happening, programmers should include a tiny timeline which shows when will the charges be set on this product in order to absorb any shock that will affect the people. This dilemma generally evolves to a bigger problem which is the fact that most business out there do not earn enough money from their online services if they keep it for free.
This may lead to a model being conducted by the firm that allows the sharing of the user’s information in order to make more money from interested partners. This is a dilemma due to the fact that the programmer should achieve their job by fulfilling the needs of the client while still maintaining the right privacy for the users and not breaching the code of conduct. This forces the any software engineer to focus on what is asked of him and to ensure that such situations are communicated clearly to the users beforehand in order to rationalize the problem.
Moving on the third point and a very important point to keep in mind while programming, is the concept of protection and the different layers of security that should be available and included over the user’s data. There is no doubt that involving protection is a must over the programmer to be able to protect the data of the users of the certain software.
However, the problem arises when the programmer keeps asking himself if this is enough protection or should there be more layers to protect the user and their work. If a programmer does not provide the right protection for the users of his program then he is definitely violating the BCS and is not showing right work ethics. However, the point at which enough protection is subtle is relative and different from one person to the other and from one task to the other. This forms the problem as in moments a programmer can claim that he has done enough to protect the users rights yet a user can claim that they need more privacy.
Furthermore, the problem in adding more security layers is weak and slow performance that will be obtained from the service. Hence, a solution like double-encryption for example, might not be the best idea out there even if it is suitable for the users themselves. To make matters worse, any mistake or problem in the final algorithm will stop the whole system and can only be undone by restarting the whole algorithm and system.
Adding to much security to a service, limits the programmer from adding tons of features that would take the product to the next level thus some programmers might not care about security as much as they would care about adding more modern features to their users.
Moving on to the next ethical issue faced by programmers which is the decision on whether to fix bugs in the algorithm or not. You might ask yourself “why wouldn’t the programmer fix the bugs in their own system?” Well, you need to understand that most bugs are too hard to understand and analyze and even harder to be solved as it needs efforts to go through the whole algorithm and deep thinking on the method of solving.
This fact causes tons of different bugs worldwide left unhanded by the engineers as it is not of a great concern. However, is it ethical to not solve all bugs that arise and leave a few problems met by the user as is? This is where the programmers get stuck and have different point of views. Yet, with all the contradicting point of views, the scenario most of the times turns out with no action taken because there is no definitive action to actually take. You, as a programmer, are obliged by the BCS to always do your best and solve any problem that arises according to the professional ethics law.
However, it is not always the case nor is it always solvable by humans, which is what programmers consider as an exceptional case. The dilemma keeps growing on the fact that the size of the problem is only relative to the software engineer himself and may differ from one person to the other, showing no clear guidelines on when to leave bugs as is and when to start taking a step to solve the problems.
Another different ethical problem would be the range of algorithm expansion. This is quite similar to the past two points, where having more lines of code increases the chances for facing more problems and aiding individuals to misuse the algorithm in many different way. It is truly not the responsibility of the programmer at all if other people misuse his software or algorithm by any mean however, he should at least do his part in providing the right algorithm with the best efficiency.
A tiny example would be the laptop’s camera which has an LED associated with turning on the camera as an indication. However, if you surf through the algorithm of this system, you might find a loophole to help you decouple the LED from the camera allowing you or anyone else to hack the device and spy on the target. The challenge here would be for the programmer to anticipate the different problems that might be met through their software and try to find an alternative to coding which can solve the problem. The solution here was the oldest type of camera which was the shutter camera which had a physical gate blocking the lenses which can only be removed by the user of the laptop.
The last two main problems worth mentioning that every programmer can relate too easily is the data requests dilemma and the forces by the nature of the internet. Concerning data requests, it is always relative on to which extent should the programmer defend the customers. For most website and service that works by collecting data (during the sign up process) there comes a time where your company will be asked to provide or sell this data to the government or any other interested party. Here rises a huge conflict between compiling with what is asked from a legal entity and preserving the privacy of your users.
The problem is the fact that it is almost impossible to go toe to toe with the legal entities or the governmental authorities as the process will take too much effort and probably all of your funds. Usually companies that go through this situation tend to leave the firm or just comply as it is always hard to do anything else. The second point for concern is the method of interacting with the nature of the internet as this modern invention is full of hassles. Simply, as an international law student would be aware, each and every country has its own set of laws. Laws might be almost similar but only between countries of the same level.
Trying to develop a software or a service might mean that the initial privacy and ethical standards that a programmer would provide would be enough to suite only the needs of the users of the local country concerned. However, when this product expands, the programmer is stuck, not knowing whether to set terms relevant to this country or the other one. Furthermore, there might be a lot of collisions between what is needed from one government and what is not essential for the other. Thus, it is impossible to have a software or algorithm that can fit all the different standards and it’s always a hassle to find the right guidelines which will help you benefit as much people as possible.
These were just a few of the many different situations, problems, hassles and loopholes that are likely to be face and common between all software engineers and programmers worldwide. With this being said, it is important to find the right way to answer and assess such problems as there should be a solution taken to solve for all this.
It is important to consider and keep in mind the ethics of work and code of conduct at all times while trying to perform the job and while taking decisions in order to at least tone decrease the margin for any issues that might arise. The best practices out there is to always understand who are the audience for this certain product on the long run, hence trying to always set your algorithms initially to fit all standards. Furthermore, a good programmer should always have a clear look towards the future of the product and the development that might arise.
This is because development of a product is usually the factor that starts the breakdown of certain rules and ethics. It is important for the programmer to always include in the contract biding between them and their client, firm clauses that stops any future amendments to change important security features. The main point behind the ethics and the code of conduct is to mainly preserver the privacy of the users together with the credibility and integrity of the software engineer. The best advice out there to any programmer is to always be open and honest to the users and clients. Being open with all the problems and the different under staged deals that are being communicated by other firms or governmental entities. Having the people observe what is happening is a key that will have all your users aid you and stand beside or just accept the terms as they know how you are bounded.
Regardless of the presence of a solution or not, it is a must over all software engineers to respect and follow the BCS code of conduct at all times as the oath they swore is of important honor. However, speculations by time has been surrounding the code of conduct due to outdated clauses that it holds and a lot of people has suggested a few changes to the code of conduct which will help more specific ideas be tackled rather than just a general vague concept. Different conferences have been held every once in a while in order to discuss these ideas and quite few minor changes has been accompanied as a conclusion and this is something we are much more looking forward to. The best part is that the process of amendment takes place in certain overseas conferences that holds hundreds of worldwide software engineers. This would mean, that your voice as a programmer will be heard and what you have been put through can actually be prevented from happening again.
As a conclusion, there are a lot of different problems and hard-ons that a software engineer might face though out their professional career despite the amazing perks that this career might provide. As stated earlier, with great power comes great responsibility and it is important for all employees out there to show respect towards the responsibility put upon them. The setbacks can range from personal decision-making situations where the programmer has to choose whether to put more effort in a certain task or not, while other situations might be forced by external factors whether it’s the client, other buyers or the government itself.
Such external factors are harder to deal with, however there should be great precautions taken by the engineer even before the problem arise which can at least give them a starting push when in face of trouble. There should be no exception at all times to break the code of conduct no matter what the case is and this is what is being taught to all graduated programmers as it is the essence of a successful work life.-
Botting, R. J. (2005). Teaching and learning ethics in computer science. Proceedings of the 36th SIGCSE technical symposium on Computer science education – SIGCSE 05.
Kizza, J. M. (2016). Computer Science Ethics and Ethical Analysis. Ethics in Computing Undergraduate Topics in Computer Science, 17-38.
Miller, K. (1988). Integrating Computer Science Ethics into the Computer Science Curriculum. Computer Science Education, 1(1), 37-52.
1981 British computer society conference. (1981). Computers in Industry, 2(4), 311-312.
British Computer Society. (n.d.). International Year Book and Statesmen Whos Who.
Alpert, S. A. (1996). Doctoral essays in computer ethics. Science and Engineering Ethics, 2(2), 225-247.
The ACM Code of Ethics and Professional Conduct. (2004). Computer Science Ethics Handbook, Second Edition CD-ROM.
Sillars, M. (2002). The British Computer Society industry structure model. IEE Seminar Technical Competence Frameworks – seeing through the fog.
Bynum, T. W. (2000). Special section on computer ethics. Science and Engineering Ethics, 6(2), 205-206.
Quinn, M. J. (2006). On teaching computer ethics within a computer science department. Science and Engineering Ethics, 12(2), 335-343.
Relevant Posts – Computer Science Ethics
If you enjoyed reading this post on Computer Science Ethics, I would be very grateful if you could help spread this knowledge by emailing this post to a friend, or sharing it on Twitter or Facebook. Thank you.