Unfortunately, in computer programming you will run out of experience and depth that you can accumulate after about 8-10 years of work (say ages 22 - 32). Every new technology is just a variant of the previous 999 technologies. But you still keep getting older every year, and incurring the downsides of getting older!
Compare this with, say, being a doctor. A doctor at 32 is just finishing residency, so he or she has just finished formal education. At 42, she has 10 years of experience, and a doctor with 10 years of experience is better than one fresh out of school. The doctor keeps getting better at 52 (20 years of experience) and 62 (30 years of experience).
The big picture is that computer programming is a field with low barriers to entry and where young people have a significant advantage. Staying in a field like that for the long run is going to lead to a brutish brutish existence. There are many posts here along the lines of "I'm 39 and still doing ok". That's beside the point, because in the future you will be 49, then 57, then 65. Remember, Social Security full retirement age is 67.
It doesn't make sense to wait until you are 40 to switch. Every career field accepts young people easier than old people, which means that the time to start planning your switch is today.
Also, I can see why someone would downvote my post above, since it describes an unpleasant reality. But I think it is crucial for young programmers to be aware of this dynamic!
The key is, no matter the age, to keep expanding your knowledge base.
Accounting, medicine, law all have much longer experience curves. Accounting also has significant barriers to entry (though not as high as medicine). Law has lower barriers to entry and you can see them facing a wave of unemployed lawyers and closing law schools right about now. Etc ...
But let's talk about the competitive advantage part of your argument.
Personally, I have spent 20 years collapsing and simplifying "everything" in my work product. IE ui design, coding patterns, and all other aspects of my tech related work product.
Whenever I show my code to new devs they usually say "yup I get it, it's easy". But it's not easy, I just spent a crap load of time thinking about those patterns over the years making them easier and easier over every iteration.
So, that's one competitive advantage right there.
But another competitive advantage polyglot old guys have. They can truly be a full stack developers taking an idea from mockup to web and mobile and completely scaled distributed systems.
It's VERY hard for anyone to do that without putting in 10-15 years because each discipline (design, mockup, mobile, architecture, scaling, etc.) takes a lot of time and effort to master. That said I have met 30 year olds who started at 15 who could do that too.
I think of it like the CEO who worked his way up from the mail room, he's seen every part of the company inside and out and that's why he's so good at building companies now.
There are also things you cannot control - changes to your brain as you get older, the kinds of jobs that are available, what other computer programmers specialize in. These are your odds.
Your success is a function of your efforts and your odds. Success = f(try harder, your odds). Since you are human, you can choose your path, and it doesn't make sense to choose a path where the odds decline so dramatically as you get to 46 ... 58 ... 63 ...
Computer programming isn't just one field, there're several completely different fields. All what you said might be true for the web development field, where the technology at hand isn't really that hard and you apply more or less the same technology and knowledge for each web project.
But there're several other fields where experience and knowledge are a lot harder to gain, and therefore also count a lot more, just look at the systems programming world or the more engineering heavy fields.
At my firm are a lot of >50 year old people, which are valued a lot for their knowledge, and our work isn't about getting shit done as fast as possible, but about getting something done right.
The point is not that there is nothing to learn, but that after 8 - 10 years, additional learning/experience does not give you a competitive advantage compared to younger programmers.
Finally, you can always have exceptions, niches, etc. That does not change the dynamic for the field as a whole.
I suspect part of this simple selection bias where the best stick with programming for longer periods, but there is huge bennifits to really wide ranging backgrounds. Sure, many things become outdated, but the 4th time you see the same idea presented in a new way your just picking up syntax not a new way to think.
Factor in internet that statement isn't true anymore. The amount of knowledge on the net today is mind boggling. Its scary to imagine how much information has become cheap and easy to access these days. And no one knows where this is all heading.
The jobs that require knowledge and experience hard to gain are already very few and shrinking with every coming day.
>>work isn't about getting shit done as fast as possible, but about getting something done right.
Wait until a 20 year old shows how it can be done fast and right.
Often, in these sort of situations, the field isn't even that visible. I certainly didn't know how extensive it was until I worked in it.
>>Wait until a 20 year old shows how it can be done fast and right.
I will applaud the 20 year old who somehow manages to disrupt the safe software industry, but I doubt it will ever happen.
And I'm saying that as a twenty-something.
I'm going to call bullshit on that. There are a lot of recycled technologies (especially in web), but the notion that after 8 years you know all there is to know -- that's absurd.
I just turned 30. I work with people both older and younger than me, but I learn way more from the 40+ year old people in my office than I do from the 20 year olds.
There is definitely enough in programming to learn for 200 years, if we lived that long. It's just that when programming in area E, a 47 yo who learned A, B, C, D, and E does not have an advantage over a 32 yo who learned B, D, and E. But the 32 yo has the advantage of his youth.
I also don't get all the "I'm 30 and I'm doing ok" statements. The article is about issues you'll experience when you're 45 .. 49 .. 55 .. 59 .. 63 .. etc.
Edit: let me do an easy computation for you. Time from age 22 to age 32 = 10 years. Time from age 22 to age 67 = 45 years. Big difference!
Then maybe task E is not the right task for the 47 year old? Maybe when building another accounting system it's enough to know all about accounting systems, but the closer you get to the cutting edge the more useful broad knowledge gets.
For example there is just about nobody with 5 years of experience in VR-technology, but if you have worked in a number of even slightly related fields in the last 20 years you probably can bring a lot to the table.
I understood his argument, despite what your condescending comment suggests, I just reject the premise it's built on. His premise is that in 8-10 years of experience you will be "max-level-programmer" and after that point there's not much worth learning, and you're a depreciating asset and you should parlay your experience into something else.
The ageism in the tech field should bother everyone, because you too are one day going to be old.
I was a computer programmer from 20 to 21 (I worked full time in college), and I changed fields at 21. I am in my 30s now. I didn't figure out these dynamics by myself - I was fortunate that my manager at the time was also changing fields, and he explained these things to me. He was in his early 30s and he became a doctor.
Now I am just trying to return the favor by describing these things to younger people on HN. And I read HN for kicks. :)
Same for people in the 30s. For example, in the lower ranked medical schools in this country (US), there are many former programmers in their 30s, and they discuss things on boards like http://www.oldpremeds.org/phpBB3/
Also, you need to be willing to get over the hump. That part when you are looking at something like node or rabbitmq. You've read the intros 2-3 times and it still seems like crazy incomprehensible gobbledygook.
When I get to that place, I stop working on it, go out for a walk and just let my brain work through it in the background.
30 mins later i sit down at the computer and it starts to make sense.
The other HUGE trick is to hire someone on Airpair to chat with you about the new tech for 30-60 mins. Actually I just gave you the best advice. Do the airpair thing for any new tech you want to get into.