Table of Contents
1 Introduction
The roadmap to wealth has always been simple:
Get a high-paying career and eliminate/automate/delegate work
Use the money, skills, and network to start an ecom or SaaS business
Funnel profits into investments with a barbell strategy
The fundamentals remain, but AI has changed the game
Let’s start with step 1: the only careers worth pursuing now are in tech: sales or programming
B-but Fox, aren’t salespeople and programmers being replaced?
The bar is raised across every domain. Everyone has already spoken about how zero interest-rate policy (ZIRP) free money is dead. Venture capital funding, credit, and other financial support has dried up. Companies are more conservative with hiring and have realized they don’t need to spend so much. Yes, this much is clear
However, add AI to the mix:
The lowest-hanging fruit is the easiest to automate. This is the work which inexperienced, junior candidates have been doing. It’s easier, cheaper, and faster to prompt an AI than it is to explain a basic task to a junior
Because of (1), the demands for every role will increase. All the easy work will be done quickly, so you’ll get to the hard part faster. Seniors will be expected to use AI to do the work of juniors, and fewer junior positions means more competition for entry-level roles
But let’s assume I’m wrong. Even if it were the case that AI can’t automate anything, you are severely underestimating the competition with current AI capabilities
AI was a nuclear bomb on education, but people are more worried about automation. It isn’t a big deal because of its output, but rather because of “Bloom’s 2 Sigma Problem”
This is a well-known phenomenon in education which says that an average tutored student does better than 98% of the students in a classroom
Bloom’s 2 Sigma Problem has been unsolved since the beginning of history. Educators have failed to close the gap between tutored and classroom students. It’s the reason elites have always spent so much on personal tutoring
But, guess what happens now, when everyone in the world has a chatGPT tutor for $20/month in their pocket which is constantly improving…
Hint: Everyone knows Usain Bolt is the fastest man in the world, but who’s number two?
Here’s what’ll happen: we’ll be reminiscing, telling stories of how easy it was to make money in the good ol’ days. Remember when barely literate boomers could get hired by walking into an office with a firm handshake and strong eye contact? 🐱🎂
As information becomes more freely available, everyone across every domain is hyper-optimizing. It’s winner-take-all. The pandemic already pushed the entire population online, but information is still being democratized
For example, English used to give you a strategic advantage because you could watch the latest and greatest information sources on YouTube. But now, “Google Aloud” makes it possible to dub (voice translate) any YouTube video in any language
Every little edge is becoming common knowledge:
AI tutors are already being implemented in schools. African governments are actively working on this. Studies have already been published from Ghana showing that students have improved at every grade level:
Even I have learned more in a month using chatGPT than a year’s worth of learning before it. If you aren’t learning at hyperspeed, you aren’t using the latest models, the right prompting strategies, or best techniques (such as retrieval-augmented generation). Enhancing yourself with AI is how you survive it in the long-run
So, how do you win in a ruthlessly competitive environment with 1 winner for every 999 losers?
There is only one way: el que no transa no avanza 🦊
“He who does not break the rules does not get ahead”
You will never, ever become wealthy by following what others are doing–even if you have a fancy job. Your boss hired you for a reason: you make him more money than he pays you. You only get the full value of your work if you own equity
The winners are “sly foxing” AKA breaking the rules without breaking the law. Look at any billionaire. Did any of them become wealthy by following the rules? They obtained their wealth because of arbitrage and leverage
Your only chances to gain wealth are when history is created. Think about the invention of the internet, cryptocurrency, or AI. When you see the world changing quickly, you need to run
Money loves speed: you must react before everyone else learns about the new game, or “meta” (most effective tactics available)
Luckily, wealth doesn’t always stay with the big players–corporate red tape and bureaucracy make larger companies slow, even if they have more resources. You can take advantage of these inefficiencies by starting your own business
How do you do this in the AI era?
See if you can figure out it with this story:
I spoke with a lawyer who didn’t want to use GPT4. He said it was too unreliable. “It’s just a language model that guesses the next word. It gives inaccurate information all the time”
I asked him if he’d tried it. “No, I’ve just heard about it from other people. But it’s fine, I’m on a waitlist for this other tool called LegalAI I found online. They optimize AI for lawyers”
I looked at the website. “Made with GPT3.5” 🤦♂️
These are the monkeys you 😀🙂↕️👍 and make money from: their laziness is your opportunity
Civilians haven’t realized every single “AI tool” is built on chatGPT with a handful of changes. These tools add a shiny interface, a prompt, and a few PDFs to make the output slightly more specific
But the 🤢 non-technicals think this is Disney magic. Have fun being replaced!
This is good news for us, for multiple reasons:
First, everything in the physical world is regulated. The digital world is left alone. It costs nothing to start a software company, and billions to approve a new drug. This is the reason we see more video game companies instead of scientific innovation which would save lives
However, where there are problems, I see opportunities. One of the benefits of having aged politicians is that they won’t touch the latest tech because they don’t understand it. Think about it–isn’t it crazy how much of AI is trained on copyrighted data, without consequence?
OpenAI put the entire world’s knowledge into a single website where you can ask it for anything. But you can get sued into the stone age for playing a few seconds of copyrighted music in a video. lmao
But this loophole won’t last long.
History is always moving. “Internet natives” who grew up online are replacing old politicians. Companies are chatting with lawmakers. Countries are making more laws–not removing them
Fortunately, it’s not just politicians who are clueless; market sophistication is low in general, which means most people don’t know how “AI magic” works
This is where the opportunity is:
For salespeople, it means you have the option of joining many different tech companies and still making a killing. Companies “built on chatGPT” can provide a user experience that people are willing to pay for. Think of a diet app providing an aesthetic meal plan with pictures, macronutrients, and 1-click grocery delivery
On top of this, there are an enormous amount of AI tools for you, covering every aspect of the appointment-setting process. You can reduce your workload substantially. And, AI voice dialers are becoming more convincing by the day
Therefore: it’s never been easier to stack multiple contracts. Sales will always be a viable career path because people rely on others when making purchasing decisions. More expensive items such as a home, a company, or B2B product are hard to automate because buyers still want a human relationship
In a world where anyone can make anything, the deciding factor will be the buyer’s psychology. Marketing and relationships become the differentiator between fungible products
For tech, the cost of development has gone down tremendously. I don’t hire anyone for my projects anymore because it’s easier to DIY with AI. I’m seeing more people pushing out SaaS products extremely quickly
In fact, I know someone who made 5 figures/month in 2023 just by offering a “Custom GPT” when the chatGPT Store was first released. It took less than a week to make. Money loves speed.
Yes, it’s more competitive, but on the other hand, every company is adopting new technology. Investors are telling their companies, “Hey can you add AI to this? I don’t care what it is, just make it AI”
All of them are like the lawyer I mentioned–which means there’s still opportunity, because tech scales rapidly. What do I mean by this?
A small, meaningful change by a programmer can create millions of dollars in profit. And software has zero marginal cost of reproduction AKA “build once sell twice.” Because of this, every industry will be devoured by tech, so we will always need tech people
Whether you choose sales or programming, either is fine:
They are performance-based. You earn more over time because you develop your skills over time. Programmers build faster and better as they recognize common patterns. Salespeople get faster at closing, handling objections, and forming relationships, which scales via network effects AKA “I’ve got a mate who…”
Both require skills you can use to start a business. Salespeople can sell their own products, programmers can create their own products
The key here is compounding. Make time work for you. Either career path is fine–it doesn’t matter. What’s more important is to pick the one you enjoy more. Discipline is nice, but motivation amplifies your learning
I chose programming because I’m artistic. Pick sales if you’re extraverted. You don’t need any analysis beyond this. Move faster and experimentamos
Once you’ve decided, I’ll walk you through the first step: how to game the interview. I’ll first cover tech, but you can also skip to the sales section. Then, I’ll cover application and interview strategies for both:
2 Programming Jobs
2.1 Job Market
People are concerned about coders being replaced, but this only half-true. Bad coders from third world sweatshops are definitely being replaced. But skilled individuals are still valuable
Think of it this way: even if GPT10 were released tomorrow, hallucinations and liability still exist. An “expert” will always be needed to sign off on AI-generated output to ensure two things:
The company should not use buggy code
There is evidence of hallucinations as an inherent part of LLM architecture. Meaning, hallucinations will be a problem which persists until there is a breakthrough in design, which is unlikely to happen soon
There is also another limitation. In a complex system, you need to make predictions of predictions to understand cascading effects. However, LLMs currently have bottlenecks on input size and generalizability, so we will still need skilled engineers to weigh tradeoffs and make decisions
The company should not fall into legal trouble
We know this is true because legal precedents have been set in recent months, establishing that companies are responsible for faulty AI-generated output. People have accountability, AI does not
In summary, get good. And here’s what you need to know:
Companies are still hiring. However, you need more polish because there’s less room for error. Companies can no longer justify a mediocre hire. Specializing in a particular domain is a good idea. And, you’ll scare startups if you ask for high cash compensation
Try to get into a big tech company, particularly FAANG. The opportunities are life-changing:
Money. A 0.1% improvement in a tech company translates to millions of dollars in profit. This is what justifies 21-year-olds fresh out of uni making $200,000 as first-year compensation
Most Efficient High-Paying Career. Doctors and lawyers need to spend thousands of hours on graduate school, exams, and other red tape. Investment bankers and management consultants need excellent grades, prestigious universities, impressive extracurriculars, competitive internships, and refined behaviourals. Plus, only a few high-paying companies exist, and you only get once chance. Then, you have to work terrible hours
These industries are old-school
Tech is freedom. Getting into FAANG? Multiple chances. Hiring year-round.
Don’t get in? Still work fewer hours for higher pay as you become more experienced because you are paid based on knowledge, not hours
Prestige. Not only will everyone think you are a genius, but you will also have no trouble finding work once you have FAANG on your résumé
Recruiters will salivate when they see your LinkedIn. You will get an instant interview at any company
If you want to source contracts, you will find it much easier to have consistent deal flow. If you want investment funding, you won’t have any trouble
Of course, you’ll still need to be competent–nobody can use prestige to do nothing and make money–but prestige will get your foot in the door, improve organic earned media, and lower cost of capital
Learning. You’ll be surrounded by intelligent and motivated individuals, world-class best practices, and well-thought-out systems/tooling. It’s the perfect place to hone your skills–you’ll never be the smartest in the room
Network. You’ll be surrounded by some of the smartest people in the world. Many FAANG engineers have networks similar to the Ivy League. Even after you leave, there are groups of ex-coworkers who consist of startup founders, early team members, angel investors, venture capitalists, and mentors
2.2 What Top Companies Look For
The interview process for FAANG is standardized. This interview process applies to many publicly-traded companies such as Microsoft, which is why you’ll see people come up with acronyms such as FAANGMULA+ or Big N
Large, high-paying tech companies have a very specific technical interview which you cannot pass with luck. You also won’t learn it by completing a degree in computer science, information technology, or software engineering. And all the experience in the world won’t help you either because…
FAANG+ only tests on how well you can write algorithms
Yes, seriously–there is nothing else they ask. You don’t actually need to have made a fancy app or website. This is exactly why the process can be gamed.
In contrast:
Tech startups are interested in the skills you have. They want to see a strong portfolio and a good vibe (personal fit) during a casual conversation. They may ask you to design a system. This is good for people who want to gain an edge by networking into a position
Non-tech companies will ask easier algorithm problems, instead focused on your achievements, whether you have a degree, and maybe a small portfolio. They will ask introductory computer science questions on object-oriented design. They will also ask standard behavioural questions, such as how you handle conflict. These companies will pay less, but are far less demanding
2.3 The Technical Interview
You are lucky to be alive today; the interview process has been so standardized that most company interview questions are freely available online
In the past, candidates were asked brainteasers or complex theoretical questions during an interview
However, over the last decade, the process has been standardized in order to deal with scale
If you have only 1,000 positions but 100,000 applicants, you need a fast way to eliminate many of them
Thus, algorithm interviews were born. You can easily give 100,000 people an online assessment and eliminate over half of your applicant pool because they don’t have basic knowledge
2.4 Study Strategy
“All good prep is alike; all bad prep is bad in its own way”
You want to be thoroughly prepared because the waiting period to re-interview can extend up to a year
2.4.1 The Wrong Way
Many candidates try to prep by memorizing as many random questions as possible
This approach is flawed. You won’t really understand what you’re doing, so you won’t be able to use your knowledge across different questions. You’ll never run out of questions to memorize
Even if you (inefficiently) memorize a thousand questions, what will you do when your interviewer introduces a twist? An additional requirement or restriction shouldn’t make you choke
Still, let’s say you get lucky with one offer–you won’t have any negotiating power if you aren’t consistent, because you won’t have multiple offers
2.4.2 The Right Way
To master algorithms, you need to understand what you are doing at a conceptual level. How? You study the patterns, not the questions
There are a fixed number of topics each problem falls under. Master each of those topics one-by-one
It’ll be easy to do this if you deeply understand when to use and when not to use each algorithm
You do this by noticing the patterns: “I’m given a sorted list (input) and need to find something (output)? Linear search could work, but because it’s a sorted list, it’s perfect for binary search.” You should be able to recognize this immediately
How? First, understand the problem. Recognize the set of inputs/rules/conditions corresponding to a certain output/result/outcome. Then, connect the dots to find the pattern. Finally, solve questions which use this pattern until you automatically recognize the pattern for similar problems. This will lead to mastery
If you focus on patterns, you will know exactly which situations apply to a certain algorithm, how to perform optimizations, and how to justify your answers. You should be so well-prepared that you can halfheartedly solve a problem whilst tired and hungry, yet still be correct because you are deriving the answer from the ground up, not memorization
The difference is like memorizing every multiplication versus understanding how multiplication works. Suppose you give a child some blocks and say,
The first row has three blocks, the second has six, the third has nine.” Can you tell me the pattern? How many blocks are in the fourth row? Fifth? Sixth?
They will eventually understand the “concept” of multiplication even if they don’t have a word for it. And eventually, you don’t need to memorize 1*3, 2*3, 3*3, and so on to infinity because you see the pattern
2.4.4 What Companies Are Evaluating
Notice the common thread here is pattern recognition, which is what IQ tests evaluate
Algorithm interviews are also an IQ test:
Do you use a structured, logical approach to solving problems?
Have you considered tradeoffs, possible edge cases, and situations where you could fail?
Are you able to think, communicate, and write clearly?
Do you collaborate with others (including your interviewer)?
Can you work hard, delay gratification, and focus for an extended period of time?
How emotionally reactive are you when introduced to unknowns, complexity, or failure?
The company cares about these traits because it means you have the right foundation–they can teach you anything. This is why they don’t care if you know a particular programming language. And this is also why AI won’t replace you. It’s only replacing those who don’t know how to use it
Uncle Faukes Wisdom: I would even argue these traits are reflective of your ability to live a good life. At any moment in time, you can ask yourself, “What is the optimal decision I should be making right now?” Most just choose not to follow it
For example, you’re reading this because it’s the best thing to do in this current moment versus any other action–otherwise, you wouldn’t be reading this. If you don’t know what you should be doing, then you need to define the problem, then either Google it or ask someone who knows more. It’s simple. Most people don’t have what they want because they weigh current pleasure more than the future pleasure of being a winner
Of course, it won’t be a cakewalk. But, with enough practice, it’s achievable because volume creates luck
2.5 Prerequisites for Algorithms
Before I teach you algorithms, you need some maths and programming basics
If you don’t have any experience, you can take these free courses on MIT OpenCourseWare:
6.0001 Introduction to Computer Science and Programming
6.042J Mathematics for Computer Science
6.006 Introduction to Algorithms
That’s it. That’s all the computer science knowledge you need
Fox Trap: Too many get stuck in analysis paralysis, worrying about the “right” source of knowledge: CLRS, TAoCP, Sedgewick, Skiena, Roughgarden, Dasgupta… you don’t need to obsess over these. Just pick something, get a foundation, and immediately move on to practice. You will learn everything from pattern recognition
The only thing you really need is your basic algorithms. For example, you should be able to write searches (binary search, DFS, BFS) without looking them up
2.6 How to Practice Algorithms
Yes, the memes are real. The best platform to practice algorithms is LeetCode. This website is famous for having algorithm questions sorted by various metrics. You can sort by topic or by difficulty. You can even see the questions asked by companies, great for when you have an interview coming up.
There are many popular lists of questions, but here are some general rules
2.6.1 Progress Expectations
First, don’t be discouraged in the beginning, especially if you can’t even solve an Easy problem. I’ve noticed those who are accustomed to being perfect students are more susceptible to giving up early
You are not expected to be good at LeetCode without significant practice because this is not close to any day-to-day activities as a programmer. You will never be asked to solve a LeetCode problem in real life.
Nevertheless, if you want a high-paying job, you need to learn and win this game. Don’t give up just because you can’t look up the drop rates on a wiki
2.6.2 Programming Language
The programming language you should use is Python. Unless you have substantial experience in another language, you will waste your time. Python solutions are much shorter, cleaner, and easier to write and understand. Interviewers care about your reasoning, not the complexity of the language you use. Using C is like showing me you can cook an egg with one eye closed when I just wanted an egg. Cool, but not relevant to solving the problem
2.6.3 Solving Speed
You should be able to solve easy problems within 10-15 minutes and mediums within 20-30. Try a handful of hard problems within 45. Hards are usually Mediums with a twist, such as an added restriction or requirement.
Don’t look at the answer until you’ve given the question an hour of effort. Check your understanding of the problem and assumptions. Add more test cases. Revise your analysis. If you quit too early, you’ll ruin your ability to develop resilience; your brain will associate difficulty with giving up. Instead, fall in love with the grind–imagine yourself growing neural connections as you exert effort
Developing this resilience is also important for Hards because you won’t always be expected to solve them perfectly. The interviewer may just be assessing whether you break under pressure. If you can explain your detailed thought process to get a suboptimal brute-force solution for a Hard, it should be enough for most companies
2.6.4 Question Selection
Generally, questions with higher acceptance rates are well-written. Target those for practice. Do the company-tagged questions the week or two prior to your scheduled interview date
I teach question patterns and in-depth problem solving strategies in my mentorship group, including an up-to-date question list
Here is a preview:
2.7 Solving Algorithm Problems
“If I had an hour to solve a problem, I’d spend 55 minutes thinking about the problem, and 5 minutes thinking about the solution”
When developing a solution (for anything, really), remember to follow these steps:
Understand the problem: assumptions, constraints, and edge cases
Recognize a pattern: use tests, know which inputs lead to which outputs
Plan your strategy
Write the answer
Check your answer
Optimize
In order of importance, your solution must be:
Correct
Efficient
Clean
Only move to the next step if you have completed the prior step. Go back up the list if you can’t figure out how to solve the problem, do not go down.
2.7.1 Correctness
Proving incorrectness is easier than proving correctness. You can’t just say “this is correct for every input” because you can’t actually test every possible input; yes, you could theoretically assert this with a formal proof using mathematical induction, but there’s a less strict approach for interviews
We should try to prove how our algorithm doesn’t fail. If you can determine a certain input won’t work, then by definition, you’ve proven that it won’t work for all inputs. For example, if you say, “all cats are white,” but then find a black cat, you’ve proven *not all* cats are white. It’s always easier to disprove than prove “all X are Y” because you just need one counterexample to disprove it
How do you find if your algorithm doesn’t work for a certain kind of input? Before you start writing code, create test cases which you know must be true. This will also help you spot a pattern for the solution if you don’t automatically recognize one
You should not create as many test cases as you can think of. If you do, you’ll waste precious time during the interview. It’s also just unnecessary because you can focus on decision coverage instead
This method involves checking whether each control structure in your algorithm (if/for/while/case statements) have had all their possible branches of true/false executed:
def foo(a: int, b: int) -> int:
c = 0
if a > b:
c = a
else:
if b > 0:
c = b
return c
You can cover all cases of logic by following this decision tree:
a > b
a ≤ b
b > 0
b ≤ 0
There are 3 branches of logic here. Test all of them.
In addition to decision coverage, you should test different scenarios which could cause problems, such as:
Boundary Conditions include what happens with your algorithm when values are at extrema or edges: small/large, near/far, few/many, zero/one, empty/non-empty, minimum/maximum, beginning/end
Uniform Input, such as repeating numbers or letters
Different properties of inputs and outputs. Example: let’s think about numbers. Don’t forget–certain numbers such as negatives, even/odd, prime, and zeros have special properties, e.g. you cannot divide something by zero. So, if your algorithm includes division, do you avoid the possibility of a divide-by-zero error?
Loop Execution scenarios. What happens when your loop doesn’t execute, executes once, or executes multiple times?
Tiebreakers. Are you handling tiebreakers for decision criteria? If you’re sorting by comparing whether a number is bigger or smaller, how do you handle when they are equal? Your solution should be able to cover all decision paths
Don’t worry if you can’t think of test cases immediately. As you practice and make mistakes, you’ll learn. For instance, if you forget to check for division by zero, you’ll be more mindful of it when solving later problems
And if you can’t write all these test cases, at least mention them, or how you would change the implementation to make it more testable
The more thorough your test cases, the stronger your argument for correctness. If you can show your test cases don’t fail for all the different kinds of input and every branch of logic, you can be confident your answer is correct
This is how science works: you formulate a hypothesis, rigorously attempt to disprove it; then, after it withstands all those challenges, it becomes a theory
It’s all intertwined: logic, science, LeetCode all fundamentally depend on the ability to reason. If you can learn to reason well, you can solve difficult problems in any domain. Thus, you will always be able to make money because people pay money to solve problems
2.7.2 Efficiency
2.7.2.1 Introduction to Big-O
A good algorithm will run faster on a slow machine than a slow algorithm on a fast machine. So, we need a way to talk about how efficient our code is regardless of the device we are using. Big-O notation is a machine-independent language used to talk about efficiency.
In simple terms, Big-O describes how much your work increases as your input size increases. We specifically think about the “worst case” amount of work because it covers all our bases; we don’t always get nice, clean, convenient “happy path” inputs
2.7.2.2 Time Complexities
In order of most to least efficient, the most common time complexities are:
O(1) Constant
O(log N) Log
O(N) Linear
O(N log N) Log-Linear
O(N²) Quadratic
O(N³) Cubic
O(2ᴺ) Exponential
And these time complexities are often used to describe:
O(1) Array Access
O(log N) Exponential Step-Size Search
O(N) Iteration, Sliding Window
O(N log N) Sort, Heap
O(N²) Pairs
O(N³) Triplets
O(2ᴺ) Permutations
The time complexity of the most popular algorithms are well-known: learn them. You should instantly know a typical sort is O(N log N) and a binary search is O(log N).
2.7.2.3 Why is Optimization Important?
When optimizing your solution, your goal should be to improve the most obvious solution by at least one “level.” So if you have an O(N³) naïve solution, O(N²) should be your goal.
At first glance, a single “level” doesn’t seem like a substantial difference. But consider it this way:
Suppose you develop a search engine which checks one website per second. You have a million websites to search through. Depending on your algorithm, your search will take...
O(log N): 20 seconds
O(N): 11.5 days
O(N²): 32,000 years
You can have the fastest computer in the world, but an O(N²) algorithm will take longer than an O(log N) algorithm on a potato
The simplest way to get started with optimization is using the BUD method:
2.7.2.4 Bottlenecks
Suppose you have an algorithm with multiple independent steps. A bottleneck is when one step has greater time complexity than the other. You should focus on the bottleneck first, prior to concerning yourself with the other steps
Let’s say we have an O(N log N) sort followed by a O(N) search:
numbers = [1, 3, 2, 5, 4]
numbers.sort()
binary_search(numbers, 2)
The time complexity of this is O(N log N) + O(log N) which reduces to O(N log N). This algorithm can only improve if you optimize the O(N log N) sort
Even if you magically make the binary search O(1), the overall time complexity is still O(N log N)
Why? We only care about the largest term because the purpose of Big-O is to look at trends. How does the amount of work increase in proportion to the input?
In the long run, the largest term grows much faster than the smaller terms, so we don’t care what the smaller terms are doing. If we are dealing with a billion calculations, a hundred less or a hundred more won’t be informative.
In this case, is an O(log N) search still useful? It’s true, one O(N) search is faster than one O(N log N) sort followed by an O(log N) binary search. Of course, this doesn’t mean the binary search is worthless; it depends on whether you continue using the sorted array to perform searches
If you are doing multiple searches after one sort, you should definitely do an O(log N) binary search instead of an O(N) linear search. As you scale, O(log N) is much faster than O(N)
We’re concerned about what happens when you run something a huge number of times. In technical terms, what happens as we asymptotically approach an infinite number of searches?
Run the numbers. Let’s say your input size N is a million items, and you do a million searches:
one O(N log N) sort + a million O(log N) searches
= 1 * (1 million * 20) + (1 million * 20)
= 40 million calculations
a million O(N) searches
= 1 million * 1 million
= 1 trillion calculations
Not even close.
This could be confusing in mathematical terms, but just think of it this way: all you’re trying to do with Big-O is reduce effort
Let’s say you’re going through some papers on your desk. Is it easier to sort the papers before looking for what you need? Or should you just start searching right away?
If you’re only going to look through the papers once, why sort it? But, if you need to go through it multiple times, it’ll be worthwhile to take the time to organize
Just like organizing paper, there’s a limit to how fast you can do computer operations. You can’t snap your fingers to organize clutter; you need to move things around and put them in different piles–how fast you can look through the sorted stack of papers won’t make the actual sort faster. So the “optimal” solution isn’t the best if you’re only going to look through the stack of papers once–you need to understand whether it’s optimal based on the use case
If you must sort and can’t make it any faster, you know you have the best conceivable runtime (BCR). The BCR is informative because you can use it to make decisions about how to solve the problem. If you know your BCR is O(N²), then you shouldn’t worry about including an O(N log N) sort if it helps you solve the problem
Talking through your analysis with an interviewer is good to demonstrate your knowledge. You’re not a monkey who says “X always better.” You’re weighing tradeoffs
This is how a good engineer thinks. Demonstrating you are an analytical engineer is more important than silently solving the problem as fast as possible
2.7.2.5 Unnecessary Work
Once you have a solution, consider reformulating it. For example:
Question: Print all positive integers in this equation, a² + b² = c² + d² where a, b, c, d are integers between 1 and 1000.
Brute-Force Solution: 4 nested for-loops, runtime O(N⁴)
n = 1000
for a in range(1, n):
for b in range(1, n):
for c in range(1, n):
for d in range(1, n):
if a**2 + b**2 == c**2 + d**2:
print(a, b, c, d)
You can improve this by rewriting the equation as d = √(a² + b² - c²)
n = 1000
for a in range(1, n):
for b in range(1, n):
for c in range(1, n):
d = (a**2 + b**2 - c**2) ** 0.5
if a**2 + b**2 == c**2 + d**2:
print(a, b, c, d)
You no longer have to loop through d, so this equation is reduced by a factor of N and is now O(N³)
2.7.2.6 Duplicated Work
Let’s take the Fibonacci sequence for example. Every number in this sequence is the sum of the two numbers before it:
0 1 1 2 3 5 8
One way to represent this sequence is via recursion:
def fibonacci(n):
if n <= 1:
return n
return fibonacci(n - 1) + fibonacci(n - 2)
Think about this for a second.
When you call fibonacci(n - 1), you are going to call fibonacci((n - 1) - 1). But is that not just fibonacci(n - 2)? You already calculate fibonacci(n - 2) in the previous function call. So you are unnecessarily doubling the amount of work you have to do with every call.
The time complexity of this recursive algorithm is O(2ᴺ). You can see how this works because the branches are in pairs of 2. Notice the duplicated branches
We can optimize this algorithm by saving the value of each fibonacci(n) which we’ve already calculated in a list:
def fibonacci(n):
f = [0, 1]
for i in range(2, n + 1):
f.append(f[i - 1] + f[i - 2])
return f[n]
And now we have O(N). Notice how much smaller the tree looks:
This is a huge difference. If we assumed 1 computation per second, fib(10) would take >15 minutes with the naïve algorithm, and 10 seconds with the optimized algorithm. You can try it on your own computer and feel the speed difference (it won’t actually take 15 min).
When optimizing, see if you can trade increased space complexity for decreased time complexity. Faster algorithms are generally more valuable than space-efficient algorithms because space is easier and cheaper to increase.
2.7.3 Clean Code
Memorize the Python PEP8 guidelines until they become second nature. PEP8 is not sufficient to write clean code, but it is necessary in an interview context
They’re analogous to grammar rules. Grammar rules help you write more readable sentences, but don’t help you write beautiful prose. Similarly, PEP8 isn’t sufficient for clean code because it doesn’t force you to think about the way you write code. Namely, it does not inform you about how well your code can be understood or maintained. Here are some examples of how PEP8 fails:
2.7.3.1 Variable Naming
In a language such as C or Java, you can afford to have more ambiguous variable names because there are type declarations which explicitly tell you what that variable does.
If I have a file pointer named “f” and use it in a function immediately proceeding the type declaration, it’s a good enough variable name. Python doesn’t enforce type declarations, so we should be more careful about our variable names.
However, even if you know the type, your code can still be unintelligible.
Let’s take a look at this function:
ts('bowtiedfox', 20, False, True)
Functions use positional arguments, so this is a valid function call. We are also PEP8 compliant. But do you understand what this function is doing?
twitter_search('bowtiedfox', 20, False, True)
Much more clear. But do you know what the function arguments describe?
It’s clear the topic we’re searching for is “bowtiedfox,” but the other arguments are completely unknown. In Python, keyword arguments are not required, but you should use them:
twitter_search('bowtiedfox', minlikes=20, retweets=False, replies=True)
2.7.3.2 DRY - Don’t Repeat Yourself
If you need to do repeated work, use containers, loops, and functions.
Bad:
word1 = 'one'
word2 = 'two'
word3 = 'three'
word4 = 'four'
print(word1)
print(word2)
print(word3)
print(word4)
Good:
numbers = ['one', 'two', 'three', 'four']
for number in numbers:
print(number)
2.7.3.3 Explaining Variable
This is PEP8 compliant:
cost = 10
if cost > 5:
leave_store()
But, it’s better understood if we use a variable to explain what we’re doing:
cost = 10
too_expensive = cost > 5
if too_expensive:
leave_store()
2.7.3.4 Rewrite Conditionals to Sound Natural
is_two(n: int):
composite = is_composite(n)
odd = n%2 == 1
if not (composite or odd):
print(“Yes, this is two”)
What does it mean for a number to not be composite or odd? How do those properties relate to the number two? It takes a minute for you to understand the association.
We can make the connection more salient by using De’Morgan’s Law:
is_two(n: int):
composite = is_composite(n)
odd = n%2 == 1
if not composite and not odd:
print(“Yes, this is two”)
This makes more sense. Two is not composite and not odd. But negation requires extra “mental tax,” so we can make this even more readable by rewriting the booleans:
is_two(n: int):
prime = is_prime(n)
even = n%2 == 0
if prime and even:
print(“Yes, this is two”)
Sly Fox Tip: Eliminating negation also works with people, especially young children. It’s harder to process negation, e.g. “don’t run on the street” is more difficult to adhere to than “stay on the pavement”
If you want to learn more about clean code, you can read the book Clean Code by Robert C. Martin, but know this: code doesn’t become more readable from hard rules
You have to develop intuition for human perception and memory. Readable code breaks the code into “paragraphs” with context, which makes it easy to skim. Remember, code is read more than it is written, especially now with AI-generated slop
2.8 System Design Interview
Besides LeetCode, you may be asked some questions on how to design a system
You’re more likely to be asked about system design with:
smaller companies
more senior roles
For example, they may ask you 4 LeetCode + 1 System Design instead of 5 LeetCode questions.
2.8.1 Entry-Level System Design
For internships, new grads, and entry-level roles, the most you’ll be expected to know is the four principles of object-oriented design:
abstraction
encapsulation
polymorphism
inheritance
These simple topics should be covered in any introductory course (including the ones I linked above). Your projects should teach you enough object-oriented design. But, the primary focus will be on LeetCode. Many companies don’t ask any system design to entry-levels at all, but this could be changing
2.8.2 Mid and Senior Level System Design
Anything beyond entry-level will be expected to understand tradeoffs when designing large systems, such as:
Performance vs Scalability
Latency vs Throughput
Availability vs Consistency
The strongest preparation is reading Designing Data-Intensive Applications by Martin Kleppmann, then Alex Xu’s System Design Interview books for practice questions. I highly suggest this for senior-level candidates
But, if you don’t anticipate heavy system design, Donne Martin’s System Design Primer should suffice
In either case, watch a few system design interviews on YouTube and be prepared to discuss the design of your work projects
I can write more in-depth about system design in a later post if there is interest, but it’s beyond the scope of this guide
2.8.3 System Design Interview Evaluation
Note: the system design interview is not about perfectly recreating the design of an application such as Facebook, Instagram, Twitter, etc.
Again, it’s an IQ test. What they’re really evaluating is whether the candidate:
takes time to understand and break down the problem
asks intelligent questions relevant to the problem
understands functional and non-functional requirements
asks about product features or service-level agreements (SLAs)
weighs tradeoffs and optimization constraints
3 Sales Jobs
In contrast to tech, sales has a far lower barrier to entry. It’s a game of volume AKA putting your reps in. Companies know this, so most entry-level positions take people with zero experience as long as you’re willing to grind
The only prerequisite knowledge I’d suggest is:
Know at least one framework to lean on during the interview, such as challenger sales, straightline persuasion, sandler selling, BANT, MEDDIC (for corporate sales)
Don’t actually name and use a framework verbatim. They just want to know you’re familiar with the process of taking a lead from interest to closeBe familiar with the software. It’s usually Salesforce + ZoomInfo or Hubspot + Apollo. They’ll ask basics such as whether you’re familiar with updating a CRM, adding call notes, and managing a task queue
There are plenty of resources online for this, such as ZoomInfo University or Hubspot Academy. You don’t need to spend more than an evening on this because any 5 year old can become an expert in a month
3.1 Companies to Target
In sales, you start as a Sales Development Representatives (SDR) or Business Development Representative (BDR) who sets appointments for the more experienced Account Executive (AE) to close the leads
There are many AI tools to automate the appointment setting process, so it’s more important to target the right companies:
remote
tech industry only. remember: people believe tech is Disney magic, so it’s much easier to sell software than it is to sell boring consulting services which anyone can offer without guaranteed results
no KPIs or dial requirements. this will allow you to use AI tools instead of being forced to do a certain number of calls per day
have made an investment in their sales team with software such as ZoomInfo. this means the sales team is established and are willing to give resources to help you
if you can get some insider information by talking to people at the company, it’s good to look for:
a high percentage of leads which are inbound
a high percentage of reps hitting quota
The idea is to get into a company where the product sells itself
This research should also help you during the interview. You need to be familiar with the companies you are applying to. Know the niche and the Ideal Customer Profile (ICP), including the types of companies, relevant departments, and roles of customers. For example, payroll SaaS is sold to HR and finance
If you need practice, there are salespeople in my mentorship group who can do mock interviews and answer questions. We also keep an updated list of the latest companies and AI tools which fit these requirements
3.2 Promotion Timeline
You should be looking to get promoted from an SDR to AE within 9-15 months
If you aren’t getting promoted within this timeframe, you can look for a different role with >1.5x on-target earnings (OTE)
Ideally, you’ll get promoted on performance, not rules. You should leave if there’s a political issue with getting promoted e.g. minimum 2-year requirement to “graduate” from SDR. The only time this is acceptable is if you are mediocre and do want to be promoted based on rules. You’ll get guaranteed promotions for taking orders
This generally holds true regardless of whether you’re in sales or programming. Smaller companies are much more likely to promote you quickly, but you should be prepared to work harder
You can also rapidly improve your skills by working like a dog at a company which is selling to small/mid-sized businesses with short deal cycles and high volume. You’ll burn out from powerdialing all day to hit your high KPIs, but you’ll get good very fast
4 The Job Application Process
4.1 Strategy
After optimizing your resume, follow a two-pronged approach when applying to jobs: volume + targeted outreach
Here’s why: there are too many companies. A hybrid approach lets you weigh stronger companies more than weaker ones. You’ll put more time into companies you want:
Okay Companies: Volume
Decent Companies: Targeted
Excellent Companies: Networked
4.2 Volume
The reason I recommend a high-volume approach is twofold:
First: many of these positions are receiving an enormous amount of applications. They may only look at the first few hundred. Getting into the queue early will help you get looked at by a recruiter:
4.2.1 Language
Second: yes, you can target specific companies, but there’s another reason I still recommend including high volume. If you get as many interviews as possible, you’ll start to master the interview process
You need to create a mental map of what the industry looks like. With high volume, you’ll learn vocabulary and common questions
As a salesperson, if you mention industry-specific language in your answers such as “objection handling” and “closing” in the right context, it shows you understand the work
Using this language is important because the interviewer is thinking like Aristotle: “if it walks like a duck and quacks like a duck, it must be a duck”
Nerds understand this intuitively, but they overdo it and use too many big words, thinking “the less people can understand me, the more intelligent they’ll think I am”
This is the wrong way to think about vocabulary. Think of it as learning the “language” of the industry by immersion
For example, when I was first learning about weightlifting, I read as many Tweets as I could on exercise. I Googled new vocabulary until I was able to start linking concepts together. Pattern recognition. Do you think bodybuilders would take me more seriously if I ask about “hypertrophy” or “toning”?
Using certain words shows you’re part of a group. Think about it: when people on social media say “autism,” it’s not actually about a medical diagnosis
“Autism” is used to refer to someone intelligent or obsessively interested in a topic. The people who use “autism” tend to be involved in the world of cryptocurrencies. If you hear someone using the word “autism,” you know they’re involved with (or at least aware of) crypto, defi, web3
Using the slang of a group means you’re a member of that group. The more words you use, the longer you’ve been in that group, and the stronger your relationships. This is why employers respect people who use their lingo: you’ve been in the industry, and you know people in the industry
And it’s also how you teach yourself anything: you create a connected map of concepts using vocabulary. Hint: ChatGPT accelerates this a thousandfold
Obviously, this doesn’t mean you just throw words at someone. It has to be used correctly and in the right context. Trying to show off with useless jargon is a bright red flag–which is why you need more volume
4.2.2 Calibration
Another important advantage of the high-volume approach is practice. You should not apply to elite companies such as Albertsons immediately because you don’t know whether you’re calibrated:
Did you not explain your assumptions well enough?
Are you getting too nervous and rambling?
Do you need more practice with something?
You can’t teach a kid how to ride a bike at a seminar. There are limits to pure reason, and live practice addresses them. But most people don’t do volume because they’re afraid the recruiter will use the scary word “no 👻”
Reading won’t teach you about your body language, filler words, your tone, your pacing, blurting out a slur because you remembered an edgy online joke, flowing from one question to the next, reacting to the interviewer’s emotional cues
I’ve had instances where one of my students writes perfect stories to answer interview questions, but doesn’t realize how long and boring the stories are when spoken out loud
Or, it may sound great because you have context, but the interviewer is confused, which means you need to address gaps in the story
I recommend using a tool such as Sly Apply to mass apply whether you are applying for full-time, contract, or internship positions
4.3 Targeted
4.3.1 Finding Companies
A targeted approach works better for the companies you really want
Jobs are more than just a paycheque. Maximizing compensation is easy: just look up the “top paying companies” list on levels.fyi
However, I’d also suggest considering these variables:
Network: Who are the people you are going to work with? Who are the people at the company, including founders, employees, investors, and advisors?
People often think you can take advantage of smaller cities for cheaper talent, no echo chamber, local universities, and so on
However, there’s something to be said about being in a Tier 1 location for your industry such as Silicon Valley or Wall Street
Yes, “the best investors, engineers, entrepreneurs, universities” etc are there, this is obvious
But some things you may not have considered are:
Any small % edge is going to help you in a winner-take-all market
All of the people you want to partner with are there. Business doesn’t happen in meetings, it happens at coffee shops, parties, and friends-of-friends
You’ll have a head start on the latest happenings, which will give you an edge in the market. Imagine hearing about ChatGPT months before everyone else
This is also the reason you should be careful if you’re seeking a remote role. Yes, remote is the best case scenario if you want to build your business on the side–without question
However, I will say, I’ve noticed something “off” about juniors who started their careers remote
There’s something to be said about being around other killers. Iron sharpens iron. Hearing stories and being around other intelligent people multiplies your experience
Here’s what I’d do: at a small company working with intelligent people who want to mentor you, it’s worth going in-person for at least a year or two. Sharpen skills, find ideas, learn lingo. You’ll get good and end up working with future founders, senior leaders, and market-making VCs
But at a large company where you’ll do monkey work, go remote. This is where setting up your laptop will take a month because you need to request access to a drunk IT team. Long meetings where you waste time with:
yar har har did ja see the boxing match las’ night? haw haw I woulda knocked out floyd 😤💯 if I hadn’t tore my ACL twenty years ago hyuk hyuk! all he does is run around. damn bum knee... so what’d ja do over the weekend *snort*? me ‘n steve ’re tryin’ out this new brunch place with half off beers and wings to catch the game on sunday. wanna join? 🫃
This is brain pollution. Not only this, there’s an “anti-work” sentiment in these companies where people do the bare minimum to afford pet food for their fur babies. Don’t waste your precious time with these dopaminers
Market and Growth Rate: Don’t join a company whose industry is in decline. An example of what not to join is the newspaper business, which is shrinking rapidly each year with no chance of recovery
Optionality: Will you develop transferable skills? Avoid being pigeonholed by doing a hyper-specific activity or tasks which don’t contribute to revenue generation
Role: Don’t join a role which will set your career back, such as a Support Engineer role. However, this can also be taken to the opposite extreme, where you focus too much on your “niche.” Think more about your actual responsibilities and what you’ll be learning
Now that you know all of these variables, you can weigh tradeoffs. You should think of these variables on a sliding scale. I’m not saying you should maximize one or the other; life is very rarely a choice between 0% or 100%. It’s often a mix of percentages
I explained these so you can better understand the situations you will be in
For example, do you really want to be the first hire for a sales team?
On one hand, they may hold you to such low expectations that you’ll be given a lot of free time
On the other hand, you won’t be able to learn from other excellent salespeople
Once you’ve decided which companies you want to put more effort in to, there are three ways to increase the conversion rate of your outreaches. Each of these options trades more effort for a higher hit rate:
Generic recruiter outreach (lower hit rate, less time consuming)
Customized recruiter outreach (higher hit rate, more time consuming)
Networking for a referral (highest hit rate, most time consuming)
4.3.2 Recruiter Outreach
There’s an easier way to get seen by a recruiter which doesn’t involve hunting for referrals
What I’d suggest is letting LinkedIn be your place for spamming applications using Sly Apply, then reaching out to the recruiter for jobs it’s applied to. You can just message them with a simple:
Hi, my name is Beau and I’m a student at the Faukes Institute. I just applied to the sales role at BTF Associates, and I thought I’d be a good fit because I have (relevant experience). I would be grateful for a chance to discuss. Here’s my Calendly (or feel free to send yours):
This accomplishes three things:
explains who you are
tells them what you want
gives them a call-to-action (make it easy for them to understand next steps)
Why does this work? Remember: recruiters WANT to help you. A successful hire makes them look good. They will give you interview prep if you just ask, maybe even a mock interview. Doing well with a recruiter is also a tacit part of the “diversity” interview, proving you can handle people different from you
If you want to tailor your message further, be more detailed:
Hi Xenia, my name is Beau, and I recently came across a post from the Faukes Institute looking for engineers to work on their tan brunette search engine
I’m interested in applying, and thought I’d be a good fit because I’ve done similar work. At my current job, I worked on a travel app tracking the Worldwide Latina Belt which required (relevant experience), and I achieved (accomplishments)
I’d be happy to discuss my qualifications further to see if I’d be a good fit. Here’s my Calendly (or feel free to send yours):
Once again, this is more time-consuming, so you will need to weigh whether it’s worth putting in this effort
Sly Fox Tip: The best recruiters are the ones who have successfully hired others. Search for something such as “just got hired” on LinkedIn and look for posts where people are thanking their recruiter. You can use this as your opener. Alternatively, you can search for “I’m hiring”
4.3.3 Referrals
I’d only suggest hunting for referrals for excellent companies that you really want to get in to, such as FAANG, especially if you don’t have a degree
Networking is a time-consuming process, but referrals almost guarantee you an interview
You also gain an edge by asking people what the process is like. For example, Apple may ask about which products you like, what could be improved, and why you want to work there. You likely won’t learn about these questions unless you network
See my networking guide
5 The Interview Process
5.1 Evaluation
Once again, let’s break down the objective. You want the interviewer to hire you. What are they thinking about?
will this person be good at their job
will this person embarrass me
can I work with them all day without going insane
Every interview is two parts. Part one is just an IQ test by proxy. And after passing the IQ test, they want to make sure it doesn’t come with any mental illness
But don’t neglect this–it’s not just about “can I have a beer with this person” or “can I be stuck in an airport with this person for 8 hours” AKA the “vibe check” as the youth say
It’s about how much responsibility you can take, how you deal with others, and whether you actually care about the quality of your work
And these qualities are so important that they determine how much you can negotiate: whether you get a lowball offer, or if you get offered a higher position. This is why I cringe whenever I hear people trying to be cheeky
For example, if someone asks you “tell me about a weakness,” do not say nonsense such as “sugar”
You won’t be asked this by anyone under 60 years old. But, think about why someone would ask this: they are looking for self-awareness, high agency, and an analytical mind:
can you evaluate what a weakness is?
can you address the second and third order implications of the weakness?
how has the weakness shown itself in your professional or academic career?
are you social calibrated enough to avoid being cliché or ridiculous with an answer such as “I’m a perfectionist”?
have you created safeguards in order to address the weakness?
A monkey answer is to say something high risk. Your interviewer is then deciding whether you are mentally redacted (don’t have an answer), or socially redacted (would behave immature)
A sly fox answer focuses on how to present the weakness. You could lie, but this adds another layer of complexity because they’ll be evaluating your sincerety, and you need to prepare for probing questions. In contrast, you don’t have to remember anything when you tell the truth
So what does a good answer look like? Let’s take an answer someone would normally consider risky. If you say something such as, “I’m an emotional person,” this is a terrible answer. Not because of the trait itself, but because you weren’t able to articulate it
The way you construct this is by saying:
I am a person who has been very careful to choose activities I am passionate about. I launched an education startup because I am passionate about providing opportunities to people in developing nations. My previous company focused on implmeneting AI tutors for underfunded schools
Because I am passionate about these things, I am often emotionally invested in the outcome. And I know this is wrong–being emotionally invested colours the analysis and the way I interpret situations
I understand it’s a weakness, therefore I’ve created certain filters to prevent this weakness from showing up without me being aware of it.
And I’ve done three things in particular:
I know there is a difference between being emotionally invested and being emotional. While I may be emotionally invested in something intellectually, I’m never emotional about it. Basically, I keep a poker face. I make sure when I’m discussing the issue with colleagues or those financially vested in it, they don’t feel that I am biased towards one side
Second, I’ve always ensured I have a colleague review what I am doing. This person does not report to me and is independent of my role. I think this is generally a good policy for anyone, but I’ve made sure to set up this structure for myself
And the last thing I’ve done is to take on roles which have exposed me to deeper analytical tools. So, when I am analyzing a situation, I know I’m applying the right kind of analysis, and I’m not being tainted by my emotional investment in the idea. For example, if we were to run an ad campaign, I would focus solely on the numbers, such as the conversion rate, instead of which ad I personally like
And I can give you examples of how I’ve initially succumbed to this problem, and examples of how I’ve applied these three techniques to overcome the problem
Feel free to shorten this depending on the actual interview constraints, but the general structure should remain the same AKA “it’s about how you say it”
Look at what this answer says about you:
You are self-aware enough to recognize potentially negative traits about yourself
You understand the situations where these behaviours arise
You have taken action towards negating the downside/risk
This experience is something which the interviewer can relate to
Notice: Nobody actually cares about what your actual flaw is. All interview questions are just testing for certain traits
They can’t just ask “are you self-aware?” Anyone can say yes to this. They need evidence. Results. They find this proof from stories about what you’ve done
This is also why “tell me about a weakness” is falling out of fashion in interviews. Instead, they’ll ask you questions about how you’ve handled difficult situations, then deduce weaknesses from your responses
5.2 Preparation
How do you know which characteristics interviewers want? There are an unlimited number of traits. Most companies just have a list of what they don’t want to see, because they can disqualify you immediately
Remember: deciding “no” is easier than “yes.” For example, if you start crying because of a hard question, they know it’s a rejection, no matter how well the rest of your interview goes
However, there are a few common themes most companies want to see. You can’t just be a loyal and hard-working dog employee. They want to see leadership ability, conflict resolution, analytical skills, and teamwork. But how many more traits are there?
You can cover your bases for most companies by studying two things:
company values
the responsibilities of the role you’re going for
5.2.1 Company Values
Most big companies publicly post what kind of people they’re looking for. Weave those traits into your stories. For example, take a look at the Amazon Leadership Principles
Don’t worry about writing a hundred stories to cover every company. Most company values ask for similar things, so you only need a few
For example, Google looks for “Googley-ness,” which includes “out-of-the-box thinking, curiosity, enthusiasm, self-improvement.” Well, one of the Amazon Leadership Principles is “Learn and Be Curious,” which also ticks the same boxes. Close enough!
You don’t need a story for each individual company value either–you can hit multiple in one response to a question. As long as you address most of them, the company will know you’ll be a good slave employee
5.2.2 Role Responsibilities
You need to convince the interviewer that you can manage the responsibilities for the role you’re targeting. The more you can handle, the more you get paid
Let’s look at how your discussion topics expose your level:
Junior engineer: small tasks such as fixing bugs and writing tests
Mid-level: independently working on features
Senior: managing a team, designing software to handle scale
Staff: handling multiple teams
In my experience, it’s very difficult for someone to jump to a level that they weren’t at before. It’s like getting XP in a video game; you need to get a certain amount before you hit the next level
An interviewer won’t like if you’re a mid-level engineer going for a senior role if you’ve never taken on senior-level responsibilities before
But if you talk like a senior and walk like a senior, then clearly, you should be at senior. Aristotle doesn’t miss!
5.3 Strategy
Most direct questions have been replaced by “tell me about a time you did x” because interviewers indirectly evaluate traits from how you handle negative events: challenges, failures, crises
If you can’t talk about handling responsibility, they’ll reject you with, “you need 2-3 more years of experience.” But let’s be honest–why would they invite you to an interview if you didn’t have enough years? Your résumé hasn’t changed. The reason is because you weren’t able to speak properly
The way you answer these interview questions is by using F-STAR or STAR-F:
5.3.1 F-STAR Method
STAR is a popular approach to answer interview questions as a story:
Situation (10%): Set the scene. Describe who you were working for, what your role was, how long ago it was, who you were reporting to, who was reporting to you formally and informally, and any dynamics explaining the depth of the challenge you faced
Task (10%): Detail what you had to do, why you had to do it, why it was important, and the risks or challenges associated with the task
Action (50%): Explain what you actually did, give direct quotes, and explain why decisions were made. Give facts because the interviewer does not want your interpretation, they want to form their own opinion based on numbers, names, concepts
The why is important because they are evaluating whether you make a big deal out of things not worth fighting for. You need to convince them it was worth fixing in the first place
Result (20%): Give quantitative metrics on the outcomes you achieved
This method is well-known and common. However, if you want to take your response to the next level, add a Framework (10%) to the beginning or end, wherever it fits most naturally. This is where you get F-STAR or STAR-F:
“Tell me about a time you handled a conflict”
Framework: I have a strategy for handling conflict which I learned from a book called “Sly as a Fox” which I use because… First, we talk about what happened, then we discuss differences in information and intent, finally…
Situation: When I was working for the Faukes Institute, I was on a project regarding…
Task: I had to manage a conflict between two juniors who were reporting to me. They were arguing about whether Mongolians were also considered Moldovan even though they are not located on the Worldwide Latina Belt. The central question was: do Mongolians converge to Latina?
Action: At first, I tried to advise each of them on how to handle the issue, but after a few weeks, it was clear there was still resentment. So, using the framework, I…
Result: Because they were able to resolve the conflict, the project progressed much more quickly, and we were able to speed up the completion by 25%
Another way to do this is to describe the framework at the end:
Situation: When I was working for the Faukes Institute, I was on a project regarding…
Task: I had to manage a conflict between two juniors who were reporting to me. They were arguing about whether Mongolians were also considered Moldovan even though they are not located on the Worldwide Latina Belt. The central question was: do Mongolians converge to Latina?
Action: At first, I tried to advise each of them on how to handle the issue, but after a few weeks, it was clear there was still resentment. So, I met with them individually to discuss what happened, then…
Result: Because they were able to resolve the conflict, the project progressed much more quickly, and we were able to speed up the completion by 25%
Framework: Because it worked so well, I ended up developing a 1-page document detailing the framework. We ended up using this to resolve additional conflicts within the team and it was used across different teams
Sly Fox Tip: You can even add a clickbaity introduction to hook them in
Some more tips:
Include Detail: Detail does not mean “information.” You need to find the key drivers of the issue. If you add unnecessary fluff, it’ll annoy the interviewer. And if you ramble about something you don’t know about, you’re done.
How do you know if the information is useful or not? You ask “so what?”
The team was going through a conflict → So what?
It was affecting productivity → So what?
We couldn’t meet the project deadline → So what?
We were going to lose one of our most valuable clients
Do “so what” 3 times to get meaningful details for the interviewer
When to Use STAR: You don’t always need an F: Framework if you don’t have one. And if they ask how you keep up with industry trends, obviously you don’t have to use STAR. Just give a direct response
How Long Should Stories Be: Don’t go over 7 minutes with these responses. 3-5 minutes is the sweet spot, where you avoid making the interviewer bored. If you want to make your responses more interesting, improve your storytelling:
5.3.2 Storytelling
I’ll be honest–I’m not a great storyteller, but you don’t need to be
What I can show you is how to write. I try my best to write clearly because I believe writing is thinking. In order to think, you must learn how to write
The three best tips I have for writing are:
Clarify Assumptions
Your answer should very clearly address the question. Don’t make it difficult for your interviewer to understand what you’re talking about
I would do the following:
ask questions to make sure you understand the prompt
restate the prompt in your own words
give a short summary of the story you’re about to tell
You’d like me to talk about a time I led a project in an international office? I can talk about when I worked for the Faukes Institute at their Chisinau headquarters. I led the wife hunting team to develop geolocation algorithms to analyze whether Moldova was the tan brunette spawn point
When you give this brief summary, you can look at the interviewer and see if he agrees with your interpretation of the question. If he doesn’t agree, you give him a chance to correct you
If you want to be extra careful, you can be upfront after your summary: “How does that sound?” or “Does this address the question?”
Use Sequential Reasoning A → B
Let’s go back to what I wrote towards the end of section 5.1:
They can’t just ask “are you self-aware?” Anyone can say yes to this. They need evidence. Results. They find this proof from stories about what you’ve done
When I say “sequential reasoning,” I mean the next sentence you write should refer to the previous sentence somehow
Let me break it down:
A: “They can’t just ask, ‘are you self aware?’
A is the first sentence
B: Anyone can say yes to this
What is this? this refers to the question in A
C: They need evidence
Evidence of what? This question in B
D: Results
What kind of results? Evidence in C
E: They find this proof from stories about what you’ve done
Proof of what? Proof of your results in D
Notice: I’m going from A → B → C → D → E. It follows a logical sequence. You can stop at any point to clarify if you don’t understand how the story connects. It’s easy to follow an argument when it moves like this.
How do you create this flow?
Whenever you write or speak, your sentences should connect in a chain. The easiest way to create this chain is to refer to the last thing you said…
Like I did just now. Did you notice?
Whenever you write or speak, your sentences should connect in a chain
The easiest way to create this chain is…
As you become better, you’ll start to be more subtle with this technique. This is important beacuse if you repeat words too much, it sounds boring and inelegant. This concept applies to sentences, too:
Vary Sentence Length
5.4 Common Questions
There are so many questions you can prepare for. You can look up “list of behavioural questions” to get a never-ending list. But I’m going to teach you some intuition and strategy so you can prepare for them more generally
But first, don’t neglect that you’re interacting with a person. Prepare for small talk with your interviewer by looking them up online. Look for common interests or projects, so you can move the conversation in that direction to build rapport. The reason you want to do this is because if the interviewer likes you, they will want you to succeed
Have some decorum when you do this–don’t mention anything private. If I hear anyone harass their interviewer, I’m going to hack you, call your mum, and ask, “Where’s your manners!”
Once you’ve handled small talk, let’s understand how the interviewer thinks:
“Walk me through your résumé” or “tell me about yourself”
Most people struggle to present their candidacy because they don’t understand why the interviewer is asking this. There’s a natural tension between three variables:
The Company’s Requirements: The company is looking for a set of characteristics. Let’s look at some common ones: leadership ability, conflict resolution, analytical skills, and teamwork. They may look for other traits of course, but let’s use these four as an example
Your Strengths: You need to frame your strengths in the language of what they are looking for to make it relevant. For example, in sales, you are not good at changing someone’s mind, you are good at handling objections
Your Weaknesses: Everyone has one or two things which are not ideal. You need to address them immediately so you can correct the interviewer’s bias against you
And of course, how you present this information matters, too. You don’t need to talk about things which are exclusively on your résumé. You aren’t just limited to what’s on there–it includes your life experience
It’s seen as a sign of confidence when you can concisely and articulately include items which are not on your résumé but relevant to the interview
For example, suppose I’m interviewing someone with an engineering background for a sales role. Here’s a good answer:
Sure, I’ll tell you a bit about myself. I’ll give you a brief overview, and if you’d like to ask me about any details, please feel free to do so
I hold two different nationalities: British and Italian. From an early age, I realized how valuable travel was when visiting my family in Italy
Because of the influence of my family, I decided to go to high school in Italy. I chose it because I noticed my father had developed a successful career because, the high school focused on developing your confidence and problem-solving by emphasizing extracurriculars
It’s regarded as one of the better high schools in Italy, and I was exposed to many different hobbies. One of the hobbies I enjoyed was sailing, and I took part in international sailing events. I loved that it forced me to be present because you can’t plan everything. Because of its unpredictable nature, the team needs to rely on you and make sure you follow a certain protocol when responding to difficult situations
I learned a lot about teamwork. It was interesting because I thought I wanted to go into engineering, but this experience made me want to consider business
So, when I looked for internships, I focused on roles involving both. You can see my internship was a tech role, but in fact I was focused on helping the company secure more leads and setting appointments. I had to negotiate with their vendors, create proposals, and secure contracts. I also had to reach out to different experts within the company to figure out best practices
So that’s the academic side. And as I mentioned, my hobbies are sailing and traveling. I also like to cook, specifically French cuisine, because cooking for my neighbors helped me make friends when traveling
Let’s look at how this story addresses the variables I mentioned earlier:
Company Requirements
Leadership: Reaching out to experts
Conflict Resolution: Negotiation and contracts
Analytical Skills: Engineering
Teamwork: Sailing
Strengths: “Securing leads, setting appointments” is the language of sales
Weaknesses: Engineering background implies less social. This weakness was addressed by mentioning social hobbies
Notice: at the start, the candidate mentioned “let me know if you’d like me to go into more detail.” This is important to mention either at the beginning or end because you prompt the interviewer to dig deeper
You can use their response as a hint to see whether the interviewer is interested or has a concern about a particular area
“Why do you want to work here?”
The answers I get to this question make me unbelievably disappointed. It’s such an obvious question candidates don’t prepare for. Is it a trick question? Is it unexpected? Never. You’re being given a free chance to demonstrate your skills
The reason interviewers choose easy questions is because they want to test for other things. It’s like science; you keep everything the same and test one variable to measure its effect. An easy question gives you the opportunity to showcase your analytical and communication skills without stumbling on the complexity of a question
The absolute worst answer you can give is a generic one:
This is a top company. I want a top career. I spoke to many people and they said it’ll help me position my future. Plus, I was top of my class, so I think I’d fit
Yes, this was a real answer I’ve heard before. I couldn’t believe it
Why would you ever say this? It’s like courting a woman. You won’t get a date with a Moldovan by telling her how attractive she is. She is well-aware that tan brunettes are the peak of human beauty
Remember: you’re being evaluated on every single thing you say. Giving a bad answer is throwing away an opportunity to showcase your analytical skills
We don’t know deep you think. We don’t know how insightful you are
Show me
How? There’s a lovely website called jee oh-oh jee el ee dot see oh em AKA google.com and his rival Chad Jipi Tea who will be very nice if you mind your manners
There are two ways to interpret “here.” The company or the location. So your research can take on multiple directions:
the projects you’ve seen
the work done at the office
the people working there
the people you’ve met
macroeconomic outlook
what’s going on in the city
Once you’ve DYOR “done your own research,” you need to do two more things:
Be Specific: Use the “so what” rule at least 3 times to get more meaningful answers:
”This is a top company” → So what?
”I’ll get to work with top people” → So what?
”I’ll learn faster and be put on the AI team” → So what?
”I’ll be able to transfer the specific skills I learn working with that team to develop cutting-edge AI projects because that’s my main interest”Be Detailed: If you have a detailed answer, it demonstrates you have put some thought into it:
I want to work in Singapore because it’s a central hub for the Southeast Asian AI sector. They received $10b in foreign direct investment from China, many multinational companies are based there, and developing countries in the region import their R&D practices from there. If I want to learn about AI in developing countries, Singapore would expose me to the Southeast Asian region where multinationals are integrating new technology to improve quality-of-life in the area
Be Personal: Tailor it to yourself. Combine your story with your background. People cannot argue about preferences, only facts. If you tell them you want to work at a particular office because you like a certain industry, because you read an article from them which resonated with you, and because it’s your hometown location, nobody can argue with these reasons
Sly Fox Tip: this is also how you avoid arguments in general
If you use these three tips, you show a deep understanding of the work they’ve done, the sectors, and their priorities. It shows you’ve done your homework
Tell me about a time you led a team through a challenging situation
I have my students prepare for this question because it can be used to address multiple scenarios and has many moving parts:
handling a leadership role
managing a team
examining your definition of teamwork
your behaviour within a team
managing conflict
dealing with clients
making promises
persuading others
how you made tradeoffs
knowing which details are important
whether you hide behind ambiguity
It’s also a good question to prepare for because if you’re asked about leadership, it gives you an opportunity to discuss your conflict resolution skills even if the interviewer doesn’t plan to ask about it
5.6 Interviewer Habits
Be ready for these three interviewer behaviours:
Judgment Based on First Impression
If an interviewer thinks you’re unintelligent, you’re going to be treated as such. They will expect you to fail. And if the interviewer expects you to fail, they won’t help you
You’re going to feel this during the interview and become nervous. It becomes a self-fulfilling prophecy; your nerves make you behave even more clumsy, which makes you seem worse
This cycle occurs in many social interactions, such as parent-child relationships, where punishment → worse behaviour → worse punishments
Pay close attention to your first impression based on the following factors:
Organized: If you are late, nervous, stumbling over your words, flipping your pen out of your hand, spilling your drink, giggling awkwardly, using filler words, not taking notes, unhygienic, poorly dressed, it demonstrates either you are not prepared or not interested. You are wasting the interviewer’s time
Likable: If you think about all the people you know, it’s clear some make you feel good, others make you feel bad, and the rest are in between. Think about how you respond to the people you’re drawn to: you’re happy, you smile, you want to be around them
The common thread between the likable people is that they are positive, energetic, sincere, don’t put anyone down, and don’t say anything negative. You don’t need to be the life of the party–it’s about not having ill-intent, not making people feel badOverconfidence and cockiness makes people feel bad
Sounding doubtful or questioning makes people feel bad
Being arrogant and thinking you’re special makes people feel bad
Why?
Not because of envy, but because the contrast can revive and sharpen pain: failure, loss, unhappiness. Being positive is not about being dishonest–it’s about avoiding remarks that are critical, cutting, belittling, condescending, biting, spiteful, sour grapes. This is what it means to “mind your manners”
You don’t need to stress your virtues in anyone’s presence. It’s not about evaluating by comparison, but rather being self-assured; not “I am better than you,” but “I am good”
You can be unintentionally negative as well. Sometimes, people overprepare and their answers are cold. Your small talk is uninteresting. You cut the person off with short responses. It seems as if you don’t want to be there
I could give you hundreds of tactics, such as learning how to deliver criticism. But the general mindset is to start with good intention, assume best intent, and be honest
If you approach someone assuming bad intent, then people will feel worried, insulted, and defensive about their character. Instead of “me versus you,” think of it as “us versus the problem”
This is important because if people like you, they’ll want you to succeed. Yes, it’s the interviewer’s job is to be unbiased–but biases exist in the first place because we’re all humanMature: This comes from having confidence in your abilities and treating your interviewer as a peer. For example, an immature person would ask, “I have just one question, could I ask one question?” You only say this because you view them as a superior to request permission from
In contrast, if you view someone as a peer in a natural discussion, you ask, “Let me think about that (pause). Why did you say that, because here is what I believe. Beau, that makes sense, however…”
And if you have a hard time with these traits?
Surprise! You need more…
volyoom
Aristotle tells us, “if you want to be more x, do as x people do, to build habits of x people”
Want to be more mature? Hang around more mature people. Do as mature people do. Build habits of mature people. Your personality is just a collection of habits. “Sheesh, them oldheads got rizz~! 😮💨” as the youth say
Aristotle doesn’t miss!
Frame Control
Suppose the interviewer doesn’t like you. Don’t rely on the interviewer’s mood because they may have other things going on that are not your fault. Maybe Starbucks ran out of soy lattes. Tragic.
Never let the interviewer set the tone. Hold your frame. Regardless of how the interviewer feels, you can influence their frame of the interaction by behaving positively
Even if your interviewer says something such as, “That is the stupidest thing I’ve ever heard,” if the candidate laughs their way through it, you bring the right energy. You lighten the mood. The best candidate is one that rolls with the punches, puts criticism in context, and doesn’t get frozen. Nobody wants to feel as if they’re walking on eggshells
Laugh, make jokes. Defuse the tension. If you handle the interviewer in a nice, polite way, the interviewer will mimick your positive behaviour and fall into your frame
“Digging” or “Probing”
Even if the interviewer likes you, they can still be difficult. You may see them challenge your answers and ask lots of questions. Candidates often mistake this as a sign of doing poorly when it’s entirely the opposite
People challenege you because they think you’re good. I want to know if you’re saying things because you’re lucky, or because you truly understand what you’re saying
They’ll dig into your responses to understand:
what you did
whether you understand what you did
whether you understand the underlying story
whether the individual pieces of information match with your story
Why did you decide that? How do you know that’s correct? Are you sure? How did he respond when you did that? What did he say exactly?
There’s different styles of digging. Some interviewers may interrupt your story. Others may wait for you to finish, then interrogate at the end
Interviewers do this because we know that candidates memorize and train for interviews. We want to know if what you actually did is different from what you wrote in your résumé bullet points. We’ll keep probing until we find what we’re looking for
And I do the opposite with a candidate who has absolutely no chance of making it. I let them down gently and politely. I don’t say anything
Smile, nod, agree :) !
5.7 Asking Questions
This part also has to be taken seriously. Your questions reveal your level, which means you can use this as negotiation power
If you’re asking baby questions about work-life balance and company values… definitely a junior. Why are you asking about Google-able things? And let’s be honest, your interviewer probably has no idea about “company valyooos” besides the quarterly “we’re a family” stickers right before a layoff
So what kinds of questions show that you’re more senior?
Let’s think about it. Which questions would you ask if you were thinking about the quality of the team and the work? How do you find out what kind of company they are? What are your dealbreakers?
If I were a serious engineer, I’d be asking things like “What is your approach to balancing new functionality and optimizing existing code?” I want to know whether I’ll be working on something interesting, or they just want me to clean up someone else’s mess
These are the kinds of questions someone would ask if they had a dozen offer letters. Sure, you could just go with the highest compensation, but if you have to work on an ancient system from 50 years ago that drives you insane, you’d probably take a -10% cut to go to a more modern company
Good questions are also a sign of confidence. “I am the prize” as those chad alpaca male podcasters say. You’re evaluating them as though you have multiple options. People like being around successful people. Winners win
5.8 Following Up
When you get an email that says:
Salutations Beau Ty Faukes,
We’ll email you back in a week with your interview results
Very respectfully,
Xenia Deli
The best approach is to treat them as ordinary people in a casual, yet polite tone. Just respond with a relaxed, “Thank you, looking forward to it”
Instead, I get exotic responses such as:
uwu thank you SO much 🥹 for giving me a chance to intervyooo 🙈 I had a gr8 time even if u reject me I grew as a person 🤗
The alcoholics at uni careers service have polluted young minds: “ALWAYS send a thank-you note to your interviewer if you want a job 👏”
Or it could be TikTok. Because I’ve also had someone respond to a rejection email with, “Don’t worry, the universe has a plan for me. And I meditate every day.” Okay shroomer?
I think it’s just inexperience. Confidence comes naturally with more volume, by interacting with more people AKA “touch grass” as the youth say
Sly Fox Tip: I can’t think of a single instance where oversharing has benefitted me, especially online. It’s better to say nothing than to say something stupid. Yapping is low-status, increases the probability of saying something incorrect, and prevents you from spotting opportunities by being a good listener
6 Conclusion
Let me know if you have any questions, comments or requests
I am always open to feedback
Find me on twitter.com/bowtiedfox or bowtiedfox.com
This was great.
Do you have a good litmus test for knowing whether someone would become bored/burnt out after a couple years?
this was very informative. can you write a guide for senior system design interviews