I'm a cargo cult programmer, help me
I went to college and got an Information systems degree, it was a crappy college so the most programming we had was dabbling with arrays and pointers in C, not much Algorithsms & Data Structures, no unix, no Operating Systems and no compilers, and most importantly no problem solving. Half way through college my father died so I had to find a job to make ends meet, somehow i got sucked into the java "enterprise" world where I've been for the past 5 years, glueing API's and frameworks together, with some Javascript and SQL on the side, however on the verge of my 30's, I now have found that I lack the fundamentals of Computer Science, the things every programmer should know: Algo's, Data Structures, Operating Systems an understanding of compilers and being profficient with linux. Eventually I plan on going back to a real University and getting a CS degree, but I'm unable to do so at the moment, this is why I have come to ask for help.
OTOH I have given thought about if programming is really for me, I have found that I'm really, really bad at problem solving and "thinking outside of the box" I have come to accept that I'm really not smart. I'm slow, forgetfull, concepts never seem to stick, I have to force myself to not take things for granted, it seems no matter how hard i try I can't look at problems from different perspectives and understand the implications of a particular solution, I'm starting to think I may have a learning dissability, or that is because I lack the basic toolkit for problem solving, but I really think I'm just not very smart.
Of course the realization of my lack of skills, as you may have guessed, is because I want a better job, and there seems to be no place in the world for dumb programmers, and to be honest this is something I understand given my limitations and looking at my other peers, seeing how long it takes for me when programming something or understanding a problem, seeing how fast other people can grasp concepts that I struggle with, I understand that I'm just not valuable that all my experience means nothing, So I'm back to 0.
I have started going through the basic Algo's and Data structures again with a basic Java book about algorithms (I tried cormen but no way I could wrap my head around that stuff, I forgot all the calculus/math from college and i just lack the mathematical maturity for that book).
I'm also trying to study discrete maths, Operating Systems and compilers, of course one step at a time. I imagine this will take me years just to get a basic understanding of all these concepts.
And finally trying to memorise all those linux commands I ALWAYS forget.
Lastly I'm trying to learn technologies and languages that will help me get a better job, I'm still not decided whether I should learn Ruby on rails or python or Lisp or just stick to Java and learn Android and do my own thing and forget about joining a "cool" startup or working at the big guys like google(10 years from now after I become a real programmer of course...) Or quitting programming altogether.
Hackers, I understand this is a long and boring post, filled with grammar & spelling errors (English is not my primary language), but I only ask of you to guide me whether I should continue this path in which I have invested all my adult life on or just start again from zero, I just don't want to be a cargo cult programmer anymore.
Thank you