Reflection on Code of Ethics

The Code of Ethics developed by Calvin Rutherford, Kevin Boyd and myself, in our opinion, is a rather comprehensive Code of Ethics that will guide any Notre Dame Computer Science student to be a successful and ethically sound student at the university.

The foremost highlight of the code is the general area it covers. The code is divided into three sections of ethics – the general moral imperatives, classroom ethics and general work ethics. I feel that these three sections are the most important aspects of student life that we must make moral decisions for. Any good Code of Ethics (the ACM Code of Ethics included) starts off with some general principles that should be followed. This ensures that adherents to the code are not just ethical professionals, but moral human beings. Classroom etiquette is another important category. As college students, we spend quite a bit of our time in the classroom learning and interacting with our fellow students. Hence it is very important to keep in mind the decorum that must be maintained in classrooms to help maximize our classmates’ and our learning experience. Lastly, our work ethic is how we approach our craft – Computer Science. As students and future professionals, we must approach Computer Science less with the mindset of just a job or a profession, but also as a passion, and try to engage ourselves as much as possible. This section advises the adherents of the code the best way to have a fulfilling Computer Science career.

I believe that our code is a very strong Code of Ethics. However, no document is perfect and a few flaws can be pointed out in this document as well. The first flaw, which I think is endemic in any Code of Ethics, is its objective nature. Being very specific is a requirement for a strong Code of Ethics because it ideally contains moral and ethical absolutes that must be adhered to. However, no document can foresee every possible situation. There may be situations where actually following the code instead of intuition may cause more moral harm than good, which ironically would defeat the purpose of the code. Another flaw (on the flip side) that may be present is the code not being substantial and specific enough. There may be situations or moral dilemmas which the code does not cover, or covers only vaguely. This again is endemic of any Code of Ethics. The drafters are only human and can’t think of any and every scenario.

The flaws in the document can be overcome. Calvin, Kevin and I tried our best to be as specific as possible in cases where we felt absolutes applied – for example coming to the classroom on time, and being engaged in the field of Computer Science. We worded these two statutes particularly objectively, because we felt following these exactly was necessary to be an upstanding Computer Science student at Notre Dame. However, in other areas we were vaguer. For example, striving to use your power for good, and maintaining a work-life balance. These two statutes apply subjectively to each individual, and hence are worded as such.

Overall, I feel that a Code of Ethics is akin to the constitution of the soul. It definitely has a place in every person’s life, whether they took the time to enumerate it on paper or not. However, actually sitting down and putting it to paper did help codify it in my mind and in the minds of my group. This was a beneficial exercise to be done in a group as well, because we were able to make the code better by adding suggestions and making up for each other’s shortcomings.

A Notre Dame Computer Science Student’s Code of Ethics

Section I: General Moral Imperatives

Strive to use your power for good:

As we all know, the ability to program opens up a huge world of possibilities. With the existence of the internet and availability of devices that can access it, code can impact billions of people’s lives. Hence, when coding something, it is important to keep in mind the motivations behind the project. If the motivation comes from a morally ambiguous or lacking place, then as a Notre Dame student who received a Catholic Education, your conscience must come in the way and prevent you from participating that project.

 

Respect other people’s work, especially copyrighted and patented work:

With the internet’s popularity and power, it has become increasingly easy to access information and use it to further our goals. Many times this is fine. However, you must always keep in mind that sometimes using information can harm someone, especially if it is restricted. Although many times using this information may seem the easiest or most convenient way to achieve your ends, it is ethically unsound, and hence as an Notre Dame student, must be avoided.

 

Strive to work for others:

The basic tenet of Catholic Social Teaching is to use whatever skills you have to help the less fortunate. The ability to code is a very powerful skill, and thus if directed in the right way can help many people. Although many other paths may have a higher financial gain, as a student with a Notre Dame education, it is your moral obligation to do direct your coding skills not to exclusively acquire material wealth, but also to acquire spiritual wealth. This wealth can be acquired only by helping other people. Spiritual and material wealth are not mutually exclusive. This tenet does not require you to help others at the cost of your own well being. It is certainly possible to take care of yourself, while also helping others in the world and doing good, and since it is possible, you have a moral obligation to go down this path.

 

Section II: Classroom etiquette

 

Arrive on time:

Arriving to class a few minutes before it starts is recommended. Just make sure you are in your seat and quiet when it’s time for class to start. If you do happen to arrive later, make sure you enter the classroom as quietly as possible in order to not disturb the lecture. Find a seat near the end of an aisle so that you do not disturb other students who are attempting to listen to the professor and what he has to say.

 

Be Prepared to Discuss:

Although a majority of computer science classes revolve around listening to the professor lecture, we are Notre Dame computer scientists. This means that we are required by the university to take more than just computer science classes. And, in many of these classes, there are discussions. Therefore, it is imperative that when attending a discussion based class, you are prepared to talk about the material. This means that you should read and understand the material assigned to you before that class. This will allow you to be an active participant in any discussions during class that day.

 

Respect Questions Asked by Classmates:

Not everyone will understand the material being taught at the same rate. Sometimes, people will ask a question that may seem obvious to you. You must realize that it may not be for them. Therefore, do not laugh or insult them for asking the question. Let the professor explain the concept again. If you do understand it very well, you could also try and help explain the concept to those who do not understand it as well. Remember that most if not all Notre Dame professors do not grade competitively. Therefore, by helping someone else do better, it does not mean that your grade will suffer.

 

Section III: Work ethics

 

Balance:

One major reason that we are at Notre Dame is that we and our parents wanted a balanced education. Notre Dame and MIT computer science students learn much of the same material but the expectations for each are different. As a Notre Dame computer science student, embrace the balance of life. This will lead to a healthier and happier life as well as help in your studies and down the road. Try new things, keep exploring, and don’t get caught up in only one thing. Becoming a well rounded individual will be extremely important for your future success.

 

Be Engaged in Computer Science:

While being engaged may seem simple and a no-brainer, being engaged doesn’t just refer to classes. Being engaged in computer science means exploring the areas that seem interesting, whether in class or outside of class. If you are interested in startups, go visit one or see how they work. This attribute of being inquisitive will be very important in life after college and will also help you be a better student. Look at the new and emerging technology in the computer science world and be engaged in the future of tech.

 

Have a Plan and Goals:

Part of the reason that we go to college is so that we can get a job. A crucial part of college is learning to set goals and have a plan on how you are going to accomplish them. Whether this is for one piece of homework or your career plan after you graduate, it is important and helpful for your work ethic to have a plan and goals. Learning to work hard and efficiently is an important part of your development as a student in computer science and having goals and a plan will help with this.

 

Push the Boundaries of Emerging Technology:

Especially on the leading edge of the computer science field ask questions and seek answers in where the field is going and how it is getting there. Try to discover something new about quantum computing or any other emerging technology field that interests you. You have the ability to move the field forward so don’t be afraid to ask questions and jump into the future.  

Code of Ethics compiled by:

Vaishnav Murthy, Calvin Rutherford and Kevin Boyd

What was your job (or intern) interview process like? What surprised you? What frustrated you? What excited you? How did you prepare? How did you perform? What is your overall impression of the general interview process? Is it efficent? Is it effective? Is it humane? Is it ethical?

Like every junior, I was very anxious to get a good internship at a respectable firm doing something I enjoyed for two to three months in the summer. I went through the expected steps of going on Go Irish, searching for companies that fit my description and following up with people via email and even meeting them in person at career fairs. This seemed slightly hard to manage along with classes, because of the huge jump in difficulty in classes junior year (at least in my opinion), but I saw it as a necessary step in getting my name out there to get interviews for these positions.

Getting the interviews was fairly straightforward in my experience last year which surprised me a little bit. All the pre-screening interview process seemed to be was to check GPAs and ask one or two cursory questions about past experiences or current interests. However, once I got the interview, the process varied quite a bit from one company to another, which again surprised me. These were companies with quite similar job descriptions – companies that required software development interns. However, some would only have a behavioral interview, some would have a behavioral on site and a follow up technical interview on the phone (which I found to be strange that it was not the other way around), and yet others would have behavioral interviews on campus and technical interviews on site. The last ones were my favorite, because I always found something new about the company by visiting them and talking to employees other than my interviewers.

Another thing that excited me was the technical interviews. I really enjoyed all of the questions I got asked, because a majority of them were very interesting and I truly enjoyed solving them. However, that being said I really didn’t understand how I was evaluated. Several times, I solved the question correctly in a reasonable time (and even got praised for doing so), and still didn’t get the position. This was rather frustrating for me, because many a time the email wouldn’t even come with an explanation, which would leave me wondering how I could improve my performance for the next one.

In terms of preparation, for the behavioral interview I prepared a list of frequently asked questions and a list of experiences that I definitely wanted to talk about, and figured out how to weave those experiences into the answers to those questions. For the technical interview, the preparation was more straightforward – it was like studying for an operating systems and data structures final. This preparation served me reasonably well, as I encountered fairly mixed success in the interview process, and luckily ended up with a job that I really wanted and ended up enjoying very much.

Overall, I thought the interview process was not especially effective or efficient given the large number of people interviewed for a relatively few number of positions. I feel it could have been a lot more efficient to do heavier pre-screening. I also felt that behavioral questions didn’t really tell the companies much about me, because the hypothetical situations they put me in were so vague that the answers were more an exercise in creative thinking than a window to my personality. In terms of humaneness, I feel that it is not humane, but then again it is not meant to be. An interview is meant to help companies hire the talent they feel is best suited to help them succeed. Being humane doesn’t really play that much of a part in my opinion. However, in terms of how ethical they were, I think they absolutely were ethical. Even though, I was frustrated and surprised by some parts of the process, I definitely thought it was more than fair.

Does the computing industry have an obligation to address social and political issues such as income inequality? How well suited is it to meet such challenges? How does the ethos of the computing industry influence its take on “fixing” social, economic, and political problems? Can tech save the world?

Income inequality is a huge problem facing American society today. According to the World Factbook, the USA ranks in the 30th percentile when it comes to income inequality. This means that 70% of the countries in the world have a more equitable distribution of wealth than the USA. It has been shown again and again that rising income inequality shrinks the middle class and causes stagnation in economic growth, which in the long term harms the country as a whole and adversely affects people at both ends of the wealth spectrum.

Computer Science is the fastest growing field in the United States, because of the national and global trend favoring tech solutions to solve many or most of our day to day problems. Because of this trend, it has become more and more possible for people who have no experience, connections or even wealth, but who have an idea, to generate massive amounts of wealth at unprecedented speeds. As Paul Graham explained, the use of computers makes scaling a solution extremely easy and efficient, because of the existing framework of the internet. The internet has also allowed the ease in communication between different companies which has caused a change in trends from vertically integrated companies that had its hands in every part of the supply chain (such as Ford), to a virtually integrated companies that coordinate with several suppliers that specialize in one part of the supply chain (such as Dell Computers). Paul Graham asserted that because of this ease of communication, the different suppliers are forced to compete in pricing and quality of service, because they can be so easily replaced.

Given these facts, it is clear that the overwhelming ethos of the computing industry has been to disrupt the status quo. However whether this disruption is good or bad for the people as a whole remains to be seen. As Holly Wood (pseudonym, I’m guessing) said in her article, this tech boom and the rise in the startup culture has contributed to the rise in income inequality. This is because typically the solutions offered by these companies have come at the expense of human labor. The simplest example of this is the advent of electronic mail. Its rise in popularity has made the American Post Office, which was once a much sought after job because of job security and pensions, near obsolete. This shrinkage in available jobs to people with fewer academic qualifications has done little to bridge the gap between our poorest and richest citizens.

The computing industry therefore does have an obligation to combat income inequality. However, Holly Wood does not tell the whole story. It is also important to note that the billions of dollars generated by Silicon Valley startups has done a lot of good for the US economy, by increasing investor trust in American tech companies, and thus positively affecting the stock market. This has allowed savvy investors to profit through the wealth generated by Silicon Valley, and other startup havens. It is therefore good to remember that in addition to making the lives of Americans more convenient by services they provide, the tech industry has also shared its wealth with many Americans.

The ethos of the computing industry has been to disrupt the status quo and come up with new and exciting solutions to problems that exist in society. Although these solutions (at least the well-publicized ones) have been largely been to solve social problems (such as the problems of connecting with one another that Facebook, Twitter or even online dating sites have pretty convincingly solved), there is no reason why tech companies cannot come up with equally groundbreaking and ingenious solutions to political problems (such as an app that helps people from different parties in Washington actually talk to each other and get something done) or even economic problems (such as an app or a website that educates  people on how to better invest in the stock market). Whatever the tech industry comes up with to solve these problems (which it certainly should try to do), whether it works or not, we can be sure that it will certainly be new and bold. Because that is the ethos of the tech industry – be new, be bold and don’t be afraid to shake up the system. This brash attitude could (and in my opinion will) allow the tech industry to save the world.

Is programming a super-power? Why or why not? What are the implications if it is?

What is a superpower? It is defined in the dictionary as an extremely powerful and influential nation, like the U.S.A or the erstwhile U.S.S.R in the Cold War era. However, in this context, a superpower is an extraordinary ability to change or create or do things that average, ordinary humans cannot. For example, Superman can fly and see through walls, Spiderman can shoot webs out of his hands and the Wolverine can heal himself immediately.

To compare the ability to code to these abilities seems silly at first, but on looking at what the ability to code entails in today’s world, it starts to look more and more like a superpower. The ability to code allowed Mark Zuckerburg and Jack Dorsi, CEOs of Facebook and Twitter respectively, to ensure that everyone in the world can instantly communicate and connect with each other. It allowed Jeff Bezos, CEO of Amazon, to allow billions of people to search for and obtain almost any material good they desired, by not getting off their couch, indeed almost by just willing it. It allowed Jeff Wenier to create LinkedIn, making searching for and getting a job easier and more convenient than ever before. Of course, none of these would have been possible had Steve Jobs and Bill Gates, ex-CEOs of Apple and Micosoft respectively, not used their abilities to code to create products used by billions of people that allowed them to access the Internet.

Hence when Karlie Kloss says that the ability to code is a modern superpower, and that programming is the language of the future and the present, she is not alone in thinking that, and moreover I would say she is right. Programming is a superpower, and in some ways that makes the people who can code effectively superheroes in some ways.

This has many implications that we as programmers must keep in mind. As Uncle Ben said to Peter Parker in that most famous of quotes from the Spiderman movie, with great power comes great responsibility. We must appreciate the power our knowledge of code gives us, but also keep in mind that as upstanding members of society we must always strive to use our powers for good.

In a simpler world, this would be a rather straightforward statement. It sounds pretty simple – use your knowledge for good and not bad. However, the world we live in is not painted with only black and white paint. There are shades of grey in every situation we might find ourselves in. To make matters more complicated, different people see the world in different lenses. A straightforward matter for one person could be an ethical and moral dilemma for another. Or even trickier, it might be a straightforward matter for the other person, just in the totally opposite way.

Considering all this, it seems like too tricky an area to enter. If it is impossible to be sure that you are using your programming powers for good, then how would it be possible to follow Uncle Ben’s wise words? The answer is simple. We use our power with responsibility by defining a strong code of ethics and principles that we make sure that we don’t waver from. These principles must be in absolutes, so that when it comes time to pick a path, we do not hesitate. Because in the end, regardless of what other people may say or how they may react, we are the ones who have to live with our actions. So even if everyone we work with do things that we ethically and morally object to we should take a stand and refuse to betray our guiding principles.

Introduction

My name is Vaishnav Murthy. I have technical interests in forensic technology and cyber security, along with an interest in developing algorithms and creating utility programs. I study Computer Science to help me fuel these interests, as well as to keep my future career path as flexible as possible.
Given that my interest lies in cyber security, I think the most pressing ethical issue facing the field lies in information sharing and availability, for private or government spying. I look forward to discussing issues on this topic in future classes.