
Programmers: Before you turn 40, get a plan B (2009) - derwiki
http://improvingsoftware.com/2009/05/19/programmers-before-you-turn-40-get-a-plan-b/
======
C4stor
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 !

~~~
asdfman123
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.

~~~
Stratoscope
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.

~~~
blackflame7000
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!

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

~~~
iguessthislldo
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.

------
bwanab
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 - ideally
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.

~~~
ryandrake
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.

------
jameshart
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.

~~~
pmiller2
> ...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.

~~~
gcatalfamo
I'm sure of that, but the problem is not when on the job, but while
interviewing.

~~~
pmiller2
Not sure what you mean.

~~~
Sammi
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.

~~~
pmiller2
That is not specific to big companies vs small companies, which is what I was
asking about upthread.

~~~
Sammi
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.

------
WaitWaitWha
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.

------
jknoepfler
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.

~~~
spraak
> 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"

~~~
blackflame7000
Does it seem odd to exclude Microsoft from FAANG when it's the largest?

~~~
scarface74
MAGA - Microsoft Apple Google Amazon:

Edit:

I just realized what else that stood for...

~~~
blackflame7000
It's fine, we'll print the message on hats so people know were talking about
something else haha.

------
commandlinefan
> 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.

------
PedroBatista
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.

~~~
commandlinefan
> 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.

~~~
randrews
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."

~~~
oriolid
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.

~~~
randrews
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."

~~~
Stratoscope
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!

~~~
blub
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.

~~~
Stratoscope
> _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!

------
projectileboy
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.

~~~
brucehoult
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.

~~~
H8crilA
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.

------
Lendal
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.

~~~
inetknght
> _I 'll learn to farm and support myself that way._

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

~~~
commandlinefan
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.

~~~
inetknght
Yes. But being _able_ to grow your own food is what's becoming less likely.

------
arendtio
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)

~~~
toomuchtodo
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 :)

------
fastbeef
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.

~~~
bontaq
What a statement, programming can be low value (not solving a business
problem) or high value (solving a business problem).

~~~
lioeters
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.

------
zackmorris
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.

~~~
PorterDuff
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.

~~~
teddyh
> _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.

~~~
PorterDuff
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)

------
cameldrv
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.

~~~
pmiller2
>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"?

~~~
Legogris
It doesn't, but many people have conscious or unconscious biases in that
direction.

------
stuff4ben
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.

~~~
commandlinefan
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.

~~~
pmiller2
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.

~~~
goobynight
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.

~~~
pmiller2
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.

------
markbnj
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.

------
weliketocode
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.

~~~
kls
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.

------
mothsonasloth
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.

~~~
wpietri
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.

~~~
rightbyte
I would say both Java and C++ still are important mainstream languages.

~~~
wpietri
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)

------
JoeAltmaier
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.

------
azhenley
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.

~~~
monster_group
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.

~~~
pmiller2
It is one of the few jobs in the world that offers actual lifetime employment,
so you could be right.

------
Reason077
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.

~~~
wpietri
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.

~~~
Shebanator
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.)

~~~
wpietri
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.

------
angarg12
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.

------
vfc1
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.

~~~
cheeky78
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.

------
rossdavidh
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".

~~~
blub
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.

------
cleandreams
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.

~~~
brucehoult
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.

------
sremani
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).

~~~
alexpotato
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.

------
S_A_P
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...

------
tempsolution
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.

------
Merrill
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.

~~~
dragonwriter
> 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.

~~~
rootusrootus
Also, it isn't just 10000 hours of experience, it's 10000 hours of deliberate
practice.

------
arwhatever
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.

------
pelemele
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.

------
brightball
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.

------
ianai
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.

------
shados
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.

------
wolfspider
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.

------
ausjke
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'

------
bobloblaw45
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.

------
adamredwoods
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.

------
paulcarroty
Plan B is necessary for all, not only <40yo coders.

------
lifeisstillgood
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 - and
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?

~~~
daotoad
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.

~~~
lifeisstillgood
>> interface between the management hierarchy

>> don't have time

that's your problem right there

------
ilaksh
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.

------
ergothus
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?

~~~
jupiter90000
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.

~~~
ergothus
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.

~~~
jupiter90000
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?

~~~
ergothus
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.

~~~
jupiter90000
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).

------
alexashka
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.

------
HillaryBriss
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.

------
bing111
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.

------
haolez
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.

------
arminiusreturns
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.

------
CommieBobDole
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.

------
JustSomeNobody
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.

------
dudul
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.

------
WheelsAtLarge
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!

------
seanvk
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.

------
dougdonohoe
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.

------
tempsy
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.

~~~
madengr
You need 8 figures to retire. $30k/year (poverty level) over 30 years is only
$1M.

~~~
aswanson
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.

------
devoply
Anyone have more data on this? What happens to programmers as they age, are
they in fact unemployable?

~~~
hellisothers
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.

~~~
pm90
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.

------
blablabla123
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++.

------
gargalatas
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.

------
cryptozeus
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/)

------
yasp
What are some common Plan Bs?

~~~
k__
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.

~~~
kls
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.

------
waynecochran
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?

~~~
theflyinghorse
Depends, what's his experience with Kubernetes, go, and graphql?

------
pixeloution
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.

------
jmartrican
Plan A was to get good at programming. Plan B was to get even better.

------
gonza
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!

~~~
brbrodude
So you mean not working at all?

------
IshKebab
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.

~~~
jki275
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.

~~~
triceratops
> 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.

~~~
jki275
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.

~~~
triceratops
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.

------
smsm42
> 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.

------
hootbootscoot
This entire concept is absurd. Technology doesn't follow some "natural"
trajectory, but is political, like any other human activity.

------
bishnu
All these commenters with heartwarming anecdotes about older programmers need
to familiarize themselves with the concept of survivorship bias.

------
austincheney
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?

~~~
mighty_bander
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.

------
maerF0x0
We should have a HN thread "Who's hiring over 40?" or maybe a tag like "VISA"
maybee "Geezers" ?

------
steelframe
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.

------
pjungwir
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.

~~~
lioeters
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.

------
WhitneyLand
> _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)

------
zerr
Btw, by 40, shouldn't most of us be able to retire if desired?

~~~
pmiller2
You assume “we” all start at 25.

~~~
saltcured
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...

~~~
pmiller2
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.

~~~
saltcured
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.

~~~
pmiller2
> 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.

------
bluewavescrash
Haha, I'll take Management if it comes down to that.

------
maximente
site is blocked outside the US - try a VPN if it's timing out for you

------
patientplatypus
Fear is the mind killer

~~~
brucehoult
Walk without rhythm and you won't attract the worm.

------
pablogomez
Future is uncertain.

------
g00s3_caLL_x2
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".

