5 ms·
Yup, I jumped into the if you can't beat em, join em camp with leetcode. I Did 160 problems (likely low for many people) before my last job search, and I now ma
by yourabstraction 6y ago
Yup, I jumped into the if you can't beat em, join em camp with leetcode. I Did 160 problems (likely low for many people) before my last job search, and I now make 3x what I used to. I gotta admit it's a hell of an ego boost to crush coding questions in interviews; being completely in the flow and cranking out flawless code.
It makes me wonder how much money I left on the table the last 10 years, because I went the route of great software engineer -> great interviewer, instead of great interviewer -> great software engineer.
Also, I have to say I really came to enjoy doing leetcode, and learned (really re-learned) a lot of interesting things.
- polishdude20 6y agoDid you just start off doing leetcode questions online and learned from the solutions? I'd study leetcode stuff if I could even start getting interviews to show my skills :/
- yourabstraction 6y agoYes, and I went against the standard advice to not look at the solution until you solve it yourself. I think for the first 50-100 problems it's best to not think too hard about it before looking at the solution, gaining a full understanding, and writing an implementation or three (building that muscle memory so to speak). At this point, you'll have many more tools in your kit (graph traversal, search, dynamic programming, queues, heaps, stacks, etc.) and you can work on coming up with your own solutions to new problems. But I found it to be a waste of time staring at a problem for hours when I didn't already have the fundamentals in place to tackle it. The other thing I did was watch youtube videos to get a better grounding in some of the data structures that I struggled with. I mostly did this wish graphs, as I was always terrible at graph problems and never had to apply them in my career. I found this series of videos to be extremely good. https://www.youtube.com/playlist?list=PLDV1Zeh2NRsDGO4--qE8yH72HFL1Km93P https://www.youtube.com/playlist?list=PLDV1Zeh2NRsDGO4--qE8y...
- gofreddygo 6y agoExcellent practical advice. That part of just following the solution for the first 50-100 problems is spot on. It resonates very well with my experience learning math by first following the "solved" examples, fully understanding them, then solving similar "simple" problems, repeating them till they fit into muscle memory and only then attempting the challenging ones. First challenge I faced with leetcode is they do not have a concept or technique map. Similar to the chapter index in any math textbook, each dealing with a specific technique, concept or pattern. For example the idea of using a hash to store a running sum is useful for a class of problems like finding the longest sequence that adds to a specified sum, longest sequence of equal no of 0s and 1s. Yet, there was and still isn't a page or resource where such a pattern was described. Solving leetcode feels like swimming upstream, one problem at a time, looking for patterns. Some are well described (Kadane for example) but most aren't. I looked around the web but couldn't find any resources that helped me with this. I wonder if we could, at your experience, list some concepts and techniques that can be repeatedly useful. I believe that could cut the prep time by a good degree. Second related problem to this is retention. With this master technique map, it would become easier to review and revise quickly. (I tried spaced rep, not useful) The most effective strategy for me has been to put everything in one book.I have multiple index pages with lists of similar problems pointing the page numbers with the solution. I have been able to get better at data structures using this approach now I'm at the leetcode phase. Appreciate your response.
- yourabstraction 6y agoI completely agree about leetcode lacking a technique map/graph/tree. This would be immensely useful. In my studies I found that I naturally gravitated to classes of problems I was already good at, because that way I could avoid the mental pain of learning new techniques. I really needed a roadmap that lead me to what I actually needed to study, and that showed me where I was strong and weak. But as you said, they never make it super clear which techniques a problem uses, and how those techniques build on and relate to other techniques. I'm really glad you bring it up, because I had actually been pondering ideas for making a better programming training site based on the idea of a skill graphs (similar to an RPG), repetition to build muscle memory, clear progress tracks based on the graph of skills, and greater insight into your strengths/weakness/progress with metrics. As far as enumerating techniques, I'd need a good deal of time to work on that. I think there are two classes, the macro, being data structures/algorithms and what type of problems they apply. And the micro, which is more implementation specific techniques. Things like using a loop with two pointers into the same structure (ie: find a cycle in a linked list).
- gofreddygo 6y agoGlad it worked out for you. I'm sure it wasn't easy (as it has been for me). I'd appreciate some advice from your experience on how it went for you.
- yourabstraction 6y agoSee my response below to polishdude20 for some advice.
- treis 6y agoCan you give some specifics about salary, previous & new role, and location? I see these sorts of stories a lot on here but it seems like they're all concentrated in SF or NY.
- decafninja 6y agoThe ironic thing is I too, have come to enjoy leetcode problems. I just hate the pressure of doing them in an interview setting.