Reflection on Interview Guide

From your experience, what are the most important parts of the guide your group constructed? What do you know now that you wished you new earlier? What is the best advice or guidance you’ve received?

The most important parts of the guide are definitely the answers to when and how to prepare for interviews. I think it is of paramount importance to know the answers to these two questions to be a good interviewee. In addition to these two questions, I think the section about how to leverage the alumni network is very important. Going to Notre Dame is a privilege and a blessing in the job market, not just because of the brand of a Notre Dame degree, but also because of the large alumni network. Learning how to leverage the alumni network (or networking in general) is very important, and could be the difference between getting the job or not. In today’s world, networking is almost as important as technical skill. Technical skill may get you the job, however networking will help get you in the door, and automatically put your resume above the similarly qualified candidates.

I wish I had known how important practicing was when it comes to interviewing. I have always considered myself a socially adept person, and more than capable of handling myself in a conversation. However, an interview is not a normal conversation, as it is so focused on you and your personal achievements. My first couple of interviews went well, but I stumbled on certain questions, and wasn’t consistent. I soon realized the importance of practicing answers, and soon I became much better. On the technical interview side, I wish I knew how important data structures and operating systems were for internships, and read up on them before interviews. To be fair, once we covered them in class I was much better prepared. However, the first couple of interviews took me by surprise and I did quite poorly because they asked me questions about data structures I hadn’t even heard before.

The best guidance I received was from my older sister, which was to (counter-intuitively) treat the interview as a conversation and try to have fun. Doing this made me more relaxed and made my answers better. I was less rigid, and came across and more confident and personable.

College traditionally has been viewed as a place of learning, not necessarily job training and yet students are spending more and more time preparing for the job interview process. Should colleges adjust their curriculum to face this reality?

Yes, I believe colleges should adjust their curriculum to better prepare students for internship and job interviews. I also think it is a fallacy that learning and training for jobs are mutually exclusive. I think that both can happen simultaneously, with the result that colleges start producing people armed not just with theoretical knowledge, but also armed with practical knowledge to be more successful in the interview process and be better prepared for the real world.

Notre Dame can certainly change its curriculum to help it’s students do better at interviews. For example, the Data Structures and Operating Systems courses are taught in Fall and Spring semester of Junior year respectively. However, as I alluded to earlier, questions on data structures and operating systems are very common in technical interviews. I personally experienced this when I was interviewing for internships the beginning of my junior year. I was asked problems that required knowledge of advanced data structures to solve, and hence did very poorly. However, students in other schools study these two courses their sophomore year so by the time junior year comes around and it is interview season for internships, they are prepared to answer these questions. Notre Dame altering their Computer Science curriculum to include these courses earlier would certainly help prepare students for the interview while not really compromising on learning.

Classes where students discuss things like interviews, internships, jobs, contracts and so on (like this class) would also be more useful earlier than the last semester of college. I have already learned a lot this semester that would have been useful earlier in my college career. Again, this would not compromise learning but would help prepare students better for the workforce.

 

 

 

Interview Tips and Tricks

  • When should students start preparing or planning for internship or job interviews?

Student should start preparing for interviews as early as possible. The more practice you get at talking about your strengths and weaknesses (in a behavioral setting) or solving problems, writing code on a piece of paper and explaining concepts (in a technical setting), the better you will be in an actual interview. Practice could begin as early as the start of the semester, maybe ten minutes a day two or three times a week in your spare time.

  • How should students prepare or plan for these interviews?

The behavioral and technical interviews are easy in some ways and hard in others. The behavioral interview is mainly based on talking about your strengths and weaknesses effectively. You should start by listing eight or so experiences that you would like to talk about before leaving the room, ranked from top priority to lowest priority. This will help limit the awkward silence when you are thinking of an answer to a question that caught you off guard. This will also ensure that the interviewer does not leave the room without knowing at least a few of your most important and impressive accomplishments. Another thing to reduce potential awkwardness is practicing how to tell your story without meandering too much. It might seem strange to talk to yourself about your own accomplishments but this can make a world of difference. The other thing to keep in mind is to follow the STAR (Situation, Task, Action and Result) model while giving your answer. This makes you look more polished by communicating your accomplishments fully as succinctly as possible.

For the technical interview, it is important to look at the important classes such as Operating Systems and Data Structures and re-learn (or memorize) some of the key concepts, such as the difference between a heap and a stack, process and a thread and so on. Another useful exercise is to ensure that you know the big O value for sorting, searching and storing data in commonly used data structures such as trees, min or max heaps, stacks and so on. Lastly, going over some important well known algorithms such as depth/breadth first search, in/pre/post order traversal, min/max heapify and so on. Practice these by writing them on pieces of paper, so the whole experience does not seem strange when you are doing it in the interview room.

  • What resources should students consider? Books? Career Services? Student groups?

Mock interviews through the career center or a student group are a great way to prepare for the interview process. They give you a very realistic version of what an interview is like without having the full pressure of it. The questions you are asked are very similar to those that would be asked in an actual interview. Once it begins, you forget that the interview is fake, and you begin to feel as if you are in an actual interview. The entire experience is a greater way to learn about where you need to improve and what you did well. Unlike an actual interviewer, the person who interviewed can give you in-depth feedback afterwards. From there, you can figure out ways to improve your weaknesses and highlight your strengths for your actual interview.

Another great way to prepare for interviews is through preparation books. The only downfall to these is that they can be incredibly long and cumbersome. It is impossible to memorize every possible question that could be asked to you during an interview. A better process is to remember a few projects you have done that can be used to answer each question. When reading through the book, concentrate on how you would answer the question, not the actual question itself. By getting a feel for the process, you don’t need to remember all the questions, just the method for answering them. After going through a few questions, you will start to notice some similarities between them, which will give you a better understanding of how to approach questions of similar type during an interview.  

  • What extracurricular activities should students consider?

Students should consider whatever extracurricular they find enjoyment in. Companies these days are looking for well rounded individuals, not just those who can program. They look for people who have interests beyond the world of programming. Therefore, by participating in clubs and extracurricular activities, a student shows that are capable of being a multi-dimensional person. In many interviews, companies ask what sports you played in high school/college and what you do when you are not writing code. These companies have many events (such as video game tournaments and volunteer opportunities) and intercompany sports leagues. These are ways for employees to become better friends, and companies are looking for candidates who would be willing to participate in such events. By joining clubs and doing extracurricular activities in college, you show that you would be willing to interact with workers outside of work (just as when you join a club you interact with your classmates outside of class).

  • How can students take advantage of networking and alumni relationships?

Networking and alumni relationships are one of the biggest advantages of going to Notre Dame. Notre Dame has one of the strongest alumni networks that can really help getting your feet in the door as most Notre Dame alumni are happy to help a fellow domer out. These relationships should be used to ask for advice but never to ask for jobs. Instead of just asking directly for jobs, it is better to try and learn from the alumni and get to know them better. Doing this can lead to jobs, but asking directly for jobs puts the connection in a tight spot and is rude. It is much better to try and learn from the alumni and networking rather than ask them directly for a job. By cultivating relationships, you can have a bunch of great networking later on that can help with jobs, advice, and even promotions down the road. These relationships should be friendships rather than a checklist. If done correctly these networking and alumni relationships can help students their entire professional life and can be really beneficial to the professional and social life down the road.

  • How should students approach negotiations or contracts? Are there any pitfalls they should look out for?

The biggest problem with negotiations and contracts is getting too excited about getting the first job offer. The first offer is the biggest one in a lot of ways and while it is natural to be excited about it, make sure that you are looking at the contract and reading through everything that they send you. Getting too excited can lead to accepting the contract without reading it as well as not negotiating on things that are important for the student. Other important considerations to remember with the negotiating of contracts is to be respectful. The company is offering you a job that you want, and while you may want more money or something else, ask for it respectfully which should help it be more likely to be granted, as well as just keeps both sides civil. Other than these few things, I think it is important to remember the reason that you applied for that specific job and not make it just about the money, trying to accept a job that you would enjoy.

  • Anything else you wish you knew before you went through the whole process?

Interviewing and applying for jobs is a stressful process, but a necessary one. It is a good window to see what the real world is like while still in college, by giving you a chance to interact with and ask questions to a person working in a field you are interested in. Thinking of it as such makes it less intimidating. Treating it as a conversation with someone interesting will make you more relaxed and allow you to speak more freely and do better. As far as the technical interview is concerned, the questions can be challenging, but for the most part, they are fun problems to solve. So, approaching them as fun brain-teasers rather than problems on an exam will also allow you to think clearer, and help you do better.

Overall, it is important to keep in mind that you study in one of the best colleges in the country. You are absolutely qualified. So don’t be intimidated, make sure to be relaxed and have fun and I’m sure you will do fine.

 

Compiled By:

Vaishnav Murthy, Calvin Rutherford and Kevin Boyd

From the readings, what is your opinion of Boeing’s handling of its computer security employees? Were these workers ethical in their leaking of information to the public? Was their firing rightful and warranted? Should these workers have been protected under the Whistleblower protection laws?

In 2006, Boeing clearly had some computer security problems. If the Seattle P-I report was to be believed,  in addition to having significant holes in their system, their methods of auditing were also faulty. It is also believed that they pressured their employees into producing good results for the audit purposes, and subsequently ignored Deloitte’s external audit, when auditors such as James Estep found”a control rated as “passed” that he had rated as failing”. It is unclear whether they were doing any or all of this on purpose.

In the midst of all of this, two internal auditors were fired by Boeing because they exposed these failings to the media. One of them said that after repeated warnings to the upper management followed by unfair treatment he was forced to go to the SEC and the media about his findings. However, instead of trying to fix their broken computer security, they went after anyone who was exposing their weaknesses. They fired the auditor and allegedly, “[spied] on other employees to ferret out whistle-blowers by videotaping workers and reading their e-mail”.

Before making an ethical judgement on whether it was OK to fire these employees, it is important to present both sides. Firstly, this decision to fire the employees was held up in the 9th US Circuit Court of Appeals. Secondly, it is difficult to figure out whether these rules were actually broken because certain employees felt that the auditors “kept changing their minds about what they wanted and were too eager to fail controls”. Also, as IT worker Michael DuPas claimed, none of the people working on the audit agreed on anything, which made it hard to categorize problem areas.

With all this in mind, I feel that Boeing certainly did not treat the Computer Security workers well at all. When these issues were reported, they should have taken the claims seriously and implemented changes to their security process. The leak potentially allowed the personal data (unencrypted) of more than 400,000 employees to be stolen. This clearly shows flaws in their computer security, which potentially could have been avoided if they had taken claims of weakness in their security seriously, and had treated their security auditors better.

However, the conduct of the auditors after that was not ethical. They should have followed the law if they wanted protection and only reported to the authorities about Boeing’s security failings. The step to report to the press was not necessary or the right thing to do. By reporting to the press they publicized the whole debacle, thus tarnishing Boeing’s image and making them an even easier target for data thieves and malicious hackers. Given their conduct, I believe that Boeing was well within its rights to fire an employee who caused their company such public harm, just as it as the right to fire employees who hurt the company by being inefficient at their job. Given that the auditors job was to help strengthen Boeing’s security, and their actions had the opposite effect, Boeing was certainly right to fire them.

On the question of the Whistle blower Act, and whether it should have protected these employees, the language of the Act in question is filled with subjective qualifiers – “gross mismanagement”,   “gross waste of funds”, “abuse of authority”, “substantial harm to public health or safety”. This shows that this law was meant to be up to the interpretations of the Court whether a certain violation qualified as any of these. The 9th Circuit Court of Appeals in a unanimous decision ruled that Boeing’s potential negligence did none of these things. Hence, I would also say that they clearly should not have been protected under the Whistle-blower Act.

To sum up, I think Boeing acted poorly initially while dealing with their security employees, and subsequently the employees acted poorly by going to the press, making it necessary for Boeing to fire them. The employees exercised their right by going to the court which sided with Boeing, thus reaffirming that Boeing was in the right for firing these auditors.

 

From the readings and in your opinion, is the lack of diversity a problem in the technology industry? Is it something that needs to be addressed or is it just a (possibly unfortunate) reality?

Diversity in the tech industry is one of the most trending hot topics in today’s conversation. Before addressing if this is in fact a problem or not, we must look at certain facts about the industry. The San Francisco area (known as the Silicon Valley) is made up of a large Asian and Caucasian population, especially in the areas surrounding the headquarters of large tech companies such as Apple. It follows that there must be a largely skewed Asian and Caucasian makeup of employees that work in these companies as well. It is also a well known fact that in the Valley the gender distribution is also very skewed. Fortune recently ranked big tech companies (http://fortune.com/2015/07/30/tech-companies-diveristy/) by the percentage of women employees they had, and eBay came in in first place at 42%. This may not seem bad, but the drop is steep following this. Facebook, Google and Microsoft come in 4th, 5th and 7th place and have less than 30% women employees. These facts make it easy to see why people who belong to these under-represented groups find it intolerable and want things to change immediately.

There have been several reasons put forward for these skewed demographics. Erica Joy in her piece about The Other Side of Diversity talked about her experience of not really fitting in because there were not too many workers in the Tech Industry that were African American or women. Hence as an African American woman, she found it extremely difficult to fit in. She asserted that this culture shock would act as a deterrent to women and African Americans to apply for tech jobs. Legand Burge in the piece in Bloomburg Business was of the opinion that employers in the Valley had an inherent bias towards the African American community as evidenced by their non targeting of historically black colleges for recruiting. Eileen Pollack in her piece in the New York Times claimed that the field of Computer Science was simply not welcoming enough to women, which led to fewer women programmers and thus fewer women employees in the Tech industry.

I would like to respond to each of these claims by stating that having been through a similar culture shock (as an Indian student attending a school that is predominantly Caucasian and a 1-2% Indian undergrad population), I disagree that a culture shock is always a negative thing. In my undergrad experience these last three and a half years, it always hasn’t been smooth sailing. Having grown up in a different country I have had similar experiences to Ms. Joy by not knowing the songs people around me liked to relax to, or having not watched the movies or TV shows that people had watched as children, and therefore didn’t understand many of the references they made. Along with the cultural aspect, I also had an accent that made me stick out, along with my obviously different visual features. However, I viewed these not as an insurmountable obstacle, but rather as a challenge. I made sure whenever I heard a reference I didn’t understand I looked it up. Whenever I heard of a movie I hadn’t watched or a book I hadn’t read, I made sure I watched or read them as soon as I could. I soon managed to fit in a lot better. I wouldn’t say I changed myself, because my core personality has remained the same, but I did adjust, and adjust well. I think there are two ways to look at a place where people are different than you, and you feel unable to fit in. One way is to simply be frustrated at the majority of people for not being like you, hoping and wishing that they will change to fit what you are more comfortable with (they never will, and it is rather foolish to assume they will), and then give up. The second approach, which is the one I took, is to realize it is easier to change certain things about yourself rather than expecting several others to all change, and then do the change. The result is I was able to make the most out of my college experience, both academically and socially.

I definitely do not want to come across as harsh or unforgiving to the many people feeling left out either of the field of Computer Science, or the Silicon Valley culture. I certainly do feel that societies for these under-represented minorities do have a place and definitely help. In certain contexts privilege does exist, and so do negative stereotypes. I can’t count the number of times I have been stopped in the middle of a conversation after saying I live in a different country with the inevitable question – “But you speak English so well”. I would also be lying if I said that this didn’t irritate me. However, I did not, have not and will not let this irritation get the better of me. To put this in the context of the several stories I read about that spoke of the massive culture shocks and discrimination women and minorities feel in the tech world, I would say that it certainly is not easy, or even at times palatable. Fighting for change is a good thing. However, it is important to remember that cultures do not change overnight. What is much easier to change is our attitude towards new cultures.

From the readings and from your experience, why is creating startups all the rage at the moment? What are the benefits of creating or joining a startup? What are the dangers or downsides? Did joining or creating a startup factor in your employment decision or do you hope to create one in the future? Why or why not?

The readings on this topic had some interesting theories on what the appeal of either founding or joining a startup as an employee. For example, the comparison article between the pay and culture of a startup vs a bigger company presents three compelling differences that are often cited to make startups seem more favorable than bigger companies. Firstly, there is a belief that startups provide the opportunity to earn the equivalent of a lifetime of earnings in a relatively short amount of time. Secondly, many people believe that a startup will allow you to do more meaningful and fulfilling work than a bigger company. Lastly, there is a belief that you will be able to learn and experience more by working at a startup than by working at a bigger company. There are conflicting opinions on each of these beliefs. Giants in the startup field, most notably Paul Graham, endorse this opinion. However, many other people, such as the author of this piece, try to debunk each of these three beliefs. While the author does not slander startups at all (in fact he recommends that startups are better for certain people), he defends the experience of working at a bigger tech company.

I have had probably the most unique opportunity of working at a startup followed by working at a bigger tech firm, so I feel like I am in a good position to comment on the difference in cultures. I would like to start by giving my take on why creating startups is so popular at the moment – it is because the idea of being your own boss appeals to people, especially to the so called ‘millennials’, of which I am a part.

Before giving my take on this idea, I would like to list the benefits of working at a startup. I worked at one two years ago and thoroughly enjoyed my time there. From the perspective of a young employee, startups are small. This gives you transparent access to the upper management of the company, who more likely than not are very involved in your project. For example, the startup I worked at was still in its early stages, so my little office space was in close proximity to the CEO. I would give him and the other senior management regular progress reports on my project, which is a valuable skill to have in the workplace. Another benefit is the almost immediate transparent impact your work has on the company. For example, my code was used directly in the product that was being presented to potential angel investors and venture capitalists. This gave me an incredible sense of responsibility, and certainly increased my motivation.

As I said earlier, I think the biggest appeal of the younger generation to the startup culture is being your own boss and answering to no one. However, as depressing as it may seem, there is no one who doesn’t have people they must answer to. If you work as an employee at a startup, there is the upper management to answer to. If you are in the upper management, you have the CEO to answer to. If you are the CEO, there are the investors to answer to. The investors (particularly the VCs) themselves have people they in turn answer to. So, this motivation of being your own boss is misguided, and once people realize this, it could affect them regularly, which is, in my opinion, a potential negative of a startup. However, probably the biggest potential negative of a startup is how much it consumes you. If you are not careful, you could easily equate your life to the startup. You are the company and the company is you. However, as any successful entrepreneur will tell you, it is imperative that you draw the clear distinction between those two entities. To succeed, you need to put your blood, sweat and tears into the company, but at the end of the day still be able to distinguish between yourself and the company.

So the question arises again, why should people go down this path? I agree in principle with the author of the comparison piece in that big companies can provide you with equal or better pay, opportunities and experience. So what in the end is the appeal of a startup? I believe that although the chances of succeeding are slim, when it works, there will be no better feeling. I can’t think of a better form of happiness than to see your idea succeed as a company in the real world. This is why, creating a startup and trying my hand is certainly in my future plans.

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.