It does not surprise me that the research is in conflict.
It makes sense that as programmers age they either become better programmers (through experience) OR they stop programming (the bad programmers flux out of the field with time). These two factors combined will tend to make older programmers as a group look better than younger ones.
But there are hypothetical factors that can work against older programmers as well. For example, if the older programmer has not bothered to keep learning new things he will be locked into one domain where his expert skills are useful. This will cause trouble if he ever needs to work on different types of systems.
I actually have the opposite experience - I'm slower at 26 than I was at 19. Or so it seems, at least - perhaps I'm just taking on more ambitious projects (though if you believe tx, the desktop apps I did at 19 must be much harder than the webapps I'm doing now).
In my experience, raw speed starts out slow when you first learn a language/platform and quickly accelerates as you memorize & internalize the details of your platform. Every master programmer will tell you that the secret to high productivity is being able to keep the whole program in your head at once. I can program as fast as I type as long as I've got all the language syntax, API details, previously-written functions in my head. If I have to look anything up, it slows me down significantly.
But it only takes me about a month or two to reach that level of fluency. After that, it's downhill as new knowledge crowds out working knowledge you need for your day-to-day programming.
I found that my Java productivity took a major hit after I learned Lisp, for instance. Why? Because I kept wanting to use closures every time I had my IDE auto-generate a new Runnable. Because I kept wanting to use closures every time I created a new private class that was only used in one place. Because I kept wishing I had CLOS accessors every time I had my IDE autogenerate getters and setters. I think I spent far more time angsting over how much Java sucked than actually programming Java.
The real benefits of experience seems to be in knowing when not to program something. At my first job, I spent a week rolling my own encryption algorithm for passwords (why oh why did the experienced programmers I was working with not tell me this was a bad idea when I asked?). Now, I'd just reach for a SHA-1 library and one-way hash the passwords instead of trying to bake a reversible algorithm myself. I spent a long time typing up getters and setters for my classes then - now I'd autogenerate them with my IDE, or rearrange my methods so they aren't necessary at all. If I were in a position to use Lisp, I'd use it instead of worrying about how much Java sucked (okay, I use Python for my startup, but the point stands - no Java).
I type a lot slower now that I did 15 years ago (as in LOC/hour), but I think a lot more about what I'm going to type, and my code is much more efficient.
I have this crazy drive to constantly improve and learn more , and I'm enjoying what I do more that I ever have (attitude probably counts for a lot, at any age).
It makes sense that as programmers age they either become better programmers (through experience) OR they stop programming (the bad programmers flux out of the field with time). These two factors combined will tend to make older programmers as a group look better than younger ones.
But there are hypothetical factors that can work against older programmers as well. For example, if the older programmer has not bothered to keep learning new things he will be locked into one domain where his expert skills are useful. This will cause trouble if he ever needs to work on different types of systems.