Writing this because I'm in the same boat — Software Engineering student, no fancy CS background, trying to become an actual full-stack developer with real skills instead of just a degree. Here's the roadmap I'm following, based on what's actually working for me so far, not theory I read somewhere.
Stop solving random problems
This was my first mistake. Sorting by "Easy" and clicking whatever looked short is not a strategy, it's procrastination that feels like productivity. Pick one pattern at a time: two pointers, sliding window, binary search, stacks, basic recursion. Do 5–8 problems in that one pattern before moving to the next. You're not trying to "finish LeetCode," you're trying to build pattern recognition.
Track your failed submissions, don't hide from them
I failed Longest Substring Without Repeating Characters multiple times before it clicked. I TLE'd on Best Time to Buy and Sell Stock with a brute force approach. I want to be blunt: if you're not failing submissions as a beginner, you're either picking problems too easy for you, or you're copying solutions instead of thinking. Wrong answers are data. Read why it failed before you touch the editor again.
After you solve it, ask "what's the actual pattern here"
Solving Valid Parentheses isn't the goal. Realizing "matching/undoing in reverse order = stack" is the goal, because that pattern shows up in way more problems than just that one. Same with Search in Rotated Sorted Array — the real lesson isn't that specific problem, it's "binary search works on any property that's still monotonic, not just a fully sorted array." Once you start extracting the underlying idea instead of memorizing the specific solution, problems start feeling less random.
Don't grind in isolation from real projects
This is the part a lot of "just do 300 LeetCode problems" advice misses. If your goal is an actual developer career (full-stack, with AI skills, whatever your stack is), LeetCode builds your problem-solving muscle, but it does not replace building real things. Run both tracks at once — DSA practice on one side, actual projects on the other. Otherwise you end up with someone who can reverse a linked list but has never shipped anything.
Consistency over intensity
Showing up for 45–60 focused minutes daily beats a 6-hour weekend binge followed by a week of nothing. Your brain needs the pattern recognition to compound, and that only happens with repetition spread over time, not crammed into one session.
Expect to feel dumb sometimes — that's the actual signal you're improving
If everything feels easy, you're not pushing your level. The frustration before the "oh wait, that's it?" moment is the whole point. Don't run from that feeling, that's literally the part of the process that builds skill.
I'm still early in this myself, not posting from some "I'm a senior engineer now" high horse. Just writing the roadmap I wish someone had given me on day one instead of "just grind 300 problems bro."