After college, I taught myself programming. I started with web - PHP, JS, etc. Landed a job, and eventually learned backend Java. Did that for a few years, and then jumped into Android Dev. Been doing full stack web/android/backend now for ~9 years.
I lost my job (company downsizing) 2 months ago and I'm in the biggest rut of my life. I FEEL DUMB.
Every job nowadays requires solving algorithms. So I set out as a goal, to get better at algorithms. My progress has been absolutely dismal. After 1 month of trying to solve problems on leetcode.com, while taking a coursera course ... I am NO BETTER at solving these problems.
Every problem seems different from the last. Even if I can find the 'common thread' ... the solution is still generally quite different enough that I can't solve it completely. It seems I'm a "C Average" person, and that's just how it's going to be for the rest of my life.
My memory sucks. I forget solutions within hours of learning them.
Every day I sit down to study. I struggle. I get frustrated. The frustration causes me to get distracted, and want to quit. An entire day goes by and I will have only struggled through 2 problems. TWO PROBLEMS in 1 day.
Please, HN, what can I do? I'm desperate at this point to not keep sucking at this. I need to see improvement, but it's just not happening.
There's nothing bad about that, especially if you haven't spent half your life focusing on those leetcode type problems. Consider that a typical undergraduate "data structures and algorithms" course runs for a whole semester and doesn't actually (usually) cover that many individual algorithms. You might study one DS / algorithm in one lecture session and then have a few days to spend working on homework involving it.
I forget solutions within hours of learning them.
Fine. You don't really memorize the specific solutions to these things. You internalize the concepts to where you can recreate the solution when you need it. You don't have to remember all of the details, just enough. And that takes practice.
After 1 month of trying to solve problems on leetcode.com, while taking a coursera course ... I am NO BETTER at solving these problems.
A month really isn't that long to spend on this stuff. Give it six months, and if you don't see any improvement, then maybe that tells you something meaningful. But right now, this seems like the equivalent of going to the gym for a couple of weeks and then complaining that you aren't a world class power-lifter yet. It takes time to achieve results.
I need to see improvement, but it's just not happening.
Two things:
1. I'd encourage you to give yourself more time (but keep working hard)
2. Your entire premise might be wrong. Not all jobs require doing leetcode/hackerrank style problems. Now if you're in the SV area, and you're focused on working for trendy startups it might seem that way. But jobs in other areas (the East Coast of the US is where I'm most familiar) don't always, especially if you're willing to work for a company doing something a bit mundane, like retailing auto parts, or life insurance, or something.
I would suggest not hanging yourself with your academic performance though. Some people work better with different methods of learning for example, and not all teachers recognize them, particularly if they learn differently - it doesn't necessarily make you dumber. In retrospect, you should ask yourself what specifically caused you to be a C average student.
One of the dirty little secrets of studying CS and math is that truly understanding 2 problems of the kind you've never seen before in 1 day is OK and expected. Hell, sometimes mere understanding of one single solution to a problem can take a week or longer. Most anyone who does better has either studied the (adjacent) material before or just trudging along half-understanding this bit and that piece hoping that sometime in the future it might all come together. And that's exactly what happens after you stick with it for awhile (often several years). Your job is to understand the thought process and philosophy of math. It's usually called "math maturity". Math/CS people reuse the same tips and tricks over and over again under many different guises and after a while you'll start seeing this repetition and even start using them yourself. It's very similar to how you learned your own native tongue. Luckily, math folk have methods to rein in this madness.
Check out [0]. It's free and teaches you some basics of structured thought. Then check out [1], [2], [3] to expand on what you've learned.
One really good unpretentious algo book that shows you how to do problems is [4].
[0] BOOK OF PROOF by Richard Hammach
https://www.people.vcu.edu/~rhammack/BookOfProof/
[1] Discrete Mathematics with Applications by Susanna Epp
https://www.amazon.com/Discrete-Mathematics-Applications-Sus...
[2] Pure Mathematics for Beginners by Steve Warner
https://www.amazon.com/Pure-Mathematics-Beginners-Rigorous-I...
[3] Mathematical Proofs by Gary Chartrand et al
https://www.amazon.com/Mathematical-Proofs-Transition-Advanc...
[4] Data Structures and Algorithms: Concepts, Techniques and Applications by G.A.V. Pai
https://www.amazon.com/gp/product/0070699577/ref=ppx_yo_dt_b...
Good Luck and don't f*ck it up!