I build RESTful APIs for a living. I've designed event-driven architectures, set up CI/CD pipelines, containerized applications on Azure, mentored junior developers. 7 years of this.
Then I opened LeetCode and stared at a medium problem for 45 minutes and closed the tab.
Working as a backend engineer for this long means you just never touch advanced DSA. My day to day is .NET, Azure, SQL, clean architecture. EF Core handles the data layer, Azure handles the scaling. I haven't needed to implement a graph traversal or think about tree balancing since university.
So when I decided to start interviewing at bigger companies I figured I just needed a quick refresher. I studied this stuff in college. It would come back.
It didn't. 7 years is a long time and most of it was gone.
What I Tried
I went through the usual options.
LeetCode grinding. Jumping into random problems with no structure just kept reminding me how much I'd forgotten without actually helping me relearn any of it.
YouTube. Watched hours of Abdul Bari, freeCodeCamp, various bootcamp videos. I'd finish a video convinced I understood it, then open my editor and draw a complete blank. Watching someone solve a problem and solving it yourself are not the same thing at all.
Books. CLRS is great if your fundamentals are still intact. Mine weren't.
None of these were bad resources. The problem was I kept jumping between them with no thread connecting them. A video here, a problem there, a random chapter somewhere else. After years away from this stuff I needed to go back to basics and build up properly, and nothing was set up for that.
What Actually Helped
Eventually I just mapped out what a proper learning order looked like and started going through it myself.
Big O → Arrays → HashMaps → Linked Lists → Stacks & Queues → Recursion → Trees → Graphs → Dynamic Programming
For me, order mattered. Going back to Big O first made Arrays click properly. Arrays made HashMaps make sense again. I couldn't get Trees to stick until I'd properly revisited Recursion. Doing problems right after each topic instead of saving them for later. It was slow but it actually worked.
So I Built It Into a Site
At some point I decided to turn this into a proper site, mostly because I wanted something I could come back to but also because I figured other engineers were probably in the same spot. Not beginners, but not prepared either. Most resources don't really serve that in-between.
zerotodsa.com is what came out of that:
- 11 modules, 52 problems : Big O through Dynamic Programming
- Locked progression : topics unlock in sequence
- Concept + practice together : each module has an explanation followed immediately by problems
- Multi-language : C#, Python, Java, JavaScript, and C++
Still adding to it. But it's what I needed and couldn't find anywhere else.
If you try it, let me know what's missing or broken. And if you're an engineer who's been through this same thing, I'd like to hear how you handled it.
zerotodsa.com - free, no account needed.
Top comments (0)