This movie was supposed to be about a rookie Bond. Yet Daniel Craig was 38 in this, whereas Connery was playing a very experienced Bond at age 32 in Dr. No. They should have cast an actor who was in his 20s to play Bond in "Casino Royale."
Connery said the Bond Character should be about 33. So, yes, at the beginning of this series Bond should have been late 20's. On the other hand Craig did a good job in CR.
In the books Bond was a Navy Commander. Typically, it takes about 25 years to reach that rank, maybe 20 if you're a streamer. So, if Bond joined the Navy at the earliest age -- 18 -- he'd be 38 as a minimum before he joined the secret service.
It's possible that he may have joined the service earlier and had his final rank awarded to him after joining... that might subtract a year or two. So, mid-30s at the earliest and assuming he achieved every rank on time.
The movies don't strictly follow the books although Moore's Bond was frequently referred to by his Naval rank. Craig's Bond is supposed to be ex-SAS, but it would be reasonable to assume that MI6 wouldn't recruit anyone below the equivalent air force or army rank. They would only want someone who had established experience and command credentials, and that could only come after a suitably long career in the military.
So Craig WAS about the right age. Where they went wrong though, imo, is that a short seven years later, he is portrayed as past his prime and aging out of his role (in the movie, not real life). I'm not an expert in spycraft, but I would reasonably expect that they would get at least fifteen years of field work out of him... his early-50s at which point he would start working a desk.
I like enough of the 007 movies, although I can’t say I’ve ever been the biggest Bond fan. But goddamn I love Daniel Craig’s run/portrayal! Case closed.