Maximizing Tech Career Income
Choosing the Right Path
People are confused as to which one of my guides they should follow, and which types of companies they should try to recruit for.
Here is an easy-to-follow, oversimplified chart:
However, in reality, there’s a bit more nuance to tech recruiting.
Having a prestigious company on your résumé makes recruiters foam at the mouth when sifting through hundreds of candidates, and people outside of the industry will assume you are a genius. This will make it infinitely easier to recruit into jobs in the future, receive venture capital funding for a startup, obtain deal flow, and so on.
Most people can obtain an interview at FAANG, especially with a referral. Early in the interview process, you’ll be given an at-home LeetCode assessment that will test you on your ability to solve data structure & algorithm problems. This makes it fast and cheap for these companies to filter through thousands of candidates as they can rely on an automated system to eliminate underqualified or unprepared candidates.
You do not need any actual software engineering skills for an entry-level role, though I suggest learning as much as you can once you break-in. The risk here is that if you pigeonhole yourself into learning algorithms and fail every interview, you’ll be out of luck when you recruit for other companies who will expect you to have actual skills. This is easily remedied: just go through my web dev guide and add more skills as needed based on the job requirements or your conversation with a recruiter.
It is not a death knell if you end up at a non-FAANG company. I would advise you to avoid long gaps in your résumé waiting to get into your dream company. This is even more important as we’re in a recession and many companies have hiring freezes.
Many years of experience as a programmer is a good sign. If you have 5 years of experience as an engineer at McDonalds, you can still get your foot in the door for high-paying, senior-level positions. Experience is valuable because, if you’ve shipped and written large-scale code, you can’t possibly be that bad, else you would’ve been fired.
You should still try your best to get into a top company if you can afford the time.
Sly Fox Tip: Engineers don’t like to admit this, but people that get into these prestigious companies tend to have a superiority complex. The opposite is also common: people who don’t get into these companies typically have an inferiority complex, so they’re more likely to defer to your authority. Think of it like the Ivy League: Harvard/Google are more likely to hire and respect Yale/Apple, as opposed to a community college grad.
This may not always be the case, but the contrapositive is definitely true: getting into a low-tier, low-paying company is not a good sign. You may be a genius, but at the end of the day, signaling matters, because other indicators of intelligence are costly, time-intensive, and/or unreliable. You can tell me you’re smart and hard working, but anyone can say the same thing. It doesn’t mean anything if I don’t see anything interesting on your résumé. Because, if you were really that smart, why haven’t you figured out how to get into a good university or company already?
This seems unfair, but the default paradigm is risk-averse: assume someone is incompetent unless proven otherwise. The risk of a bad hire is much more devastating than missing out on a potentially good hire. In probability terms, the negative expected value of a bad hire is much larger than the positive expected value of a good hire. Put simply, 1 bad employee can destroy the productivity of 10 good ones. Not all 10 Harvard/Google candidates will be good, but the proportion of good hires is likely higher, compared to a group consisting of 10 community college/low-tier/poorly paid candidates.
Hint: Figure out how this advice applies to dating. Lesson in there.
Yes, there’s an arbitrage opportunity here. Employers who can capture candidates without positive signals, but are nonethless good engineers can get them for cheap. Hence why startups are more flexible in this regard. This is also why I recommend joining a startup if you have a non-traditional background:
Startups are typically more open to people with non-traditional backgrounds, i.e. non-programming background or self-taught. For some companies, self-taught can often be a negative indicator. It can signal that you have gaps in your knowledge and bad habits 🍝. Or, you weren’t patient / wealthy / healthy / neurotypical (insufferably autistic) to obtain a formal education.
However, you can spin “self-taught” as a positive indicator to startups, because it demonstrates resourcefulness and intrinsic motivation, traits that they are desperately seeking.
Typically, startups don’t have a dedicated recruitment team either, so they will place value on potential hires that reach out to them. And, if you do this correctly, your interview can be almost entirely behavioural, because they are willing to put up with a motivated, pleasant person who can learn rapidly on-the-job.
This lack of structure also makes it easy for you to get promoted quickly–if you’re competent. You’ll be promoted based on skill instead of tenure.
In addition, if you’re lucky and join a moonshot company that gives you equity, you could become extremely wealthy (similar to the first employees at the popular big tech companies).
Aim for series B startups or earlier, because series C startups become “big companies” with middle management and more specialized roles. If you do get hired, they may underlevel or underpay you because they won’t trust you to do the job properly.
When in doubt, choose the option that opens more doors. When you have a few years of professional experience, more opportunities will arise. When you’re immersed in the startup world, you’ll hear about other projects, and you’ll build trust among your colleagues. You’ll be able to jump if you see a better opportunity.
1.3. Large, Non-Tech Companies
A large, non-tech company will be mind-numbingly boring, but it’s easier to fall through the cracks as you’re just another line item in Excel. You can delay your output by using the slow, inefficient bureaucracy to your advantage.
However, because of this bureaucracy, a company such as those on the F500 list will require some effort to get through HR screenings. You’ll often need a degree or a strong referral. One advantage to this is that you don’t need actual skills if you have the pedigree. For example, if you have any STEM degree from a decent university, you won’t need many skills to break in–just answer two LeetCode Easy’s, pass the behavioural interview, and tell them about your coursework and favourite programming languages. They have internal processes to on-ramp you to the company’s technologies as long as they believe you have the appropriate foundation.
Then, on the job, just do this:
In contrast, startups will notice if you’re not outputting consistently since you may be one of few employees. They also need to maximize the value they get out of each employee as they are relying on making the most of their capital.
Sly Fox Tip: Only take an offer at at one of these companies if you’re remote. You’ll be able to do whatever you want in your free time to develop a project instead of killing brain cells in a meeting room “circling back to touch base on doing the needful for due diligence on deep diving into low hanging fruit that can be taken offline for sharing actionable learnings to move the needle on bandwidth to get buy-in from stakeholders who haven’t had their aha moment to cover all their bases.”
1.4. Special Note for University Students
Complete a Computer Science (CS) degree if you can. If you’re halfway through a CS degree, do a minor in CS. If you’re too late, take as much CS as you can and learn as much as you can anyway.
Even if you don’t want to be a programmer later, you can do something else. A CS degree opens up many doors: it helps you get internships, gives you foundational knowledge, and builds trust with employers. It will make your life easier even if you can get a job without completing a degree.
Just don’t let your schooling get in the way of your education.
2. What Should I Do If I Already Have Experience?
I’ve received many messages from people who are deeply experienced in their field and want to pivot to a programming job. If it’s purely for the sake of money, I would caution you against this. You can use your existing expertise to start a business. If you have a firey passion for programming and don’t care about money, you can do whatever you want–it’s your life! 😀
However, if I were thinking about maximizing cash flow, it is not worth the time to start over completely in a different field. If I spent 10 years at Goldman Sachs or I were a doctor in my mid-30s, then decide to start at year 0 at Google… is it really the best use of time?
An experienced professional has domain knowledge, a list of clients, relationships, understanding of certain processes, and so on. Start a business. If you really want to, you could use your experience to be a subject-matter expert (SME) to advise software engineers or be a PM.
Exception: If you’re making mid-5 figures, working a dead-end job, and haven’t developed any expertise… Might as well start over. Aim for a startup for the reasons mentioned in section 1.2.
In any case, if you want to learn a little, it isn’t difficult to spend a few hours becoming familiar with software using my web dev guide:
This could be useful if you want to develop your own product or oversee the development of a product.
Or, if you are deeply passionate about a field and want to contribute to, for example, healthcare software, I’d suggest using the web developer guide and aiming for a startup.
You can pitch your expertise to the startup. This can be useful because, instead of starting with year 0 entry-level salary, you might be able to leverage your years of experience in the negotiation process.
Define your goal using this framework. Then, focus on what will make you the most money with your unique combination of skills and experience.
Comment your thought and questions below.