I'm an old programmer (almost 50). I completely disagree with you.
Young people are very, very smart. I hate old programmers that think they have an edge over young people. I've worked with kids who could be my children, and they are mature and smart and hardworking. Once young people hit about 10 years experience, they are as good as anyone with 25 years experience, because most of the first 10 years isn't as relevant anymore.
Sure, I bring some maturity to the table, and a bunch of war stories. I also believe I know how to program to avoid most bugs, so I take pride in having very low-defect, excellent code. But it is daunting competing against someone who could be your daughter and who can compete neck-and-neck with me.
Most of the young people I work with are quicker witted than I am (I'm 50). However, I have an edge over most of them (IMHO). I have good work habits. I'm organised at work (though hopeless at home). I have good communication skills (strengthened by years of practice). I have compassion for my coworkers, having experienced the same things they are going through. I understand very well what my strengths are and I know how to lean on my comrades when I need to. Most importantly, when writing code, I have judgement based on experience (not blog posts), I don't freak out when someone changes my code, and I don't panic when we make mistakes. Finally I know how to hedge poor management decisions to limit downside without materially impacting productivity.
Also, I don't know about you, but I'm still learning important new things even at my age (and experience level). I don't see an end in sight, so either I'm a very slow learner, or there is more than 10 years worth of things to learn/experience.
I have a few coworkers who are in their 20s and are very mature, have good work habits, are patient and smart. I'm constantly impressed with what they bring to the table considering they're this young. Not sure if this is a larger company thing, but yes they exist and it almost feels like its a new generation of kids that grew up wasting less time.
Don't get confused between talent and experience. Experience is the thing you wish you had just after you got it. Talent is kind of like the container for experience. It governs how much you can use and how fast you can acquire it.
Smart isn't the same thing as wise. Wisdom is smart combined with experience/knowledge. Smart says implicitly defined variables is cool. Wisdom says it's a bad idea because you tried it when you were young and smart and now know the unanticipated consequences.
There's an awful lot about good software engineering that is not taught in any CS program I've heard of. This information is acquired via time in the trenches and older folks on the team mentoring you.
An example is that certain kinds bugs tend to emanate a characteristic smell. Experienced programmers can discern those smells and hone in on its source a lot faster. Certain kinds of code also have a bad smell, even if they work correctly, that experience will detect.
Old is also not the same as wise. There are plenty of young fools in the world. Many of them become old fools.
What you're saying is absolutely true, but these generalizations are not useful. The distributions are too wide. Individuals from either group frequently surpass each other.
Another confounding factor is that age does not equal experience, either. I was taught software engineering as part of my EE degree. That was exciting, as I'd never before met anybody who knew anything about software development. After graduating, I became a full-time software developer. After 5 years in industry, I felt I wasn't learning enough anymore and went back to school for a grad degree.
I was shocked by how good some CS students were when I started teaching. Unlike me, by second-year university, some of them already had years of practice, mentorship and formal training. Having a focus on software and a knowledgable parent meant they got to learn at 14 some things I didn't learn until I was 22.
(I learned plenty of other things. In fact, I'm probably the only person in the computer graphics lab that knows how semiconductor doping works. Though, I can't say that comes up often. That experience is perhaps not so valuable to my current role.)
Absolutely. I just don't think omarforgotpwd's stereotypes about the young are a good counter to stereotypes about the old. Its not a victory to replace one prejudice with another.
I'm 37 and have yet to meet a "younger" programmer who could get anywhere near me. I know plenty of older (40+) coders who are much better than I am.
EDIT: a lot of this is due to being location constrained (well, me wife is, and she makes more than I can make in the Valley) so I can't go and work with brilliant teams in Amsterdam/Berlin/London/USA.
It's down to the pool being bigger (development pays well so career chasers do it) and survivor bias for old developers. The "bad" younger people either get found out our talk their way into management, or they find a niche and becoming unmissable in their company (and can never leave).
I'm right at the lower bounds of people who learnt their craft on the 8-bits coding pretty close to the metal.
> It's down to the pool being bigger (development pays well so career chasers do it) and survivor bias for old developers. The "bad" younger people either get found out our talk their way into management, or they find a niche and becoming unmissable in their company (and can never leave).
I think it's more because of motivation to become a programmer. A few decades ago (or even until maybe 10 years ago), programming wasn't that prestigious, you only did it with an honest interest in tech. Tech today is what Investment Banking and Law was a decade ago, the way to make a lot of money quickly in a fancy job. That will lead to many people going into it that are highly intelligent (and therefore able to produce code) but not motivated to produce output that will function well even after they left the company.
Code is costly, high maintenance, and it has high cognitive overhead. When possible one should avoid writing code.
But if you do decide to write it, not wasting time on shit that’s not going to work anyway can be much more valuable than code per se. Lacking experience, junior devs often try to boil the ocean where a cup of tea would be better.
The experience of structuring programs in the large, mapping domain knowledge onto classes etc is all still just as valid. And don’t forget: there are plenty of codebases older than that that are still being actively maintained and developed.
Sure, but asking somebody who only knows C++98 (or even pre-STL C++) to write modern C++ is pretty much like asking them to write Java. It's like learning a new language.
Sometimes you don't get the choice. My C++ compiler is saddled with a pre-98 standard lib with everything exposed outside of the (non-existent) std namespace. Templates and exceptions are disabled. No STL, No RAII. Can't code like it's 2017 when you're doing it 1980's style.
On the whole, I agree. This trend will severely hinder the ability of companies engaging in this practice and somehow they won't know it. On the surface, to the people engaging in it they see it as a win. Over time though, they'll build experience eventually come to realise they've placed an incredible stealth tax on themselves.
That said, I wouldn't go so far as to say young people are stupid. I'd be more inclined to say that it takes a long time to get enough experience. When I was much younger, I vastly underestimated the value of this experience. Over time, I've come to see it as critical.