Programmers: Before you turn 40, get a plan B (2009) - <AUTHOR> http://improvingsoftware.com/2009/05/19/programmers-before-you-turn-40-get-a-plan-b/ <comment><USER4> I'm not sure I'm buying that. The JVM ? Still rocking it 20 years after. Memory allocations pattern ? Still there. The network stack ? Well, doesn't seem to have changed a lot.

The older guys, they seem like they had the time to correctly learn the unix network tools, the jvm debugging ones, the memory inspection ones. I've known older devs for which I have the utmost respect because I felt like they can just debug the shit out of anything happening on a computer, with tools I don't even know of but have been there for decades.

And here I am, needing to google how use tcpdump or jstack, and scrambling to correctly understand the result.

I agree that new tech is always stacking, but I feel like it's pretty damn hard to catch up on the in fact still very relevant and important old one, because it's no longer taught, no longer a meetup topic, no longer hype. And the new one is really easy to learn when you realize that it's 90% rehashing of old concepts (Observables are all the hype in javascript ? Well, great, I've learnt that pattern 15 years ago...)

Admittedly, I have no clue if the management realizes that !

But the impact of this knowledge, from what I observed, is really huge on productivity, and is especially a boon when the production is on fire or generally when tricky stuff happens.

So, respect for the elders, and please come and teach in conferences and meetups, we need more wisdom and less hype !

<comment><USER5> Yeah, you hear all these horror stories about how developers have a "shelf life."

In the meantime, though, every single older developer I've met has been extremely knowledgeable and frankly much better at the craft than myself.

Look at any hobby -- say, guitar playing. The difference between someone who's been doing it for 4 years and someone who's been doing it 20 years is ridiculous. They're so much better. I feel software dev isn't that different.

The only problem is if you're older you do need to follow new technologies. Older devs I've talked to who were pushed out of the field are the types who worked on, say, mainframe technology well into the mid-aughts and never thought about learning anything new.

As long as you get off the sinking ship of technologies that are obviously waning (and you should have at least a decade of warning in advance, I think), I don't think it's honestly that hard to stay current. You don't have to follow every fad, but make sure people will continue to use your main programming language.

Also, startups discriminate on age because they need people that can work until 2 AM and drink their Kool Aide. But there's a lot of stable, non-startup jobs out there. People who have never left the scene probably think of it as death, but there's actually some really nice enterprise shops out there with great developers.

<comment><USER6> One thing I've noticed is that there seem to be a lot more older developers and engineers at hardware-oriented companies.

I currently work at Wing Aviation, the Alphabet drone delivery company. We were originally located in the Google X building, which is the old Mayfield Mall in Mountain View. I used to shop at that mall in the 1970s!

X is full of hardware startups, and when I started there I noticed one thing right away: for the first time in a while, I was _not_ the oldest person in the building.

Now that we've moved to our own smaller building, I may be the oldest again, but not by a wide margin. There is a lot of gray hair in our teams.

I'm 67 and have been programming for 50 years.

<comment><USER7> That's probably not by coincidence. The cost required to fix a hardware/firmware defect vs a software defect is much more. I'd definitely want to put my best engineers on the product that can't be easily fixed once it's shipped vs software than can always be patched.

> I'm 67 and have been programming for 50 years.

Also, that's really impressive. You've probably forgotten more than I've ever learned!

<comment><USER8> Personally, I find it slightly weird that I've been in the industry longer than some of my co-workers have been alive.

<comment><USER9> Related experience in the opposite direction: I'm a relatively new software engineer that works on a 13 year old product. It's fun to see a particular commit and think about what I was doing in middle school, high school, or college at the time it was committed.

</comment></comment></comment></comment></comment></comment><comment><USER10> This is a replay of a comment I wrote several years ago to the same topic:

I'm 60+. I've been coding my whole career and I'm still coding. Never hit a plateau in pay, but nonetheless, I've found the best way to ratchet up is to change jobs which has been sad, but true - I've left some pretty decent jobs because somebody else was willing to pay more. This has been true in every decade of my career. There's been a constant push towards management that I've always resisted. People I've known who have gone into management generally didn't really want to be programming - it was just the means to kick start their careers. The same is true for any STEM field that isn't academic. If you want to go into management, do it, but if you don't and you're being pushed into it, talk to your boss. Any decent boss wants to keep good developers and will be happy to accomodate your desire to keep coding - they probably think they're doing you a favor by pushing you toward management.

I don't recommend becoming a specialist in any programming paradigm because you don't know what is coming next. Be a generalist, but keep learning everything you can. So far I've coded professionally in COBOL, Basic, Fortran, C, Ada, C++, APL, Java, Python, PERL, C#, Clojure and various assembly languages each one of which would have been tempting to become a specialist in. Somebody else pointed out that relearning the same thing over and over in new contexts gets old and that can be true, but I don't see how it can be avoided as long as there doesn't exist the "one true language". That said, I've got a neighbor about my age who still makes a great living as a COBOL programmer on legacy systems.

Now for the important part if you want to keep programming and you aren't an academic. If you want to make a living being a programmer, you can count on a decent living, but if you want to do well and have reasonable job security you've got to learn about and become an expert in something else - <USER2> something you're actually coding. Maybe it's banking, or process control, or contact management - it doesn't matter as long as it's something. As a developer, you are coding stuff that's important to somebody or they wouldn't be paying you to do it. Learn what you're coding beyond the level that you need just to get your work done. You almost for certain have access to resources since you need them to do your job, and if you don't figure out how to get them. Never stop learning.

<comment><USER11> I love your comment and can back you on your last point. I know plenty of people who are very successful because they took the time to become experts on some industry that also aligns well with programming. Compare:

Person A has become one of the world's ten foremost experts on the GPS system and other industry-critical location/positioning technologies. She is also a good, above-average programmer but nothing special.

Person B is an academic, a master of C++ who can recite chapter and verse from the language standards and writes bug-free code. He can point out undefined behavior, implementation-defined behavior, and memory leaks with ease in code reviews. He builds entire systems using template metaprogramming and is already an expert on C++28.

Person C is a highly productive generalist. His career jumped from a bank to an enterprise company to an operating system vendor to an online store. Always working on API-to-API middleware, expertly pushing Protobufs and JSON around and designing vast systems, but never gaining any expertise in an actual application topic.

Person A is going to be much more marketable later on in life, _assuming she placed her bet on the right industry vertical_. Person B and C may have good, successful early careers, but are often at risk of being replaced by Yet- Another-Protobuf-Slinger fresh out of college. Be as good a programmer as you can, but also build up knowledge of the business or detailed knowledge of a specific technology application that you know is not going away.

</comment></comment><comment><USER12> There's a trap in software dev careers. If you fall into it, you can really get stuck post 40.

If you work at a small-ish dev organization - especially in-house dev in a non-tech company - you can rise pretty far and become pretty senior, and your indispensability can net you a decent income. But on the open job market those skills don't transfer as well. The senior roles in small dev shops are filled by promoting from within (because they value in house knowledge), and the senior roles in BIG dev shops are filled by hiring people who know how to operate in a big company, and you don't have those skills.

Best way to avoid the trap is, try to work somewhere big for a bit before you get to 40, to keep that door open and make it possible to be hired into a senior role.

<comment><USER13> > ...senior roles in BIG dev shops are filled by hiring people who know how to > operate in a big company, and you don't have those skills.

I'm not convinced of that. I was recently hired as a senior engineer at a large tech company that has more engineers than the sum total number of _employees_ at every other company I worked at previously. My skills transferred just fine.

<comment><USER14> I'm sure of that, but the problem is not when on the job, but while interviewing.

<comment><USER13> Not sure what you mean.

<comment><USER15> Recruiters and interviewers focus too much on "technology of the day" that will always change and be out of date, and not enough on foundational knowledge that is always transferable to new tech.

So if you don't have they right modern tech stack on your resume then you have no chance of getting hired even if you are perfectly capable of doing the work.

This is where "resume driven development" comes from. Smart and rational developers will choose tech stacks that look good on their resume, not necessarily what is best for the work at hand, because they want to make sure that they stay hireable in the future. It no good to do the best work you can do today, if you cannot get hired in the future. This is partly how new tech stacks are always so hyped even if they are always just more or less rehashes of what already exists.

<comment><USER13> That is not specific to big companies vs small companies, which is what I was asking about upthread.

<comment><USER15> If you're saying that it doesn't matter if you're at a small or large company using an internal company specific tech stack, then I agree. Both will leave you as unhireable even if your actual development skills can transfer just fine.

</comment></comment></comment></comment></comment></comment></comment><comment><USER16> I want to say thank you for all the "youngsters'" posts. As someone who been in the industry for over four decades, I do get lost in some of the newfangled things. Turns out, most of the time it is a language change, not a dramatic world-view change.

Of the three points of the article, the last two (10 years major shift, ; shift creates leveling playing field) I disagree with.

I have seen some things that felt like major shifts, but once under the hood, they tend to be re-shaping and combining existing technologies. This often put me ahead of new-comers. I had not only the current technology, but I also understood the underlying historical technology.

There is no such thing as "irrelevant experience" in my opinion. For example - it is unlikely that Algol, SNOBOL or Fortan will make a new revival. But, all that experience gave me the edge to be able to recognize short-comings or advantages of newer programming languages.

So thanks for all the nice words here. It's time for me to swap my tapes in my PDP.

</comment><comment><USER17> I don't know. I feel like there's a pretty clear power law governing the skill-ceiling below which additional experience adds actual value to dev work. ~80% of programming labor (testing, basic REST services, static web content, managing a small-to-medium-size SQL database, etc.) has a very low skill- ceiling. I've been in the industry for 7 years, I now run my own show doing all of these things. It's just simple grunt work. Then there's a very long tail of projects that require actual software engineering, where the skill ceiling is very, very high. Those latter positions exist all over the place, but you have to either create them or actively seek them out.

Conversely the skill-ceiling on managing technical projects is incredibly high. So although one certainly can efficiently stay on as an engineer, there is a much larger pool of opportunities in technical management, and they are much easier to find if you're grinding away at a FANG / enterprise company / growing startup / whatever.

If you want to do work that rewards many years of experience, it's there. Management work is just much more likely to fall into your lap (which, let's face it, is how the median employee finds anything).

For additional context, I also don't really think "programmer" is a profession in a vacuum. You need to level up inside a business vertical to really start adding specialized value, otherwise yes, you're a fungible cog. There's no shame in that, it just is what it is.

<comment><USER18> > grinding away at a FANG

I've started to propose we s/FANG/Big N/g "FANG" leaves off other obvious big companies, e.g. Uber, and it wouldn't scale to keep trying to add them to the acronym. Here N is used like when one talks about a list "N items long"

<comment><USER7> Does it seem odd to exclude Microsoft from FAANG when it's the largest?

<comment><USER19> MAGA - Microsoft Apple Google Amazon:

Edit:

I just realized what else that stood for...

<comment><USER7> It's fine, we'll print the message on hats so people know were talking about something else haha.

</comment></comment></comment></comment></comment><comment><USER20> > While a technology shift doesn't completely negate the skills of veterans, > it certainly levels the playing field for recent grads.

It can more than level the playing field, especially when the hiring managers are particularly narrow-minded. I'm seeing more and more "degree in data science" (an academic discipline that didn't exist 10 years ago) as a requirement for what are effectively programming jobs. Of course, we can agree that this is stupid, and that not getting a job at such a company is "dodging a bullet", but unemployed is a pretty nasty bullet in and of itself.

</comment><comment><USER21> This is generally true.

It's a combination of many things, from brain "degradation", ageism, simple economic math ( fresh meat is cheaper and more malleable ), other more important interests like having a real life and when you really mute all the marketing BS, your delusions and wishful thinking, the actual work of being a developer/programmer in a professional setting is a really shitty job and sad life for the majority of people on those jobs.

I'm a few years from 40 and not having experience or interest in large organizations, I don't know what to do.

Programming is cool, but I always found it to be a tool to get somewhere, and that somewhere hasn't happened and I don't even know what it is or looks like.

But either way, always have a plan B and don't forget about it.

<comment><USER20> > the actual work of being a developer/programmer in a professional setting is > a really shitty job and sad life

The thing is, it doesn't have to be and, until relatively recently, honestly wasn't. It's a shitty job and a sad life because we have open offices, ticket- tracking systems and daily standups. There was a time when programming was exciting and rewarding.

<comment><USER22> I would add code reviews to that. The advent of those was when it really stopped being fun for me, because it's really hard to keep that from turning into "your boss nitpicking every line you write."

<comment><USER23> In my opinion this is much, much better than trying to decipher what the heck that one co-worker pushed to production and how exactly it broke things. Of course there are ways to smuggle rubbish through code review, but it's still better than no reviews.

<comment><USER22> Both have problems. The best system is one where a passing review means "I feel comfortable maintaining this;" too often a passing review means "this is how I would have written it."

<comment><USER6> I have suffered under far too many "this is how I would have written it" reviews. It can be really demoralizing to write perfectly good, working, readable, performant, well-tested code only to have it rejected and have to rewrite it because the reviewer wishes you had used a different C++ feature.

I tried something like your "I feel comfortable maintaining this" approach recently when I was the reviewer. We have an internal geodata visualization tool that I've done some work on lately, and a talented C++ developer added a cool and useful new feature to the JavaScript front end.

He asked me to review it and said, "I'm sure you will find a lot of things I should change! This is my first real JavaScript project other than some hobby stuff."

And he was right. There was a lot of stuff I would have done differently. There was a mix of jQuery and document.getElementById, a fair amount of repeated code, var instead of const or let, and so on.

Our "house style" for reviews would have been for me to comment on every single one of these things line by line and expect him to change them all to my satisfaction. It would then require a second review pass to clear up misunderstandings, and a third to see if it all ended up OK.

Instead I told him:

"Your new feature is awesome! You're right, there are a lot of nitpicky things I would change in the code to bring it up to more modern JS style, and I'm glad you asked about that. But I didn't find anything that looks broken or dangerous. And the feature works, right? I could spend half a day writing comments explaining everything I would do differently, and that would keep you busy for another half day fixing it up. But I know you have more important things to work on right now, so maybe we can try something different. Go ahead and submit the code as is so people can start using it. When I get a little time I will just go ahead and make the changes I'm thinking of. I'll add review comments on my own changes and send it to you for review so you can see what I changed and why. That will avoid a lot of back-and-forth. I think it will save us both a lot of time and be a more pleasant experience too."

Needless to say, the developer liked this idea. And his manager was within earshot when we discussed it and thanked me for thinking of this approach.

I still haven't made that update, and this reminds me to do it sometime soon. But the code still works, people are using it productively, it has not failed once, and who really cares if there are some minor imperfections in the code style? None of our code is perfect!

<comment><USER24> You'll never do that update right? The more you wait, the more that developer will get annoyed when you interrupt them with it. :)

In this case actually I would have taken the half an hour and sat with them to explain what I think should be done differently and why, prioritized by importance.

Reviews done through tools work if there aren't many comments and if the basic design is ok.

I've seen reviews where someone's not skilled enough and they have to be taught idioms in dozens of comments in 10-20 patch sets. It's pretty horrible, but the positive side is that at least they're not merging crap.

<comment><USER6> > _You 'll never do that update right?_

I resemble that remark! Yes, procrastinator here. ;-)

The thing is, his code is plenty good for now. Even if I never make that update, the code works and people are getting useful results from it. There's nothing overly complicated about it either; I or anyone else could pick it up and easily make any simplifications and improvements whenever needed.

And this developer is working on far more important things for the company, mostly in C++. I made the call that it would be better for our business to let him get back to that, since any improvements to the JavaScript code style on this internal tool simply weren't that urgent.

But I do appreciate the reminder and I will get to that update soon!

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER25> Age discrimination is absolutely a thing, but (and this is _only_ based on anecdata) I would say it is much, much worse in the valley than just about anywhere else. The rest of the world seems to have a less damaged culture.

<comment><USER26> I'm a 56 year old programmer from New Zealand. I moved to the US to join a hot Silicon Valley RISC-V startup earlier this year. I think the average age of our software team is probably over 50. Certainly the median is.

My previous job (and my first ever outside NZ) was working for a multinational electronics company in their Moscow Russia R&D lab, a job I got when I was 52.

<comment><USER27> Working on semiconductors/electronics is "old tech" that is still very important. It's been around for quite a while.

Compare to Fortran or supercomputers. Was important, isn't much so these days, although is still used.

What I'm saying is that you got on a train that has been running longer than some other trains, hence you meet older people on the train. As someone who has little interest in management I hope to be as successful as you, in this sense of picking long distance trains.

</comment></comment></comment><comment><USER28> I'm 50 and still programming. Programming is all I know how to do. If that was taken away from me, I would just rot to death. I don't want to be anything else, and I refuse to be forced to do something I don't want to do. I'll learn to farm and support myself that way.

So, is it still preferable for the manager to not hire anyone and let the work sit undone rather than to be forced to work with a detestable "older" worker?

Perhaps the government should start giving disability status to people because they are over 40.

<comment><USER29> > _I 'll learn to farm and support myself that way._

With the climate apocalypse, that's becoming less and less likely.

<comment><USER20> Actually if everything folds in completely the way the alarmists are telling us it will, being able to grow your own food will be the only thing that will save you.

<comment><USER29> Yes. But being _able_ to grow your own food is what's becoming less likely.

</comment></comment></comment></comment><comment><USER30> Older comments:

\- [https://news.ycombinator.com/item?id=9361580](https://news.ycombinator.com/item?id=9361580) (351 comments, 2015)

\- [https://news.ycombinator.com/item?id=65043](https://news.ycombinator.com/item?id=65043) (112 comments, 2009)

\- [https://news.ycombinator.com/item?id=16934500](https://news.ycombinator.com/item?id=16934500) (107 comments, 2018)

\- [https://news.ycombinator.com/item?id=10290637](https://news.ycombinator.com/item?id=10290637) (2 comments, 2015)

\- [https://news.ycombinator.com/item?id=20564970](https://news.ycombinator.com/item?id=20564970) (1 comment, 2019)

<comment><USER31> Meta: I really wish HN had some way to automatically aggregate and display this data when a link was previously posted, so you had some sort of temporal representation of the various thread discussions that took place, adding a "+" expander and drop down to "past". I'm aware "past" takes you to HN search results for the link, so it's mostly good enough, I'm just throwing a wish into the ether :)

</comment></comment><comment><USER32> The solution to this problem is as simple as it is revolting to programmers - realize that programming is a low-value task. The high-value task is solving business problems, if it happens so that programming is the easiest path then go for it. The real value to the business however, lies in domain expertise - something programmers are forced to become in order to be able to write code for it.

The trick is to find a domain that stable, fairly interesting and has enough companies so that you can jump around. I myself chose occupational pension insurance (kinda-sorta 401k but in EU) and spent the last year or so explaining fairly easy edge cases to top brass.

<comment><USER33> What a statement, programming can be low value (not solving a business problem) or high value (solving a business problem).

<comment><USER34> Well, the topic here being the employability of programmers over 40, the statement seems fairly spot on as to how they will be judged - purely based on "business value".

[Business Value of Information Technology]([https://en.wikipedia.org/wiki/Business_value#Business_Value_...](https://en.wikipedia.org/wiki/Business_value#Business_Value_of_Information_Technology))

On the hand, programming (at least to me) is so much more. It's a creative activity like thinking or writing, it can be fun and "pointless" play, it can be insightful philosophically. Bringing productivity and efficiency to a business is one of the many applications of this medium of expression. I suppose by this point it's become a way of life, whether I'm solving a business problem or not.

</comment></comment></comment><comment><USER35> Ok I'll bite. I had the realization yesterday that I peaked at 25 (I'm 42). I got my computer engineering degree in 1999 and used to do things like really complicated integrations in calculus, and solve weird 3D intersection formulas for different variables to do change of coordinates on various surfaces for rasterizing before wolframalpha.com was a thing. I look at my invention lists from 20 years ago and they were pretty far out man. Like, they expected a future where maybe we had real multiprocessing with FPGAs or something instead of proprietary video cards.

But now, I can barely install a new software stack without this primal sense of exhaustion. I can't explain it, but it feels like everything is just.. wrong somehow. Or a little off. Like maybe the profit motive and disruption became the primary motivators instead of progress and scientific discovery.

It's to the point where I could probably write my own programming language more easily than learn the various idiosyncrasies/dealbreakers/errata of whatever industry standard language I'm supposed to use. I find major problems with most any framework in the first 5 minutes, and then spend most of my time after that figuring out how to use tricks with inheritance or pointing the package manager to a forked version of the repo with fixes so that I can extend the framework to do very first principles kind of things.

I think what it comes down to, is that I see programming as this giant spreadsheet where data reacts to other data changing, constraints get satisfied or exceptional situations happen. But unfortunately, the most overly hyped languages (like Ruby for example, or Java, not to pick on them) seem to go out of their way to block the developer from staying in a functional paradigm. Almost every codebase I've seen has descended into spaghetti code hell.

And unfortunately, that nebulous ball of cruft is where the money is in software development. I've spent the last 20 years knee deep in code so ugly (from assembly code up through SQL) that I feel like a plumber who sees code as.. sewage. There is just so much code, filling every crack where declarative and data-driven solutions would accomplish the exact same thing but with no side effects.

But new devs don't seem to care to learn where I'm coming from or why my code might be better in fundamental ways even though it looks a little strange to them. Sometimes in a conversation I'll see myself and think "wow, I really do resemble a crazy person". I just feel too old to begin the training, but too young to be this burned out. I fantasize often about giving up all worldly possessions and moving to an artist compound in the woods.

I worry I've just reached the point where I'm a fish trying to ride a bicycle but I don't know of an ecosystem that would value my natural and hard-earned talents for making the world a better place. There's just an endless stream of soul-sucking contracts, each more punishing than the one before. All of the money is tied up in the establishment now. No room for creative daydreaming along implausible trains of thought in the universe of possibilities. Just the grind. Always the grind.

If I'm depressed then it's environmental, and I feel stuck with it because I can't change the world. But that's why I learned to code in the first place 30 years ago. So now what? I guess I'm just curious if any older devs here have reached similar conclusions. And like, were you able to rise above it? Were you lucky enough to start 5 years earlier than me and capitalize on the booms to the point where you're independently wealthy now? Or is that a widespread fallacy, that "if I was just a little older" maybe I could have ridden a bubble? Or do you fantasize about being 20 years younger, starting in the world today where you have access to all the secrets of entrepreneurship online and still have a beginner's optimism?

I think the gist of my melancholy is that I have a knack for solving very difficult problems handily (nobody seems to need that skill anymore) but my short game stinks and I struggle to summon the motivation to do the mundane things (that are in demand). I'm tired of learning new languages and frameworks because they are each terrible in their own way but collectively the software engineering industry can't see the flaws so they inevitably remain.

Sorry this was a bit of an overshare but hey it's Friday.

<comment><USER36> That's a good post, but I think that I went down a different set of windy little paths. My worlds (graphics and video products) had tons of companies disappear, and the ones still standing matured to the point of offshore manufacture, maintenance, decreasing margins. It hasn't all disappeared but I think that a lot of the fun is gone.

I'm older than you, never bothered with internet technologies and languages, and feel a bit of ennui about the whole deal. My guess is that a world that only consisted of workstation software and embedded systems, slightly fleshed out with an internet made up of Amazon, email, USENET (and cars without video games on the dash) is just the fantasy of a Luddite.

My temptation is to take on increasingly archaic skills. Rebuilding a carburetor or playing a musical instrument is already in the pallet, so maybe bookbinding or blacksmithing should be on the horizon.

<comment><USER37> > _My temptation is to take on increasingly archaic skills._

I am reminded of the protagonist in _Tlön, Uqbar, Orbis Tertius_ who at the end, when the whole world is changing into a new world with a new culture and languages, he retreats to spend his time translating a classic 17th century English text into Spanish, both of which are soon-to-be dead languages.

<comment><USER36> The endgame is likely flintknapping, although I was tempted to re-create Egyptian fiaence as an Etsy business.

(reading through the referenced story, it parses like RA Lafferty. I would pay good money for a conversational Alexa of that type)

</comment></comment></comment></comment><comment><USER38> What others have said about keeping up with technology is certainly true. However, I've found the opposite to be true -- there are many more young programmers because the industry has expanded so much in the past twenty years, there is a relative lack of more senior people, and in my experience they are in high demand.

That said, if you're going for a straight individual contributor role rather than a lead or manager, there may be questions about why you haven't moved up and whether that might indicate a lack of ability to learn new things that might make you a less valuable individual contributor.

<comment><USER13> >That said, if you're going for a straight individual contributor role rather than a lead or manager, there may be questions about why you haven't moved up and whether that might indicate a lack of ability to learn new things that might make you a less valuable individual contributor.

Continuing as an IC (doing things) rather than becoming a manager where you help people do things indicates a "lack of ability to learn new things"?

<comment><USER39> It doesn't, but many people have conscious or unconscious biases in that direction.

</comment></comment></comment><comment><USER40> Mid-40's here. I'm in management but considering getting back into development/architecture. I've kept up with my skills in Java and DevOps and Kubernetes so I have a breadth of knowledge and skills that I know people are looking for. Management was my plan B and honestly I hate it.

<comment><USER20> A couple of years ago, the company I worked for abruptly went out of business (like, I came into work on Monday and they said, "we're closed effectively immediately, go home, we'll e-mail you severance details"). I sent out about a dozen resumes, got two interviews, flunked the first and got an offer at the second - the whole process took about two weeks and I was no longer unemployed. I was on good terms with one of the VP's at that company, who also lives close to me - I ran into him about a year later and I asked him how things were and he said, "well, I'm still looking for a job…" We were both around the same age (over 40, anyway) - I'm not so sure management is as unemployment-proof as some of us have been led to believe.

<comment><USER13> When you need 1 manager for every ~8-10 ICs, and one 2nd level manager for every ~8-10 first level managers, and so on, the jobs become fewer and further between the higher you go up. Management does not seem like the path of job security to me.

<comment><USER41> Right. It's a path to faster financial security though. Realistically, the amount of time it takes for them to find a new VP role is baked into the compensation.

<comment><USER13> It's not that simple. Not everybody even gets to be a VP at a company that pays VP level compensation, because there are too few jobs.

</comment></comment></comment></comment></comment><comment><USER42> Software engineers don't depreciate as they get older. Software engineers who stop learning depreciate whenever, at any age. I'm 58 and I've seen it over and over again: the people who find it hardest to stay employed are the ones who are least eager to grapple with new ideas and approaches. It's so easy to grow comfortable with that thing you're already good at (I'm a Powerbuilder developer and everyone needs Powerbuilder developers!). I don't know, do people think engineers in other disciplines just get to stop learning and cruise through the last twenty years of their careers? I'm not one, so I can't say, but I would guess civil engineers and mechanical engineers and aeronautical engineers and chemical engineers all have, like, disciplines they have to keep up with :). I know our family doctor isn't working with 20 year- old ideas and tools either.

</comment><comment><USER43> This is a scare-tactic article from 10 years ago quoting ANOTHER scare-tactic article from 10 years prior.

The truth: The number of programmers has doubled every two years since the 70s. The demand for programmers is _today_ exceeding the supply.

Until the supply/demand forces change, these headlines will continue to be nothing but fake news.

<comment><USER44> Agreed those of us over 40 lived in a time where there was no such thing as a "web developer" only some of us jumped over to doing "web development" so the actual pool of people available to do the job, that have the skills from Gen-X is insanely small compared to the overall demand the industry has generated for developers.

Almost all of the developers I knew from my younger days have either, gotten rich, gotten out (one bought a worm farm), or went into some form of management. All due to their own decisions no one was forcing them out of development, rather development has a way of chewing people up to the point where they want to be spit out. It is the reason that Office Space was such a resounding hit with us Gen-X'ers it struck at the heart of what it can be like to work in IT.

</comment></comment><comment><USER45> The article uses Ruby on Rails as an argument from 2009, saying the 10 years of C++ development is no longer relevant.

Apart from that statement not really ageing well, it doesn't really make sense as there will always be a consistent demand for C++ for embedded etc., likewise Java for enterprise, as they are mature and proven technologies in instutitions.

Just as there is an established market for RoR with companies that adopted it early on.

<comment><USER46> I think you're making the author's point. Java at this point is the new COBOL. C++ has gone from important mainstream language to narrow niche. Ruby on Rails is on the same declining curve, just not as far along; much of the excitement has shifted to Node, React etc.

Demand for old languages isn't consistent. It declines over time as code bases get replaced. A programmer betting that they will die before their chosen language does is taking some terrible risks.

<comment><USER47> I would say both Java and C++ still are important mainstream languages.

<comment><USER46> You can say it, but I'm not sure why you'd think it's true. As I mention elsewhere in this thread, Java is mainly being written in contexts where they already have a lot of Java.

And C++ has been declining for years. I'm not even sure you can write C++ for the common mobile platforms. I very rarely see it used in new server-side code bases. Or even old ones these days. It was a popular language for Windows apps, but that's a declining market these days. 5 years ago, C++ was already not getting taught much in schools [1], and surely that hasn't changed.

[1] [https://cacm.acm.org/blogs/blog-cacm/176450-python-is-now- th...](https://cacm.acm.org/blogs/blog-cacm/176450-python-is-now-the-most- popular-introductory-teaching-language-at-top-u-s-universities/fulltext)

</comment></comment></comment></comment><comment><USER48> Don't give in to the dark side (management)!

I became my own boss, and specialize in projects where my expertise is still valuable. With the dwindling supply of engineers still working in these spaces, contracts are pretty easy to find. As time goes on and the space becomes sparser, my rate goes up.

</comment><comment><USER49> A professor once told me that I shouldn't become a software engineer because my cognitive abilities will decline with age, thus making it difficult to keep a job :(

I'm at Microsoft now and see plenty of older engineers that have very, very valuable experience and skills. This myth is dumb.

<comment><USER50> Seems like your professor was also saying that he chose to be a professor so that he can stay employed when his cognitive abilities decline.

<comment><USER13> It is one of the few jobs in the world that offers actual lifetime employment, so you could be right.

</comment></comment></comment><comment><USER51> While I've no doubt that age discrimination does exist, when you see people who are former programmers at 40 (or 30 for that matter) it's often just that they started out in programming but got bored of it and moved on to other careers. Or gradually became managers rather than programmers.

Statistics may certainly show that programmers skew young, but its not _always_ due to being forced out, or denied opportunities, because of age.

<comment><USER46> I don't think those are cleanly separable. When you talk with people who left the industry, it's very rarely, "I was successful and engaged and really enjoying it, so I decided to switch to something entirely different where I had to start over and earn a lot less."

For a lot of people who experience discrimination, it's not one big blow-up that forces them out. It's the steady drip-drip-drip of being treated poorly, denied opportunities, etc. Eventually they just get worn down.

<comment><USER52> And sometimes when people aren't that good at their jobs, they blame external causes instead of accepting responsibility for their own performance. (Note: I do realize that discrimination and bad managers are real things, but then again so is the Dunning–Kruger effect.)

<comment><USER46> This is true, but at best it's irrelevant to the point being discussed. And at worst it's the sort of victim-blaming that is used to undermine every time discrimination comes up.

</comment></comment></comment></comment><comment><USER53> Recently I found a relatively cheap goat farm for sale back on my home country. That would be my plan B.

Forget consulting, forget management, my plan B is taking everything I know about automation, optimisation and continuous learning, and apply it to a completely different domain.

</comment><comment><USER54> I think the entrepreneurial route is the most realistic route in the long term. The idea is to use your experience and knowledge to build a software product that a niche market needs, and sell it.

If you live outside the main city centers like Silicon Valley, New York, Los Angeles etc. its not hard to make a full-time income online.

A key thing to understand is that, as an employee working for someone else, your revenue will always be capped to the rate associated to the job market of that profession. There might be a 10% difference between jobs, but that's it.

While if working as an entrepreneur, your revenue cap is the one of the market you are on, whatever that is.

<comment><USER55> I completely agree with this. I'm nearing 40 and have been consulting remotely for the past 5 years and have a side business, that will eventually be my full-time income.

The problem is that it's impossible to rely on any one company until you retire. Although I've been keeping my skills updated to the latest technology and trends, if I suddenly lose my job at 50, it's going to be really tough to find another one.

</comment></comment><comment><USER56> I started working as a programmer, and for all practical purposes started programming, at age 37. I'm over 50 now. The vast majority of my professional career has been spent in violation of this article's thesis. [https://www.rosshartshorn.net/RossHartshornResume.pdf](https://www.rosshartshorn.net/RossHartshornResume.pdf) A better take on it would be, "don't expect to be able to avoid learning new stuff every few years, just like younger devs".

<comment><USER24> I love learning new stuff that builds on what I know and increases my understanding of the world, but this is not what's usually happening in SW, where it's common to have to learn a different version of the old stuff because the market shifted.

</comment></comment><comment><USER57> At forty I was just getting started. I'm 63 and I have done lots of super hard projects and I keep learning more and I have advanced up the tech ladder. And, the problems are harder than ever. For me the key is going after the hardest problems because that is what I like the most. Think system software, compilers, AI. It just seems to have been a good career move though that was never my intention. I've worked in areas of the software field that are thought of as difficult, and that has helped me.

<comment><USER26> Yup. I moved into compilers and related things by starting to contribute to an open source compiler project in 1999 when I was 36 and got my first full-time compiler job when I was 43. Now I'm 56 and in the last couple of years started moving into designing new CPU instructions as well as the software to use them.

</comment></comment><comment><USER58> There are many domains esp. Finance where you move up or move out. Programming also tends to be one of them.

Scott Adams wonderfully says develop a talent stack, Programming is just one of them. Add Math, Sales, Communication, Leadership etc. Become a triple threat! Being above 80 percentile of 3 skills put you at a unique place. Many people here have the mental mechanics for it.

This one thing is true, I resisted.. learning is a life long thing! after 5-10 years of graduation your credentials do not mean one damn thing (with some exceptions).

<comment><USER59> 100% agree and can give a real world personal example.

The combination of above average ability:

\- as a python programmer

\- to read and understand other people's code (mostly by being methodical with unit tests etc)

\- to document processes clearly

\- write clear emails

\- find "stupid" processes and eliminate or streamline them

All of the above combined have taken me from senior engineer to about to manage a team of multiple engineers.

</comment></comment><comment><USER60> I probably felt this way 10 years ago when I was in my early 30s and this article was written. Now that the time has caught up with me and Im in my 40s and still slinging code? Im doing technical consulting now and have had the best 3 fiscal years of my life, with an upward trend. Getting out now would be foolish...

</comment><comment><USER61> The article is a bit ironic. It apparently talks about people who don't learn and don't change but suggests to them to just go and "find a new profession"...

A new grad, compared to a 10 year veteran :D. Yes sure, it levels the playing field, totally. As if language and frameworks would mean anything. I don't even want to know what kind of "veterans" would compare to a new grad. If you are worth anything at what you are doing, you would kick any smaller team of new grads out of the park, even when working alone, in a language you don't know and with a framework you don't know. New grads essentially know nothing about software engineering, nada...

It's baffling to me how any company would think otherwise. Perhaps they should review their hiring policies then.

</comment><comment><USER62> Suppose that it is true that it takes 10,000 hours to become expert at software development, just like for other arts and skills. Then, if the half life of IT is 10 years, you have to accumulate 5,000 hours of new learning every 10 years. Consequently, you have to devote about 10 hours/week to learning new stuff in order to keep current. If you are lucky in managing your career much of this can be done on the job. Otherwise it must be done on your own time. It is the inability or unwillingness of software developers to devote this much time to continuing learning that accounts for their early obsolescence.

<comment><USER63> > Suppose that it is true that it takes 10,000 hours to become expert at > software development, just like for other arts and skills.

The 10,000 hour rule is just something Gladwell made up on the back of a study which found that people at a certain level in certain fields (classical violin and classical piano) averaged that much experience (EDIT: actually, deliberate practice), while people at lower levels averaged less. It isn't a threshold.

<comment><USER64> Also, it isn't just 10000 hours of experience, it's 10000 hours of deliberate practice.

</comment></comment></comment><comment><USER65> Totally anecdotal, but I have long thought distribution of programmer skill becomes increasingly bimodal as they/we age, with them/us either becoming particularly skilled or particularly unskilled.

Either the one language/framework/paradigm that the aging developer is locked into becomes ever more aged and irrelevant, or else if the programmer has made good use of their time and experience, becomes particularly skillful and insightful and valuable with time.

I've known some amazingly sharp older developers, and I've also known some particularly poor ones.

Just a theory.

</comment><comment><USER66> The current generation of 50+ years old developers came from a way smaller pool of developers when they all started 30+ years ago and that's the reason that only a minuscule of them still codes. The percentage of current younger developers still coding in their 50% will be more closer to other engineering fields based on amount of developers entering the field every year last 20 years (even considering how many will simply abandon doing development once hitting 30 or 40) - not everybody will become managers or start their own businesses.

</comment><comment><USER67> I've always gone with the assumption that I'll have a really hard time getting a job as a developer after 50. It's something I think about often and try to plan for with my finances.

</comment><comment><USER68> Probably, system administration or the rest of IT is the closest to a natural fit for a programmer going into other things. For people with the MS programming certifications this may be a pretty clear path and aided by their programming skills.

I've got family who seemingly bucked this problem, though. He has maybe going on 40 years of C experience, now. I think he's said it's become harder to find work that really needs his skillset, but he's been doing the contractor thing for much of that time and always kept employed.

</comment><comment><USER69> Software engineering is a field that evolves and you need to stay up to date. It's far from the only field like that.

When you get out of school (or whatever path you took), you are knowledgeable about the current state of things. If you're an entry level engineer, chances are you'll have people teaching you what you don't know, mentoring you, and generally expect you to learn with them. Of course, as high as software salaries are these days, your expectations then are still lower than the older folks. Chances are you have less things to pay for outside of student loans in the US.

As you get older, you can do 2 things: you can passively coast as long as you can, or you can actively keep yourself up to date. If you choose the later, your knowledge stays current and you keep adding experience, making you more and more valuable. Short of health issues getting in the way, that will never stop. You just keep getting better.

If you passively coast though, what you know becomes less and less relevant. For the first couple of years, experience gain >> the part of your knowledge that is outdated, so you still go upward. There's a limit to that. That 35-40 yo line, assuming you started in your early to mid 20s, sound about right for when you lost more than you gained. And thus you're no longer worth the price of admission you're likely expecting to pay for your kids/mortgage/401k/whatever. And that's when things get rough.

But if you play your cards right? There's no problem.

</comment><comment><USER70> Well I'm already a few years into my plan B which became working for gov. This article assumes that government tech is static but it is changing rather quickly. I'm knocking on the door of 40 and regarded as one of the younger leads. My commute is a 6 minute walk home and the high quality projects sometimes get scheduled out for completion in between 3-6 months or even a year if it's a big one. Medical care and family time for all devs is a huge priority for management. Lots of vacation time, amazing benefits, and employer matched savings (or pension if you go that route). I've worked for a startup before and for a big corp as well but feel more secure now. Also, there is a tech allowance fund for equipment for home use and if you want to take classes part time they pay for some of the tuition. They pay for training and events (room and board, food, transportation). I've nearly doubled my salary since I started. I also get to mentor recent grads at times one of whom just got a position with Mozilla. So there ya go- with all the negativity this topic invokes there CAN be a silver lining (just like silver hairs beginning to appear on my head). For the younger devs: whenever you get tired of the 'culture fit' shenanigans or feel like you are more playing a role like an actor than solving real problems you may find yourself in my shoes. Whenever you get tired of practically living with 'the team' knowing that your reward for good work is even more caffeine you may find yourself wanting to get off the tilt-a-whirl just like I did. That day may come where you actually want to have your own uninterrupted thoughts as you work— then it's time for Plan B.

</comment><comment><USER71> It really depends on how you manage your career, I for one plan to work to 70s by coding, just love doing that. My theorem is that, many professors are still doing researching and teaching PhD students in their 60s/70s, software developers is no different, unless you give up learning yourself. Anyway just want to say, if you really like being a programmer, no need for Plan B at 40, just keep learning and coding like a 'professor'

</comment><comment><USER72> So I'm guessing if you're approaching 40 and want to become a developer you should seriously consider other options.

I've actually seen this talked about a lot. The arguments against it is usually anecdotal but the arguments for it is usually statistical. It's a tough thing for people to accept I think. Is there any statistics out there that actually disputes this claim? Not arguing for or against it just out of curiosity.

</comment><comment><USER73> I used to work in advertising as a graphic designer. Age discrimination is rampant there, I would suspect more so than software development in some ways.

Therefore, software development is my plan B. I have a friend who is older than I, and he's specialized in SQL. He only does SQL, and he's still finding jobs. If I needed a plan C, it would be taking up legacy code base that seems to never disappear.

</comment><comment><USER74> Plan B is necessary for all, not only <40yo coders.

</comment><comment><USER75> Firstly I am a proponent of the idea of software as a new form of literacy - it is eating the world and as such if you are literate you run rings round the illiterate - no matter what your age.

But

companies are pyramids - and some roles (like sales) mean their value to the company can be measured on an individual basis. But most roles cannot - <USER3> the further away from the customer you are the more it is true

As such the only metric available is "number of people reporting to you"

It would be nice to find some other metric - there may not be one.

As such the push away from coding into management is inexorable. if we look at highly literate companies (say Washington Post) then the managing editor spends most time not writing but managing (with some reading involved)

to;dr - we have two antagonistic forces - being software literate is for now a force multiplier so why would you not keep doing it? But most organisations can only measure management ladders - so if you want pay or security you climb.

Perhaps the book "Developer Hegemony" offers some answers?

<comment><USER76> This is why you need to have Senior and Principal engineering roles. As a programmer or operations engineer you should be able to choose between a management or engineering track for advancement.

The managers work as an interface between the management hierarchy and the individual contributors.

The top engineers work across teams to steer technical solutions and provide cross team focus and continuity. Your principal engineers are charged with breaking down the silos and sharing and setting technical standards and encouraging the reuse of existing services and systems.

Tech managers and team leads don't have time to do the technical leadership and work properly with business. Workplaces without this structure invariably fail to have well articulated, cross team technical decision making capabilities. Everything winds up fragmented and reimplemented.

<comment><USER75> >> interface between the management hierarchy

>> don't have time

that's your problem right there

</comment></comment></comment><comment><USER77> People here hinting at outdated technologies are mentioning things like Fortran. I'm 41 and some of those things are technologies my dad used. So it seems that people are off by one of two generations.

I went through phases with PHP, C#, SQL, and then many years mainly focused on JavaScript and Node. I did some Angular and a little React with recently C++ and Lua on the side. I built about 90% of a Docker orchestration system. The front end stuff I am most familiar with at this point is Vue. I have been looking into decentralized technologies in the last few years like IPFS and dat etc.

It might be nice to have more experience with Kubernetes or Go, but the experience I do have is still relevant. And if I needed to pick that stuff up for a job I could learn it.

But anyway I think that the idea that older developers don't have relevant skills is false.

</comment><comment><USER78> This is definitely a problem, particularly for those that aren't in tech cities with endless jobs, but the alternatives discussed in this article are all....not great.

* Work as a consultant - I'm biased here from my own bad experiences, but consultants are often treated as a source of future problems, not solutions. (largely because of communication and incentives, not because of programming skill)

* Work in management - which the author admits is not because it is a good match in anyone's mind but the employer

* The third option is not easy to solidify, but it basically sounds like becoming a solo contract coder in your area of expertise

I suppose any better answer involves a change in the industry that is beyond one person's ability to control, but I was hoping for...I dunno, maybe advice on how to plot your savings to manage lower income in your later years?

<comment><USER79> Re: consultants, depends on the engagement. If you engage with clients where you are effectively the only way for them to get anything software done (ie, not in addition to an on-site engineering team), you can be seen as an invaluable resource that just gets things done for the business.

<comment><USER78> Doesn't that fall apart over time? The consultant quickly becomes the monopoly provider, and the large amount of previously investment means that the customer can't afford to switch to another provider (since anything from the previous company will either go away (if there's a bad contract) or just ends up being very difficult to maintain. And the consultancy has incentives to create this rather than fight this.

I'm not saying every consultancy is bad/evil, and it is entirely believable that they might choose to be a "good" player and bank on getting a good reputation to make up for any business they lose by doing so - but the overall trend looks like such "good players" lose in the larger market or stay in a small niche.

As I said originally, I'm biased, having seen a few BAD relationships, but I'm trying to remain objective and look at incentives and counter forces. Totally open to hearing counterpoints.

<comment><USER79> Say a business needs some web dashboards, you write them in a way that should be clean and maintainable, and has documentation for the next person to come in and help if needed later. They like what you did so ask for more of your help. They could decide to change at any time but like working with you and how you get things done, so keep going with the contract.

I don't see how that could be seen as bad. You are helping the business, they are happy, paying, and you've even made it so if they wanted to switch it could be done in the easiest possible way. Did I miss something you'd be concerned about?

<comment><USER78> I see nothing concerning in what you've described, except that they are totally at your mercy for whether you are delivering what you describe.

EVERYONE will say that the code is clean, maintainable, and has documentation that is meaningful for the next programmer to come along. Not everyone will be lying about that, and if I made it sound that way, my apologies.

But if the next programmer comes along and says the code is a mess and poorly documented, the company is STILL not sure what's true. Is this next programmer the one with an issue? Was the original not stating the truth? Are both fine and this is a philosophical difference of approach? You can ask around...but you have no real way to judge the comments you get, and they have all the incentives to create misleading info.

There's a power imbalance. I'm not saying consultancy is evil, and I'm not saying the power imbalance is avoidable, but in the context of the article - I'm not a big fan of encouraging the _furtherance_ of such a power imbalance, because once you get in, there's very little means of getting out.

<comment><USER79> You make a good point, and I don't disagree there are possible downsides. To be fair, some of the details you described could be issues with in-house employees as well, imho (folks/teams claiming clean/maintainable code when it's not, wanting to seem necessary, having the power to claim what the team is doing is right and good for business without business knowing any better, etc).

</comment></comment></comment></comment></comment></comment><comment><USER80> What an excellent, level headed article.

I wish it'd be emphasized a little more - as a software dev, you'll likely either end up having to move laterally to a new skill set that isn't entirely related to your previous experience (moving from C++ to Ruby on Rails and web dev as the example in the article) or move 'up' to management or architect positions.

Both of those are difficult and fairly unique to software development. Most jobs don't require these types of shifts. A number of jobs do simply wear your body out and leave you in difficulty in your 40s however, and that requires a complete career shift or that move 'up' to management, both of which are non- trivial paths to take.

</comment><comment><USER81> keeping up with the latest technology has a side effect: you will still be older than most of the people who have learned the latest technology. so you will still face a builtin cultural mismatch that does not work in your favor.

</comment><comment><USER82> I moved from Bay Area to LA about 7 years ago. In Bay Area, they treated software engineers like a king but here in LA, I worked at 3 companies so far and engineers aren't treated that well. LA is still very much old fashioned corporate style(unless you work for a Bay Area company who has an office in LA or somewhere like Snap). Managers get the respect and micromanage engineers. One engineering manager in a big entertainment company in LA told me once - "oh engineers are just commodities." I sometimes miss the Bay Area vibe of engineers being treated like celebrities.

</comment><comment><USER83> I enjoyed this article. The three main "plan B"s are:

\- be an entrepreneur

\- be a manager

\- be a legacy tech wizard

It oversimplifies some points, but this is generally good advice and I can't think of any other plan B rather than those 3.

</comment><comment><USER84> This doubly goes for ops guys (who used to be called sysadmins but now are all kinds of fad of the moment names, I still like sysadmin but I notice many devs and CS tend to look down on it... but I digress)

IAC and other newer tech has largely shifted the _perception_ about sysamin'ing and has caused a huge swath of people who haven't been keeping up to have to turn to plan B. Even when you see a Linux admin or engineer pos they often really mean SRE or something else.

</comment><comment><USER85> This sounds dramatic and dire but I feel like the reason for the statistic is that by the 20 year mark in someone's career, if they're working for a big corporation, they've likely been promoted to management if they have any social skills at all.

Not because they can't program anymore, but because corporations try to promote people to management if they've been around a while and haven't screwed up, and they tend to pay them more if they accept.

</comment><comment><USER86> Plan B:

Stay a developer but don't do it in the narrow-minded valley. Work in industries that favor maturity and stay gainfully employed doing what I love.

</comment><comment><USER87> First rule: Don't call yourself a "programmer".

[https://www.kalzumeus.com/2011/10/28/dont-call-yourself-a- pr...](https://www.kalzumeus.com/2011/10/28/dont-call-yourself-a-programmer)

I read this post a few years after it was published. I was lucky to read it early enough in my career. It was eye opening.

</comment><comment><USER88> This type of article keeps on being posted in HW and immediately someone posts something about how it can't be true since he/she sees elder techs all over the place.

They don't realize that they are seeing the Survivorship bias in full force. To all those that doubt the validity of the article, keep in mind that eventually, statistics will prove you wrong. Good Luck!

</comment><comment><USER89> I'm 51, an electrical engineer who has migrated over time from ASIC design, to board design, to ASIC validation, to embedded software development, to team lead, development manager, back to IC as architect and enventually principal engineer for media, real-time software development. You shape your career. You make it happen. Find what you like, and go for it.

</comment><comment><USER90> 50 yrs old, just started a new job as a Sr. Software Engineer, and now learning go, kubernetes and google cloud platform. Been in management in the past, but grew tired of that route. I do find that my experience (C++ -> Java -> Scala) with healthy doses of (Ruby, Groovy, Python, Perl) is a good foundation to work from.

This job is my plan B, and it's OK.

</comment><comment><USER91> The strangeness of Silicon Valley right now is that if you're lucky you can "retire" long before 40. I'm 31 and have through a bit of luck accrued a small 7-figure net worth. I don't plan on being a "rank and file" employee by 33, let alone 40.

<comment><USER92> You need 8 figures to retire. $30k/year (poverty level) over 30 years is only $1M.

<comment><USER93> You're assuming zero real interest investment growth over 30 years. I totally agree with stacking as much as humanly possible, but that's not a realistic assumption, unless we have worldwide zero economic growth for a third of a century.

</comment></comment></comment><comment><USER94> Anyone have more data on this? What happens to programmers as they age, are they in fact unemployable?

<comment><USER95> I myself am 40 and am gainfully employed and paid well in a top SF tech company, I have several mid to late 40s friends who are highly paid and appreciated at their jobs and have turned down offers from FAANG. I think the key is realizing what more jr engineers able to do well and compete at something else, like depth (or extreme breath) of knowledge, soft skills, organizational skills, and of course leadership.

<comment><USER96> I wish this comment would get more visibility. Experience is extremely valuable when building, maintaining and scaling software systems. The caveat here is of course that you actually spend your early years learning rapidly and not just doing mundane tasks. Self study and keeping up with technology isn't easy but it's doable, not impossible. And great engineers with tons of experience will get hired regardless of age.

</comment></comment></comment><comment><USER97> The problem is, when everybody thinks like this, it stays like this. With rising age People tend to change into people jobs if they can because somehow the air gets thinner as there are not that many advanced software jobs - although there certainly are a lot and even more places that do appreciate advanced abilities. On the other hand a lot of skills/experiences are transferable. E.g. some weird DB connection keep alive bug might be analogue to debug on C++, node.js and Rust. Developers with not enough experience might give up, change DBMS, refactor the whole DB layer (hoping it's MVC'ish) or even give up on the project if it's not an important one.

Also most new tech builds on the learnings of the old tech and discards outdated patterns that were possible with the existing stacks, but advanced users might have stopped using those anyways. For example Java has no multiple (class) inheritance in contrast to the much older C++.

</comment><comment><USER98> Most graduates think they are programmers. Then they fail misserably. Just get over it: its very rare to become a good proframmer when you start coding at 20yo. Unfoetunately only nerds survive and only nerds drive the real technology.

</comment><comment><USER99> Would like to recommend startup of you book by Reid Hoffman. Here is the summary page [https://www.thestartupofyou.com/summary/](https://www.thestartupofyou.com/summary/)

</comment><comment><USER100> What are some common Plan Bs?

<comment><USER101> Farming ;)

Joke aside, I don't know how much of this problem is more related to older devs insisting to have the same dev employment they always had than acutally being old.

Go into management.

Become self-employed.

Start your own shop, service or product based.

Teach younger people what you know for money.

There are many jobs besides just being a "senior developer".

I've also seen many non-tech occupations becoming more technical.

Learn something unrelated on the side and try to apply your dev skills to it.

Being a dev is cool, but being a dev-lawyer, dev-md, dev-techer etc. Is probably gonna let you have a good job later.

<comment><USER44> You joke but you would be surprise that there are some developers that once burn out, become Luddites. I know a few, one literally bought a worm farm, one bought farm land and started farming lavender, and the other bought a tackle- shop / dive bar down in the Caribbean.

</comment></comment></comment><comment><USER102> That's why I told my students when I was a professor -- don't become a "programmer" become a "computer scientist." Could Alan Turing get a job if he was still alive?

<comment><USER103> Depends, what's his experience with Kubernetes, go, and graphql?

</comment></comment><comment><USER104> I'm quickly approaching 50, and work as a tech lead/developer at one of the top few companies in the world earning well.

Age may make it more difficult, but in the end what you're able to do matters most.

</comment><comment><USER105> Plan A was to get good at programming. Plan B was to get even better.

</comment><comment><USER106> Why just not to enjoy the moment we're living right now, and trying to appreciate it every second, gratefully accepting the decisions of the fortune and trying to do what we like!

<comment><USER107> So you mean not working at all?

</comment></comment><comment><USER108> I think this must be a US thing. There are plenty of older programmers in my current job. Probably helps that it is C++ and not something like Typescript, but still.

<comment><USER109> C++ is a skill that is in demand in the US as well, and age doesn't matter a bit, especially as many of the younger crowd can't or won't learn it.

<comment><USER110> > as many of the younger crowd can't or won't learn it.

Or don't need to learn it. Web dev jobs are more plentiful than C++ jobs and need different skills.

<comment><USER109> Maybe.

Writing good software is a skill that isn't particularly language dependent. Most web devs don't.

A true polyglot is always going to be more valuable than someone who can only write websites.

<comment><USER110> You're assuming that "write websites" is the only thing a web developer does. Running web services at scale requires polyglots who understand multiple tech stacks as well as distributed computing, databases, networking, and operating systems.

</comment></comment></comment></comment></comment><comment><USER111> > Software engineering reliably undergoes a major technology shift at least > every 10 years.

Maybe that was true in the 90s, but I don't think it is true anymore.

</comment><comment><USER112> This entire concept is absurd. Technology doesn't follow some "natural" trajectory, but is political, like any other human activity.

</comment><comment><USER113> All these commenters with heartwarming anecdotes about older programmers need to familiarize themselves with the concept of survivorship bias.

</comment><comment><USER114> Is age discrimination a thing in hiring because:

A: old developers cost too much?

B: young developers are insecure or incompatible with old people?

C: old developers only work in old technology?

D: other?

<comment><USER115> Yes. But mostly B in my experience.

I went from being the spry youngster (mid-30s) at one company to being the old veteran at a startup, so this is a subject that is often on my mind.

I have definitely seen things like the young people saying some piece of knowledge I have is "obsolete" because they think, for example, that ORMs are a bold new concept that will invalidate the need for databases, just like they were 15 years ago. Especially in node, which trends young, there's a lot of reinventing the wheel, mostly due to a lack of awareness of older tools, although also because of contempt for anything older than 12 months.

I think another side of this is that the old folks are always telling the younger programmers "no." We've seen all the pitfalls, usually because we ignored our elders when we were spry, and we don't want younger programmers to make the same mistakes. What this comes out to is a lot of "do it my way," and then a bunch of predictions of doom that may befall you a year down the road. Nobody wants to hear that.

</comment></comment><comment><USER116> We should have a HN thread "Who's hiring over 40?" or maybe a tag like "VISA" maybee "Geezers" ?

</comment><comment><USER117> Maybe some folks here will find my perspective informative, speaking as someone who made the transition from individual contributor to engineering manager around the age of 40.

I've worked at big companies since I graduated college. As a software engineer, I remained hyper-focused on specializing in pretty much one specific thing. I've never considered myself particularly brilliant in comparison with some of my peers, but the thing I chose to specialize in just so happened to become super-important to the technology sector about five to seven years ago. I was in the right place at the right time. I cleared my calendar for about half a year, shut out the world, and focused entirely on embodying all the expertise I had accumulated up until then into a new feature.

Now the thing I created is a critical feature in the phone you probably have in your pocket right now. As in, if I hadn't created the feature, it's very likely that a team would have been spun up in a company like Google or Samsung to create it instead.

This catapulted me into a relatively senior position, and then I found that my hyper-specialization couldn't keep me competitive among my more capable and more generalist individual contributor peers. I got to my position by pulling a rabbit out of a hat at a critical point in time, and then I (proverbially) got promoted to my level of incompetence. I can't possibly keep delivering the same super-high impact on a continual basis.

Shortly after I got promoted, my organization started to grow very quickly. Upper management was scrambling to build levels of hierarchy to absorb the growth, and they pretty much pushed me into managing a team in addition to working on some of the residuals of the technology I had built. I soon realized that I didn't have the capacity to continue designing systems and writing code while effectively managing people at the same time. I felt that I had to make a choice: Either give up management and focus on individual contributor work, or make the switch entirely into management.

Of course I had formed for myself a false dichotomy. I could always go into consulting, switch career ladders to sales or product management, or something else along those lines. But getting a taste, I was finding that I _liked_ management. Politics started becoming less of a dirty word for me, and I felt fulfilled and useful when I successfully negotiated a mutually beneficial compromise among parties in the organization. I loved figuring out what my reports needed and helping them to achieve their goals. I loved that I could hack some code here and there and not worry at all about whether it ended up shipping in the near future, since my impact was not being evaluated by that metric any more.

And so now, a little bit past 40, I am 100% an engineering manager. It's something that I just sort of grew into, but at the same time it feels sort of inevitable if I am to stay at my current company. At my level of seniority, upper management would only be happy with me going back to an individual contributor role if I were to pull more rabbits out of hats. I suppose I've accepted that those days are probably behind me, and I'm ready for the next set of challenges.

</comment><comment><USER118> I'm 42 and still coding. I have a lot of rambly thoughts. . . .

I love programming and don't want to go into management, but it becomes really hard to keep upping your salary after the first 5-8 years or so. (And isn't it silly how many job ads for "senior engineers" ask for 3-5 years of experience?) I could join a FAANG but I don't really want to.

You _do_ keep getting better, even when you keep changing the tech. It feels almost unfair that I started on the web in the early 90s (and was coding long before that) so I got to progress along with today's complexity, starting with early HTML, CGIs, debugging HTTP & SMTP with telnet, supporting IE 5 Javascript & CSS, building websites with Perl & Python run from an in-house app server we built in C, on & on. You can go way down the stack and debug things quickly. You know all the junction points to do a binary search on where a bug is happening. Your intuition is well-honed. You have lots of perspective and good judgment. You get better at seeing the big picture, including crossing from the tech stuff to the business.

Back around 2005 I started doing freelance development ("and consulting"), and that has been a great path for me. I earn more, I work from home, I don't live in the Bay Area, I get more responsibility and respect and variety and control. I've neglected to follow most of the patio11 and tptacek best practices, at least most of the time, but I'm still happy with how I'm doing. I've raised my rates a lot, and should probably raise them again. (At the moment I have four customers who all wish I'd give them 40+ hrs/wk. . . .)

I'd like to experiment with value consulting. I'm much better at estimating than other devs will admit to.

My Plan A has been to start my own dev partnership, although it's been hard to find the right people to get it off the ground. I really like _Managing the Professional Service Firm_ by David Maister, and I think the partner/associates model has great potential for making programming viable as a life-long career.

I haven't tried hiring any people (full time or as contractors), except occasionally designers. Maybe I will soon but then you bill less yourself, you have to sell more, you have to manage them and their work, and of course you have to find people willing to charge less than you. (Tech is obviously supply-constrained right now, so getting good workers at a low cost is the #1 competitive advantage. Like everyone else, I believe I can recognize good developers when I meet them, but I don't really have any great process or insights to make that part of a business plan.)

The longer you do it the more T-shaped you become. Eventually your T has more than one vertical line. :-) But still you kind of have to pick one focus to advertise, if only for credibility reasons. I say my specialties are Rails, relational databases, and devops. But then I also do lots of Python, Angular, and React, and I'm happy doing Java or C, even Android & iOS. Right now I'm almost full-time with C#. :-/

I've enjoyed finding researchy outlets for my spare time. In my case it's temporal databases, but there are so many other cool things happening. I wish I had forty lifetimes to explore them all.

I'm glad I've fended off management so far. I've still had to learn lots about sales, finances, project management, contracts, collaborating, leadership, etc. I already spend plenty of time in Jira, customer meetings, and code reviews.

Probably ageism matters less when you're independent. For one thing there are no 8-hour on-site interviews (even though you cost more!).

Anyway, I'm 42 and coding all day, and I'm very happy. I feel totally lucky to be in this career. I feel tremendous gratitude to our community. HN, Open Source, Linux, bloggers, O'Reilly, Stack Overflow, tech meetups, tech companies, friends & colleagues: all have given me so much.

<comment><USER34> As someone in a similar age group and position, I enjoyed your rambly thoughts. It gives me the warm fuzzies to hear about your hard work, satisfaction and gratitude.

I'm right there with you in feeling grateful to be part of a generous and intelligent community. I feel lucky to be able to make a living doing what I love to do, and even though the business can be tough, it's a joy with so many bright colleagues around the world.

</comment></comment><comment><USER119> > _the software engineer depreciates only slightly more slowly than the > machine he or she toils behind_

The author takes a debilitating credibility hit with this statement. A computer can be worthless after 5 years. So an engineer is what, worthless after 6 years?

He also chases this experience paradox too far. When I (and believe it or not more than a few others) hire someone or negotiate pay I assign zero value to years of experience.

If being a seasoned veteran has any value, I want to discover it in relevant interviews through conversation, problem solving, wisdom, etc. I could make a mistake and not see it but I'm not paying more because of a number.

Same with a recent graduate, there's quite a bit of variation in maturity, communication skills (yes a fine weapon for an engineer to wield), and ability. Some 22 year olds having been coding since they were 12 years old. If all this seems to manifest value during the process, why would I possibly not pay this person more the than the standard "new graduate" scale and risk losing them to a competitor?

I realize not all will think this way and yes, some of the things written do happen but the tone is too alarmist. It's just something that can be unfair and a challenge but it's not insurmountable. It's not like being black in Alabama in 1950.

One thing older engineers should do is the same thing younger ones should. Don't just naively learn tech that's interesting. "Interesting" is important because it can grant effortless motivation and passion. But at least research and sort rigorously the salary differences for 20 different things along with variables like generalist vs specialist company size etc.

Then choose whatever the heck you want, because you've made a conscious decision about your preference to balance interest vs money and choose to make 75k or 250k a year in a state that doesn't have to be on a coastline.

You can even try to put a less enlightened interviewer at ease by being honest. You could tell them you can't be demotivated even if you did take a salary cut, because you don't build your identity on that because it's not about me. It's about how much market value I can deliver via tangible and measurable results. It's about whether I can actually help the company reach goals faster, add productivity and help the company be more successful. And if can convince you such objective things are likely after our interview, I believe they should be the most decisive criteria for your decision.

Here's some random 81 year guy. probably all washed up no doubt. Would you be willing to give him a shot to help you out on some algorithms? For some reason I just feel after speaking with him it wouldn't seem like much of a risk.

[https://en.wikipedia.org/wiki/Donald_Knuth](https://en.wikipedia.org/wiki/Donald_Knuth)

</comment><comment><USER120> Btw, by 40, shouldn't most of us be able to retire if desired?

<comment><USER13> You assume "we" all start at 25.

<comment><USER121> That is the basis of the assumption of 40 as a boundary as well, isn't it? I don't think most people really believe there is some biological limit of 40 for programming, but more an apparent shelf-life for your run of the mill programming career. This all strikes me as a specific case of the more general character of any ~20 year or "generational" endeavor.

You experience phases of intellectual and social stimulation, and your response is probably somewhat stereotyped as a normally functioning human. I think it is a bit more acute if you are also doing this in a cohort with many of your peers in the same phase at the same time. Things like the "hype cycle" are observations about these effects in a population or market as a whole, but are rooted in the similar experience of the individual participant.

So, I might rephrase it as: you should give some thought to subsequent phases of your life, and not expect this one to go on indefinitely. There will be changes. The only choice is whether you attempt to steer the changes and/or mitigate the challenges that might be beyond your control...

<comment><USER13> You don't seem to understand how ageism works. The limit is "you look old," whether that's in person, or because you have 20 years of work experience on your resume. Think "overqualified," or "not a culture fit."

It isn't rational like you seem to think. If I were 40 and thought I could have a 15 year career in software, I wouldn't be worried, either.

<comment><USER121> You might be right. I am ~45 years old and have been doing R&D programming for about ~25 years. I have known strong performers of all ages, and seen attrition happen at all ages as well.

I did go through some FANG type interviewing about 10 years ago, ending without an offer. I don't think they rejected me for being ~35, but I imagine they may have decided there wasn't a "cultural fit". There was something a little Lord of the Flies about the experience, which I might have grossly summarized at the time as having been interviewed by a bunch of little kids. I didn't resent this, so much as think I had dodged a bullet.

<comment><USER13> > There was something a little Lord of the Flies about the experience, which I > might have grossly summarized at the time as having been interviewed by a > bunch of little kids. I didn't resent this, so much as think I had dodged a > bullet.

I recently had a similar experience at Cruise Automation. Of my 4 interviewers, none had been with the company more than a year, and at least two looked like they were in their 20s. The younger interviewers were the ones doing "coding" interviews, rather than system design, and their questions were straight up pulled from leetcode.com.

Apparently, I "struggled" in one interview, because I was only able to answer one question and part of the second one. What I actually struggled with was trying to prove that the algorithm I was using was optimal, which seemed important at the time.

C'est la vie. I later heard from some fairly reliable sources that the place was kind of a shit show, so I also feel like I dodged a bullet or two there.

</comment></comment></comment></comment></comment></comment><comment><USER122> Haha, I'll take Management if it comes down to that.

</comment><comment><USER123> site is blocked outside the US - try a VPN if it's timing out for you

</comment><comment><USER124> Fear is the mind killer

<comment><USER26> Walk without rhythm and you won't attract the worm.

</comment></comment><comment><USER125> Future is uncertain.

</comment><comment><USER126> I saw an interesting article recently that I unfortunately did not save.

Paraphrasing: "When things are good, a company likes young people. When things are bad, they want to see gray hairs running the show".</comment>