3. Year: Senior
Major(s): Business (MET) and EECS
Professional Interests: Software engineering
Work Experience:
● Roblox
● Nuro
● Microsoft
● Facebook
LinkedIn: https://www.linkedin.com/in/austinjsun/
Email: austin.jsun@berkeley.edu
Introduction – About Austin
5. Advice for Underclassmen
Types of experiences* that typically attract recruiters’ attention:
● Past software engineering experiences (bonus points for reputable companies)
● Personal projects / Hackathons
● Course staff or experience teaching a computer science course
● Research experience in computer science or a relevant field
● Involvement in computer science organizations on campus
● Computer science competitions (ACM, ICPC)
* This list is by no means exhaustive. It is based off my own experience and what I’ve noticed on others’ resumes.
6. Stepping stones
Examples of experiences to seek out which don’t require prior software experience:
Beefing up your resume as opposed to “resume-padding”
1. Research in an EECS/CS/DS lab under a professor/postdoc
a. You'll get exposure to building software, coding algorithms, training or developing ML
models, etc. in this experience
b. To get this experience, you'll need to:
i. Maintain relatively strong academic standing (higher GPA is probably better)
ii. Be proactive and not miss research application deadlines (URAP, etc.)
iii. Be proactive and cold email professors or postdocs whom you're interested in working
with
7. Stepping stones
Examples of experiences to seek out which don’t require prior software experience:
Beefing up your resume as opposed to “resume-padding”
2. Teaching staff for a computer science course
a. You'll strengthen your fundamental skills and conceptual understanding of basic
computer science courses and display mastery to potential employers
b. To get this experience, you'll need to:
i. Perform relatively well in the class (better is better)
ii. Usually start as an AI (academic intern), which is super easy in most courses - you just sign
up
iii. Then become a tutor or reader for the course (slightly more competitive)
iv. Become a TA, which is the most competitive position but doable, usually in a couple
semesters
v. Alternatively, you can also participate in student-run teaching organizations (Computer
Science Mentors, for example)
8. Stepping stones
Examples of experiences to seek out which don’t require prior software experience:
Beefing up your resume as opposed to “resume-padding”
3. Part-time or full-time gigs at smaller software companies or startups*
a. You'll contribute to code that hopefully makes it to production. You'll learn new
languages, software engineering practices, tooling, and get a taste of what building an
actual software product looks like.
b. To get this experience, you'll need to:
i. Actively seek these experiences out. Some good places to look include YC's Work at a
Startup, AngelList, Berkeley Skydeck, etc. Attend recruiting fairs and events put on by
student orgs (they often partner with startups or smaller companies). Look on Handshake
and LinkedIn as well.
ii. Do a lot of cold-emailing and applying online.
iii. Talk to Chris about EFP!
* Does no refer to unicorn startups. These startups tend to have a higher bar than large tech companies.
9. Stepping stones
Examples of experiences to seek out which don’t require prior software experience:
Beefing up your resume as opposed to “resume-padding”
4. Personal project or hackathon, or projects as a part of a student org
a. You'll build something from scratch that you can be proud of and show off to recruiters.
b. To get this experience, you'll need to:
i. Just start. Honestly, this is the toughest part and that's why hackathons can be great for
jumpstarting projects and forcing you to grind out code in a weekend.
ii. Come up with an idea for your project and learn how to implement it (probably by
searching things up online).
iii. Publish code to a GitHub or have a way of showing off the end result (whether through a
website, screenshots that are linked on a personal website, a mobile app, etc.)
10. Showcasing Skills
Making the most of “stepping stone” experiences on your resume
Resume Tips
Aesthetic Relevant Results-oriented
● Design-oriented resumes stand
out in cold emails to recruiters and
tend to generate a higher
response rate
● Save M.E.T./standard resume
template for applying through
online portals (online resume
screens usually look for keywords)
● Be sure to list competency
in required languages
● Skills must align to the job
you intend to apply for even
if that means having
different resume versions
for different applications
● Include any programs
you’ve worked with through
classes/projects
● Your bullet points should
be a quick, technical
summary of what you did
in one or two bullets
● The following bullet
should discuss the impact
of your work
● Quantitative metrics lend
credibility
11. Creating a System
Routinizing your recruiting process and setting yourself up for success
1. Make a spreadsheet. Keep track of what companies you're applying to. Ideally, before the recruiting season
starts, you do research into the companies that you want to apply to and list them on this spreadsheet. Keep
track of information like app deadlines, position you applied to, when you applied, the status of your
application, whether you have a referral, and your point of contact at the company.
1. Batch applications to jobs on a weekend. Set aside a chunk of time on a weekend and just apply to as
many of your top choice positions as possible. While you can take the slow/consistent method with applying
to 3-5 jobs a day, a lot of apps open at the same time and close early, which means that you want to get
your applications in as early as possible (and ideally not miss any deadlines- although don't worry if you do,
the great thing about software recruiting is that positions are continually opening, all the way into the
spring).
1. Apply to 3-5 jobs a day afterwards. Be consistent throughout the recruiting season and continue to apply
daily. You always want to keep your pipeline full as you're recruiting, in case interviews that you're having
currently don't pan out.
12. Being Scrappy
Beefing up your resume with substantial and significant experiences
1. Attend as many career fairs as you can
a. HKN / TBP / student orgs / Cal Career Center / MET all have career fairs, tech talks, recruiting events,
etc. that occur throughout the semester.
b. Be smart with your time! Don’t burn yourself out.
c. Goal: Have personal encounters with recruiters so they remember you. Rule of thumb - follow up with
an email after your interaction with them.
2. From all events you attend, follow up through emails or LinkedIn messages to recruiters.
a. Once you have their email contact / LinkedIn contact, send a follow up email!
3. For every application to a company that you really care about, you should also send at least one
cold email to a university recruiter at that company.
a. To find emails for university recruiters, use LinkedIn and an email scraper extension (Skrapp.io,
LeadLeaper, etc) that can find emails from LinkedIn profiles.
4. Find referrals to companies that you care about.
a. Reach out to interns, current full time employees, friends who know friends, etc.
b. Referrals can really boost chances that you get an interview.
5. Leverage MET resources like Mr. Grimes' dedicated recruiting pipelines.
a. These opportunities are the most targeted recruiting efforts by companies. They want METs.
13. Cold Emailing
Tips:
1. Don’t write cover letters. For software positions,
it's usually not worth your time to submit a cover
letter to online positions. There are exceptions to
this rule (e.g. dedicated recruiting from Mr. Grimes).
1. Instead, write cold emails. These are essentially a
cover letter, except in email format. Keep cold
emails much shorter than cover letters, covering the
highlights of your interest, qualifications and
experience in summary format.
1. Expect your response rate to be low, but every
extra lead counts. Expect your response rate to be
low, but every extra lead counts.
1. Follow up if you haven't heard back in a week.
This communicates genuine interest to the recruiter
and you'd be surprised how often a recruiter will
reply back to a follow up email.
Format:
P1 [Introduce yourself]
P2 [If you met the person you're emailing, touch on the
conversation you had]
P3 [Express your genuine interest in the company. Why do you
want to work there?]
P4 [Talk about your own skillset and experiences and why you
think you'd be a good fit for the company]
P5 [Tell them you'd love an opportunity to interview this cycle.
Ask your contact how you can get started in the interview
process]
P6 [Sign off, and don't forget to attach your resume / LinkedIn]
15. Foundations: Coursework and Theory
❖ Make an effort to master the material taught in your classes. Keep cheat sheets from any
exams as a means of refreshing your knowledge on the material.
Recommended Courses:
● CS61A, CS61B, and CS170 stand out as courses that really build your Data Structure and
Algorithms fundamentals, and most software interviews will heavily test those topics.
● CS188/CS189 may be helpful courses for ML focused roles.
● CS162/CS186 may be helpful courses for software infrastructure and systems roles.
16. Create a System: LeetCode Practice
1. Try to do at least one problem a day. If you have more time, aim for more. Consistency is king.
Consistent, deliberate practice is the only way you'll strengthen skills and improve your ability to
recognize types of problems and solve them. It also helps you build momentum going into interviews.
2. Try not to miss two days in a row. Old adage in all fields where consistent deliberate practice is
required. Keep the momentum going and let your results stack!
3. Progress from easy to medium to hard. You'll know when it's time to move on to the next difficulty
level of problems. If you're able to solve most problems you select from a category, start to move to the
next category. Even when you're not totally comfortable with a category of problems, you should be
pushing yourself to try to solve more difficult problems (say, one hard for every three mediums).
4. Reflect on how you solved problems. Keep a log & write down learnings. This will help you retain
learnings from the techniques you used (or the solution used).
5. Invest in LeetCode premium. You can read more solutions and do targeted practice for questions that
are commonly asked by companies. ROI if you land an internship is really really high.
17. Rule of Thumb: Online Assessments
Note: These will be a built-in form of practice as you apply to companies that require
them.
● CodeSignal and HackerRank are two popular providers of Online Assessments.
If you'd like to get familiar with their questions, you can practice problems on
those platforms as well.
● As a general rule of thumb, the less experience you have on your resume, the
better you'll have to do on online assessments.
○ There's a bit more slack for a resume that demonstrates significant
experience. But you should still try your best to do well.
18. Rule of Thumb: Warming Up
● Schedule interviews with companies that you care less about earlier in the
recruiting pipeline. They'll serve as great practice for interviews with companies
that you really care about and give you a good taste of what a technical
interview looks like if you've never had one before.
● Make sure you start practicing LeetCode in the offseason before recruiting
picks up. It's no fun to have to apply to jobs, schedule interviews, and practice
coding all at the same time. Plus, it's stressful to schedule interviews that you feel
like you're not ready for because you haven't practiced enough.
19. Rule of Thumb: Communication
● Over-communicate during interviews! Explain your thought process before you
dive into an implementation. Your interviewer will either approve or potentially
take you on another path.
● Always take the hints that your interviewer provides you with. If they're
suggesting something different, go with it.
● You can also talk as you code. I do this sometimes but not always, personal
preference!
● Explain trade offs that you are making as you code. For example, why are
you using a set rather than a list? Why is a hashmap helpful here? Explain things
in terms of runtime and efficiency, or maybe even convenience.
20. Most Importantly!!
● Consistency: understated but the MOST IMPORTANT.
● Patience: you have time. Your time is coming, so don't stress.
● Persistence: keep at it until you see results. Don't give up too
early. It's about getting better every day!