[Author’s Note: For optimal reading, especially given the depth of this guide (nearly 5,000 words), we recommend revisiting this page on a desktop. Bookmark it for later if you’re on a mobile device.]
This article was originally published on jinesh.codes on February 21st, 2022.
As a software engineer with experience at Microsoft and Google, I’ve navigated the complexities of the big tech job market firsthand. My 120-day job search journey involved over 30 interviews, culminating in multiple job offers. Through this intensive process, and in conversations with fellow candidates, I realized that while abundant resources exist on tech interviewing, crucial details are often overlooked or buried within personal anecdotes. These missing pieces include effectively communicating your professional narrative, demonstrating your seniority through system design discussions, and strategically negotiating your offer.
Known for my organized approach, I meticulously documented the resources and strategies that propelled my successful job search. This article consolidates these resources and my experiences into a definitive guide.
My aim is to provide a clear blueprint and actionable roadmap for any software engineer aiming to navigate their next job search successfully. This ultimate guide is designed to empower you through every step of the process.
Who Should Use This Guide?
- Experienced Software Engineers
- Targeting Individual Contributor roles in Big Tech companies (Google, Meta, Microsoft, Apple, Amazon, etc.)
- Aiming for mid-to-senior level engineering positions
Note: If you’re interested in a similar guide tailored for junior developers, please indicate your interest in the comments or via direct message. High demand will prompt the creation of a dedicated guide for junior roles.
Why This Guide Matters
Many professionals express frustration with the job search and interview process. The most common complaint is that “the process is inherently flawed and needs to be endured as quickly as possible.”
While the interview process isn’t perfect, this guide demonstrates how to leverage its structure to your advantage through strategic planning and consistent effort.
By following this ultimate software guide, changing jobs can lead to:
- Enhanced Compensation: Significant salary increases are common, ranging from 30% to 200% when transitioning between roles.
- Career Advancement: Effectively communicating your experience and mastering the system design interview can position you for roles at or above your current level.
- Job Satisfaction: Finding a role that genuinely aligns with your interests and career goals becomes achievable with a structured approach.
Current market conditions favor candidates, with substantial hiring across major tech companies. This guide is built on observations of successful job transitions by numerous professionals and reinforces the belief that strong performance in your current role translates to securing a desirable new position.
Skeptical about the potential for higher pay? Matthew Dean’s analysis here provides compelling data on compensation trends in tech.
Implementing this guide requires a dedicated time investment, but the potential returns in career and compensation make it a worthwhile endeavor.
Navigating the Software Interview Process: A Step-by-Step Guide
The typical interview process unfolds as follows:
Recruiter Call → Phone Screen → Onsite Interview (4–6 sessions) → Offer Stage
1. The Recruiter Call: Your First Step
This initial 15–30 minute conversation with a recruiter is to gauge your interest in the company and role. Prior to this call, clarify your career objectives – your “story.” This call is your opportunity to articulate your goals, share your professional narrative, and assess potential mutual alignment.
Remember, once interviews are scheduled, the recruiter becomes a valuable ally throughout the process, particularly before offer negotiations. Recognize their vested interest in your success; they are there to support you. Don’t hesitate to leverage them for resources and guidance. Many of the resources in this guide were provided by recruiters during my job search.
Following this call, you’ll proceed to the phone screen stage.
2. Mastering the Phone Screen: The Technical Gatekeeper
This 45–60 minute video call with a software engineer involves live coding on a shared text editor, typically focused on Data Structures and Algorithms (DS/Algo) problems. For most companies, this is an elimination round to determine suitability for an onsite interview. Confirm the format and expectations with your recruiter.
Thorough preparation for algorithm interviews is crucial. Your goals are to demonstrate technical proficiency, ask insightful questions post-coding, and advance to the onsite stage.
3. Excelling in Onsite Interviews: Showcase Your Skills
Onsite interviews traditionally involve 4–6 rounds at the company’s campus, now often conducted virtually due to global circumstances. This shift offers candidates scheduling flexibility, eliminating the need for extensive vacation time.
Expect rounds covering algorithm problem-solving, system design, and behavioral/experience assessments. Approach these sessions with enthusiasm, ready to showcase your technical capabilities and interpersonal skills. The objective is to generate strong positive signals and data points to progress to the offer stage.
4. The Offer Stage: Your Decision Point
Congratulations on reaching this stage! Now, evaluate if this opportunity aligns with your career aspirations and negotiate a compensation package that meets your expectations and motivates you to join.
15-Week Software Job Search Schedule: Your Time-Bound Guide
This 15-week schedule assumes part-time preparation and interviewing. Adjust the timeline based on your personal circumstances and pace.
Week 1: Foundation and Strategy
- Craft Your Narrative: Develop your professional story and refine your resume to reflect your target level and scope.
- Company Research: Identify companies that align with your interests.
- Market Awareness: Understand the interview process and research compensation ranges using resources like levels.fyi.
- LinkedIn Update: Set your LinkedIn status to “open to finding a new job,” visible only to recruiters for privacy.
Weeks 2–4: DS & Algorithm Fundamentals – Building Your Core Skills
- Network & Connect: Review networking strategies and connect with recruiters.
- Daily Algorithm Practice: Create a daily algorithm preparation checklist and consistently work through it.
- Problem Solving: Solve at least 2 algorithm problems daily.
- Recruiter Engagement: Engage with recruiters and begin scheduling phone screens for weeks 7 or 8.
Weeks 5–7: System Design Foundations – Expanding Your Expertise
- System Design Study Plan: Develop a daily system design preparation plan.
- Continued Algorithm Practice: Maintain your daily algorithm problem-solving routine.
- Readiness Checkpoint: Assess your system design readiness to identify areas for improvement.
Weeks 8–9: Technical Screens & Mock Interviews – Refining Your Technique
- Phone Screen Focus: Complete phone screens for the majority of your target companies.
- Mock Interview Practice: Utilize platforms like pramp.io for mock interviews in both system design and algorithms.
- System Design Refinement: Continue studying system design based on feedback from mock interviews.
- Behavioral Story Drafts: Outline your STAR method examples for behavioral interview rounds.
- Onsite Scheduling: Start scheduling onsite interviews.
Weeks 10–13: Ace the Onsite Interviews – Performance Under Pressure
- Stay Focused: Maintain composure and focus throughout your onsite interviews.
- Feedback Loop: Request feedback from recruiters one day after each onsite interview round.
Weeks 14–15: Offer Stage – Decision and Negotiation
- Offer Strategy: Review the offer stage section of this guide to prepare for negotiation.
- Post-Offer Feedback: Once you accept an offer, provide feedback on this blueprint to contribute to its improvement.
For a checklist version of this schedule, access this Google Doc. (Feel free to copy and personalize it to track your progress.)
Getting Started: Your Launchpad
Follow this weekly schedule by copying this Google Doc and checking off tasks as you complete them. This structured approach will keep you organized and on track.
Crafting Your Professional Story: The Core of Your Application
Defining your career narrative is crucial. Develop concise answers to these questions, which form your “story”:
- What motivated you to join your previous company?
- What were your key responsibilities and achievements?
- Why are you seeking a new role now?
- What aspects of your previous role do you want to continue in your next position?
- What new opportunities and challenges are you seeking?
These answers will inform subsequent steps in your job search. For example, use your story and goals to Identify and Shortlist Companies. Create a list of 7–10 target companies, categorized into “backup” and “target” companies, to strategically manage your onsite interview scheduling.
Understanding Levels and Compensation: Know Your Market Value
Utilize resources like levels.fyi to research industry compensation benchmarks and level expectations. If you are unsure about your target level, consult with connections at target companies for insights before applying.
Resume Refinement: Your First Impression
Ensure your resume is polished and impactful. Ideally, use the XYZ format for bullet points to quantify your achievements:
“Accomplished [X] as measured by [Y], by doing [Z].”
Related resources: [Resume writing guides – Example Resource Link]
Leveraging Your Network and LinkedIn: Expanding Your Reach
Maximize LinkedIn for job searching. If you don’t have one, create an all-star LinkedIn profile.
LinkedIn is a powerful tool. During my job search, over 35 recruiters contacted me through LinkedIn, leading to conversations with 6 companies.
Activate the “open to opportunities” setting on LinkedIn, ensuring visibility is set to “recruiters only” for privacy. Instructions are available here. [Verify privacy setting is “recruiters only,” not public.]
Build a strong network to access referrals, a highly effective way to get noticed. Direct recruiter outreach is the next best approach, with direct applications as a last resort.
Tips for Recruiter Conversations: Building Rapport
The initial recruiter conversation sets the tone. While recruiter quality varies, maintain a cheerful, polite, and professional demeanor. Treat your recruiter as a team member and collaborate to achieve your desired outcome.
Recruiters may ask about compensation expectations early on. Defer discussing specific numbers initially. Focus on mutual fit and level alignment. Compensation discussions are best reserved for the offer stage. If pressed, provide a broad range at the higher end of your target level, emphasizing your understanding of competitive compensation and confidence in reaching a mutually agreeable package.
*Use levels.fyi to understand salary ranges for your level.
Refer to the negotiation section for detailed strategies.
Understanding the Interviewer’s Perspective: Signals and Data Points
If you’ve been on the interviewer side, you understand the emphasis on “signals” and “data points” in hiring decisions. For those unfamiliar, signals are indicators of your skills, knowledge, and experience.
As an interviewer, key signals I look for include:
Coachability: How well you respond to feedback and hints, your openness to suggestions, and your ability to refine your solutions based on input. Evaluated in problem-solving and system design interviews.
Coding Proficiency: Your depth of understanding and effectiveness in coding. Assessed during problem-solving interviews.
System Design Expertise: Your experience and capability in designing and leading large technical systems. Evaluated in system design interviews.
Collaboration and Leadership: Your ability to work within or lead teams, and your experience in collaborative or management roles. Assessed in behavioral/experience interviews.
Companies like Google and Amazon also evaluate your ability to navigate ambiguity.
Understanding these signals allows you to tailor your interview performance to demonstrate your suitability and seniority.
Data Structures, Algorithms, and Problem-Solving: Mastering the Technical Interview
Technical interviews are demanding, requiring optimal solutions and clear communication under pressure.
Preparation is key and involves:
- Understanding interview expectations.
- Grasping DS and algorithm fundamentals.
- Adopting a structured communication approach.
Problem-Solving Interview Expectations: Key Skills Assessed
Programming Languages: Companies typically don’t mandate specific languages, but fluency in a significant language is essential. Beyond syntax, understand language nuances, memory management, and common libraries.
Data Structures: Demonstrate understanding of common data structures, their applications, operation runtimes, and memory usage.
Algorithms: While memorization isn’t the focus, understanding common algorithms, their limitations, and implementation strategies is crucial.
Coding Skills: Write syntactically correct, near-production-ready code. Minor errors are acceptable, but aim for high-quality, demonstrable coding ability.
Related resources: [Data Structures and Algorithms Guides – Example Resource Link]
DS & Algorithm Fundamentals: Building a Strong Base
Recommended Approach:
-
Framework Understanding: Start with the problem-solving framework outlined in “Cracking the Coding Interview” (CTCI) [https://amzn.to/3v02Qv7], chapters 1-7. Internalize and apply this methodology.
-
Foundation Review: Review core concepts in CTCI or “Elements of Programming Interviews” (EPI). Key topics: Strings, Arrays, Linked Lists, Stacks, Queues, Heaps, Trees, Hash Tables, Searching, Sorting, Recursion, Dynamic Programming, Greedy Algorithms, Graphs.
-
Algorithm Deep Dive:
-
For Beginners:
- Coursera — Algorithms, Part 1: Follow lectures, code algorithms/DS in a document after each lecture (consider 2x speed).
- Coursera — Algorithms, Part 2: Optional, for advanced algorithms (relevant for companies like Google and Directi).
-
For Reviewers: Review top articles on GeeksforGeeks for each DS and algorithm.
-
Other resources for DS, Algo, and coding fundamentals: [Additional DS & Algo Resources – Example Resource Link]
Coding Practice: Sharpening Your Skills
Practice without an IDE to simulate interview conditions. Write code on a word document or paper to develop proficiency in writing clean, compilable code without auto-completion or syntax highlighting.
Recommendations:
- Beginners: InterviewBit Programming Course.
- Experienced: Blind 75 LeetCode List. Covers diverse topics to prepare you broadly.
For daily practice, consider Daily Coding Problem for a random problem each day.
Other resources for practice: [Additional Coding Practice Resources – Example Resource Link]
System Design Interview Preparation: Architecting Solutions
System design interviews, often conducted by senior engineers, involve open-ended questions like “Design a flight booking system” or “Implement Instagram feed.”
Your goal is to lead the discussion, clarify requirements, and design a viable system within 60 minutes, demonstrating technical leadership.
System Design Interview Mindset: Building Real Systems
Shift from hypothetical system building to designing a real system. Approach the interview as a work meeting focused on brainstorming and creating a design roadmap to solve a real-world problem.
Aim to develop a design roadmap and task breakdown for a team within the interview. (A detailed technical design with trade-offs is often sufficient).
This mindset shift leads to a more realistic and impactful design discussion.
High-Level Design (HLD): Framework and Knowledge
HLD Interview Framework: A Structured Approach
Adopt a 3-phase framework:
- Requirements Gathering: Clarify and define the problem scope.
- Technical Design & Trade-offs: Propose design solutions and discuss trade-offs.
- Deep Dive & Improvements: Explore detailed components and potential optimizations.
Step-by-step guide provides detailed framework explanation.
HLD Knowledge Expectations: Core Concepts
Databases: Understand relational and NoSQL databases, their trade-offs, and when to use each.
Distributed Computing & Scaling: Familiarity with service-oriented architectures, map-reduce, distributed caching, and load balancing is beneficial.
Internet & Networking: Understand basic internet functionality, from DNS lookups to TCP/IP and socket connections. Solid web fundamentals are expected.
Recommended HLD Learning Resources
Practice questions from Grokking the System Design Interview and review provided solutions.
Course: Hired in Tech — System Design is another valuable resource for in-depth learning.
HLD Mock Interview Readiness Checkpoint: Assess Your Preparedness
Before mock interviews, assess your knowledge with these questions:
- SQL vs. NoSQL: When to choose each?
- Data stores for images: Options and selection criteria?
- Long polling vs. WebSockets?
- Caching techniques for read speed?
- Disadvantages of caching?
- CDN: What is it? When to use?
- CAP Theorem?
- Performance comparison: HDD, SSD, RAM, network calls?
- Availability and Reliability: Definitions and measurement?
- Browser link opening process: TCP/IP, DNS lookup?
Other resources: High Scalability Examples
Low-Level Design (LLD): Detailed Component Design
Note: LLD rounds are not universal; verify if target companies include them. I encountered LLD questions at Google and Amazon.
Possess working knowledge of design patterns and object-oriented software design, including inheritance and aggregation. Be prepared to defend your design choices.
LLD Resources:
[Low Level Design Guides – Example Resource Link]
LLD Mock Interview Readiness Checkpoint: Confirm Your Skills
- Concurrency, Cohesion, Consistency: Understanding and definitions?
- Design Patterns: Familiarity with Strategy, Observer, Factory Method, Singleton patterns?
- Inheritance vs. Aggregation: Key differences?
Mock Interviews: Practice Makes Perfect
Mock interviews are essential for interview readiness. Conduct mock coding and system design interviews weekly to track progress and identify improvement areas. Platforms for mock interviews:
[Mock Interview Platforms – Example Resource Link]
General Interview Tips: Key Strategies for Success
This guide has incorporated tips from CTCI and Grokking System Design. Key takeaways:
- Think Aloud: Verbalize your thought process during problem-solving.
- Clarifying Questions: Ask questions to ensure problem understanding and gather necessary details.
- Solution Improvement: Consider and discuss solution optimizations beyond the initial approach.
- Interviewer Questions: Prepare thoughtful questions about the company and role.
Other resources: Google Recruiters Share Technical Interview Tips (30 min)
Behavioral and Experience Interviews: Demonstrating Fit and Level
Often underprepared for, behavioral interviews are crucial. They assess:
- Culture Fit: Alignment with company values and team dynamics.
- Level Alignment: Determining appropriate job level based on experience.
Prepare 5–6 strong work examples/stories showcasing positive signals. Use the STAR method (Situation, Task, Action, Results) for leadership principle questions. Stories should be well-structured, relatable, and highlight your experience effectively.
Example question: “Describe a time you went above and beyond for a customer.”
Practice behavioral questions here.
Resources: Ace Amazon Leadership Principles Guide, STAR Method Guide
Offer Stage: Making the Right Choice
Congratulations on receiving offers! Now, interview the company and team. Meet managers and team members multiple times before deciding.
I met 7 managers at Google before team selection. Follow-up meetings with preferred managers are valuable. This reverse interview empowers you to make an informed decision. A manager’s strong interest can also strengthen your negotiation position.
Note: Some companies like Amazon focus team-driven hiring, limiting manager meetings to the specific role.
Prepare 7–10 questions for hiring managers, covering team specifics, technology, and management style, to inform your team decision.
Negotiating Your Best Offer: Maximizing Your Compensation
Investing an hour or two in negotiation research can increase your compensation by 10–30%.
Recommended negotiation resources:
[Negotiation Guides – Example Resource Link]
Key negotiation points:
- Know Your Worth: Use levels.fyi to understand market value for your level.
- Email Negotiation: Prefer email over calls for negotiation discussions.
- Walk Away Power: Be prepared to decline if the offer doesn’t meet your needs.
Longer resource: Salary Negotiation Guide
After Accepting the Offer: Final Steps
- Celebrate your success!
- Thank everyone involved in the process and stay connected on LinkedIn.
- Inform other companies about your decision.
- Share feedback on this guide for future improvements.
Parting Advice: Key Principles for Success
- Engage with Recruiters: Leverage their insights and resources.
- Practice Self-Compassion: The job search is demanding; be kind to yourself during setbacks.
- Maintain Positivity and Professionalism: Stay positive and classy throughout the process.
- Embrace Curiosity: Ask questions and seek to learn.
Aggregated List of Recommended Resources: Your Toolkit
This article was originally published on jinesh.codes on February 21st, 2022.
More articles by Jinesh Shah: