What I wish I had known as a computer science freshman
I’m a POD mentor at the University of Texas at Austin. This means I get to help the next generation of CS students with things like Linux (our lab machines use them), resumes, the career fair, interviews, and internships. Now that I am graduating, I wanted to make sure I shared what I learned before I left. This is not comprehensive, just simply a list of things that I found useful and that I tell my mentees.
Keep it to one page. In general, recruiters won’t look past the first page.
Leave off any non-relevant high school information. If you did UIL CS, robotics, or something else relevant to your major, keep it on there.
Include your relevant current and upcoming (next semester) courses. This takes up room and lets employers know what skills you have or will have by the summer. Include your technical classes, and if you are at UT and in FRI, include that.
Include some sort of project. Class projects are perfectly acceptable! These projects can also be from high school. Just be able to explain each project. Fun fact: I actually forget the details of my projects, so I have a Word document with a paragraph for each project, describing the general technical details. Side note: Comment your code! It helps you figure out what you were doing when you look back.
Be able to talk about anything and everything on your resume. Everything on your resume is fair game!
Include any CS clubs you would consider yourself a member of in college, even as a freshman. This takes up space and lets companies know what topics/areas you are interested in, and that you are involved in the CS community.
Scope out the companies that will be there. Realistically, aim for around 10-15 companies. Bring around 20 resumes — you might end up wanting to just hand your resume in for the busier companies. By knowing the companies you want to go to beforehand, you can research each company, which gives you something to talk about with the recruiter.
Know which companies accept freshmen. A lot of the big companies have freshmen-specific programs (Microsoft, Google, and Facebook are ones that come to mind). If you don’t know any others, I would recommend talking to local companies. They tend to be more accepting of local freshmen.
How to introduce yourself: “Hi, I’m X. Can you tell me more about your company?” or “Hi, I’m X. Do you have any positions open for freshmen?” The latter is especially nice because it lets you avoid wasting time. After some discussion, feel free to ask a question about their company or something that interests you. I landed an interview my freshman year with a tech company that dealt with real estate by mentioning that my mother was a real estate agent. It went horribly, but that’s beside the point.
Cracking the Coding Interview. Read it. I’ve even heard that people have been asked problems straight out of the book.
Practice with a friend and a whiteboard. Having a friend ask you questions and coding them on the whiteboard allows you to get comfortable with the general setting for interviews and what they will be like. They may ask you to write on a pad of paper, but that is much less common than a whiteboard.
Review your data structures. If you had a particularly excellent data structures class, review class notes or projects.
Be vocal! Make sure the interviewer knows what you are thinking at any given moment. This helps them know your thought process. (Sometimes, it’s not even about solving the problem — they may give you an especially difficult problem they do not expect you to solve just so they can see how you approach things or if you get discouraged.)
Think of interviews as a fun, problem-solving experience. Everyone has horrible interviews (my first interview was horrible… they asked strange non-technical questions), but they just make you better and give you more experience. If you think of interviews as a way to try and figure out a problem and show off how you think, you’re much less likely to be stressed out.
Depending on the company, your interview may not even be technical. Behavioral interviews tend to just go over your resume and end up with you talking about your projects. Be able to talk about your greatest technical challenge and how you overcame it, or a time where you had to work with others.
Besides for pay (hourly or salary, depending on the company), you should also ask about relocation, housing, and transportation. Does the company give you a stipend for these things? Does the company provide these things for you or will you have to find them on your own? These are good questions to ask.
Think of your internship as a way to try out a company. This is how you figure out where you would want to work — a start up, a medium-sized company, or a giant corporation. Each has pros and cons and each has its own company culture and feel.
If you don’t get an internship with a company, it’s totally fine! You can do a research internship, or make your own internship. You can contribute to open source (Google Summer of Code will even pay you), or offer your technical services to a local non-technical company. Every company at the very least needs or has a website! As long as you did something to hone your skills over the summer, you’re fine. Plus, it looks good that you took initiative to find other opportunities.
I hope you’ve learned something from this, and know that this is just a quick list of things that I have found useful. Feel free to reach out with any questions or comments, and good luck finding your dream internship!