In 2022, I did LC on 353 / 365 days to get the Annual Badge. Honestly, the joy of achieving it wore off just 2 days after getting the badge. Bummer. If there was one thing I would do better, it would be to focus on learning instead of chasing numbers.
This is a mistake many of us make. In many countries, students focus so much on getting good grades at all costs. They use tricks like memorising, rather than truly understanding the concept to generalise and apply it. For those who have left school, it is quite clear Pythagoras Theorem has no bearing on your career. But to learn the concept, apply it to examples, and teach others to reinforce learning is a useful learning method that can be generalised to other pursuits.
Besides, it seems from reading online forums that people sometimes pass coding interviews even without answering correctly -- sometimes it is just about the mood of the interviewer; if they are "feeling" it.
While Hard questions are still elusive to me most times, it seems there were many worthy lessons on the journey. Here are a few:
1. Progressive Training
Dynamic Programming is difficult. There were weeks where Leetcode's Daily Challenge would focus on this topic, so it seemed like a good idea to formalise a study plan for this.
Leetcode's Dynamic Programming Study Plan is a good place to start. It progresses from Easy to Medium to Hard. Easy questions helps one pick up concepts. Medium is a little of that, plus some challenge. Hard is where your skills are really put to test. While there are many other websites that prepare a study plan (Blind 75, neetcode.io, algomonster.com), I think sticking to one / some at a rate where you won't burn out is better than trying to force yourself to do all.
Later on, work got busy and I stopped focusing on Dynamic Programming questions... and I became bad at it again, which highlights the next point...
2. Consistency
Consistency is important to build memory. Not the kind of consistency where one would start to hate the thing you're doing, but the kind that has useful breaks in between. Spaced repetition is a useful idea here, but unless you are super disciplined, no need to sweat the details (like revising on days (D) D+2, D+10, D+30, D+60). Keep doing and you'll get better.
But sometimes the best plans collapse in the face of unexpected events, so...
3. Love Your Imperfect Self
There will be days where you don't feel like continuing. It is okay. As much as the streak feels like it is slipping away, it really doesn't matter in the grand scheme of things. (Trust me, I've been there)
Going full circle, the most important thing is not the numbers or streaks, but the learning, which would conclude...
4. Make the Lessons Useful
Apply it! Go for more interviews, use what you've learnt in daily work. Whether it is algorithms, or edge case thinking (in my case as a Frontend Engineer), making it useful will help keep you going.
Goals for 2023
Just focus on learning, spend 20 minutes a day, dive deeper into concepts that interest me, be kind to myself when I want to take days off.
Top comments (0)