top | item 46203581

Show HN: AlgoDrill – Interactive drills to stop forgetting LeetCode patterns

178 points| henwfan | 2 months ago |algodrill.io

I built AlgoDrill because I kept grinding LeetCode, thinking I knew the pattern, and then completely blanking when I had to implement it from scratch a few weeks later.

AlgoDrill turns NeetCode 150 and more into pattern-based drills: you rebuild the solution line by line with active recall, get first principles editorials that explain why each step exists, and everything is tagged by patterns like sliding window, two pointers, and DP so you can hammer the ones you keep forgetting. The goal is simple: turn familiar patterns into code you can write quickly and confidently in a real interview.

https://algodrill.io

Would love feedback on whether this drill-style approach feels like a real upgrade over just solving problems once, and what’s most confusing or missing when you first land on the site.

108 comments

order

firsttracks|2 months ago

Some feedback: The drill style approach seems helpful, but needing the variable names to exactly match threw me off. It would be great if we could _relax_ this constraint via a toggle for drill mode. "Precision Mode" feels like it's misnamed; when it's toggled on it feels more like a "guided mode" since chunks of boilerplate are written for you. It would be great if exiting Drill mode remembered choices, such as what portions were selected.

Ended up deciding to buy a subscription, but looks like the site still says "82% claimed" and "17 spots left". I appreciate the one-time purchase model, but feel that it's a bit shady of a tactic.

arein3|2 months ago

still 17 spots left

I understand that it's a sales tactic, but it's lying to your users worth it?

michaelmior|2 months ago

What threw me off is the expectation that I use the same variable names and exact same code structure. There are many ways to implement effectively the same thing. I understand that it would be very challenging to implement a way to validate solutions in this way, but memorizing exact fragments of code feels like it's optimizing for the wrong thing.

henwfan|2 months ago

Thanks for taking the time to try it and write this up.

You are right that the current check still leans too much toward my reference solution. It already ignores formatting and whitespace, but it is still quite literal about structure and identifiers, which nudges you toward writing my version instead of your own. There are many valid ways to express the same idea and I do not want to lock people into only mine.

Where I want to take it is two clear modes. One mode tracks the editorial solution for people who want to learn that exact version for an interview, while still allowing harmless changes like different variable names and small structural tweaks. Another mode is more flexible and is meant to accept your own code as long as it is doing the same job. Over time the checker should be able to recognise your solution and adapt its objectives and feedback to what you actually wrote, instead of pushing you into my template. It should care more about whether you applied the right logic under time pressure than whether you matched my phrasing.

There is also a small escape hatch already in the ui. If you completely blank or realise you have missed something, you can press the Stuck button to reveal the reference line and a short explanation, so you still move forward instead of getting blocked by one detail.

You are pushing exactly on the area I plan to invest in most. The first version is intentionally literal so the feedback is never vague, but the goal is for the checker to become more adaptive over time rather than rigid, so it can meet people where they are instead of forcing everyone through one exact solution.

VBprogrammer|2 months ago

Some might consider that a kind of commentary on the leet code interview format.

losteric|2 months ago

This by itself completely un-sold me. Requiring such rote memorization is a hard pass for me, it seems the user should just be able to self-assess whether they got it “right” (like Anki cards).

djmips|2 months ago

ugh, this is the same reason I would fail CS assignments because the teacher would mark it that way!

epolanski|2 months ago

I like the idea, and you've got yourself a customer :)

The lifetime membership + launch discount was a good marketing bait I felt for.

Not really understanding the negativity here. We know for a fact that most of the people that master intellectual problems do so via pattern recognition, not by reasoning.

You show a chess master a position, he/she can instantly tell you what the best moves are without "thinking" or "calculating" because it's mostly pattern recognition.

Maths and algorithms fall in the same category. When approaching new problems, masters don't really start processing the information and reasoning about it, instead they use pattern recognition to find what are very similar problems.

The thing I really don't like is the lack of TypeScript or at least JavaScript, which are the most common languages out there. I really don't enjoy nor use Java/Python/C++.

embedding-shape|2 months ago

> We know for a fact that most of the people that master intellectual problems do so via pattern recognition, not by reasoning.

Where is this fact stated, and who are "we" here? Sounds like an opinion or guess at best.

> Not really understanding the negativity here

There are two comments that could be read negativily, the rest is neutral or positive. I don't really understand the constant need for people to bring up what (they think) the rest of the comments said. Post your piece adding positivity if you want, but most of the time comments end up a fair mix so any time someone adds a snippet like that, it turns outdated in a few hours.

henwfan|2 months ago

Thank you, I really appreciate you signing up.

I agree with you on pattern recognition. AlgoDrill is built around taking patterns people already understand and turning them into something their hands can write quickly under pressure. You rebuild the solution line by line with active recall, small objectives, and first principles explanations after each step, so it is more than just memorizing code.

You are also right about the language gap. Right now the drills are Python first, but I am already working on full support for JavaScript, Java, and C++ across all problems, and I will have all of those in by the end of this year. I want people to be able to practice in the language they actually use every day, so your comment helps a lot.

inesranzo|2 months ago

> Not really understanding the negativity here. We know for a fact that most of the people that master intellectual problems do so via pattern recognition, not by reasoning.

> The lifetime membership + launch discount was a good marketing bait I felt for.

The negativity here with me is because it feels like clickbait and like a scammy ad to manipulate me into purchasing.

It is almost lying. I find it unethical and I don't think there are 17 lifetime access spots, it's just artificial hype that doesn't make sense to me.

Marketing (at least like this) is basically lying.

baq|2 months ago

I don't know if I feel any negativity, but this is the first time I actually thought 'the price of subscription is approximately equal the price of Opus tokens needed to build a custom version of this for myself'... and got a bit scared TBH

andoando|2 months ago

Agree with your overall message, but I don't think thats true for chess. Chess players wouldnt be spending an hour on their own move in a match where theyve been been studying the board for hours already if it were that simple

paddleon|2 months ago

> Not really understanding the negativity here.

In the last year or so HN seems to have attracted a lot of people (plus some bots) who seem to have been socialized on Reddit.

I don't know if these people are ignorant of what a good discussion forum can be (because they've never experienced one) or just don't care, but I do wish we could see more reflection on the second-order impacts of posting, and a move away from the reflexive negativity that mimics the outer face of good criticism while totally missing the thought and expertise good criticism requires.

monooso|2 months ago

I understand the pragmatic reasons behind such a decision, but insisting that I sign up with Google (and only Google) was an unfortunate blocker.

If anything, GitHub seems like a more obvious choice for such a site.

henwfan|2 months ago

That is fair. I went with Google first because it let me ship the first version quickly, but for a tool aimed at developers GitHub and simple email sign in make much more sense.

I am working on both and plan to let people move their account once they are live if they would prefer not to use Google here.

port11|2 months ago

I was hooked, but don't have a Google account anymore. Oh well…

wodenokoto|2 months ago

Is it correctly understood that this is Anki for a subset of leetcode problems with study notes?

I bit more info on what NeetCode is, why I should focus on those 150 problems and how the drilling actually work would be helpful. Do I get asked to do the same problems on repeat? Is it the same problems reformulated over and over? Is there actualy any spaced repetition, or am I projecting?

henwfan|2 months ago

That is a good first approximation, but it is a bit more guided than a plain Anki deck. For each problem there is a structured study page and an interactive practice mode.

NeetCode 150 is a popular curated list of LeetCode problems that covers the core interview patterns people expect nowadays, like sliding window, two pointers, trees, graphs, and dynamic programming. I used that set as the base so you are not guessing which problems to focus on, and more problems and patterns are being added on top of that core set regularly.

On the study side, each problem has a consistent structure with the core idea, why that pattern applies, and a first principles walkthrough of the solution. On the practice side, the solution is broken into small steps. Each step has a clear objective in plain language, and you rebuild the code line by line by filling in the missing pieces. After you answer, you see a short first principles explanation tied to the line you just wrote, so you are actively recalling the logic instead of just reading notes.

You can repeat problems and patterns as much as you want, mark problems as solved or unsolved, and filter by pattern so you can focus on the ones you struggle with most. There is not a full automatic review schedule yet. For now you choose what to review, and the goal is to use that progress data to track weak patterns, guide what you should drill next, and add more types of focused drills over time.

embedding-shape|2 months ago

I learned the other day (https://news.ycombinator.com/item?id=46184676) that people who aren't students apparently use LeetCode too, for recreational purposes? I'm not sure why you'd work on someone else's imaginary problem instead of doing something for yourself, so apparently it's there and some people enjoy it, regardless of my understanding of it.

But then I don't know how to reconcile the idea that some people use LeetCode to pass interviews, some use it recreationally, but then this app seems to indicate some people use LeetCode to learn patterns to implement in the real world, which seems absolutely backwards to me. These are tiny examples, not "real programming" like you'd encounter in the world outside of computers, LeetCode can impossibly teach you how to create useful programs, it only teaches you syntax and specific problems.

So I guess take this as a word of caution, that no matter how much you grind LeetCode, nothing will prepare you to solve real world problems as practicing solving real world problems, and you don't need any platforms for that, just try to make your daily life better and you'll get better at it over time and with experience of making mistakes.

baq|2 months ago

> imaginary problem instead of doing something for yourself

they're doing it for themselves just like when they solve sudokus, crosswords or play fortnite

another_twist|2 months ago

I do codeforces in my spare time. Sometimes I implement and ML paper. Other times, I like to slog through my implementation of Raft, Paxos and VR. Not everybody wants to build generic crud app number 1,200,674. Coding is for solving problems, the problems might be engineering or just pure fun.

Vaslo|2 months ago

Seeing how other people solve problems opens up new ways for me to solve my own. Many people are not RTFM but instead want applied examples.

mylifeandtimes|2 months ago

some people like to play with Rubiks Cubes, which among other things is a nice tactile way to learn some interesting advanced math

999900000999|2 months ago

This might be the answer for me, you're breaking down all these questions into actual smaller steps and having the user write those out instead .

I dislike limited offers, because I think you're placing a bit of unfair pressure on the user to buy. But I went ahead and gave you 30 bucks.

I'm going to study this before my next interview, thank you

pxtail|2 months ago

Nice, you have identified shovel very well.

emaro|2 months ago

I feel like this is a bit backwards. It seems to be an improvement over just grinding LeetCode, but I'd never work for a company expecting me to spit out LeetCode solutions quickly (recall). If they give me a LeetCode style problem and want to see how I approach this, what I know, how I deal with what I don't, then it's fine. But I think neither LeetCode or AlgoDrill are needed for this.

Or to put it another way, if I give some applicant a coding problem to solve, and they just write down the solution, I didn't learn much about them except they memorized the solution to my problem. That most likely means I gave them the wrong (too easy) problem. It will only increase the change of me hiring them by a tiny bit.

Edit: I don't hate the player, I hate the game.

notepad0x90|2 months ago

this type of stuff is generally for interviews. But it does tell you that the candidate has learned the patterns in question. That particular solution isn't important, but knowing good design patterns to solutions is. Knowing how a decent number of problems are best solves gives them a good intuition of how to tackle problems. Otherwise, they would tackle it using their intuition/vibes. There are books one can read to learn this stuff as well I'm sure, but how do you prove what knowledge you've retained?

10 programmers will write 10 different ways to solve a simple problem. and that code is tech-debt other programmers have to maintain at some point. Just having coders that have the same base-level memorized problem solving patterns can ease that pain, and it can make collaboration/reviews easier down the road.

francoispiquard|2 months ago

Seems like a good idea, is it the same kind of concept as the woodpecker method in chess ?

henwfan|2 months ago

Nice comparison. It is pretty similar in spirit to the woodpecker method.

In chess you repeat the same positions until the patterns feel automatic. Here it is LeetCode problems. You keep seeing the same core patterns and rebuild the solution step by step. For each step and line there is a small objective first, and then a short first principles explanation after you answer, so you are not just memorizing code but training pattern recognition and understanding at the same time.

hinicholas|2 months ago

I like it. I subscribed. The check is definitely rough around the edges though. Memorizing the exact variable names is tough. I think the objectives should maybe give you the variable names it expects at least.

AidenVennis|2 months ago

The website is missing information on which languages it supports. I was hoping for Typescript, but after registering I see that it's only Python at the moment and it seems Java and C++ are coming soon...

pelagicAustral|2 months ago

Any company using leetcode as their primary way to assess competency is time wasting, soulless black hole unworthy of any real talent.

noident|2 months ago

I don't like doing the leetcode grind, but all of the alternatives are strictly worse.

* Take home projects filter out people with busy lives. Wastes 100 people's time to hire 1 person. Can't be sure they didn't cheat. No incentives to stop company from giving you a 10 hour assignment and then not looking at it. The candidate with the most time to waste wins.

* Relying on academic credentials unfairly favors people from privileged backgrounds and doesn't necessarily correlate with skill as an engineer.

* Skipping the tech interview and just talking about the candidate's experience is prone to favoring bullshitters, plus you'll miss smart people who haven't had their lucky break yet.

* Asking "practical" questions tends to eliminate people without familiarity with your problem domain or tech stack.

* We all know how asking riddles and brainteasers worked out.

With leetcode, the curriculum is known up front and I have some assurance that the company has at least has some skin in the game when they schedule an engineer to evaluate me. It also tests your general knowledge and in some part intelligence as opposed to testing that you have some very narrow experience that happens to overlap with the job description.

neilv|2 months ago

Any company still using LeetCode at all during interviews is signaling that either they are run like a frat house, or are so dim/indifferent that they're unwittingly cargo-culting one.

another_twist|2 months ago

Used to be in the same camp here until I had to interview for a specialist role. I'd happily swap Leetcode rounds and doing away with the highly subjective - design a class hierarchy nonsense.

koakuma-chan|2 months ago

What are good companies using?

apt-apt-apt-apt|2 months ago

Lol I saw this being spammed in the comments on every reddit thread when looking for interview prep

bochoh|2 months ago

Solid platform - clean and useful for algorithm practice.

Quick suggestions:

  - GitHub OAuth would feel natural for devs.
  - Broaden language support (C#, TypeScript, Ruby).
  - Add dark/light mode toggle for comfort.
Excited to see where it goes — thanks for building.

henwfan|2 months ago

Thanks for the kind words, and for taking the time to write concrete suggestions.

GitHub sign in is on the way. Right now it is Google only, but I am adding GitHub so it feels more natural for devs.

For languages, the drills are Python first. Java, C++ and JavaScript will be fully supported by the end of this year across all problems.

The site is dark by default today. A proper light and dark toggle is planned so people can pick what is more comfortable for longer sessions.

Really appreciate you trying it this early and sharing where you would like it to go.

sumnole|2 months ago

Another to add to the list: Allow flexible naming. For example, drilling the two sum problem requires the user name the hashmap prev_map, but I feel memorizing this sort of stuff detracts from the lesson.

skydan|2 months ago

Why is text selection disabled in study mode? Is this an intentional design choice?

androng|2 months ago

I tried the two sum and found it kind of strange to do line by line recall, I thought the only way we could memorize hundreds of leetcode is to think in chunks that are several lines, not one line at a time

Fire-Dragon-DoL|2 months ago

I got hooked without realizing that I'm not super familiar with any of the languages. JS would help,but I was hoping to use Go (or Ruby at least).

Thank you either way, I purchased I license

kybernetyk|2 months ago

That's certainly a (to me) very unusual way to learn programming.

qwertytyyuu|2 months ago

It’s not about learning programming, more about learning how to solve leet code problems quickly as I understand it

quibono|2 months ago

I want to like this. But... one has to write the answer in EXACTLY the same format, down to each variable name it seems?

dzonga|2 months ago

and yet people still can't build software.

now the same people in the industry advocating for leetcode are also advocating for vibecoding. I wonder if an LLM is made to do leetcode before approval for vibecoding.

day in day out, the software gets worse, delayed, shipped with bugs, very slow yet yeah prove to us you can build software by doing puzzles

if you advocate for leetcode - fxxk yxx.

australium|2 months ago

I want to test out the platform but I'm getting an SSL error on account creation - anyone else?

nialv7|2 months ago

Actually curious, how often do you find uses for LeetCode patterns in your actual work?

JoeOfTexas|2 months ago

In web development, you mostly deal with data, sometimes you need to group that data, and some of these algos can help with that.

Most useful when you work with large datasets, if you can reduce a workload that takes hours into minutes or less, congrats, otherwise, you are forced to wait the hours. Either way, job security.

davidbensoussan|2 months ago

Bought it but please fix the variable names issue mentioned by other people here

henwfan|2 months ago

Thanks for buying it and mentioning this. You are right that the current checker is still too strict about matching my variable names and structure, and that is not where I want it to stay.

I am working on a Python validator that compares the parsed code as an AST instead of raw text, so you can use your own variable names and small structural changes as long as the logic is the same. I am aiming to have the first version of this in by the end of December.

After that I want two clear ways to practice. One mode tracks the editorial solution for people who want to drill that exact version, while still allowing harmless differences like different names and small adjustments in structure. The other mode treats your own code as the reference and lets the objectives and feedback adapt to the way you wrote the solution, instead of holding everyone to one fixed template.

If you have thoughts on what would make the checker feel natural and fair for you, feel free to share them here and I will keep them in mind as I make these changes.

dragochat|2 months ago

...the f?! why are we interviewing ppl for things like this?!

you either:

(a) want DEEP understanding of math and proofs behind algorithms etc.

(b) can get away with very high level understanding, and refer to documentation and/or use LLMs for implementation details help

there is no real world use case for a middle-ground (c) where you want someone with algo implementation details rote-memorized in their brain and without the very deep understanding that would make the rote-memorization unnecessary!

komali2|2 months ago

> there is no real world use case for a middle-ground (c) where you want someone with algo implementation details rote-memorized in their brain and without the very deep understanding that would make the rote-memorization unnecessary!

I was watching a video recently talking about how Facebook is adding KPIs for its engineers' LLM usage. As in, you will be marked negatively in your performance review if your code is good but you didn't use AI enough.

I think, you and I agree, that's obviously stupid right? I imagined myself as an engineer at Facebook, reading this email come through. I can imagine two paths: I roll my eyes, find a way to auto-prompt an LLM to fulfill my KPI needs, and go back to working with my small working group of "underrecognized folks that are doing actual work that keeps the company's products functioning against all odds." Or, the other path: I put on my happy company stooge hat, install 25 VScode LLM forks, start writing a ton of internal and external posts about how awesome AI is and how much more productive I am with it, and get almost 0 actual work done but score the highest on the AI KPIs.

In the second path, I believe I will be more capitalistically rewarded (promotions, cushy middle/upper management job where I don't have to do any actual work). In the first, I believe I will be more fulfilled.

Now consider the modern interview: the market is flooded with engineers after the AI layoffs. There's a good set of startups out there that will appreciate an excellent, pragmatic engineer with a solid portfolio, but there's the majority of other gigs, for which I need to pass a leetcode interview, and nothing else really matters.

If I can't get into one of the good startups, then, I guess I'm going to put on my dipshit spinny helicopter hat and play the stupid clown game with all the managers so I can have money.

bko|2 months ago

Maybe it's just me, but I want people that are reasonably competent and you can work with. Maybe there are some jobs that require deep understanding of maths/proofs etc, but those are what, maybe 1 in 100 engineering jobs?

More often than not a deep interest in a particular technical domain is a liability. It's like that guy that insists on functional programming design patterns that insists on a fold with tail recursion where simple mutation could have easily sufficed. Or endless optimization, abstraction and forced patterns. Bro, you're working on building a crud app, we don't need spacecraft design.

farhanhubble|2 months ago

People are sheep. Someone somewhere used mathematical puzzles as interview questions. That someone became big. Others assumed it was because their interview process was amazing and followed blindly. Soon enough the process started to be gamed.

I'm seeing this trend again in the field of AI where math olympiad participants are being given God like status by a few companies and the media.

Truth is even the most prolific computational scientists will flunk these idiotic interviews.

petesergeant|2 months ago

> why are we interviewing ppl for things like this?!

Ship has definitely sailed

HenryQuillin|2 months ago

Nice! How long will leetcode style interviews stay around for though...

another_twist|2 months ago

This is a good product, the mechanism for me was an excel sheet. I wont sign up though, I've ground enough LC. These days I dont even prep for algorithm rounds and still manage to land offers. But I'd have appreciated this when grinding myself.

constantcrying|2 months ago

The idea of getting quizzed on how good you are at recalling specific patterns in algorithm construction is completely and utterly bizarre.

I get that some people feel forced into it, but nobody can believe that this is an appropriate measure to judge programmers on. Sure, being able to understand and implement algorithms is important, but this is not what this is training for.

henwfan|2 months ago

I mostly agree that the interview format itself is strange. I do not think people should be judged mainly on how many patterns they can recall on command.

The reality for a lot of candidates is that they still face rounds that look exactly like that, and they stress out even when they understand the ideas. I built this for that group, where the bottleneck is turning a pattern they already know into code under a clock. Each step in the drills is tied to a first principles explanation, so the focus is on the reasoning behind the pattern, not trivia.

netdevphoenix|2 months ago

It's just a power move on devs. People come on HN to brag about crazy high comp and how devs are untouchable. The reality is that if you feel the need to do circus tricks for someone in exchange for a role that makes you happy, you got no leverage. While this might have been less obvious during the late 10s and early 20s with all the fancy pods, consoles, free high quality fresh meals and what not that Big Tech used to offer to devs, it is certainly harder to deny nowadays.

stack_framer|2 months ago

Is there any way to try it without signing in via Google?

ohghiZai|2 months ago

I’d sign up if there’s a way to not use Google sign in.

Surac|2 months ago

sorry for asking: what does grinding LeetCode mean?

neilv|2 months ago

The phrase "grinding LeetCode" refers to a kind of unmentionable self-stimulus indulged in by people who want tech jobs money, but are bad at software engineering, and who want to work with other people who are bad at software engineering.

It was most popular during zero interest rate phenomenon, when there were numerous investment scams based on startup companies that could have a very lucrative "exit" for those running the scheme, despite losing money as a business.

LeetCode falls out of favor when companies realize they need to build viable businesses, and need software engineers rather than theatre performances.

dsr_|2 months ago

"grinding" is doing something repetitively, with the connotation that it is difficult and goal-oriented.

"farming" is the same but without the difficulty: just doing an easy but boring task repeatedly because it gets you something else that you want.

ErroneousBosh|2 months ago

Why do you need to "grind LeetCode"?

linguae|2 months ago

Some job positions are so competitive to get that a candidate with good data structures and algorithms skills but who hasn’t seen a specific LeetCode problem before and needs to solve it on the spot may lose out to a candidate who “grinded LeetCode.” It’s kind of like how a good student still needs to prep for standardized tests.

inesranzo|2 months ago

This project has potential but there are some issues with "Marketing" (I call this lying depending on how it's done)

Please stop with the false urgency and borderline lying to people saying there are 17 spots when they most likely aren't.

Doing this to sell more is unethical and dishonest.

I think if this project didn't do this it might work and go far.

game_the0ry|2 months ago

Nice work, this is a pretty cool project.

But fuck leetcode. With AI, its obsolete at this point.

another_twist|2 months ago

Not really, its quite easy to tell if you havent prepped well. The place where AI is good is online assessments.

clbrmbr|2 months ago

Rust version?

smetannik|2 months ago

Yet another paid tool.

Leetcode wants subscription, NeetCode wants subscription, and now - yet another one thing.