5 ms·
I lack the fundamentals of Computer Science, the things every programmer should know: Algo's, Data Structures, Operating Systems an understanding of compilers a
by edw519 16y ago
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.
Relax. That's true for 99% of all programmers.
Eventually I plan on going back to a real University and getting a CS degree
Absolutely not necessary. You will probably learn more building anything than learning it in school.
I'm starting to think I may have a learning dissability
Maybe you do, maybe you don't. Just because the rest of the world is quick to diagnose everything doesn't mean you have to.
I have come to accept that I'm really not smart. I'm slow, forgetfull, concepts never seem to stick
Your performance shortcomings could be for many reasons. Being "really not smart" is the least likely of any of them. They are much more likely caused by other things like uninteresting work, poor environment, personal issues, nasty people, or even health issues. Whether you're "smart" or not, thinking that your aren't is pretty much a guarantee for failure. Please don't do that.
I have started going through the basic Algo's and Data structures again with a basic Java book about algorithms
Sorry to say, but you're just doing it the hardest way you can. You don't need a book; you need a project. I (like many others here, I'm sure) have achieved much, but have always had difficulty learning from books and theory. It's hard! You need to find work where the things you need to learn will be required. Funny how quickly and easily you'll find a way to learn them when you actually need them. I'm not sure how you should go about finding such work, but I imagine many responses in this thread do.
I just don't want to be a cargo cult programmer anymore.
Good. That makes your normal.
And finally trying to memorise all those linux commands I ALWAYS forget.
Then use less commands. I have never used more that 10% of what was available in any technology and I always got the job done.
I have to force myself
This is the most important thing you have said.
Have you ever actually enjoyed building stuff? Have you ever gotten really "jazzed" about the project you were working on? Have you ever leapt up out of your seat and danced when you got something working?
If you answered "yes" to any of these questions, then you really do have the passion to be a programmer. Stop selling yourself short and listen to the great advice you're sure to get here from fellow Hacker News'ers.
If you answered "yes" to none of these questions, then there's no sense for you to continue wasting your time searching for the passion. If you haven't experienced any by now, then you probably never will. No one should have to "force themself" to love what they're doing. Find something else.
P.S. Sorry about your father. Loss affects each of us differently. And don't worry about your English. It's fine. Please give yourself your best chance to succeed and keep us posted. Best wishes.
- kenjackson 16y agoWhile I agree with virtually of what you said, the following statement I do disagree with: You don't need a book; you need a project. (in reference to laerning algo and data structures). There are too many non-trivial algorithms that you are just likely to not rediscover. Many are the result of some of the best minds in various fields over decades. Dynamic programming isn't something that will likely just show up in your code w/o knowing about it (it may, but probably among the more skilled). Balanced trees almost certainly won't. Heck, even standard binary trees probably aren't obvious to someone who hasn't thought about the problem. And definitely not things like the Fast Fourier Transform or stability of Gaussian elimination, etc... I'd at least recommend spending a weekend reading a pragmatic algorithms book like Sedgewick, http://algs4.cs.princeton.edu/home/Algs4Flyer.pdf http://algs4.cs.princeton.edu/home/Algs4Flyer.pdf. Have a project that you're working on too, but don't do it without also learning algorithms and data structures more formally. Otherwise you'll end up finding a lot of poor solutions for problems that have known good solutions.
- jim_h 16y agoThat particular book is listed as being released on March 21 2011. Is there something I'm missing or are you recommending his earlier books on Algorithms in C?
- kenjackson 16y agoAny of his algorithms books. I believe he has C, Java, and Pascal. But unless you need the book right now, I'd be inclined to wait a few weeks to get this latest edition.
- edw519 16y agoThere are too many non-trivial algorithms that you are just likely to not rediscover. I agree, but would also (respectfully) ask, "So what?" OP needs to learn to crawl, then walk, then run. And he seems like a great candidate to do all 3. Even so, even if he works 30 years having a ball delivering great product to satisfied customers, he may never encounter "Fast Fourier Transform" or "stability of Gaussian elimination". I think of "advanced" subjects like dynamic programming, functional programming, and even algorithms and low-level code like mountaineers think about Mount Fuji: A coward never climbs it. A fool climbs it more than once. I haven't written a b-tree traversal in 10 years and hope I never do again. I'd rather stand on the shoulders of new giants and get other cool stuff done. OP's not there yet. Give him time. Also, he needs a reason to learn this stuff. "Because I need it for this project" is a better reason then "Because everybody else is doing it and I think I need to, too".