I used to spend every day doing open source development. Then my friend, who never contributed to FOSS in his life, got a 160k offer from Mozilla. Mozilla, I thought. The open source browser company. Back then, I was doing it wrong. Today, I work at Meta.
Random QA
(Because I know your attention span is short)
- You never get better at reading other people’s solutions
- I still cannot do binary search without getting off-by-1 errors
- I’ve never implemented Quick Sort, or memorized any algorithms (like Djikstra)
- You “get a feel” for most algos and can make something that works on the fly
- Data structures are different; I have practiced implementing heaps, queues, union find, etc
- Contests are depressing
- Leetcode does not make you a better software engineer. (More on that below)
- System Design on the other hand (shoutout SDFC) is amazing
Getting good at Leetcode is a hard grind - If you’re looking for a schedule, start with DSA fundamentals, then do Neetcode 150.
The Journey
After attempting Blind75 (Neetcode 150 wasn’t a thing back then), I was mentally broken. Asking myself “When will I use this?”, or “How did other people solve this?” was pure demotivation. I calmed myself knowing each LC problem solved was worth a couple thousand dollars. So for months, I grinded through it.
I started doing the Leetcode contests. If you think Blind75 gets you depressed, wait until you score 1/4 in a contest.
I decided to go for a 30 day streak on the Daily Questions. I knew FAANG+ wouldn’t be interested in me since I only had ~1 year of experience back then, but I figured if I learned how to study Leetcode, I could grind it when the time came.
Those 30 days were some of the most mentally challenging in my life. I probably had a headache 25/30 of them. About 5 days in, a Leetcode hard that took me over 6 hours to complete. I knew that if I didn’t give up then, I could make it until the end. After a surprisingly small sense of accomplishment, my said “Why not go for 60?”. Thinking of them salaries, I reluctantly agreed.
It didn’t matter what else happened in my day, my Leetcode got done. I Leetcoded before work. If I couldn’t finish it in time, I Leetcoded after work. I Leetcoded when I was camping. I Leetcoded at parties. I Leetcoded when I was sick and when I was on vacation. I Leetcoded on the bus or on the subway - I even did Leetcode on a chairlift. Multiple times. I Leetcoded on my phone, on my girlfriend’s tablet, and at gaming cafes - almost like an alcoholic, using everything around me.
On a trip in Busan with my friends, at a small cafe (on land that, for those who don’t know the history, tens of thousands of refugees suffered at), I was looking over the water and cracking a Leetcode hard. Something about the stark contrast between what I was doing and what is “important” made that solve memorable. Smelling the ocean salt while my friends ate breakfast , I finished just in time not to hold them back.
God, Leetcode is stupid.
Why Do Companies Interview with Leetcode?
The reason Mozilla hires people who can Leetcode instead of people who contribute to open source is because the question “Can the candidate solve Number of Islands in 15 minutes?” is a binary answer that scales across all your interviewers.
Leetcode is great because it became the “industry standard”. It doesn’t matter if you’re front-end, infra, or ops: We all learn Leetcode, and can all interview others in it. Leetcode is a “rite of passage” that shows you put in the wor–
Nah just kidding. Leetcode is BS. I have a vested interested in keeping it around since I’m “good at it”, but it’s the lazy way out for companies to have a “bar” and do “unbiased interviewing”. If you’re a startup and you’re asking Leetcode questions, you’re getting table scraps. The most effective interviews I’ve found are unique so you grab the talent most other companies pass out on, but that’s a story for another time.