- Resume Review and Recruiter Phone Screen
- Technical Phone Screen(s)
- On-site Interviews
- Take-Home Coding Exercise
- Decision
- => whether to extend an offer.
- Offer and Negotiation
- offer: level/title, base compensation, equity compensation, signing bonus and relocation, start date.
- competing offers => they may try to match or beat.
- Referrals
- A referral with a strong personal endorsement is a big deal.
- Section Order
- experience => skills => education.
- Formatting
- single-page
- Tell a Story
- Emphasize what you delivered, where you led, and the results your projects yielded => signs of autonomy and leadership.
- Example
- What They're Looking For
- Ability (in decreasing order)
- Coding/debugging measured by coding on the fly in interviews and sometimes by a take-home coding problem.
- Design/architecture measured by a design exercise in an interview.
- Communication measured by how clearly you express your ideas in interviews.
- Domain knowledge measured by factual questions and design exercises.
- Culture fit
- Enthusiasm for the role
- Positive attitude and friendliness
- Whatever interviewers happen to like
- Ability (in decreasing order)
- Acing Coding Interviews
- programming interviews, stylized coding, 30-60 minutes, tricky algorithmic problem.
- Preparation
- Solve a bunch of time-pressured coding problems, with real code.
- Study CS fundamentals.
- e.g., linked lists, hash tables, trees, sorting, and the (Big-O) analysis of the memory and runtime of all of the above.
- Brush up on dynamic programming if you're feeling energetic.
- Brush up on the specific domain of the job, and prepare to discuss the standard technologies architectures in that space.
- Practice talking through what you're doing to get used to the performance aspect of interviewing; having a friend grill you in a mock interview if you can.
- On the Day
- Explain what you're doing.
- what line of solution you're considering.
- what problems it might have.
- what the problem resembles from your past experience.
- what the tradeoffs are in your solution.
- Start with a simple solution.
- Explain what you're starting with and why.
- Restate the problem and ask clarifying questions.
- Refine the problem's requirements.
- Stay calm and never give up.
- => try a variety of approaches.
- => talk through a sensible thought process.
- => record whatever you manage to come up with can easily make up for an imperfect solution.
- Code in a language you know well, and make that language Python if possible.
- Explain what you're doing.
- Passing the Rest of the Interview
- Prepare a compelling and specific answer to the question, "Why do you want to work here?"
- Try to balance humility with confidence.
- Show your enthusiasm for technology when you get the chance; mention a tool you love to use, a book that influenced you.
- Don't badmouth your previous employer or colleagues.
- Prepare one or two questions about the company and team.
- Further Reading
- LeetCode
- Cracking the Coding Interview
- Roles
- Coordinators: Organize on-site interviews.
- Sources: Identify potential candidates.
- Recruiters: Owners of the hiring process after initial sourcing.
- What You Need to Know As a Colleague
- Engineers and managers evaluate candidates in detail and decide when to make offers; candidates decide for themselves what jobs they'll take; recruiters are the conductors of the whole messy process, accountable for ensuring hires actually happen.
- Challenges in recruiter's job => requires social skills, energy, and adaptability => astonishingly positive, energetic, and well-organized.
- What You Need to Know As a Candidate
- the recruiter is usually your ally in the hiring process.
- Getting Properly Routed
- Vocal in expressing your preferences.
- Asking Questions
- Recruiters are usually happy to help out with any questions.
- You can ask recruiters to connect you with an engineering manager.
- Level and Title
- Each level => allowable range of compensation.
- Title matters
- => determines your maximum compensation.
- => help you market yourself as you look for new roles.
Title | Level | Experience (years) | Scope | Base Salary |
---|---|---|---|---|
Software Engineer | 3 | 0-3 | Do what people tell you. | $110,000-$130,000 |
Software Engineer II | 4 | 2-6 | Take on a project, do own project management, and work with others. |
|
Senior Software Engineer | 5 | 4-? | Manage projects with numerous moving pieces, lead others, and set some direction. | $160,000-$195,000 |
Staff Software Engineer | 6 | 8-? | Lead very large projects and set direction for a large org, almost completely self-directed. | $190,000-$230,000 |
Principle Software Engineer | 7 | 12-? | Set direction for significant part of the entire company. | $220,000-$250,000 |
- Compensation
- Base Salary
- 2-5% raise annually or 10%+ if you're promoted.
- Bonus
- calculated based on performance, normally 10-20% of base salary.
- Equity Compensation Basics
- stock (restricted stock units, or "RSUs") or stock options (incentive stock options, or "ISOs")
- often structured as grants that "vest" over four years with a one-year "cliff".
- stock options => if you leave the company, you often have only 30 or 60 days to decide whether to exercise your vested options or let them evaporate into nothing.
- Equity Compensation Taxation in the United States
- You would be extremely well-advised to consult a tax professional.
- RSUs at a public company => taxed as regular income => your company will withhold income tax in kind when your grants vest.
- Capital Gains Taxes
- You pay capital gains taxes when you sell the shares of a long-holding stock, instead of higher income taxes.
- Alternative Minimum Tax (AMT)
- Stock options have a kind of estimated fair market (FMV) and a strike price.
- The AMT says that if you exercise a stock option, you may owe taxes on FMV minus strike price.
- Base Salary
- Share Salary Information As Much As Possible
- You may find the company's standards on sites like levels.fyi.
- Sharing as much as compensation information with your friends and colleagues as you possibly can.
- Negotiating
- bands for a given level, interview performance, current compensation, competing offers => an offer package.
- Level is set by experience and interview performance.
- The best ammunition you can give is another package to point to, either current compensation or a competing offer.
- Negotiating with a respectful and positive attitude usually won't harm your eventual relationship with your manager.
- “The team really impressed me, and I’m excited about the product. My offer at SmartSoft has a base salary of $150k and a similar equity package; can you match them on the base salary?”
- “Thanks for your quick reply. I really enjoyed my interviews, and the team was really friendly. The base salary looks good to me, but my current package has a 20% bonus target, and Acme Startup doesn’t have a bonus program. Can you balance that out with a bump in the equity or base salary?”