>The question we should be asking is why talent doesn't seem to increase with age as much as we'd like.
Wrong question, I think. Talent does increase with age, at least if the developers in question actually care enough to stay current. [1] I don't think it gets better by orders of magnitude, though -- the mythical 10x-20x programmer starts out as a 5x+ programmer. I know I was already at least that much better than most of my coworkers when I got my first day job.
What does happen is that developers are less willing to work crazy amounts of overtime just to impress management, and it's overtime bias that's the real problem.
I just blew away a team of two developers (both much younger) who had been working on a project for 9+ man weeks, catching up and passing them in less than two calendar weeks of development (on an implementation of the same code on another platform). And I did it in 30-40 hours per week. At a "traditional" company that rates performance by the number of hours each developer sits at their desks, I would have been the worst performer, and it's only the fact that I was doing almost exactly the same thing as the other team that made it clear I was getting more work done in less than half the work hours.
The corollary is that, as a young programmer, I cost the same as an idiot who couldn't put two lines of code together without creating three bugs, but I was already at least 5x as productive as that idiot (well, infinitely more productive than some developers I knew back then...). But now I have a track record and I make a lot more money; if I'm as good as 3-5 typical programmers, 3-5x the average starting salary is a bargain (considering reduced overhead, management, and increased chance of project completion because of reduced complexity).
But most companies don't recognize that, so they'd rather hire and manage 3-5 young developers for "cheap" who are willing to work lots of overtime. If they get at least one who's good, they may get more than their money's worth. Otherwise they're likely to end up with a project that's late, has tons of preventable security issues, and that is harder to extend than if they'd hired the expert.
That's what's broken. As to how to fix it: Would be wonderful if there were some verifiable way to rate programming skill, but until someone comes up with a system that can't be gamed, I don't see how.
[1] I've known many developers who effectively "give up" on learning new things at some point, and from that point on their skills rot (and/or they become managers). The ones who keep learning don't seem to hit a "skill wall", at least into their 50s, where my sample size drops precipitously.
I think this more or less nails it. I'm not a programmer, but I have hired a few in my day. My best hire I've ever made was out of high school, and this kid blew away any developers of any age by 3-5x easily. He now is 15 years along his career (long since moved on - I can't afford him), and working for Google.
He's going to be great when he's 60 years old, because he's great at what he does, passionate, and lives for learning new technology.
The only difference is that yes, he will not be working those crazy hours.
You do have one mistake in your post though. While yes, a single developer who is 5x more productive than another programmer is worth more than 5x as much - for a small team that may not matter as much as you think. As a business owner, I would want to hire you, but I also need another developer who can "keep up" so I have business continuity should you quit/get hit by a bus or something. This is worth a considerable amount and I would not be willing to hire you vs. hiring 3 lesser developers to get the same job done. It would be too much of a risk.
>This is worth a considerable amount and I would not be willing to hire you vs. hiring 3 lesser developers to get the same job done. It would be too much of a risk.
This is a fair point, but consider that having the expert work on it to start with, even if the expert leaves at some point, would mean you have a far more maintainable code base than if you'd started with three junior developers.
Probably the best answer is a compromise: Get the expert to put down the "bones" of the project with the understanding that they would commit to training a (less expensive) project maintainer (or a team of them). EDIT: Also have the expert screen your maintainer(s) so you don't end up with idiots. :)
The value of having good code to start with can't be overstated. There are times when I've come in and told people that they should start from scratch than try to maintain their pile of garbage code created by junior developers.
Wrong question, I think. Talent does increase with age, at least if the developers in question actually care enough to stay current. [1] I don't think it gets better by orders of magnitude, though -- the mythical 10x-20x programmer starts out as a 5x+ programmer. I know I was already at least that much better than most of my coworkers when I got my first day job.
What does happen is that developers are less willing to work crazy amounts of overtime just to impress management, and it's overtime bias that's the real problem.
I just blew away a team of two developers (both much younger) who had been working on a project for 9+ man weeks, catching up and passing them in less than two calendar weeks of development (on an implementation of the same code on another platform). And I did it in 30-40 hours per week. At a "traditional" company that rates performance by the number of hours each developer sits at their desks, I would have been the worst performer, and it's only the fact that I was doing almost exactly the same thing as the other team that made it clear I was getting more work done in less than half the work hours.
The corollary is that, as a young programmer, I cost the same as an idiot who couldn't put two lines of code together without creating three bugs, but I was already at least 5x as productive as that idiot (well, infinitely more productive than some developers I knew back then...). But now I have a track record and I make a lot more money; if I'm as good as 3-5 typical programmers, 3-5x the average starting salary is a bargain (considering reduced overhead, management, and increased chance of project completion because of reduced complexity).
But most companies don't recognize that, so they'd rather hire and manage 3-5 young developers for "cheap" who are willing to work lots of overtime. If they get at least one who's good, they may get more than their money's worth. Otherwise they're likely to end up with a project that's late, has tons of preventable security issues, and that is harder to extend than if they'd hired the expert.
That's what's broken. As to how to fix it: Would be wonderful if there were some verifiable way to rate programming skill, but until someone comes up with a system that can't be gamed, I don't see how.
[1] I've known many developers who effectively "give up" on learning new things at some point, and from that point on their skills rot (and/or they become managers). The ones who keep learning don't seem to hit a "skill wall", at least into their 50s, where my sample size drops precipitously.