I Applied to [redacted] and It Went OK

Having read your disclaimer about privacy and whatnot, I’ll be referring to all companies in this post by generic names, except for one company, which I’ll refer to as Hooli, for reasons that should be apparent to any fans of the HBO series Silicon Valley.

I’d come off my summer internship feeling somewhat disillusioned about my future. I had worked for a large motor control company in the midwest. I wrote setup software to assist a product in development. My project (as well as the other software projects I learned about) was non-priority and dealt with heavy bureaucratic interference. I spent a lot of time in a colorless cubicle talking to nobody – which was far more physically and emotionally draining than I would have anticipated.

So I came into my new job search wanting something completely different. I targeted companies based on certain properties – I wanted to work for a company that embraced and valued software (Hooli and DeltaCorp) or a consulting firm that would allow me to reach my potential as a problem-solver (AlphaCorp). There were some firms that blurred the line as software consulting firms (BravoCorp and CharlieCorp)- I looked at these as kind of the the best of both worlds, and also as ideally sized companies (I didn’t exactly love the slow grind of a large company that I experienced during my internship, but I also didn’t want to start my career at a squishy startup.)

The most surprising thing about the process was probably how much I trusted myself along the way. I can say this for a number of reasons. The primary reason was that I was far more confident compared to the nightmare that had been my previous year; trying to find an internship with a 2.9 GPA is a terrible experience and I wouldn’t wish it on my worst enemy. Going into a job search with a solid experience section on your CV is much more satisfying (I still had a 2.9, but most companies didn’t even ask this year. Odd.) I also trusted my abilities in the interview process. I felt better about communicating what I wanted from a job and how I thought I could do that job well. Maybe the most comforting part of the whole season was that I was convinced of the absolutely random nature of the job search process. I stopped freaking out about perfecting my resume or memorizing answers to questions. Either I would get the job or I wouldn’t, and a large part of that was entirely out of my hands. A lot of this was laid out in the Wired article assigned for class reading: if the interviewer was having a bad day, you could get passed up for almost no reason.

In fact, the most frustrating part of the interview process was the interview itself. Being halfway through an algorithms course, I didn’t have quite the grasp on many of the technical questions I would be asked. I probably could have prepared better (I borrowed a copy of Cracking the Coding interview and did some practice problems), but I didn’t have much time working two jobs and a full courseload. I did much better in the behavior and analytical interviews.

The important part of this process is that I was able to identify companies wanted to work for, apply to them, and have thorough, honest conversations with employees and recruiters throughout the experience. I honestly can’t say much as to the effectiveness of the system, having not really experienced the end product, but I would guess that it would be effective in the aggregate. Sure, the whole process was random and needlessly complex, but I’m pretty confident that it was able to weed out incompetence fairly efficiently.  I did experience some of the questions described in the CodingHorror article – problems designed to show simply that you have a basic knowledge of programming. An interviewer from DeltaCorp asked me to implement a hashtable using arrays and stopped me pretty shortly into my answer because he didn’t care about the answer, he just wanted to make sure I knew what an array was.

In that regard, even though the process was intensely stressful and taxing, I do think it is humane. It rewards hard work, ability, and persistence. Though the process is fairly random, it is also fairly reasonable. A candidate without any ‘strikes’ against him will generally have a good shot of coming out of the process with a competitive job, and a candidate that can’t solve a simple FizzBuzz problem will generally not. That’s not to say that ‘good enough’ is good enough; the process isn’t perfect to be sure, and ‘good enough’ is not worthy of our society, but it’s what we have to deal with now.

I Applied to [redacted] and It Went OK

Computer Art: Not a Thing

I don’t for a second give any merit to the idea that computer science is an art.

It might be a testament to the arrogance of programmers that this idea exists. The other two categories mentioned in the prompt are almost inarguably the two perfect terms to pigeonhole the field of computer science. Do we really hold ourselves in such high esteem that we need to try to call ourselves artists as well?

There’s no denying that there can be beauty and elegance in code, and that being a standout in this field requires skill, practice, and intuition. But beauty and elegance does not necessitate artistry.

Of the other two categories, I think it’s important to appreciate the duality of the computer science field. There’s the theoretical side, where we study what can and can’t be calculated and prove things with math and don’t even really need a computer at all. There’s also the practical side, where we write if-statements and make apps and use funny words like Hadoop and segfault. If you were to ask me to answer this prompt in one sentence, I would say that computer science is a two-headed beast of engineering and science, and I would differentiate between them with the examples above (among other things).

Beyond that, I think there needs to be some clarification on what engineering really is, especially in the context of the articles posted in this week’s reading.

apollo-13-houbolt

When I hear the word ‘engineering’, I immediately think of NASA. More specifically, 1960s, Apollo 11, space race NASA. These guys were on a whole other level of engineer, designing astonishingly advanced systems and components fueled by a literal desire to leave the planet (and potentially by drugs, these are engineers in the ’60s). Rocketry and ballistics sciences hadn’t been around too long: a few centuries for sure, but not anywhere near the level of what NASA was doing. They were problem-solving on an absolutely unprecedented scale with billions of people watching and very little room for error.

That is what, in my mind, exemplifies engineering. Smart people looking at problems, figuring out a way to solve them, and then actually making the whole thing work. I can understand the sentiment of articles like “Programmers: Stop Calling Yourselves Engineers“, that say things like:

When it comes to skyscrapers and bridges and power plants and elevators and the like, engineering has been, and will continue to be, managed partly by professional standards, and partly by regulation around the expertise and duties of engineers. But fifty years’ worth of attempts to turn software development into a legitimate engineering practice have failed.

But I disagree with them. Fifty years’ worth of attempts is enough to write off software development as illegitimate? In the scope of human existence, 50 years is simply not enough time. I highly doubt that the “professional standards” of  “legitimate engineering practices” sprang up overnight, or even in 50 years. And forgive us for taking some time to work out the kinks. We’re transmitting billions of bits of information around the planet at speeds that would shock the guys who built the aqueducts in ancient Rome right out of their togas. It might take a while to settle on the best way to do things. If anything, the diversity implied by a lack of standards and regulation serves as a reminder that our capacity as software engineers is ever-increasing.

As a whole, I think software development is an engineering discipline, with a separate section altogether for computer scientists (which is naturally a science). Don’t get me wrong, I love art. I would love to be considered an artist, and I would love to be so assured of the importance of my work that I can consider it art. But if I’m choosing one or the other, which in the context of this post I am, I’ll choose engineering every time. You can keep your books and your poems, and you can even keep your bridges and tunnels. Art is great for life on Earth. Engineering got us to the moon!

Computer Art: Not a Thing

Introduction

My first computer class was a middle school technology class. It taught the basics of Microsoft Word and Excel, explained the basic concept of a file system, and introduced some programming with QBASIC. This part of the class was seen by pretty much everyone as a waste of time, except for me. I ate it up. I stayed after class to learn more from the teacher. I worked on side projects after school, and figured out how to use programming tools on my home computer. By the time I started high school, I was a machine. I worked my way through two courses of web design before learning Java and OOP. When I finished AP Computer Science in my junior year, I had run out of computer classes to take, and my high school hired me on part-time as a network technician apprentice. This is when I was initially convinced of two very important things.

  1. Getting paid for something that fascinates you is absolutely the way to go.
  2. No matter where my future led me, it would probably somewhat involve making computers do things.

 

I was born and raised in upstate New York, and against all odds I followed my older brother to Notre Dame after I graduated high school. My older brother graduated as a chemical engineer in 2015. My younger brother, who will start attending Notre Dame next year, also wants to be a chemical engineer, but I think there’s still time for him to see the light.

Besides programming, which I honestly don’t find myself doing way too much of anymore, I’m a self-identified gamer. I love to collect and play strategy board games (and will gladly take on all Settlers of Catan challengers) as well as some strategy-based or role-playing video games. I am also a sports fanatic; I have been a sportswriter for Notre Dame student media since my first week as a Domer and have seen almost as many football games from the press box as I have from the student section. My other job is with the Office of Sustainability, where I hope to do my part in making the Notre Dame campus more efficient in its use of resource and keeping the community aware of its effect on its surroundings. After graduation, I’ll be moving to Chicago to work for Pariveda Solutions, a software consulting firm.

My reasons for studying computer science definitely correlate with my love for strategy games. Since I started studying computer science seriously at Notre Dame, I have always considered myself a professional problem solver. That’s what games and computer science really have in common. They both involve finding solutions to problems on many levels and scales. They involve identifying what information is important, and how it can be stored, and how it should be used. This abstraction leads me to an area of ethics involving computer science that I think is really fascinating: intellectual property. Intellectual property in the field of computer science can boil down to the ownership of a solution to a problem, a concept that honestly hurts my head if I think about it too hard.

I fell in love with programming and it grew into an obsession with problem solving. But not all problems have an immediate solution. Many problems have complications and externalities that go beyond what I know, and I hope that some of these questions are answered through this class. When can I use judgement in a professional environment to tell right from wrong? How can I prepare myself for issues unknown, and be mindful of social complexities not seen? How can I tell if my career is going in the right direction? More importantly, where is it going?

Introduction