I also spent most of my early life close to computers but as far as programming I only remember learning actual programming (in C) in my late teen years. It’s really hard for a 10 year old kid to really grok stuff like that. So if you are comparing yourself against people that you think had a head start then at most you are a couple of years “behind”. But also, as a 23 year old your learning pace and ability to focus should be higher, so you can recover lost ground very fast. In summary, the best time to start something was yesterday, the second best is today. Realize you are not much “behind” and get started. But also take the time to enjoy it.
Another thing is comparing yourself to Carmack… c’mon man, you have to cut yourself some slack. He is one of greatest programmers to ever live, he is _not_ a realistic yardstick to measure yourself against. You should only compare today’s you vs. yesterday’s you. That’s the only comparison that matters. For as long as that comparison trends positively you are in the right path.
And finally, you will realize that it takes time to digest things down and progress to mastery. As you grow older and get exposed to more and more fields you will start seeing connections that you can explore. But this takes time, as much as for Carmack as for yourself. This is how you grow and it is inescapable that it will take time. You have to understand it and accept it.