Hacker News new | ask | show | jobs
by gwd 1318 days ago
> I've heard this being said about mathematics and we know that both programming and math are logic based and pretty much require the same thinking techniques and programming is derived from math. So, wouldn't it be true that it's a young man's game for programming too?

Suppose someone said this: "We all know that your agility and strength peaks in your 20's; and being a builder requires the same movement techniques as being a body-builder. So, doesn't that mean being a builder is a young man's game?"

I'd hope the error here would be obvious. Sure, you're using your muscles when you're a builder. But the most important thing about being a builder isn't how many bricks you can move from point A to point B in an hour; the most important thing is that the house you built will be stable and reliable. And yeah, in a small building crew they often have the 20-year-old doing a lot of the "grunt" work, in part because his body can take it better than the 50-year-old who's overseeing the whole operation. But it would be incredibly foolish to fire that 50-year-old because he was "too old to be a builder": unless that 20-year-old is a "prodigy" in the sense of, "has the wisdom of a 50-year-old", the house he builds by himself will be nowhere near as good as the one he builds under supervision. And the 35-year-old on that team is still going to be faster and more effective than the 25-year-old, even though the 25-year-old is stronger and has better reflexes. Why? Because the 35-year-old has 15 years of experience in doing things efficiently.

So: Can a 25-year-old can fit more complex algorithms in his head than a 50-year-old? Probably so. Does that mean he'll write better programs? Absolutely not. The very first thing you need to learn is that you are too stupid to program. "Debugging is twice as hard as programming in the first place; so if you program as cleverly as you can, you are by definition not smart enough to debug it." The second thing you need to learn is that code is read much more often than it's written. Which means even if you can understand your code, if nobody else can understand your code (meaning, "the rest of the developers at your company", not "the top 100 developers in the world"), you've still failed in your job.

Contrast that to math research, where all you need to do, once you've come up with your super-complex theorem, is explain it to a few of the top minds in the field to get it published.