Reflection on Project 2: Job Interview Guide

Writing a job interview guide really reinforced how complicated, involved, and stressful the job interview process is, especially for college students unaccustomed to the rigors of job searching. While every section of our guide includes valuable information, I think the most important sections are those on when to prepare, how to prepare, and what resources to utilize. If I could go back in time and do it all over again, I would have most certainly started my application and interview preparation earlier, especially for my internships. Luckily, I had two amazing internships at great companies the past two summers; however, I could have started prepping much earlier to make the process less stressful. By the time senior year came around, I knew to get an early start on preparation and applications. I am still amazed at the time and effort needed outside of regular classwork to really feel well prepared for job interviews.

With the seemingly ever-increasing amount of time and effort required for students to truly be well prepared and competitive in their job hunt, many colleges are facing the difficult decision of whether or not to reorganize and alter their curriculum to better face this reality. Overall, I feel that Notre Dame’s computer science courses have prepared me extremely well for a career in the technology industry. Nonetheless, I would suggest a few minor changes that could make a significant difference in the job and internship prospects of future c.s. students. The biggest suggestion I would have is to move the required Algorithms course from the fall of senior year to either semester during junior year. Because I was taking Algorithms concurrently with the majority of my full-time job search, I often encountered interview questions that involved Algorithms concepts we had not covered yet in class. This put me at a not-insignificant disadvantage compared to students from other schools, such as Stanford, that teach Algorithms prior to senior year.

Computer science is also an interesting field in that it falls under different colleges and categorizations at different universities. At Notre Dame it is within the College of Engineering – a natural home in my opinion. But I’d also be intrigued if Notre Dame explored separating out computer science into its own School of Computing. In my opinion, this would allow computer science students to take classes more appropriate to their interests that would better prepare them for job hunting and interviews, rather than having to take required engineering courses like chemistry and biochemistry. I can almost guarantee that I will never use anything from either of those classes. My time would have been much better spent focusing on computer science in those class slots.

All in all, I do think Notre Dame’s CSE program does a great job preparing students for the workforce. The preparation provided by coursework at Notre Dame along with the extra hours spent prepping outside of classes, attending career fairs, and taking 4 a.m. trains into Chicago for interviews all contributed to me landing a great job at a great company. And no matter how Notre Dame chooses to rearrange its curriculum, I still believe preparation outside of one’s classwork is going to separate the truly successful job seekers from those who graduate without offers in hand.

 

Reading 05: Boeing Whistleblowing

There are many reasons I decided not to concentrate in cyber security as a Computer Science student at Notre Dame. Among these reasons certainly stands the complexity and difficulty associated with developing strong computer security systems. It seems only a matter of time until the next large company makes headlines for allowing the theft of private customer data or for its own lax internal security practices. It turns out storing hundreds of passwords in a file called “passwords” might not be the greatest idea. Despite the difficulty associated with managing computer security at a large corporation, companies are still not absolved from the responsibility of doing their best to protect themselves, their employees, customers, shareholders, and the public at large through the development and practice of robust computer security protocols. When neglected, this responsibility often leads to an uncomfortable situation in which a company’s own employee(s) expose suspected wrongdoing within the company – a practice dubbed whistleblowing.

In 2006, several employees blew the whistle on Boeing, the largest airplane manufacturer in the world, regarding the company’s inability and – in their opinion – lack of efforts to develop and practice the necessary computer security systems to adhere to the 2002 Sarbanes-Oxley Act – a law aimed at preventing a repeat of the Enron situation in which shareholders were mislead by falsified financial data. The employees in question were subsequently fired in 2008 and their dismissal was upheld in court in 2011.

Considering that companies are rarely happy about whistleblowing, as evidenced by Boeing’s reaction of firing the employees who spoke to the media, there are usually two sides to every whistleblowing story. And in a world where we often see monolithic corporations like Boeing raking in billions of dollars in profit, it’s easy to come to the premature conclusion that everything Boeing did in this situation was wrong and everything the punished employees did was right. But in my opinion the reality of the situation includes much more grey than black and white, with rights and wrongs committed by both sides.

First of all, it seems readily apparent that Boeing was not treating its internal computer security employees fairly and ethically in the first place. When describing Boeing’s push to become Sarbanes-Oxley compliant, one employee spoke of “the first two years as pure hell.” The inability of the Fortune 50 company to meet its legal requirements more than three years after the initial compliance regulation start date coupled with the constant arguing and back and forth between company managers and external auditors further demonstrates the lack of organization, direction, and leadership that lead to a hostile work environment for computer security employees at the company.

At the same time, employees of a company who have access to private company data and information bear their own ethical responsibilities. I think the employees who were fired by Boeing had the responsibilities to both blow the whistle and maintain the security of private company information. Their major mistake came in the manner in which they blew the whistle, choosing to go directly to the media rather than filing their complaints solely through the proper legal channels. As unjust as it may seem, Boeing was legally acting within the law when it fired the employees as held up in court in 2011. The whistleblower provision of the Sarbanes-Oxley Act”protects employees from discrimination if they deliver the information to a federal regulatory or law enforcement agency, a member or committee of Congress or or a work supervisor.” The media is notably absent from that list.

Upon learning that “Boeing also recently suffered three separate cases of data theft in which the personal information of more than 400,000 employees was stolen,” one can partially understand the anger of executives when its own employees spoke to and leaked information to the media. At the same time, if reports of Boeing “spying on other employees to ferret out whistleblowers by videotaping workers and reading their e-mail” are true, one can equally understand the need employees might feel to out the transgressions they view are taking place. Furthermore, the fact that the whistleblowers of note in this case felt the need to go to the media rather than through the approved legal channels might point to a flawed whistleblowing system itself, one that doesn’t promote and incentivize proper, ethical behavior within the process.

Now that the dust has settled on the 2006 whistleblowing at Boeing story, it seems to me that unethical decisions were made by both parties – the company and the whistleblowers. Boeing could have treated its own employees in a more ethical manner while attempting to implement Sarbanes-Oxley compliance in the first place, and the employees in question could have brought their concerns to the attention of proper, legal correspondents, rather than the media, to best protect the private data and information of Boeing. If anything can be learned from the confusing, complicated tale of whistleblowing at Boeing, it might be that these stories often have no clear cut ethical and unethical participants.

 

Reading 03: Burnout

Although I’ve never experienced burnout myself, I do believe that burnout is a significant problem in the workplace, particularly in the technology sector prone to high stress and long hours. The readings for this week present a variety of interesting, differing takes on burnout. I’d like to address a few of these and and how my own take on burnout factored into the search for my first post-graduate job.

One of the readings on burnout for this week notes that “considerable evidence shows that overwork is not just neutral – it hurts us and the companies we work for.” For me, the first thing that comes to mind when mentioning burnout is long hours. At first I assumed that burnout must be inevitable – it may be variable for different people but eventually everyone has to hit their breaking point. Given enough time and pressure, everyone must assuredly succumb to burnout. But is that really true? Yahoo CEO Marissa Mayer certainly doesn’t seem to think so. In the reading focusing on her thoughts on burnout, she expresses opinions on burnout that differ in certain key aspects from what seems to be general consensus on the topic. Rather than focusing on the actual number of hours worked, Mayer’s philosophy is to ensure that her employees “have time in their schedules for those things” that are really important to them, whatever those things may be.

When Mayer says she “doesn’t believe in burnout” it at first comes across as if she doesn’t care about driving her employees to work long hours and disregards the “sickness that resembles clinical depression” as referenced by another of our readings. But upon further reading of the article on Mayer, it becomes clear that she simply believes in a refreshing focus on individual employees and the needs those employees require in order to stay fresh and effective in the workplace.

Despite having little personal experience with burnout myself, I knew early in my search for a company with which to begin my post-graduate career that I wanted to find a company that respected my time, ambitions, and pursuits outside of the office. For me, burnout doesn’t seem to be necessarily directly correlated with hours. At Notre Dame, I know there are some projects and assignments that I don’t wish to spend countless hours working on. Yet there are others I’m so passionate about that I can work on them for hours on end without feeling any negative side effects from my efforts. I’m sure the same will apply in some capacity to my experience in the workplace.

Luckily, the company I’ll be working for values the ability of its employees to both step away from the office and to pursue those side projects and activities they are interested in. I’m sure I’ll be taking part in various office sporting events such as its recreational basketball league, as playing sports and staying physically active is one of the methods I’ve found effective in avoiding burnout in college. Furthermore, in several rare instances for the consulting industry, my company not only maintains a 40 hour work week, it also provides its consultants overtime pay if the 40 hours per week is exceeded should a project hit “crunch” time and extra work be required. Additionally, a variety of other employee friendly initiatives such as company financed training, tools, and other employee development coverages all factor into what I believe will be a passion-inducing, burnout free work environment.

Reflecting on Project 1: Code of Ethics

When setting out to write our own code of ethics for Notre Dame Computer Science and Engineering students, we modeled our code on the ACM code of ethics for industry professionals while making some key changes to reduce ambiguity while also attempting to model different portions of our ethical code to better fit the lives of modern day students and the ethical challenges that they face. While the professional workplace certainly introduces areas of ethical ambiguity, we strived to eliminate as much ambiguity as possible. Additionally, many of the altered/new topics discussed in our code of ethics were written with the intention both serving students well while at Notre Dame as well as preparing them for ethical behavior in their post-graduate careers.

Both in the workplace and perhaps especially during college, some assignments and tasks may seem boring, unrewarding, and/or superfluous. Our code of ethics outlined the importance of giving “100% effort on any given assignment” with the understanding that the “quality of each assignment reflects not only on the individual but also on the University as a whole.” Similarly, each assigned task reflects on an employee and his/her company in the professional world. This is just one example of how we attempted to tailor some of our ethical codes to function as natural precursors to those found in the ACM code of ethics. I believe we succeeded in outlining the importance of ethical behavior early in one’s academic career and how such behavior can build upon itself to produce an ethical professional once one’s time at Notre Dame has concluded.

While our code of ethics could certainly apply to students at university’s around the country/world, we also tried to imbue certain sections of our code of ethics with the essence of what it means to be a Notre Dame computer scientist in particular. Notre Dame students in general are held to a higher calling of not simply doing well for themselves, but also doing “good” in the world. This calling appears in various points of our code of ethics, such as in section 3.1 where we address the responsibility of Notre Dame computer scientists to not only conduct themselves ethically, but also to promote the ethical behavior of others.

Despite our best efforts, it is impossible for a code of ethics to address every possible scenario of ethical uncertainty and question. Our code of ethics certainly has weaknesses, not the least of which is the fact that all those who wrote the code are still currently students, and thus lack the degree of ethical experience possessed by other more experienced industry professionals (such as Professors and administrators at Notre Dame). To attempt to combat some of the weaknesses in our code of ethics, we included several provisions noting that when in doubt, students should use their best judgment while remembering their ethical imperatives as a Notre Dame student.

While certainly beneficial to outline a code of ethics for Notre Dame computer science students to follow, I also believe as previously mentioned that a code of ethics can never hope to cover all possible situations that may present an ethical dilemma. As such, one must combine a code of ethics with logical, well formulated personal thought and decisions. A code of ethics serves as a great framework for ethical decisions, and by having and reading one, it does help to make one cognizant of the ethical ramifications of every decision you make. But to actually put ethics into practice, one must be able to count equally – if not more so – on one’s own morals and intuition.

Reading 02: The Interview Process

When beginning my senior year at Notre Dame, I knew I didn’t want to be one of those students who graduate with no concrete plans for the future, forced to return to mom and dad’s house with precious little time to figure something out before the unstoppable arrival of student loan payments. I threw myself into the job application and interview process earlier than many. Little did I know the odyssey I was embarking on.

Full of experiences mostly good and occasionally bad, the job interview process was certainly always interesting. I’m still amazed at the diversity of procedures and methods used in the job application process at different companies across the technology sector. In his article “Why Can’t Programmers…Program,” Jeff Atwood notes that it is likely “foolish to begin interviewing a programmer without looking at their code first.” From the start of my own interview process, I endeavored to ensure that companies would be able to quickly and easily see evidence of my coding abilities. Several of my interviewers for various positions noted their approval of my inclusion of a link to my github profile as part of my application. By allowing them to see the source code of various projects I’ve worked on, I think I was able to establish my credibility as a competent programmer, at least in part, before I even set foot in the door for an interview.  I believe this step of preemptively demonstrating my coding abilities proved advantageous for both myself and those interviewing me, as we were often able to advance past simple coding questions into some really interesting topics of discussion, especially when interviewing for consulting firms that take particular interest in a candidate’s ability to effectively communicate and interact with a diverse team of coworkers.

In “On the Unreasonable Reality of ‘Junior’ Developer Interviews,” Sam Phippen notes that Senior Developer interviews usually “take the form of some kind of technical discussion with the interviewer” while excluding any real time coding. Interestingly, I think some of my best interviews – both in terms of my own performance and the feedback I received from the company involved – were actually of this structure. By providing my github profile and and a brief description of a few of my previous coding projects beforehand, my interviewers and I were able to have a concrete discussion about my experiences, my successes, and my failures – all without having to spend valuable time silently coding on paper or a whiteboard. For me, much of the stress of an upcoming interview always stemmed from the potential of facing a coding test I didn’t know how to solve. As expected, I was able to more confidently and enthusiastically discuss the technical details of a project I spent weeks or months working on than a test I spent the last thirty minutes on.

Of course some of my interviews consisted of nothing more than a guided coding exam of sorts, either in person, over the phone, or live online. I certainly understand the logic of companies that go this route, especially if the statistic of 199/200 applicants not knowing how to code is true. And I may have previously voiced my preference for another style of interview, but that isn’t to say I didn’t enjoy some instances of these coding exams. A bit of excitement and challenge does accompany the stress of these interviews. I tried my best to prepare for this style of interview by going through several online “interview coding test preparation” tutorials as well as a few coding exam books aimed at helping candidates ace interviews. While enlightening, I’m not sure how much this preparation actually helped, as I never really saw interview problems similar to those I studied beforehand. But the simple act of brushing up on key coding concepts definitely couldn’t have hurt.

Several companies I interviewed with also administered various forms of “take home” coding exams prior to advancing candidates to the main stage of in person interviews. This method proved frustrating on occasion. Sometimes after submitting a take home exam, I would simply never again hear from a company, having to assume I didn’t make it to the next stage. Or if I did receive a undesired response, it rarely contained any concrete analysis of my performance on the exam, usually simply stating their gratitude for my application and their desire for me to apply again in the future. Of course there are two sides to every coin, as companies (especially large technology firms) have to sift through hundreds of applications for a single position. But as an applicant for that position, I often wished more concrete feedback was given so that I could improve my performance on future applications. Sometimes a lack of feedback and communication in the process made it feel like I was seen as just another name in a company’s stack of applicants rather than a real-life person passionate about the opportunity to work for the company.

With my first post-graduate job interview process complete and a position firmly in hand, I can certainly attest to the unique nature of interviewing for a job as a programmer.   Was the process efficient? Usually but not always. Was it effective? Mostly yes. Was it humane? For the most part.. And was it ethical? Despite any minor complaints previously mentioned, I’d have to say yes. Thankfully, I never experienced the type of embarrassment noted by Steve Shogren in his post “Interview Humiliation.”

We’ve talked in class about the unique nature of computer science in general, and how difficult it is to classify as a discipline. For this reason, I can’t blame companies for their differing interview styles and practices. Fittingly, the interview process as a computer scientist is diverse, sometimes complicated, and definitely hard to condense into one simple methodology.

 

Reading 01: What is a Hacker?

When told to picture a ‘hacker,’ many may immediately envision a disheveled computer programmer with an unkempt beard sitting alone in some dark room, furiously typing away at a keyboard. More often than not, this first impression includes the notion that a hacker also intends to crack into some government or big company site for nefarious purposes. Putting aside momentarily the ethical and moral implications of this characterization of a hacker, the common perception of hackers even goes so far as to categorize the types of other activities they enjoy, the food they eat, and the myriad of other ways in which they live their lives. If common sentiment and some of the readings for this week are to be believed, then I hardly qualify as a hacker. I love sports. I’m organized in both the digital and the physical world. And I like dogs more than cats. Each of these facts contradicts the picture of your average hacker as outlined in the article “A Portrait of J. Random Hacker.” Furthermore, “in the hands of a sensationalist media, the ethos of hacking is conflated with the act of cracking computer security” according to the article “How Yuppies Hacked the Original Hacker Ethos.” My severe lack of knowledge regarding complex computer security protocols must then certainly disqualify me from consideration as a hacker. And yet despite the contradiction posed by the opinions presented in these articles, and often the public consensus at large, I nonetheless consider myself a hacker. Why?

I consider myself a hacker because I don’t subscribe to the narrow view of hackers presented by sensationalist, popular media. While individuals cracking cyber security are certainly hackers in their own right, they aren’t alone. In my opinion the term ‘hacker’ need not even be relegated solely to those in the field of computer science. The word hack from which it was derived certainly sees frequent use outside the field of computers. “The Word Hacker” article notes that “when you do something so clever that you somehow beat the system, that’s also called a hack.” ‘Hacks’ exist across almost every professional discipline. And the internet is full of individuals touting ‘lifehacks’ they use to simplify everyday tasks. To me, a hacker is simply someone who utilizes creative, cunning thinking to accomplish a task in the easiest, most efficient manner possible, whether applying these key characteristics to computers or any other endeavor. This definition allows me to easily describe myself as a hacker.

As a computer science student concentrating in media computing, my days are most often spent focusing on what visually appears on one’s computer screen. In the realm of visuals, what looks good enough is actually good enough. The article “Hackers and Painters” summarizes this notion best by stating that “What hackers and painters have in common is that they’re both makers. Along with composers, architects, and writers, what hackers and painters are trying to do is make good things.” My concentration is all about the simple act of making good, visual things. With this in mind, a whole world of ‘hacks’ becomes available to make my life a little easier.

Of course my life as a hacker doesn’t include the ethical questions faced by those hackers who find themselves in the more talked about cyber security field. If I cheat and use a few little hacks that allow one of my animated scenes to render faster without producing much of a noticeable difference on screen, no one suffers any consequences as a result. This doesn’t disqualify my role as a hacker however. No one ever said that a hacker must necessarily be breaking the law, exposing private information, or engaging in other ill-intended activities. We see new forms and expressions of the hacker ethos every day – DIY culture, urban farms, 3D printing, etc. People are constantly creating, reinventing, and finding new ways to make tasks easier, often outside of whatever boundaries/expectations may have previously been imposed. We’re all hackers – no unkempt beard required.

Post 2: Why Not All Three?

Is Computer Science an art, engineering, or science discipline?

I think part of what drew me to computer science in the first place is the discipline’s wide open nature. To me, it really can be almost anything you want it to be. As I mentioned in my introduction, I’m concentrating in media computing, so it would be very easy for me to argue that computer science is an art, as I’ve chosen to focus on its abilities to create digital, visual media for entertainment. Throughout my academic career at Notre Dame, I’ve often applied computer science in an artistic manner. From group projects consisting of recreating classic games like Pacman and Donkey Kong to the process of creating my own short, animated film, I can personally attest to the fact that computer science applications often require imagination and creativity – two hallmarks of art. And yet, I too have plenty of experiences with computer science that don’t seem artistic at all, and I’m sure many more will follow in my professional career as a software consultant.

Just like the argument can be easily made that computer science is an art, so too can one very simply make the case that it is falls instead in the field of engineering. After all, computer science does fall within the College of Engineering at Notre Dame. But, that is not the case at every school. Across the country, computer science majors find themselves in a variety of other colleges, such as Arts and Letters. Either this disparity itself lends credence to my assertion that computer science can be many things at once or Notre Dame is simply crazy for sticking it in the College of Engineering. Notre Dame isn’t crazy. Just as I’ve frequently applied artistic skills in my applications of computer science, so too have I applied common engineering skills. And even in my artistic computer science endeavors, there still lies the general engineering undercurrent of logical problem solving.

And of course it might be easiest of all to argue that computer science is simply a science. The word science does appear in the discipline’s name after all. Merriam-Webster loosely defines science as “knowledge about or study of the natural world based on facts learned through experiments and observation.” Computer science certainly falls within this definition, as it consistently helps in the study and improvement of the natural world. Whether applying it to physics simulations, medical studies, or biology research, plenty of people use computer science in a purely scientific manner.

Is computer science an art, an engineering field, or a science? I’ll answer that question with a question of my own. Why can’t it be all three?  With strong, valid arguments supporting computer science’s status as an art, an engineering field, and a science, we must conclude that computer science truly is what you make it. And that fact in turn makes computer science itself something really powerful, something really diverse, and potentially, something really dangerous. Because computer science can exist across the spectrum of all three scenarios mentioned, it too brings with it a diverse array of ethical questions and challenges, each requiring its own unique consideration and answers.

Introduction

My name’s Ryan Moran. I’m a senior, computer science major at Notre Dame concentrating in media computing. As someone concentrating in media computing, I’m particularly fascinated by the ways in which computer science can be used to produce visual, tangible products such as animated films, video games, etc.

I’m really interested in the role of computer science in society moving forward. It seems like we’re reaching a transition point after which computer science (and technology in general) may start significantly taking away jobs and tasks from humans rather than creating them. With the rise of artificial intelligence, it makes one wonder if someday even the computer scientists themselves may be replaced by machines.While present day issues such as government surveillance, privacy, and freedom of information are interesting, I’ll be particularly eager to hear about some of these new ethical issues that computer scientists may face in the not so distant future.