So, I used to think I was a decent programmer. I've been reading up on things like Core Data, concurrency, dependency injection, multi-threading, etc, & have come to the conclusion that I'm just stupid & should find another field of work, like Customer Service.

I have friends who know all of this stuff, & I just wonder if they were just born smarter? I have been doing programming for about 10 years & have realized that I learned essentially nothing in all that time.

There's no college classes in my area that teach this, & have read/own many programming books that never touched on any subjects even remotely similar to these kinds of things.

Where do we learn this stuff?!

How do you deal with all things you don't know?

At what point should you decide to cut your losses & move on?