4 ms·
I don't quite get the study plan, as it sounds more like cramming. Nothing wrong with cramming per se except that what you learn does not stick, and you will ha
by hintymad 5y ago
I don't quite get the study plan, as it sounds more like cramming. Nothing wrong with cramming per se except that what you learn does not stick, and you will have to repeat the process when you need to switch jobs again.
I think a better system is to regularly study fundamentals and always deep dive in your work. Case in point, I've never had problems passing interviews by FAANG or other hot startups, I always got title bump when switching jobs, and I never spent extra time prepping for interviews. Say you're an ML engineer who builds an image recognition pipeline using Spark and PyTorch. Do not just be content with assembling a number of open-source solutions to make your pipeline work. Instead, study the internals of Spark, understand the math and algorithms behind your image recognition models, read survey papers to understand the landscape of data processing and image recognition or further, machine learning, and implement a few models and try to optimize them. Similarly, if you work on database systems, do not just stop at being familiar with MySQL or Postgres or whatever. Instead, understand how transactions work, what consistency means, how principles of distributed systems play out. Study Jim Gray, Gottfried Vossen, Maurice Herlihy, Leslie Lamport, the database red book and its references... You get the idea.
As for leetcoding, replace it with study of algorithm designs. Study Jon Kleinberg's book or Knuth's writings (no, you don't have to read through his books, but his writings are incredibly insightful even for mortals like us), for instance. Instead of working out hundreds of back-tracing problems, study backtracking's general forms.
People tend to underestimate the effect of regular study for years. You'll find that in a few years your knowledge will converge and you will be able to spend less time to incrementally improve your skills, and you will have so many concepts to connect to greatly benefit your projects.
- vchynarov 5y agoDespite your name referencing insanity I love your comment and it's a beacon of rationality in the current tech interview bubble. So generally I agree, but unfortunately sometimes the format and expectations of the coding interviews really demand prior grinding. I don't like it but it's the reality. IE let's say you have a graph question that requires either BFS and DFS. You're a competent engineer who both recognizes the applicable algorithm and could reasonably implement it from scratch. Some problems then have additional constraints such as adding bounds-checking (if searching inside some sort of "map") and checking visited nodes. The engineers who've grinded leetcode have muscle memory ready to regurgitate code for those conditions. Competent engineers are able recognize these and implement them, but that lack of muscle memory wastes vital time for the interview. (Yes, those seconds are never a real constraint in the day-to-day).
- solatic 5y agoNon scholae, sed vitae discimus. It is not for school, but for life we learn. It's a great approach as long as you remember that you're reading for the benefit of your own knowledge rather than the benefit of an interviewer. One of the supposed benefits of a degree (leave aside grade inflation etc. that undermine the benefit in the real world) is that you can put a degree on your resume but not all the books you've read for personal and professional enrichment.
- lenova 5y ago> I don't quite get the study plan, as it sounds more like cramming [...] > I think a better system is to regularly study fundamentals and always deep dive in your work. Is it safe to assume that you don't have young kids like the author does?
- hintymad 5y agoI do. People underestimate the effect of continuous learning for years. Think about this: a semester of college CS course has 2 hours of lecture and one hour of tutorial per week, plus on average 15 hours of homework. That’s 18 hours a week. Now go check how much time you spent on your phone. Let me guess, 4 hours, at least? Cut it in half, and you get your 2 hours back. Besides, deep dive in work is part of the job, so you can usually have some additional time. More importantly, we are not in college pursuing perfect GPA any more. Instead, we can follow 80-20 rule. All-in-all, if we can spend 6 hours a week, that’s 1/3 of a course’s load, more than enough to cover a single course. In 10 years, you would cover at least the content of 20 courses. Trust me, you would cover way more because knowledge converges and you will learn faster as you will be able to connect more dots. 10 years look long, but pass quickly. That’s why my approach is a system: it does not guarantee success, but it maximizes then chance of success and happiness.
- 0x008 5y agoI can only speak for myself, but I assume a lot of us don’t have the luxury of spending time on deep diving, because they are drowned with ever changing unrealistic deadlines from upper management.
- AlexC04 5y agoOk, but the author's method was likely a raise of ~$500 to $600k in 3 months. It may be true that doing all this stuff the long way IS better, but there's no way it is more efficient.