← Software EngineeringSWE Roadmap

Year-by-Year SWE Roadmap.

Freshman through senior year. What to do, when to do it, and what's at stake each summer.

The internship pipeline is real: freshman internship → sophomore internship → junior internship → full-time offer. Every summer builds the next one. The students who understand this in September of freshman year are the ones who walk into senior year with offers already signed.

High School — Build Before You Arrive

The engineers who land the best opportunities in college are almost always the ones who started building in high school. Not because the credential matters, but because the habit does.

1

Build something real.

An app, a website, a game, a hardware project. Even small-scale. The habit of shipping something — not just learning — is what separates people.

2

Excel at math.

Linear algebra, probability, and discrete math are the foundations of CS. Strong math in high school (AMC, AIME, USACO, national competitions) shows up on profiles across the board.

3

Get early exposure to CS competitions.

USACO, ACSL, hackathons, FIRST Robotics — these develop the problem-solving instinct that technical interviews test.

4

Lead something.

It doesn't have to be technical. A club, a team, a community initiative. Leadership at any level shows up on profiles across the board.

Freshman Year — Start Immediately

Freshman year feels like adjustment. It is. But the students who start positioning themselves in September — not January, not sophomore year — are the ones who have options by junior year.

Applications open in August and September — before most people have been to their first class. Apply immediately. The students who don't know this are the ones who find out too late.

1

Apply to early diversity programs immediately.

Google STEP, Microsoft New Technologist (freshman-specific), Meta University, and Amazon Propel are designed for freshmen and sophomores from underrepresented groups. Multiple engineers at Google and Meta got their start through STEP as freshmen.

  • See the full list on the Programs page
  • Apply to all of them — they're non-exclusive
  • Applications close fast — don't wait
2

Build your GitHub from day one.

Set up a GitHub account. Start committing code — anything you're working on, any project you start. By the end of freshman year you should have 2–3 projects with READMEs.

3

Join one technical club.

Find your school's ACM chapter, coding club, hackathon team, or CS-adjacent org. Apply in the first weeks. These clubs host LeetCode sessions, have alumni in tech, and connect you to people ahead of you on the same path.

4

TA a CS course as soon as you're eligible.

TA experience shows up consistently on top engineers' profiles. Some schools allow freshmen to TA introductory courses — look for these opportunities as early as freshman spring.

If you can't land a tech internship freshman summer — build something. Start a personal project, contribute to open source, do freelance work, participate in an MLH Fellowship. Don't let the summer be blank.

Sophomore Year — Get Real Experience

Sophomore year is when the recruiting gets serious. Your freshman year experience — even if it was a small project, a student org, or a non-FAANG internship — is now your credential. Use it.

1

Internship target: any tech company.

The goal sophomore summer is a real software engineering internship. It doesn't need to be FAANG. A startup, a mid-size tech company, a research lab — anything where you're writing production code. This internship is what gets you the junior internship that gets you the offer.

  • Google STEP and Microsoft Explore (the sophomore program) are most competitive this year
  • Apply broadly — the earlier you submit, the better your chances
2

Start LeetCode now.

Junior year recruiting starts in August and September. That means technical interview preparation needs to begin sophomore year — not junior year. Work through easy and medium problems consistently. 150+ problems by the start of junior year is the floor.

3

Go deeper in your clubs and projects.

Take on more responsibility in the organizations you joined freshman year. Lead a project, manage a team, start something that didn't exist. The sophomore year record is what you bring into junior year recruiting conversations.

4

Build your referral network.

Start reaching out to engineers at companies you want to work at. Coffee chats, informational interviews, LinkedIn messages. The relationships you build sophomore year become the referrals you use junior year.

Junior Year — The Critical Summer

This is the year that determines where you start after graduation. Every engineer in our research had an internship the summer after junior year. In almost every case, that internship led directly to a full-time offer.

Top tech companies close junior internship applications in October or November for the following summer. Some close sooner. Have your resume finalized before school starts. When a role opens, apply within 24 hours.

1

Applications open in August. Apply the day a role posts.

Google, Meta, Amazon, Microsoft, Apple, Stripe, Airbnb — have your resume and referrals ready before school starts.

2

LeetCode target: 150+ problems minimum.

Medium difficulty, patterns over memorization. Practice until a dynamic programming or graph problem doesn't feel unfamiliar — it feels like a category you've seen before. See the Interview Prep guide for what to study.

3

Use your referral network.

The coffee chats from sophomore year matter now. Reach out to your contacts when roles open. A referral dramatically increases the likelihood of getting an interview.

4

Target the team, not just the company.

It's much harder to switch teams as a new grad than to pick the right team at the intern stage. Research the teams you're interviewing for. Ask about the team in your interviews.

If junior summer doesn't go as planned: build a meaningful project, contribute to open source, find a startup internship. Arrive at senior year with something real to talk about regardless of where it came from.

Senior Year — Execute

1

If you got a return offer: evaluate carefully.

Your first team shapes your career more than the company name. Evaluate the team, the comp, and the growth potential before accepting. Then finish strong and start well.

2

If you didn't get a return offer: recruit broadly now.

Apply to companies of all sizes — startup to enterprise — in September and October. Your junior year internship experience, projects, and GPA are still strong signals. Cast a wide net.

3

The Master's as a path corrector.

If recruiting didn't go the way you wanted, a strong Master's program resets your pipeline. Georgia Tech OMSCS, Carnegie Mellon, Stanford, UIUC, and UT Austin all have strong recruiting relationships with top companies.

4

Non-linear paths work.

Some engineers went Capital One → Twitter → Meta over three years. Others started at a mid-size company and moved to a top company two years in. Every step builds the next one. The path is not a single gate.

What to Avoid

Joining 10 clubs shallowly.

One club where you lead something is worth more than ten clubs where you showed up twice. Depth signals commitment. Breadth without depth signals nothing.

Waiting until junior or senior year to start coding seriously.

Technical skill takes time to build. The students who do well in interviews started writing code years before the interview happened.

Only applying to your dream companies.

Apply broadly. A startup internship junior year is infinitely better than no internship. You can always move up — you can't un-lose a summer.

Treating LeetCode as something you can cram.

You can't. 150+ problems over 18 months beats 150 problems in a 3-week sprint every time. Start early.

Disappearing after coffee chats.

The referral value of a contact comes from the relationship. Follow up. Keep the relationship warm. These are the people who will go to bat for you.