CS Internship Guide #9: Choosing An Internship

Part of the CS Internship Guide


Congratulations! You’ve received internship offers from multiple companies. Which will you choose? If you’re like me, you might swing back and forth between options and have a difficult time deciding. But don’t worry, you’re only interning there for the summer, not the next 20 years. So if you’re having trouble choosing, consider the following factors.

Type of work

What will you be working on at your internship? Will you be collaborating on a massive project or hacking out concepts solo? Will you be writing unit tests or developing new features? None are inherently better, but you might prefer one over the other. Additionally, some technologies may open more doors than others during your post-graduation job search (I don’t know many companies looking for Visual Basic developers).

Compensation

Though everyone likes dollar bills, the company that pays the most cash is not always the best option. Does the company provide housing and transportation? Keep in mind the cost of living in their city, too.

Also, never take an unpaid internship. If you’re a computer science student, any real company would be willing to pay you good money ($15-$40 an hour or more).

Location

If you’re dead-set on certain areas of the world, you can narrow your choices. However, I wouldn’t cross off certain companies just because you might not like the location. Summer internships are a great way to test out living in a new city.

Company Size

Small and large companies have different advantages. Interning at a new startup will put a wide range of responsibilities on your shoulders. Large corporations can have huge internship programs and nice perks (such as paid housing and free snacks), but your contributions may have less of an impact on the final product.

Also consider the:

  • Industry (Retail, Healthcare, Finance, etc.)
  • Company’s reputation (internships at places like Google open more doors than lesser-known companies)
  • Company culture (more formal or more casual?)

Talking to recruiters might help, but few employees highlight the negatives of their company. Oftentimes you can ask other students if they’ve interned at certain companies. Almost everyone is happy to tell you about their internship experiences. And don’t forget that your favorite search engine is always available with more information.

In the end, your summer internship will be your decision. Don’t stress over it. You’ll learn a terrific amount no matter where you go.

What factors do you consider the most important when selecting a job or internship?

Posted in CS Internship Guide, Software | Tagged , , , , , | Leave a comment

CS Internship Guide #8: Stellar Questions to Ask Recruiters

Part of the CS Internship Guide


Before You Go

After a career fair conversation or interview, you’ll probably asked if you have any questions for the recruiter. Always ask at least one question. It shows that you’re interested in the job, and there’s probably tons of things you’ll want to know anyway.

So, here are a few guidelines:

  • Ask questions that are relevant to the internship and the company
  • Prepare for the career fair (or interview) and arrive with a list of questions in mind
  • Likewise, have a basic understanding of the company (what they do, their size, location, etc.)
  • Don’t ask anything that you could easily find on the company’s website
  • Ask questions humans can answer. Recruiters are people, not robots.
  • Don’t ask lots of questions for the sake of asking lots of questions
  • Feel free to ask questions that you think few people have asked before

OK, give me some examples

Here are some questions that I’ve asked (or been asked) during career fairs or following whiteboard programming interviews. Since a software engineer probably knows more about his project than someone from human resources, and a few things are more relevant to post-graduation jobs than internships, I’ve divided the questions into several sections.

When talking to anyone, including HR or non-technical recruiters

  • Why do you work at this company?
  • What did previous interns think of their internship?
  • What is the company culture like?
  • Is there a dress code?
  • How many people work at the company? (Only if you couldn’t find a number on their website.)
  • What do you like about your job?
  • What’s one thing you would change about your job?
  • If you were the CEO of the company, what would you do differently, and what would you do the same?
  • How are you different than your competitor, XYZ Co?
  • Why should I work at this company as opposed to XYZ Co?
  • Can I get your email address? (Use this to follow up in a week or two. Even better if this recruiter is the one making hiring decisions.)

When talking to an engineer

  • What programming languages do you use?
  • What kinds of problems do you encounter on a day-to-day basis?
  • What kinds technical challenges do you enjoy working on?
  • Are you agile?
  • How do you think your product/website/application/solution will beat the competition?
  • Why do you use X language/framework/technology instead of Y?

Concerning a post-graduation (“full-time”) job

  • How much do full-time employees travel?
  • How easy is it to change teams?
  • What perks about your job do you like the most?

Feel free to come up with your own questions, or ask other students for advice. Good luck at your next interview!

What questions do you like to ask recruiters?

Posted in CS Internship Guide, Software | Tagged , , , , , | 3 Comments

CS Internship Guide #7: How to Ace a Whiteboard Programming Interview

Part of the CS Internship Guide


whiteboard_with_markers

Have you ever written a program on a whiteboard? Every interviewee will have to code without a computer at some point during the interview process. Like talking to a recruiter at a career fair, whiteboard questions have a typical pattern. If you’ve never tried coded without a computer, now’s the time to learn.

Fortunately, if you’re reading this, you’re already closer to stunning your next interviewer. This post will guide you through a whiteboard coding interview, and, at the end, suggest a few practice problems for you to start on.


Imagine you’re in the interview room. You’ve talked a little bit about yourself, highlighted key points on your resume, and answered a few high-level questions about your skills. Then, the interviewer asks you to write a function on a whiteboard.

Like many interview questions, the interviewer wants to see how you approach the problem, not an immediate correct answer. Take a moment to think about the problem before jumping into the code. Ask for clarifications. Say what you’re going to do, and give a high level overview of what you plan to write. Oftentimes, interviewers will suggest changes to your plan if they think you’re headed in the wrong direction.

hqdefaultPick up the marker. Write a function header (if needed). Don’t worry too much about syntax–the interviewer wants to know if you understand how to write an algorithm, not whether you memorized every syntax rule in the C++ specifications.

As you write the first lines, talk about what you’re doing. Explicitly state your assumptions. Tell the recruiter why you’re doing things a certain way. Sometimes they’ll ask you to explain your code–why did you choose a tree instead of an array? Clearly explain your decision, and if they suggest changing your program, you’ll probably want to follow their advice. The interviewer is there to help guide you to a solution, not to criticize you.

It’s okay if you make a mistake. Tell the interviewer that you’ve noticed an error and correct it. Don’t declare that you’re finished without talking through a few “tests.” Check edge cases such as null values and 0-length arrays.

Once you’re done, the interviewer will point out any bugs in your code and ask you to fix them. Don’t worry, this happens in every interview. Again, explain your thought process and talk through your edits.

When you’re finished with the whiteboard, the interviewer may ask if you have questions for them. Always ask at least one question. (More is better!) However, don’t ask questions for the sake of asking questions. Don’t ask obvious questions, either. Inquire about something you honestly want to know more about, such as their company culture, the languages they use, or what you’ll do as an intern.

When the interview is over, thank the interviewer and shake their hand. Ask them how long it will take for them to make a decision (some companies hold several rounds of interviews before sending an offer). You can ask your interviewer for a business card or email address, but it’s not required (thank you emails are too formal for the tech industry).

Congratulations! You’ve successfully completed your first whiteboard programming interview.


The best way to learn whiteboard coding is to do it.

If you’ve never coded without a computer, you should practice right away. Get out a piece of paper, a writing utensil, and choose one question below to complete in the next 15 to 30 minutes. Don’t limit yourself to these–there are tons of other resources on the Internet.

Question 1:

Write a function that prints out the numbers 1 to 100. If the number is divisible by 3, print “Fizz” instead of the number, and if it’s divisible by 5, print “Buzz” instead of the number. (If the number is divisble by 3 and 5, print “FizzBuzz”)

Question 2:

Write a function that takes in a string and replaces all occurrences of the sequence “dog” with “fish”.

Question 3:

Write a program to reverse an integer. For example, 1234 becomes 4321 and 1000 becomes 1.


Do you have any tips for whiteboard programming? Let us know in the comments.

Posted in CS Internship Guide, Software | Tagged , , , , , , , | 9 Comments

CS Internship Guide #6: The One Sentence Internship Candidates Need to Read

Part of the CS Internship Guide


Okay, this isn’t one sentence. Rather, I asked a several interns (and former interns) for one sentence of advice on getting an internship. Here are my favorite responses.

Andrew Armstrong Kogler, Software Development Intern at RGM Advisors, LLC:

Focus on learning and legitimately getting good at something instead of chasing resume bullets.

Jonathan Ibers, Software Development Intern at Tableau Software:

Interviewers care as much (if not more) about how you go about solving a problem than they do getting the correct answer.

Brian Schmitz, Software Engineer Intern at Google:

Grind on leetcode.com to be prepared for interview questions.

Arnav Sastry, Intern at Twitter:

1. Competitive programming + Cracking the Coding Interview to have the chops to pass interviews. 2. Apply literally everywhere (like if you think you’re done, you’re not done). 3. Research the company before the interview. 4. Have fun! Even if you don’t get any jobs (unlikely if you do steps 1-3), you’ll learn a ton.

Gabe Licona, Intern at Infusion:

Ask unique questions when talking to recruiters.

Moises Holguin, Internal Product Team Intern at Square:

Literally apply everywhere. Even if you don’t want to work there full time. Many doors open after your first internship. So just apply everywhere for your first one.

Moiz Rizvi, Software Engineering Intern at Salesforce:

Take data structures ASAP, actually go to class everyday, and pay attention.

Marek Bejda, Technology Intern at JPMorgan Chase:

Go to the darn career fair.

Megan Knocke, Intern at Rackspace:

Network. Recruiters will remember talking to you the previous year and be happy to see how you’ve grown.

Kyuu Ketsuki, Software Developer at Athenahealth:

If you don’t get an internship one summer, be sure to work on some project to show you’ve been developing your skills.

Raeeca Narimani, Student at the University of Texas at Austin:

Start a side project. Many recruiters ask if you’ve made anything in your spare time.

John Ly, Associate Software Engineer at The Advisory Board Company:

Love what you do.


Though not everyone responded with just one sentence, I couldn’t pass up the opportunity to share their good advice. I’d like to thank everyone for their wisdom, and best of luck to you all, wherever you are next year!

What one sentence of advice you would give to freshmen who want an internship?

Posted in CS Internship Guide, Software | Tagged , , , , , , | 2 Comments

CS Internship Guide #5: Debunking Myths About Career Fairs

Part of the CS Internship Guide


If you want an internship, go to the career fair. A sizable number of people think they shouldn’t attend career fairs because they think they have no chance of landing an interview. Unless you have a medical condition, I think that anyone with the will can benefit from attending. After all, career fairs are a terrific place to find rare opportunities.

Here are a few things I’ve heard students say about why they don’t want to go to the career fair. All of these are myths, and I’ll explain why.

  • “No company would want to hire me because I’m a freshman.”

Personally, I’ve seen dozens of freshman land internships with companies ranging from startups to Google. Even first semester students have received offers.

  • “You need experience to get experience, and I don’t have any.”

Create some personal projects (perhaps at a hackathon), and put them on your resume. If you’ve taken programming courses, you can talk about what you’ve learned in class. And if you don’t have any experience at career fairs, it’s especially important that you go. How else will you learn how to network with professionals?

  • “I’m studying abroad/taking summer classes so I can’t accept an internship offer.”

That’s great! But you can still attend the career fair to talk with recruiters. You can also build relationships for next year.

  • “Companies only take resumes online.”

Wrong! Most recruiters at a career fair take paper resumes. Plus, a conversation in real life gives HR a better picture of your talents than a dull PDF.

  • “My GPA is too low.”

First of all, GPA probably matters less than you think. If your grades could use improvement, don’t list your average on your resume. Instead, highlight the awesome programs you’ve developed.

  • “I don’t like talking to strangers.”

Unless you’re a hermit living in the wilderness, your job will almost certainly involve talking with other people. Try to think of a job that involves no communication whatsoever (if you can, let me know in the comments). Talking to other people is a part of life that no one can avoid, so you might as well start practicing now.

  • “There are no companies at the career fair that I’d want to work for.”

Out of the dozens of companies attending the fair, there’s not a single one that interests you in the slightest? Try talking to a few company representatives at the fair. If you’re still not interested, that’s fine. But you may find out a seemingly boring industry is more exciting than you thought. And even if you don’t accept an offer from a particular company, you can still practice interviewing.


Remember to prepare for the career fair in the weeks leading up to the event. And if you have experience with career fairs and internship hunting, help other students and encourage them to go.

Are there other myths that students believe about career fairs?

Posted in CS Internship Guide, Software | Tagged , , , , | 3 Comments