after a certain point, you will realize that they need you more than you need them

trying to find a job feels like hell. But, the obstacles of interview hell are opportunities. The longer your hell is, the more time you will have to learn how to stand out when you inevitably go through this process again in the future

  • i’m much better at LeetCode than i was when i started. I can solve Hards in the same time i could solve Easies just months earlier
  • i learned self-learning
  • i learned how to apply strategically to positions that actually interest me
  • i learned how to demonstrate my learning process, engineering prowess through asking questions, how to get to a place where i can leverage offers to get more offers here is how i got through it

have hope

  • please, stop playing the victim. Nobody owes you anything. You don’t deserve this job, but you may earn it. And you should be grateful when you do
  • ”WAAAA i’ve been out of work for a year and nobody will hire m—” shut up. 46% of the world population earns less than $5 a day. There are billions of people around the world who put their lives on the line every day making a fraction of what a tech worker makes. This is a frustration i have with many fresh-out-of-college kids in general, many of whom come from privileged backgrounds and don’t truly appreciate how hard it is to make money when you don’t come from money
  • To be clear, self-victimization is a difficult trap to avoid because it isn’t an intellectual one. Most engineers are great at solving intellectual problems (they are paid for it). But having hope requires strong emotional regulation skills. Many people (myself included) sometimes struggle with this
  • as Uncle Iroh once said: hope is what you give yourself in the dark times”. I give myself hope every day in the form of affirmations. Some people find that cringe. But it worked for Kanye West. It will probably work for you too
  • the most important thing is to see obstacles as opportunity. Don’t have any interviews lined up? Awesome! Work on that project you always wanted to make. Refine your portfolio. Spend more time fleshing out your resume. Invest time in thinking about how you want to specialize
  • stop using social media. It seems counter-intuitive, because building a social media presence where other developers are (X, LinkedIn, etc.) can be helpful in the long-run. However, social media (especially the humble-braggers on LinkedIn) will drain your batteries more than it will charge them. You need to keep your spirits up. Stay off social media for now and focus on getting your shit in order

standing out

the best way to fit in is to stand out

at every opportunity, you want to show you are someone others can see working with

  • what you are trying to show in your portfolio and during an interview is that they want to work with you
  • they aren’t just looking for someone smart, they are looking for someone they want to work with
  • lean into your projects and all the niche knowledge you can leverage that will make you stand out

express your weaknesses

  • understanding where you are weak is the biggest strength you can have as an engineer (the second is having a great approach to learning new skills, so you can quickly correct your weaknesses)
  • at the first opportunity, tell people where you are weak
  • when you show understanding of your weakness, you can defer to someone else’s judgement from a place of wisdom and not just laziness or stupidity

demonstrate your learning

  • as much as you discuss what interests you, go into detail about what you are learning and how you are doing it. See self-learning for more on this
  • showing what you are learning is something you can leverage with your personal website and github

master the 3 interview types

LeetCode/technical

NeetCode

  • start with NeetCode 150 first
  • keep coming back to the same problems. Reset the code every time. If you can look at a problem and think “i can solve that” don’t bore yourself and move on
  • once you can go through the entire thing without feeling challenged by a single problem, it’s time to get more advanced
  • while you are doing this, keep a list of your favorite + most challenging problems

going off the rails

  • NeetCode will give you a superficial understanding or problems in the form of pattern-matching. but there are thousands of problems on LeetCode —some of which are not covered by NeetCode’s pattern tree
  • also, if you’ve followed NeetCode 150, you probably only have a superficial understanding of how to solve them. Now you need to challenge yourself and understand problems deeply
  • start by categorizing problem types your own way. There are lots of ways to do this. I recommend keeping a notes repository or using a note-taking app like Obsidian
  • incorporate your list of problems into these categories. Look over the tags on LeetCode to see if theres anything you missed. Look at some big companies and see what problem types are most frequent
  • have different days for breaking down different problem categories. Learn how to turn a top-down DP solution into a space optimized bottom-up one. Make a gauntlet of greedy problems you can use to test your intuition. Have days for pattern matching or for data structure deep dives

practice the “thinking out loud” part

you should be able to:

  1. reason deeply about a problem, it’s constraints, and what it is asking for
  2. express that reasoning verbally this is the most important part and the part you will be judged on. Being able to talk while you are solving a problem is what will get you a strong pass

on judgement

there is a misconception that technical interviews are all pass/fail. In reality, you are given a score, much like a test at school. On any question, you may get:

  • a strong yes
  • yes
  • no
  • a strong no you don’t just want every interviewer to give you a yes. You want as many interviewers as possible to give you a strong yes. Recruiters know the strongest candidates they work with and will match them with positions faster than they would for other candidates. So set the bar such that it’s not just about passing. Give yourself room to show off and go above and beyond to stand out as one of the best candidates in their pool. If you are using Python, include type signatures and use fancy libraries where it’s appropriate

system design

  • TODO

the ‘resume grill’

  • TODO

bonus: the “let’s see how smart you are” section

  • sometimes interviewers will come at you with very niche questions to aspects of their tech stack that you will almost certainly not understand. Don’t be rattled
    • ask as many questions as possible
    • usually, these are testing how you approach ambiguity. This is important, and it can demonstrate the creativity you bring to the table. An interviewer who wants you to succeed will guide you with hints
    • remember: you are an entry level. You are not, and SHOULD not be expected to know everything. At some point, you need to advocate for yourself and remind them of this if what they are asking from you is something far beyond your domain and completely foreign to you. A hiring manager should respect you for the novelty you bring to their table, not on how well you are aligned with their objectives right out the gate. If the questions are really unreasonable, there is a chance that:
      • they have already decided you aren’t the right fit and want to rattle you with something they know you won’t understand so they can satisfy their confirmation bias
      • they are subtly bullying you. They may have a personality disorder (like narcissism, or anti-social) and want to assert themselves over you. You are in a position where there is nothing you can do about it and they know they can 100% get away with this behavior consequence-free. You are winning by not working for them

resumes

  • think long and hard about how you want to specialize. Then cater your resume to fit this
  • hint: specialize in something everyone needs. Bonus points if it won’t be automated by AI anytime soon
  • you want to specialize in one thing. Don’t fall into the generalist trap here. Deliberately leave things off your resume if it means putting things on that dress you up for a specific role. And despite what a lot of positions are sold as, you are not ‘full-stack’. Maybe as a senior engineer, but not as an entry. Backend or frontend (though even that is not specific enough). Pick one

personal website

  • your resume is for work experience, but your personal website is where you shine
  • your personal website is the best place to demonstrate your learning. I have an example of this here. See demonstrate your learning for more on this
  • you can do anything with your personal website! That shouldn’t be scary —it should be exciting
  • don’t just follow a tutorial to use the same tech and style as everyone else. Do it your way. Use an obscure framework you really like. Roll your own if you have the guts for it. The more unique your personal website, the more you stand out from the hundreds of other applicants in the resume stack
  • find your own style. Not just great CSS. I put funny gifs and quotes in my work and roll it up with random blog posts. It shows personality that stands out much more than fancy animations and modern UI frameworks do

GitHub

  • some recruiters and engineers will look at your GitHub. Consider GitHub your second home. Find opportunities to contribute if you can. Start new projects. Move all your notes to GitHub so people can see you are actively learning things. Make sure your README.md looks good Push new commits every day (which isn’t hard to do if most of your commits are just personal notes)

understanding the recruitment cycle

do not sell yourself short (as an entry level)

  • you may not think you are qualified, but there is a good chance you are
  • sometimes the bigger companies are even easier to get your foot in the door with because they can afford full time recruiters that work with you over longer periods
  • keep in mind: your first job will set you up for all jobs you take on in the future. If you work at a Microsoft or an Amazon, that’s awesome. If you work a Google or a Meta, the sky is the limit
  • it sounds superficial, but superficiality always follows money. Accept that fact now so you can move on. Target companies that can pad your resume with some prestige

it takes awhile, even if you pass

  • the process takes a long time. Even when you are in the ‘safe zone’ (past elimination rounds)

negotiation

  • use Blind and LinkedIn. Always give salary ranges

wellbeing

  • sleep consistently, meditate, eat well, work out regularly. This should be obvious stuff
  • your brain is an instrument. Give it special care. Take supplements and max out your cerebral capacity
  • ironically, i also picked up boxing during my interview hell. Sparring is a liability to the mind and is something i avoided, but the technical aspects are rewarding, and being able to take out my physical energy with controlled aggression is something i highly recommend
  • keep a desk where you are most comfortable working. Have a few places you can bounce between to freshen up the atmosphere. This can do wonders for your productivity