I know all about being overly critical of yourself. I used to do a number on myself in that regard. I'm a lot better about it now, but I still think I'm harder on myself than anyone else is on me.
Unfortunately I don't really have any advice as for good ways to overcome it.
What I can say, though, is that if you want to pursue your dream of game programming... then just do it. All it takes is time and effort.
|(basically Chapters 8, 9, and 10 surprised me by not fully understanding them).|
This made me wonder what else I don't know that I should have known by this time
"Education is the progressive realization of our ignorance"
The more you learn the more you see just how little you know. You can't let that discourage you, because it just gets more and more extreme as you go along. Instead, it should excite you!
Reading about some programming topic in a book and realizing you don't know everything about it is normal. I don't know if there's many people here who could read an entire programming book and not take something
out of it. If you didn't know everything about pointers or operator overloading... that just means you haven't had cause to use it yet.
Really it sounds to me like you should code more. I think that would solve a lot of your problems. Write code. You can even write sloppy, bad code that would be embarrassing to show off. The beauty about doing your own project is that you don't have to care what anyone else thinks about the code... you just have to care about how the finished product works.
In the process of writing that code, you'll improve. You'll see where/how your code is sloppy and you'll correct those mistakes in future code you write. Then in that code you'll discover whole new things that you're doing wrong and will correct yet again. It's just the natural process. Nobody starts our writing perfect code. Hell I've been writing code for 15+ years now and I look at code I've written as recently as 2 years ago and am amazed at how much I've grown since then.
So yeah. Pick a project and do it. Experience and time are the best teachers. If you're willing to entertain projects... I'd like to pitch my NES emu idea again. ;) Or if that's too overwhelming you can start with an NSF player (same idea... but only the CPU and APU so it plays just the music -- that's actually how I got started in emulation).