After re-reading this a few times, I think I agree, but it'd be very easy to draw some wrong conclusions from what you've written.
At 3 or 4 years, a programmer has demonstrated if they've got the innate ability to program, but programming skill becomes dated very quickly. Being a good programmer also requires being current in your skills, and that only happens through practice. Most programmers demonstrate their aptitude at 3 or 4 years, but they demonstrate their potential as a programmer (mind you, I'm just talking about their skill as a programmer) when the first big industry shift hits, and they need to update their skills. Then they demonstrate it again when the second shift hits. Then they demonstrate it by realizing that the whole thing is constantly shifting, and they come up with ways to keep their skills constantly up to date.
As an example - If I had to hire a developer today for a 2 month website project, I'd pick Scott Guthrie over Bill Gates. Why? Bill has demonstrated exceptional programming ability and is likely more informed on a lot of things, but his skills probably aren't as current as Scott's. Scott has a blog and posts code. I don't know, but I'm guessing that Bill could only talk at a high level about many of the essential elements of programming circa 2007. I'm not saying Bill isn't accomplished as a software professional (an untenable position if ever there was one), but my guess is that he's no longer a great programmer.
As someone mentioned above, running makes a good counterpoint. It's easy to tell in a few years if someone has the body to be a good runner, but if a runner stops running regularly, they won't continue to be a good runner for very long.