Why you're not improving
It's probably not what you think it is
When months of real work produce no visible movement, the natural thing is to go looking for the cause, and almost everyone reaches for the wrong one. The mistakes cluster into a handful of shapes, and what they all share is that they blame an input you can add more of, instead of the process that is actually broken. Adding more of the wrong thing feels like effort, which is exactly why people keep doing it for years. So before you add anything, go through the usual wrong answers one at a time, because the real fix is almost always hiding behind one of them.
"I just need to do more"
This is the most common one by far: you solved 500 problems and you are still failing interviews, so clearly you need to do 1000. No. That should tell you something in how you practice is broken, not that you should double the dose, because more reps of a broken method only buy you more of the same result. The root of it is measuring yourself by solved count at all, because solved count is a vanity number, and a high one sitting next to a low contest rating tells one clear story, which is that you have been absorbing solutions instead of building the engine that generates them. Contest rating is the cleanest measure there is of solving the unseen, and it is the one number volume genuinely cannot fake, so someone with a 2400 rating from 30 contests understands problem solving more deeply than someone with 1500 solved and an 1800 rating across 100 contests, every single time. And you do not need to grind eight hours a day to fix it either, because that is a full work day and almost nobody you are comparing yourself to is actually doing it, so if a focused, casual amount of practice is not moving you, eight unfocused hours will not save you, they will just burn you out faster.
"I just need to be consistent"
The most upvoted advice in these communities is always some version of be consistent, keep grinding, never give up, and it feels supportive, which is exactly why it does so much damage. It is the same reply pasted under every post, so it never lands on what is actually wrong with the person asking, and in place of a diagnosis it hands out false hope. Take a real one: someone who has been grinding seriously for the better part of a year, contest rating around 1580, lays out his problem with real precision, that away from the clock he can solve roughly 1720-rated problems but freezes the moment a contest starts and rarely clears the second question, and then asks whether he will ever get good. The two top replies are that he should just be consistent and he will get good suddenly, and that he is doing fine and should keep at it. Look at what he actually described, which is performing under pressure, a specific and fixable thing, and neither reply goes anywhere near it, so he keeps grinding the exact routine that is not moving the number he cares about and eventually decides he is not smart enough and quits.

That screenshot is what the advice actually produces: over a thousand problems and four years of daily submissions, and a contest rating still stalled in the 1900s, which is a lot of life spent for a result a focused person reaches in a fraction of the time. And the streak does real damage to the people chasing it:

One missing square setting off a genuine panic attack is the moment the streak has stopped being a way to get better and become the whole point, which is how people burn out and walk away entirely. You almost never see a strong competitive programmer keeping a daily streak, because they do not need one: they solve hard problems when they have the focus to actually think, they fix the foundation when they get stuck instead of grinding past it, and they rest the rest of the time. Solve something properly once a week, give it real thought, and dig into the gap when you get stuck, and you will pass the person doing a half-asleep problem a day. Consistency is not the enemy, it just stops helping the moment it becomes a substitute for thinking.
"I just need to know more"
The second real shape: you keep getting stuck, so you decide you must be missing some algorithm, and you go off to learn segment trees, or the next twenty patterns, or whatever exotic thing the last editorial used. Almost always wrong. The problems that beat you are usually beatable with what you already know, and the reason you failed was not a missing technique, it was that you could not derive the path to it from the constraints. Memorizing one more named trick adds one more entry to a lookup table that was never the bottleneck, and it feels like progress because learning anything new always does, while leaving the actual gap untouched. If you can follow a solution but never produce one, that is exactly this gap, and metacognition over pattern recognition is the fix for it.
"They had advantages I didn't"
The last one, and the most comforting, which is what makes it the most dangerous. The people who got good had a CS degree, or a bootcamp, or a mentor, or started in high school, or could afford some course you cannot. Almost none of that is the reason. The material is free, the feedback is instant, and the work is overwhelmingly self-driven, so nobody handed the strong people a secret, and plenty of them have no degree and never paid for anything. Believing your circumstances are the blocker is a way to make the problem someone else's fault, and it quietly removes the one lever that was always yours, which is changing how you practice.
The one input that does matter
There is one exception, a single input that genuinely shapes you, and it is not more problems or more hours, it is the room you practice in. You do not only learn from the problems you solve, you learn from the whole environment around them, the people, the incentives, the metrics everyone tracks, and the things the community actually celebrates, and most people drift toward the average of wherever they train without noticing it happen. If your environment rewards solved counts and daily streaks and memorized labels and shortcut advice, that is what you quietly absorb, and the default feed of the big LeetCode and NeetCode communities is full of exactly that: cheating threads, job panic, get-the-bag minimalism, and people openly optimizing for the lowest effort that still passes. The flip side is just as real and worth chasing, because a lot of strong people will tell you the single biggest jump in their progress came from finding the right room, an ICPC club or a serious Discord or a few friends who actually reason through problems together, rather than from any particular sheet. The environment is the one input worth adding more of, and it is the one almost nobody thinks to change.
So what is actually wrong
The fix is never another input bolted onto a broken process, it is to stop asking what you should add and start asking where exactly your reasoning breaks, because that question has real answers. If you can follow a solution but never generate one, the gap is in producing ideas from constraints, not in your problem count, and if you clear mediums but freeze the moment something is genuinely new, you trained recognition instead of reasoning. You can also watch this improve instead of taking it on faith: keep a simple record of what you attempt and whether you solved it, tagged by difficulty, and over a few weeks the level you can reliably clear should creep upward, which tells you far more than any solved total. Do a rated contest now and then, because it drops you onto unseen problems under real pressure, which is the exact thing you are training, and watch how often you reach for editorials, because if it is on most problems you are working above your level and should drop down until you are mostly solving on your own. Find the specific step that fails, practice that step on problems you have not seen, and the thing volume could never move finally starts moving. White Room exists to run exactly that diagnosis with you, instead of handing you the generic "just keep grinding" that never fit your problem in the first place.
Self-deception
There is one more failure underneath all of this, and -is-this-fft- named it better than anyone: self-deception, which he calls the single biggest reason people practice every day and still stay stuck. It does not look like laziness, it looks like work. He points out several forms of it, all worth reading yourself, but the most common is half-assing a problem because some part of you already knows you will see the solution soon, so no single attempt ever gets your real effort. His test for whether a way of practicing is any good cuts straight through it: a method works only if it does not let you deceive yourself, so if you are genuinely trying to crack the problem before you give up on it, almost anything works, and if you are not, almost nothing does.
The rest is the stories you tell yourself afterward. The mental gymnastics to justify a low rating. Pinning your failure on something irrelevant, usually that you simply have not solved enough, when volume was never what was missing. And the worst one, which the LeetCode community repeats more than any other: that you are just not consistent enough. It is one of the worst pieces of advice there is, because it is precisely backwards about what consistency even means. Look at every grandmaster and almost none of them are consistent on a daily level, they are consistent on a weekly one. Daily consistency means treating this like a job, and that is exactly how you burn out. Weekly consistency is the opposite: it is immediately more relaxing, and it gives you the room to actually think a problem through, turning it over in the back of your mind for a few days. So unless you have an interview two weeks out and are completely unprepared, aim to be consistent by the week, not by the day.
The fix is not a new resource to go find, it is just sitting with a problem you have not solved, no solution open in another tab, until you have actually spent your own ideas. -is-this-fft-'s post on self-deception lays out the rest, and I highly suggest reading it yourself.
For going deeper, -is-this-fft-'s guide to actually practicing is the most practical writeup there is, and this talk is the clearest thing I know on internalizing the habit rather than memorizing routes: