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).
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).