Comprehensive
1 questions · Other (1)
A Comprehensive Guide To Getting An Internship
Question Details
EDIT: I want to note that this guide is mainly for those people that are shooting for larger to big 4 type companies. There were a lot of people saying they've never had to take a coding assessment etc. etc. That's neat and fine, but there are some companies that you absolutely have to do that. I've interviewed with DropBox, Microsoft, Trip Advisor, Airbnb, Uber, etc. and they all kinda test you on the same things. At the same time I've interviewed with companies where the whole process was ranking my skills from 1-10 and answering behaviorial questions. This guide is not necessarily directed at the smaller or non CS centric job opportunities. EDIT 2: I also want to stress by no means should finding an internship be the majority of your college life. Enjoy yourself, have fun, stay relaxed. Just get to planning ahead before the Fall comes. All of these tips aren't by the book, it's just what has worked for myself and my friends as we've gone through this process. ____ Hey guys, I’ve been on this subreddit for awhile now and I really wanted to write a comprehensive guide on getting past some of the hurdles in the internship process that it seems like a lot of you all are stuck on. I’ve been where a lot of you are now. I switched to CS the end of my 2nd semester with no experience and no knowledge of any language besides html and matlab, but after summer of hard work and talking to some advisers on how to make the most of my work, I secured an internship the following semester. Now I’m here a year later and I recently landed an internship offer from Amazon (2nd internship ever) after receiving 25+ rejections since August. Getting that offer was something I would've never really expected to happen to me this year, and I want to pass the little knowledge I have to some of you that may be struggling or losing hope right now in the job search process. I want to warn you, my advice cannot be applied overnight, and it will take a lot of self drive, but I do believe that if these steps are followed you will be making great strides towards your dream internship. The steps are as follows: 1. Learn Data Structures & Algorithms Enough to Explain to a non CS major 2. Apply What You've Learned in the Form of Projects 3. Use Those Projects to Build Your Resume 4. Perfect Your Resume 5. Practice Coding Challenges and Whiteboarding 6. Learn About Yourself 7. Apply Everywhere 8. Interview 9. Receive Offer I'm going to do my best to break down what each step means without writing a novel per topic. That being said, some sections are pretty lengthy so bear with me, pardon the inevitable typos, and hopefully you learn something. Note: Everyone won't start at step 1, some will be at 1, some will be at 5, and some may have just skipped 4 and will need to go back to be completely prepared. Use this guide in the way that it applies to you ___ * Learn Data Structures & Algorithms Enough to Explain to a non CS major You won't land any respectable CS internship without knowledge of data structures and algorithms. This is where you start your journey. It's not enough to know what a HashMap is, you need to be able to illustrate what it does, when to use it, and what the costs/benefits of using it are. Learn the basic sorting algorithms and how to code them. Finally, study BigO in terms of both time complexity and space complexity. I was fortunate enough to have the opportunity take a course on these things, and I was even luckier to love the course so I was motivated to learn. Depending on your knowledge, this may take 3 months in itself, but do not move on until you’re completely comfortable with all of the basic data structures and algorithms. Every step after builds on this. * Apply What You've Learned in the Form of Projects So now that you know the basics, use what you've learned to do some cool projects. Independent projects/Hackathons will be what separates your application from everyone else. I've heard recruiters from Amazon, Google, Statefarm, MailChimp, you name it, say this when asking them what they look for. It shows you have initiative. The summer after I switched to CS (from Computer Engineering) I spent the entire summer at home working on projects Mon-Fri (as if I already had an internship or was taking classes). I used online resources to walk me through projects, and then took the concepts from the tutorial projects and altered them to make them my own. By the end of the summer I had about 4 or 5 android projects that I could put on my resume. If you're a college student see if you're have sites like Lynda.com available for free use. If not, there are a plethora of free online resources at your disposal. The only cost is time. I sacrificed a lot of hangouts and video games for work. I made it a rule to be working at least from 11AM- 5PM during weekdays as if I was on the clock. Often it was much more than that because I was so engrossed in my projects. These projects also helped me get familiar with project developments cycle and my language of choice (Java/Html/CSS). Make sure to upload all of these projects to GitHub (commits or it didn't happen). * Use Those Projects to Build Your Resume You now have a portfolio of projects. So (for the most part) having previous internship experience, being "only a 2nd year", etc, doesn't matter. Do you best to make these projects the meat of your resume (along with any relevant work experience). Extracurricular clubs are fun and show you have a life outside of coding so leave room for that, but at the end of the day you need to highlight your technical triumphs. * Perfect Your Resume So in terms of getting your foot in the door this is a big one. I hear a lot of people saying it’s impossible to get an internship without internship experience. That’s not true it’s a paradox. Your personal projects are enough, you just have to sell them. Your resume is often times your only opportunity to sell yourself to a recruiter. I’ve seen a lot of talented people with straight up terrible resumes. DO NOT OVERLOOK THIS STEP. Go online and find a template for your resume. Unless you're looking for a design position don’t overdo it (no graphics), just use a template. The goal of a resume is to highlight all of your experience and skills in a concise manner so a recruiter can scan it in 30 seconds. They don’t have time to read paragraphs about each project (or even one paragraph). Keep everything to bullet points. Highlight the technical and or team specific aspects of each project, job, or extracurriculars. Your awards are sometimes cool to add but it tells recruiters nothing about your team experience or technical knowledge. Do what you can to keep everything strictly related to CS. Also, KEEP IT TO ONE PAGE. I could make an entire post on resumes. Just make sure you stick to a template (Google CS resume template) and don’t get long winded. * Practice Coding Challenges and Whiteboarding I’d argue that this step is by far the hardest to get through, partly because this step never really ends. Once you start interviewing you’ll soon realize that knowing your concepts isn’t enough. The technical interviewing process is a completely different game where you have to master tricks and critical thinking. The good news is to become good all it takes is practice. Get a copy of CTCI (Cracking The Coding Interview), make a Hackerrank and Leetcode account, buy a whiteboard off of Amazon, and just practice questions. You’ll never know what questions you’ll get in a technical interview, but once you’ve practice enough of each type (String manipulation, Linked Lists, Arrays) you’ll start to recognize what each question wants and how you need to begin working on this. PRACTICE. PRACTICE. PRACTICE. If you’re doing a “difficulty:easy” problem and can’t solve it within 30-40 mins, look up the solution, understand it (not memorize), move on to a different question, and come back to it in a few days and try it again. The HackerRank CTCI playlist on Youtube does an amazing job at teaching you how to approach these problems. Wait but there’s more, knowing the answer isn’t always enough. I know, it’s insane. You have to be able to accurately explain WHY and HOW you found the solution that you did. A lot of times you will have interviewers who just want to see if you can communicate well enough to jump into a team. Talk out loud when solving problems. Be comfortable with solving on a whiteboard and in an online IDE (or google doc, disgusting). The main takeaway from this should be to never stop practicing. * Learn About Yourself So now that you’ve mastered the technical side, don’t forget about the behavioral side of interviews because a lot of people do. Act like a human. Know your projects. Know your strengths. Know your weakness (Genuine weaknesses not those BS twisted “My biggest weakness is I have no weakness” garbage). Get a list of experiences in your head where you needed to work with a group, ran into a problem, had to take a leadership role, etc. People want to work with cool people and driven, not arrogant, odd, and annoying people. Keep that in mind when going into a face to face interview. * Apply Everywhere Somewhat self explanatory. I just want to remind you to not act like you’re better than any company that’s not a big 4 company. There’s so many opportunities out there. My internship was working with an IT focused company. I had no knowledge about or interest in IT pros, but after that internship I can say I learned a lot and had a great time. I also got a chance to gain some experience in front-end and fullstack development, which is what I really wanted all along. Apply everywhere. Make a list of everyone you’ve applied for. I’m talking at least 30+ (preferably 50+) applications need to submitted. If you’re really serious about gaining experience you need to broaden your scope of places to work. It won’t all be glorious or interesting but you can great some great experience from unexpected places. * Interview Here it is. The day you’ve been waiting for. You’ll be feeling a lot of things. My advice is to calm down, lock in, and do your best. Sometimes when I’m taking coding challenges or solving an interview question on a whiteboard I get so nervous I freeze up and forget everything. It may happen, it’s okay. Just do your best to collect yourself and calm down. I’ve done a handful of interviews and I still get nervous to some extent every time. Sometimes you may feel you royally blew it. Sometimes you may feel you did flawless. The more you interview the more you get comfortable with the process. Just take every interview seriously and give it your all. * Receive Offer Phew, after hours of thinking how to compose this we’ve reached the final step. Now let me preface this. You will receive rejections, and some will sting more than others. Don’t let that discourage you! Just learn from your mistakes and figure out what you can do better next time. When you finally receive that offer it will be awesome and you can go crazy and tell us about it. __ Hopefully all of this advices helps. I’m far from an expert on this. I’m not a recruiter or anything. I’ve just been working through this process and felt like I could help. If you guys have anything to add to this guide don’t don’t hesitate to comment!