How to Land a Top-Notch Tech Internship — and a Tech Job — While You‘re Still in School

Seven semesters ago, I started college with little programming experience but big dreams of working in tech. When recruiting season rolled around, I eagerly applied to dozens of companies. But rejections filled my inbox. No callbacks, no onsite interviews.

I kept trying, applying to over 150 companies. I faced failure far more often than success. But looking back, those stumbles made my eventual triumphs much sweeter. Along the way, I learned invaluable lessons and met inspiring people who guided me.

I landed an internship at Uber last summer. And I‘m on track to join one of my dream companies full-time after graduation. Now in my final year of school, I want to share the strategies that helped me break into tech. Whether you‘re a freshman or senior, CS major or not, I hope this guide enables you to achieve your career goals.

Building a Strong Foundation

Before diving into applications, you need solid fundamentals. This is often the most challenging part.

Master your intro CS classes. Although most companies don‘t scrutinize GPA, gaps in your core knowledge will make advanced topics and interviews extremely difficult. Focus and put in the work now to make your life easier later.

Pay special attention to data structures and algorithms – they come up frequently in technical interviews. If your school offers an algorithms course, take it as early as you can. Mastering these basics opens doors to internships and makes you a better engineer.

Develop your math skills. Computer science is deeply rooted in mathematics. You‘ll encounter concepts from calculus, statistics, linear algebra, graph theory, and more. Work through practice problems beyond your coursework to cement your understanding.

If you‘re not a CS major, don‘t worry! It‘s never too late to start learning. Enroll in intro CS courses if possible. If your school doesn‘t offer any, turn to online resources:

  • Harvard‘s CS50x is a free online intro to CS course
  • Coursera and edX have algorithms classes from leading universities
  • Consider a coding bootcamp program if you have the time and money

The most important thing is consistent practice and determination. Learning to code is like learning a foreign language – it takes time to gain fluency. Stay focused on getting a bit better each day rather than immediate perfection.

Personal Projects

With some coding knowledge under your belt, start building your own projects outside of class. Nothing makes you grow more as a programmer than taking an idea from start to finish.

Aim for 3-5 projects. They should showcase your technical skills, creativity, and follow-through. Include them prominently on your resume to demonstrate your abilities to employers.

Choosing what to make can be paralyzing. My advice: build something you would actually use. An app to track your workouts, a web scraper that alerts you to concert tickets, a Chrome extension that improves your productivity. Make it interesting enough that you‘ll stick with it.

Your first project should be a personal website. It‘s a great opportunity to learn HTML/CSS basics and show off your work. Check out templates on GitHub and WordPress for inspiration. Include:

  • An About page with your background, skills, and interests
  • Descriptions and demos of your projects
  • Your resume and contact information
  • Links to your GitHub, LinkedIn, and social profiles
  • A blog featuring your experiences and insights (optional but impressive)

Aim higher than simple scripts. Incorporate frameworks like React, practice object-oriented design, hook your app up to a database. Treat each project as an opportunity to learn something new.

Open source your code on GitHub. Recruiters look at GitHub to gauge your skills and passion. Thoroughly document your code, commit often, and keep your projects up-to-date.

Contribute to existing open source projects. It‘s an excellent way to build experience and learn best practices from veteran programmers. Look for projects related to your interests with active, welcoming communities.

Personal projects require major time investment, but the payoff in learning and career opportunities is immense. Practical experience is the single best way to grow as an engineer.

Getting Interview-Ready

Congrats, you‘ve submitted applications! Now it‘s time to prep for the interviews. Tech interviews are notoriously rigorous and require dedicated practice. The earlier you start, the better.

Master data structures and algorithms. I recommend working through the book "Cracking the Coding Interview" cover-to-cover. Don‘t just memorize solutions – deeply understand the underlying concepts.

Once you have a handle on the basics, practice problems on LeetCode and HackerRank. Treat it like a mental gym routine. Aim to solve at least 3 problems each day.

When approaching a problem:

  1. State the question back to the interviewer to confirm your understanding.
  2. Explain your thought process out loud as you work towards a solution.
  3. Start with a brute-force approach, then optimize with hints.
  4. Step through an example input to verify your solution.
  5. Consider edge cases and analyze time and space complexity.
  6. Translate your algorithm to clean, bug-free code.
  7. Discuss potential improvements and ask for feedback.

Expect to struggle at first. With consistent practice, you‘ll soon recognize common patterns and techniques.

Don‘t neglect behavioral questions. Interviewers want to understand your experience, work style, and cultural fit. To prepare:

  • Memorize your resume and be ready to discuss everything on it
  • Brainstorm 5-10 go-to stories that highlight your skills and character. Desirable traits: leadership, teamwork, persistence, communication
  • Research the company and prepare thoughtful questions. Show that you‘ve done your homework and are genuinely excited.
  • Practice answers to common questions: biggest weakness, dealing with conflict, why this company, etc.
  • Do mock interviews with a friend to get comfortable discussing yourself.

Come across as humble, authentic, and enthusiastic. Small talk and jokes go a long way in building rapport. Remember that the interviewer wants you to succeed.

Solving problems on a whiteboard takes practice. Get used to coding by hand, drawing diagrams, and vocalizing your thought process. The more you practice these skills, the more calm and collected you‘ll be in the actual interview.

Preparation is the best remedy for interview anxiety. Put in focused practice each day, and trust that you‘ll be ready when it‘s time to perform.

Networking and Applying

Landing an interview in the first place can sometimes be the hardest part. Here are some tips for getting your foot in the door:

Start early. Recruiting for summer internships can begin a year in advance. To be safe, start scoping out companies and preparing your resume 4-6 months ahead of your ideal start date.

Cast a wide net. You should apply to 30-50 companies, maybe more. Organize them in a spreadsheet with columns for company name, role, deadline, referral, status, and notes. This will help you keep track of your pipeline.

Utilize your network. Reach out to classmates, friends, or alumni working at your target companies. See if they would be willing to grab coffee, hop on the phone, or put in a good word for you.

Employees often get bonuses for successful referrals, so don‘t be shy about asking. A personal recommendation is the best way to boost your application.

Stay organized. Set up a separate email address for recruiting. Save recruiter contact info in a spreadsheet for easy follow-ups. Always be polite and prompt in your communication.

Apply through multiple channels. For each company, apply online through their careers page, email a recruiter directly, attend their events/info sessions, and get a referral if possible. The more touchpoints you have, the better your odds.

Write cover letters. For your top choice companies, it‘s worth writing a stellar cover letter that shows your passion and research. Highlight what attracts you to that company in particular. Relate your skills and experience to the role. Keep it concise and proofread carefully.

Clean up your online presence. Assume that employers will Google your name. Update your LinkedIn profile and GitHub readme. Adjust your privacy settings if needed. Post content that showcases your passion for tech, like tutorials or thought pieces.

Attend career fairs and hackathons. Even if you don‘t land an interview on the spot, you can build valuable connections with engineers and recruiters. Treat every interaction as a chance to learn and build your network.

Persistence is key. Sending out dozens of applications can be tedious and demoralizing. Remember that all you need is one offer to kickstart your career.

Evaluating Offers

When that first offer letter arrives, congratulations! Take a moment to celebrate your hard work before weighing your options.

Negotiate. Companies expect you to negotiate, and you have more leverage than you think. Do your market research on salary and equity for similar roles. Make a list of your accomplishments and skills. Then confidently and politely counter with a number that reflects your value.

Don‘t focus solely on salary. Consider the full package, including bonuses, stock options, benefits, and growth opportunities. Can you see yourself thriving in this role? Do you click with your would-be manager?

Think holistically about which offer best aligns with your personal and professional goals. No job is perfect, but some will propel you further than others.

Above all, choose a company where you‘ll learn and grow rapidly. The tech landscape evolves quickly, and continuously expanding your skillset is the key to a long, fulfilling career. Look for companies with strong engineering cultures, modern tech stacks, and challenging projects.

Final Thoughts

Breaking into tech is hard. You will face rejection, impostor syndrome, and burnout. But know this: if you put in the work, have patience, and stay true to yourself, you will make it.

The journey is daunting, but you don‘t have to go it alone. Find a mentor who believes in you. Lean on the support of family and friends. And when you succeed, pay it forward to those coming after you.

I was fortunate to have incredible mentors and peers who guided me. Their encouragement kept me motivated through hundreds of applications and failed interviews. This industry can uplift each of us if we make room for one another. Let‘s build the world we want to see.

Here‘s to your first of many dream jobs. I hope our paths cross someday. Until then, I‘m rooting for you.

Similar Posts