1 of 38

Why You Suck

(At Interviews)

By Edbert Chan

2 of 38

Objective

  • My background + philosophy of engineering (8-10 min)
  • 9 Common Mistakes in Interviews
    • Why these particular mistakes? Why are these important?
    • What mistakes are you making?
    • How to fix them?
  • Interview and career are NOT separate
  • Don’t get lucky. GIT GUD
  • Q&A + Video of my cats (maybe)

3 of 38

Disclaimer & Disclosures

  • Disclaimer: I currently work at Uber. The opinions expressed here represent my own and not those of my current or past Employers, Clients or Partners.
  • Disclosures: Any information used are available to the public and are non-material.
  • Disclosures: I also run a business coaching people to succeed in interviews and their careers. To my knowledge, my business is a different business structure than Taro’s and does not compete against it in a material way.

4 of 38

Short Answer To Title…

“Engineering is more than just coding”

5 of 38

Interview Mistakes List

  • Not putting enough time.
  • Approach is inconsistent.
  • Practicing is inconsistent.
  • Not fixing your own mistakes
  • Not seeing how decisions are related

  • Not understanding your own solution
  • Magic bullets
  • Not being fast enough
  • Being full of sh*t

Why are these the mistakes?

6 of 38

Typical Interview

  • DS&A Problems
    • Serialize and deserialize n-ary tree
  • System Design
    • Design Twitter/X
  • Behavioral Interview
    • “Tell me a time you did x”

7 of 38

Bad Advice

  • “Communicate”
  • “It’s just a number’s game”
  • “Leetcode spam”
  • “You’ll never use the algorithm”
  • Cannot distinguish luck from skill.
  • Perform better than average?
  • For every time you succeed, how many times will you fail?
  • Bad information worse than NO information

8 of 38

9 of 38

Record

  • 3 years+
  • 59+ client interviews
  • 80% personal success rate
  • 70% client interviews success rate
  • 40% 2022 client interviews success rate
  • 85% p75 $ offers
  • Staff @ #2 highest salary Wayfair Germany.

Sources:

Offers numbers based on levels.fyi

Success rate is defined as “getting a job offer at or above the expected level”

10 of 38

Who Am I?

  • Android Engineer
    • Java only
  • Apple Music (2016-2020) [L3]
    • Tablet, migration to Kotlin, app modernization
  • Uber (2020-present) [L5]
    • Financial Products (2021)
    • Android Infrastructure (2021-present)
      • Bazel, JDK 11, CI/CD
  • Github

11 of 38

Engineering Process

  • Misconception: Too much focus on code + info
  • Software Engineer
  • How efficient are you at producing value?

HOW TO DO SOMETHING > WHAT YOU KNOW

12 of 38

Interview Mistakes List

  • Not putting enough time.
  • Approach is inconsistent.
  • Practicing is inconsistent.
  • Not fixing your own mistakes
  • Not seeing how decisions are related

  • Not understanding your own solution
  • Magic bullets
  • Not being fast enough
  • Being full of sh*t

Execution > Info!

But what about interviews?

13 of 38

Mistake 1: Not Putting Enough Time

  • Are you putting in at least 20 hours/week for preparing for interviews?
  • Are you disciplined and consistent about putting the time in?
    • Rigorous schedule
  • Career: Are you putting in more time to beat your competition?

Doing it right

Mediocre

Badly

2-3 hr/day, 3 months

2-3 hr/day, 6 months

NEVER

14 of 38

Mistake 2: Interview Problem Approach Is Inconsistent

  • Humans are creatures of habit
    • Inconsistent approach = inconsistent results.
  • Rules -> discipline -> consistency -> habits -> results.
  • Industry got smarter.
    • Memorizing questions is dead!
  • Do you have a checklist/framework for approaching problems?
  • Career: Are you delivering quality work consistently?

15 of 38

[Career] Mistake 2: Approach Is Inconsistent

  • Engineering Checklist
  • Keep my thinking consistent.
  • Avoid bad/inefficient work.
  • Always debugging = time wasted and could be avoided

16 of 38

Mistake 3: Practicing Is Inconsistent

  • Topic: Depth of understanding > breadth
  • “I guess I’ll study today” ???
  • Do I understand both when to and NOT to use x?
    • What types of situations will using x be more likely to get the right answer?
  • Career: Are you thinking about the quality/efficiency of your work?

17 of 38

Mistake 4: Not Fixing Your Own Mistakes

  • Ok to make mistakes. Not ok to repeat them.
  • Application of knowledge, approach, and execution.
  • “I’ll just do it next time”
  • Do you track your mistakes/inefficiencies?
  • Do you have a practice diary?
  • Career: Postmortem process
    • Do you apply it to yourself? Even if its just a small inefficiency?

18 of 38

Sample Diary Entry

19 of 38

[Career] Mistake 4: Fix your own mistakes

  • Engineering Checklist
  • You are the reason �for your own failure
  • Find why you make certain mistakes.
  • Try not to make them again.

20 of 38

Mistake 5: Not seeing how one decision leads to another

  • Understand -> Design -> Code
  • Why did you make the decisions that you did?
  • “Because of x, you did y”
  • How can you make it more likely you will make the right choice?
    • Multiple factors that lead to choices.
  • Are you thinking about the factors that lead to your answer?
  • What controls do you have that allow you to progress through the problem?

21 of 38

Mistake 6: Not Understanding Your Solution Before Coding

  • Common in career!
  • Deep simplicity > all
  • “Too many ideas” = not thinking!
  • How to avoid
    • ELI5
    • Pencil and paper
    • Stack trace of your code
  • Can someone else with no context understand you?

22 of 38

[Career] Mistake 6: Understand your solution

  • Engineering Checklist
  • ERDs
  • 5-10 min drill.
  • Do you REALLY understand what you are writing?

23 of 38

Mistake 7: Magic Bullets

  • “Throw stuff against the wall and see what sticks”
    • What happens when someone challenges it?
  • 1-2 test case failures = destroy code and design
  • What do you know vs what can you prove?
  • How well can you justify every step in your process?
  • Career: Do you bulletproof your code and design?
    • Premortem? Postmortem? Test cases?

24 of 38

Mistake 8: Not Being Fast Enough

  • Unlimited amount of time, should solve ANY problem.
  • Efficiency!
  • Automatic actions
    • Does not require a significant amount of thinking.
  • Goal:
    • Look at a problem
    • Have 2-3 different ways of doing it
    • Or have an idea of how to get to the optimal solution.
  • Am I being too formulaic?
  • Focusing on what matters? How will you solve the problem?

25 of 38

Mistake 9: Being Full of Sh*t

  • “You must not fool yourself, you are the easiest person to fool”
    • - Richard Feynman
  • “Communication” is not the end all.
    • More words != more info
  • Get to the point. And get there in an understandable way.
  • Pro tip: draw it out!
  • Do you have a clear idea and intention behind your words?
  • Do I say unnecessary things? Efficient communication?
  • Career: ERDs get rejected b/c not simple!

26 of 38

[Career] Mistake 9: Being Full of Sh*t

  • Engineering Checklist
  • ERDs are to check you.
  • Avoid pushback by being simple and undeniable.
    • Data
    • Existing efforts/docs
    • Simple language
  • GET TO THE LGTM

27 of 38

Basic Approach

  1. What is the simplest, easiest way I can solve the problem?
  2. If I cannot figure it out, let me generate a few examples.What are the patterns generated from the examples? What will the algorithm look like? What is the simplest naive solution?
  3. What are the shortcomings of this algorithm?
    1. Is it taking up too much time, space? Or is the resulting algorithm and code messy?
  4. For every inefficiency, how can I fix it?
  5. Rinse Repeat

28 of 38

After Solving

  • Record in your diary
  • Did you get the right solution?
  • Did you do similar steps to the solution?
    • If they differ, why?
  • Can you be more efficient WITHOUT sacrificing safety?

Full Link

29 of 38

Philosophy: Focus on the Approach

  • Rules create discipline.
  • Discipline creates consistency.
  • Consistency creates habits.
  • Habits creates results.

30 of 38

31 of 38

Recommended Resources

  • General:
    • Incerto by Nassim Taleb
    • Think Twice by Michael Mauboussin
    • Seeking Wisdom - from Darwin to Munger by Peter Bevelin
    • The Checklist Manifesto by Atul Gawande
    • The Design of Everyday Things by Don Norman
    • Complexity by Mitchell Waldrop
    • When Genius Failed by Roger Lowestein
    • Education of a Speculator by Victor Niederhoffer
  • Engineering/Interview:
    • Elements of Programming Interview
    • Grokking the Coding Interview
    • Designing Data-Intensive Applications
    • Clean Code/Architecture

32 of 38

Q&A

33 of 38

34 of 38

35 of 38

Daily Job?

  • Shame Google into improving Bazel for Android
  • Manage CI/CD.
  • Identify gaps between systems and teams
  • Create strategic projects and manage rollouts
  • Maintain documentation
  • Fix stuff

36 of 38

Debugging Under Uncertainty

  • Easy to implement
  • Easy to maintain
  • Clear measurable progress
  • High impact
  • Scalable
  • BIG exercise in deep simplicity
  • Example:

37 of 38

The Importance of Principal-Agent

  • Problem: Conflict of interest between the represented and the representative
    • Mutual funds (paid to offer subpar investments)
    • Fund manager (fee structures take from investors, even when underperform)
    • Engineering (engineer will code only to fit requirements but not future ones)
  • Result
    • Manipulating systems for personal gain
    • Delusional thinking/justification for bad behavior
  • Why is someone offering you advice?
  • Charlie Munger commentary on principal/agent problem and skin in the game
  • Who are you working with and why?
  • Do they suffer alongside you? Pains and losses?

38 of 38