> You only see top programmers who started as kids and probably won some Olympiads and programming competitions, and this continued in their 20s and maybe kept their skill up till 30s but that's about it. What do they do after that?

~20 years ago, I did OK in a computing olympiad (IOI). I'm going to be 37 soon. Generally speaking I think I'm a better programmer than when I was 20 years ago. What are we doing now? Most of my peers back then are now in FAANG. (Google is the most common one, I think.)

Starting early is definite an advantage, but the field is so broad and varied that there's a place for pretty much everyone (yes, even for those writing CRUD apps). Unless you limit yourself to the top tier competitive programming scene, in which case it might be a "young person's game" if only because for most people it's kind of boring to do it day-in-day-out, and if you want to stay competitive on the top tier you need a lot of practice.

But if you just want a meaningful job and career in programming-related fields, there's room for everybody. People who win Olympiads don't necessarily perform better as a software developer (statistically they're somewhat better, but you could say the same for any marker for general intelligence). I've met a lot of great programmers that had a variety of backgrounds, and whether somebody has won an Olympiad doesn't really make any difference.

The skillsets required to be a good programmer these days is multifaceted, and those math/algorithm things are just one small slice of the whole picture. I would even dispute the claim that "programming and math... require the same thinking techniques". I'm pretty comfortable discussing algorithms, but put a gun to my head and I wouldn't be able to prove Pythagoras' theorem.

Instead, most of my work involves thinking how to write code to be more readable (this is definitely not a math thing), designing effective APIs, evaluating new technologies and libraries (especially whether to "trust" them as a dependency), and a lot of debugging and communication. I rely on years of experience and domain knowledge to do these effectively, and I'd like to think I get better with more experience. And since these skills are multifaceted, they are complicated to evaluate in a linear fashion.

It's impossible to design a competition for general programming skills, especially those with a human or aesthetic element. So programming competitions generally restrict the domain to a very narrow slice of programming, and those tend to resemble maths. In practice, programming doesn't have to be similar to math at all.

There's also no real reason to want to be a "top" programmer or a "kid prodgy" (whatever that means). Despite recent layoffs, tech is still a huge field and generally still growing. You'd be doing quite well even if you're, say, merely the 10000th programmer in the world (assuming it's possible to rank people like this in the first place).

That said, if you're somehow fixated to the idea that you want to do competitive programming and become a "top" programmer, starting at 30 is a huge handicap. You're obviously ineligible for the high school and collegiate competitions, and most of the top talent in the open competitions have a background in those. Experience in those competitions itself is a huge edge, since you get to hone your skills in time management and learn your own strengths and weaknesses. There are particular styles of coding and programming tricks that you learn in competitive programming that has little use elsewhere. That said it's just a game. Most people at 30 grow tired of the game. That's why those "kid prodgies" drop out and pursue other interests.