Confession #1: I'm not some kind of genius.
I graduated at the bottom of my class in high school: 119th out of 123, I think. I had a 2.989 GPA and only graduated with my class because I took extra credit at the local Junior College between 11th and 12th grade. I followed that up with eight years of college to get an Associate of General Studies. That's not to say I'm not smart, but there's nothing in my academic history to prove otherwise.
Confession #2: I've never read any programming book from cover to cover.
Other than the first couple chapters of a beginning C# book that I needed to set up my computer to write and build code, most of what I've read has been bits and pieces of what I needed at the moment. While there are some awesome books out there that every programmer should read, it's very difficult to get the information you need when you need it, if you start with page 1 and work your way to the end of those dry, technical language books.
It does mean that there are holes in what I know, but that leads to the next confession.
Confession #3: No one programmer knows everything about their technology stack.
There are plenty of very talented software people. On rare occasion there are deeply knowledgable programmers. This is one reason I like working with a team of developers. Skills and knowledge overlaps. What one person doesn't know, the rest of the group knows. It's kind of like Moneyball for software.