Ask HN: What's Wrong with Me?

4 points by toop43 ↗ HN
In college I studied ME and graduated with a C average. I struggled.

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.

13 comments

[ 4.0 ms ] story [ 39.1 ms ] thread
I can't offer any advice to your situation beyond trying to avoid being discouraged. There's a balance to confidence; too much or too little can be offputting, and it seems like you're hitting a low point that might make things harder for yourself.

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.

> In retrospect, you should ask yourself what specifically caused you to be a C average student.

I appreciate your response.

I'm 32 now, and I've had a long time to think about this question. Here's what I think is the answer:

I lack the focus over time which is required to build a deep knowledge or skill.

In other words, I get bored or frustrated quickly. Once bored, or frustrated, learning tapers off VERY quickly. I'm not a child prodigy, so learning anything takes focussed effort over time. The second it gets hard, or boring, my ability to stay on task diminishes rapidly.

It's not as simple as "grin and bear it", trust me I've tried. In college that's all I did. Grin, and bear the struggle. That's no way to learn. I need to be able to sit, fail, learn, sit, fail, learn, succeed, over and over and over. But for every sit, fail ... a frustration builds. Even the slightest frustration / anger, saps you of focus.

If it's not frustration/anger from struggling that derails me... It's sheer boredom. I can sit and read a boring book, for example. But after a few pages, I'll straight up forget what I was even reading. It's like my brain just goes offline whenever I encounter something boring. I have to stop, and re-read whatever it was I was reading.

That's truly what it comes down to. I can't sustain focus on something long enough (hours, days, weeks) to become really good at it.

For what it's worth - I've been prescribed and have taken adderal. It's a miracle for focus, but I HATE how it makes me feel. My heart rate jumps 10-15 bpm (from ~50 resting, to 60, or 65). I FEEL my heart beating harder, which is not pleasant. Then, hours later once the drug has worn off, I feel down... Depressed, and still my heart feels 'heavy'. Oh and that's on a "small" dose (5-10mg). I can't take the stuff.

What do you do after you get bored? My Achilles heel has always been too much internet and distractions, and actively removing those has helped increase concentration.

Not specifically related, but I personally find that having too many options for what to do generally makes me hop between things too much. I have a theme for every day of the week, and I don't allow myself to work on anything under a theme for another day. MWF are three courses respectively, TH is backend for a side project, weekend is frontend for a side project.

> What do you do after you get bored?

Anything else.

I'm not sure it matters. The boredom is the problem, not having options.

You could lock me in a room with nothing to do but read a book about thermodynamics, or study algorithms, and as soon as my interest starts to fade... my progress slows DRAMATICALLY.

What am I doing in this locked room, other than reading?? I don't know, probably just staring at the wall thinking about something else. Then realizing I'm wasting time. Start reading again... Lose track, get bored.... Stare at the wall and think about something else... Realize I'm distracted, start reading again... rinse, repeat.

Will get through an entire chapter, and barely remember what I actually read.

(comment deleted)
> I'm not a child prodigy, so learning anything takes focussed effort over time.

Like (almost) everyone else here.

> The second it gets hard, or boring, my ability to stay on task diminishes rapidly.

Bis.

The thing is to be resilient: keep doing it (staying out of your comfort zone) and eventually you'll push your limits, like everyone else (just ignore the very few geniuses that clearly have some special genes).

The other thing is that it looks like you stayed in that comfort zone for a while, and 2 months is way too short for efforts to have effect. The hard truth is that you may have spent some years in that dreaded comfort zone, and those years are just gone. What you'll you with the incoming years is totally your own business, but whatever you do, just remember: you won the lottery the day your were born, just be happy with yourself for the simple fact that you live :]

> TWO PROBLEMS in 1 day

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!

I appreciate the thoughtful post, with links. Definitely one of the feelings I've had as I've approached these algorithms is that I MUST certainly be lacking in either experience, or a way of thinking, or both.

I'm certainly lacking in the experience boat. But, I've figured the "way of thinking" is likely that I am not thinking in an algorithmic / math fashion. I don't "see" the solutions in the same way that someone with a mind for math would. Instead I just see the brute force, "obvious" solution.

I'll definitely take a look at these resources.

An entire day goes by and I will have only struggled through 2 problems. TWO PROBLEMS in 1 day.

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.

Maybe I am being too critical of myself. It's certainly a trait of myself that I'm familiar with.

The problem is often that I don't know what's an acceptable expectation of myself. I've tried to be reasonable when it comes to approaching the study of algorithms, but maybe I've missed the mark?

Two problems in 1 day seems like pretty dismal progress, especially when I'm not exactly memorizing / absorbing these problems as well as I'd like to. Most of that day, is spent distracted out of frustration that I didn't / couldn't solve the first, or second problem, and had to resort to the solution.

I know that there are jobs out there which don't do this style of interviewing, but I have noticed that most of the companies doing interesting work, that pay really well, do. I kind of rationalize it like this: If I'm going to work a job (shit, I'd rather not)... Then it damn well better be maximized for interesting work, and pay:

Job = Max(jobs,[Interesting,Pay]);

Fair enough. I'd also rather not work a traditional job, but I take a slightly different approach... I try to go for a $DAYJOB that's as boring and stress-free as possible, while paying enough to pay the bills, and then use my side-project as my outlet for doing stuff I find actually interesting. But I understand that that approach isn't for everyone.
Have you considered working with a tutor? Have you had any evaluations to determine if ADHD, processing speed (the human kind) or other issues play a role? A tutor would be able to tell you if your expectations are too high. An evaluation would be able to tell you if you need to adjust your learning methods.