Blog Post 4-Our Code of Ethics

Our goal when creating our Code of Ethics was to take the ACM Code of Ethics and apply it specifically toward Notre Dame Computer Science and Engineering students. Our code focused around the fact that some of the aspects of the code of ethics may apply more to Notre Dame students as opposed to others. When going into the professional world we will have a responsibility to uphold the reputation of the University of Notre Dame. There are certain moral and ethical responsibilities that we have to keep as representatives of the university.

The section of our code of ethics that I worked on dealt with something that I think is key to the ethical and moral responsibilities of a Notre Dame student, the social responsibilities we take on as leaders in an organization. This is something that we may not be thinking about now, but many of us will have to deal with in the future. If we are given power in an organization and do not act ethically, we are not only representing ourselves poorly. We are representing the University of Notre Dame poorly.

Whenever given leadership, we are ethically responsible for all of the social consequences of those under us. When beginning projects, and taking into account aspects such as budget and resources, we must also take into account the social impact of the project. Will our project have any unintended consequences on innocent bystanders? Often we can get too caught up on the success of the project and not realize we are having unintended consequences on bystanders. We are responsible for these bystanders just as much as our paying clients. A Notre Dame student should never forget this.

I think the main weakness of our Code of Ethics is that it loses its strength as the Notre Dame student moves farther and farther away from college. A key point of our document is that when a student acts unethically, they are harming the reputation of the university just as much as themselves. However, as a student moves farther away from their time at the University of Notre Dame they may begin to get detached from it. They may not care about reputation of the university anymore. I think a good way to address this is to remind the alumni that their reputation is directly tied to their school’s reputation. If they are in the professional world tarnishing the reputation of their school, they’re tarnishing the reputation of their degree. Thus all alumni should attempt to keep the high reputation our university has.

I certainly think a Code of Ethics is useful if used correctly. I do not believe it should be used in the same way as a “Ten Commandments” type of document is, meaning I don’t believe that it needs to be something that is referenced every single day in your life before every action you take. I think it should be something that you look over every couple of months, to make sure that your actions have been up to code. You should be taking refreshers to make sure that you are not forgetting any key ideas.

This exercise was certainly useful to me. When first reading the ACM Code of Ethics, I felt somewhat detached from the document. I felt that it really had nothing to do with me personally and thus I had no use for it. This exercise forced us to look at the document through a perspective that does matter to me, the perspective of a Notre Dame student. I was able to see how the Code of Ethics has a use for me as a Notre Dame student moving into the real world.

 

Blog Post 3-Career Advancement and Stack Ranking

Promotional and career advancement was one of, perhaps the most important, pieces of information I took into account during my job search. There were many different factors I looked into, but for me the two that seemed to battle each other out were starting salary vs career advancement. Some of my positions had a high starting salary but a low chance of advancement, while others started at a lower salary but with more of a chance to prove yourself and get promotions. I had to figure out where I was in this spectrum. It came down to how much was I welling to bet on myself. There’s more of a risk with a low salary, high potential position. If you think you will be able to perform well enough to get promotions, the risk is worth it. However, if you are not as confident you might want to lean towards lower risk, higher starting salaries with less potential.

This was a very tough decision to make, and with very limited real-world work experience it’s tough to take a risk on yourself. The best piece of information I was able to use was my experience at my internship this past summer. I really enjoyed the work that I did, and felt that I actually had a passion for it that would lead me to success in the future. When I found one of these higher risk jobs in an area that was very similar to the work I did this past summer, I felt willing to take a risk. I felt that, based on my experience with this type of work, I could stand out in this field and advance in my career. In my company you can move up the ranks very fast if you show potential. I feel like I can prove myself to this company and grow into it. It remains to be seen if this risk will turn out.

If my company used stack ranking as their rating system, I would feel less confident in my risk. Stack ranking is essentially ranking on a curve. Only a certain proportion of workers can be “top performers” while a certain proportion must be labeled “low performers.” There are certain positives and negatives. The main positive is that you avoid having managers that are too lenient, or get to attached to their employees, and rate all employees as top performers regardless of their work. This would be unfair to someone in the same company with a strict manager. The fact that you know you will be given “poor performers” will help if you have to make layoffs. However, there are certainly fairness issues. What if a branch of a company is doing very well, and all employees are producing? Perhaps there is another branch that is doing very poorly, with many employees under-producing. A “poor performer” in the successful branch may be doing better work then a “top performer” in the failing branch. Thus it really isn’t fair to layoff the “poor performer” in the successful branch. It’s unfair to the employee, and bad to the company as they are losing good workers. I do not see this as ethical, it almost seems like the lazy way out when having to make budget cuts at a company. Instead of putting in the effort to actually find the good and bad employees across a company, you’re almost looking for scapegoats that can be let go right now. This laziness will cost the company good employees.

I would not want to participate in this process. A policy like this could create a cutthroat environment. Instead of employees working to better the company, they well be working to better themselves compared to other workers. This may lead to less collaboration in an attempt to stand out. Another effect of a policy like this is losing great teams. A company might have a great team that really enjoys working together and constantly pushes out great products. However, this policy will force managers to cut from even the best teams. So this all-star team will get broken up, losing valuable members, and the team might not be able to recover. Stack ranking creates an environment I would not want to work in.

 

 

Blog Post 3-What is a hacker?

The most interesting definition of a hacker to me was given in “The Word Hacker” article on paulgraham.com. The definition given is “someone who can make a computer do what he wants—whether the computer wants to or not”. Note that there are clearly no illegal intentions in the definition of the hacker, meaning that someone who falls under this definition does not need to be doing anything illegal. To me there are two types of hackers. Those who “can make a computer do what he wants” with the aim of personal knowledge, or those with the aim of monetary gain, confidential information, etc. To many of those in the “hacker culture”, those in the second group would not even be considered hackers. The only way to be a part of a hacker culture is to hack with the aim of obtaining knowledge, breaking into things to learn how they work so they can better themselves as a computer scientist. Thus for the rest of this post I will be adding this caveat to my definition to hacking; if the hacking is not done with the goal of intellectual curiosity, it is not considered hacking. Thus at some point we will need a different word for what is now thought of as the mainstream hacker, someone who hacks into a system to steal money or information.

Another important piece of this definition is that it says nothing about the legality or morality of the hacker. At the surface it may seem a hacker with curiosity as the aim will have a more legal and ethical stand then a hacker after money. We certainly know that legal side of the argument is not true, as breaking into proprietary software is almost always illegal regardless of the aim. The ethical side is a little more complex and will often need a case by case analysis. A hacker breaking into software on an iPhone that he owns is certainly more ethical then a hacker breaking into someone else’s server (and perhaps causing damage to that server), even if both hackers have the same goals. So it is important to note that while a goal of intellectual curiosity seems to imply a sort of “ethical high ground”, this is certainly not the case.

Going off this definition of a hacker, to me the key characteristic of a hacker is an intense intellectual curiosity. A hacker has an almost never ending hunger for more information, a hunger that can often get the hacker into trouble. The “Conscience of a Hacker” article perfectly describes this hunger. You can feel the desperate desire the writer has for knowledge; he has “been spoon-fed baby food at school while we (he) hungered for steak.” His “crime is that of curiosity.” This plays into the final characteristic that I have for a hacker. Not only must you have this hunger for knowledge, you must be willing to cross legal and ethical boundaries in order to further your and your peer’s knowledge.

This second characteristic is where I believe I fall out of my definition of a hacker. I do have a hunger for knowledge, I do enjoy learning and applying new programming techniques. However, my hunger is not strong enough that I am willing to cross legal and ethical boundaries. I would not be willing to break into proprietary software, facing legal and ethical repercussions, even if I am furthering my and my peer’s knowledge. I do agree with this characterization. I have never really considered myself a hacker, but now I have an actual definition of a hacker that I fall outside of. I know why I am not a hacker.

Blog Post 2: Why study Ethics in the context of Computer Science and Engineering?

Many people think ethics are not a pressing issue when compared to other fields of engineering. If a civil engineer decides to follow unethical practices, a bridge could collapse endangering the lives of many people. Unethical practices for a mechanical engineer could lead to an unsafe car. However many people think the worst thing that unethical programming practices could lead to is a game to crash, or a program to stop working. However many people don’t realize that a program crashing or not working as expected can endanger just as many lives as a building collapsing or a car malfunctioning. A good example is the Therac-25 accidents, where program malfunctions directly lead to radiation overdose and death. As technology progresses and more safety-critical systems become computerized, there will be more of an emphasis on ethics in computer science. Unethical programming practices will lead to more then just your favorite app not working, they will directly lead to injuries and death.

A huge ethical issue that is important for computer scientists to study is in the testing and debugging phase of the development lifestyle. Specifically how much testing and debugging is ethically necessary. For example, A phone game will need less testing and debugging then software for a pacemaker. This is an extremely important reason that computer scientists must study ethics, as they must learn to be able to realize the ethical problems their program can lead to. Safety critical systems must require more testing and debugging, as huge bugs left in production are not an option. A bug fix after production will not only lead to monetary loss, but possible injury and death.

Another ethical issue in computer science, that computer scientists may face more then other engineering disciplines, is privacy. Specifically we are talking about data privacy. Many programs will collect data on its users, and a huge ethical issue is what should we do with that data. Should we delete it immediately after the program is done with the data, or should we store the data for a purpose later. If we store the data we open up huge areas of ethical problems. Should we sell the user’s data to anybody that will pay for them? If the government demands our data for their own uses should we give it to them? Even simply storing the data for ourselves opens up ethical problems, as a security breach could let user’s data fall into the wrong hands. For example if we are creating a program for facial recognition, companies might be willing to pay a top price to know about this information for advertising purposes. The government might demand the information for security purposes. It would be very tough to deny the government access to your data, but it might be the ethical thing to do.

Overall the study of ethics in computer science and engineering is an extremely important issue. As we see more safety-critical systems become computerized we are putting more trust in the fact that our programmers are acting ethically. There are also ethical issues that are unique to computer science, such as determining the level of testing/debugging needed for a program and data privacy.

Blog Post 1: Introduction

My name is James Harkins, and I am a senior studying computer science and going into my final semester at the University of Notre Dame. A few of my interests are playing baseball and website development. The reason I chose to study computer science is because I wanted to choose a career in which I would actually be able to create things, which is why I decided to go into the College of Engineering. I eventually chose computer science as I felt it would allow me the most amount of freedom in my career, as a computer scientist can move into many different types of jobs. I hope to see a different side of computer science in this class. In other classes I have learned about the many mistakes that a programmer can make, but have never really learnt the consequences behind these actions.

To me the most interesting and pressing ethical issue in computer science is data privacy. Is it ethical to collect data on our users, even if we have them agree to a user engagement (that nobody reads)? Is it ethical to then turn around and sell this data to a company? Is it ethical to provide this data to the government, even if we are legally required to do so? To me these are the toughest ethical questions a computer scientist faces and I am interested in discussing these this semester.