Press enter or click to view image in full size
I know. A good HR would slap me on the hands for just writing this title.
I will talk about ageism in the workplace in the second part, but first, I want to talk about getting older and still doing software engineering.
I probably rewrote some pieces of this article three times because each time it felt boring. So this time around, I will start with the summary. So you can stop reading at any moment and still know where I was going.
The short summary. If you learn a reasonable amount of new technologies and get enough complex experience (that couldn’t be reproduced by just reading one book), you are good (whatever your age is). If you stop learning technologies or if your experience is trivial (classical “1 year repeated ten times”), you are screwed (again, whatever your age is).
Phew. Done. I just saved you 8 minutes of reading the rest of the article. You can always thank me by sending me croissants (pastries are my Achilles heel).
Please read on for more details and the easter egg hidden in this article.
Some background: I started doing simple programming around age of 8. I am 42 now. So, I have been doing software development for more than 30 years. On the one hand, it’s bizarre to write about getting older at my age (in many industries, it would be considered the prime time or even being youngling). But, on yet another hand, tech is not your typical industry.
Here is some statistics before we dive into the subject.
One article claim that the average software engineer’s age is 39 (in the US). However, another article (based on StackOverflow research) estimates the average age of around 30. I think the first is valid for all software engineers in the US (including a bunch of people who work as software engineers outside of the tech industry), and probably the second is more applicable to the International market and people specifically in tech. Anecdotally, I think the average age of software engineers in silicon valley will hover around the early to mid-thirties.
The bottom line, I went over the distribution curve mean (a bit by some estimates, significantly by another).
Peak IQ days
Press enter or click to view image in full size
You know, sometimes you wake up, and your head crystal clear. You read and literally suck in all the information thrown at you. You draw an excellent architecture diagram on the fly and write a bunch of good-quality code handling complex problems.
And another day, you wake up and feel groggy. You can barely concentrate on reading through a simple email. You even don’t attempt to do any complex tasks and just chip away at small things and do some part of the work that doesn’t require deep thinking.
One thing which I realized is that our daily IQ is not constant. You have great days and bad days. And IQ can easily fluctuate 20 points between these days.
Your peak IQ may stay the same (until quite elderly age). However, unfortunately, the average number of days when you produce peak results is gradually getting less. It will depend A LOT on overall health (both physical and mental), sleep quality, and probably a dozen other factors. However, it’s an undeniable truth.
I won’t try to speculate how much is a decline. I think it will vary from person to person.
BTW. Based on what I read, fluid IQ (ability to solve novel problems) gradually declines. However, it’s pretty gradual. I feel (don’t have proof) that the number of peak days declines faster.
Time/energy/attention
Press enter or click to view image in full size
Another thing that works against category 40+ is the amount of time/energy/attention available for work.
Again, when you are 20+, you can wake up, eat ramen, go to work, spend 12 hours there, go to a party, party hard, and fall asleep (repeat 5–6 times a week).
Older adults have a way longer list of responsibilities and interests — kids, house, friends (outside of work), parents, and so on. All of these occupy tons of time/energy, and attention.
As a result, instead of having 10 hours working a day with 80% concentration, most likely, you will have 8 hours a day with 60% concentration.
And again, it would be bizarre to swim here against the current. This is life. It’s normal.
However, combining this with the previous one significantly reduces pure intellectual horsepower.
For example, I would not try to compete with an intelligent 25-year-old in any endeavor that relies on pure mental output (and wasn’t based on knowledge and much broader experience).
Knowledge
Press enter or click to view image in full size
Tech is a very rapidly evolving field. To give you an example. My reminiscence of knowledge about old source control systems — CVS, VSS, and SVN and useless now. The same goes for knowledge of PalmOS, Windows CE, and BlackBerry programming. I would say only the last ten years of experience truly matter, and even out of them, probably only what you practiced in the last five years you remember well enough to be truly useful.
Based on this, people who just entered the software development world are at a disadvantage, but it levels off after ten years of experience (which, let’s say, we can pin to the age of 30).
Older engineers may be in a better position than absolute juniors, but having 20 years of knowledge (mostly outdated) has minimal benefits over having just ten years under their belt.
There is probably one big exception to the knowledge category. It’s domain knowledge. Tech may be changing rapidly, but if you build software for healthcare, then gradually, you get more knowledgeable about it. And healthcare changes way slower. So, your knowledge may stay relevant easily for decades. (BTW. This is even applicable to specialized software domain knowledge. For example, networking fundamentals didn’t change for a long time).
Experience
Absolutely classical picture created by Hugh MacLeod. There is this excellent representation of a difference between knowledge and experience.
And this one is absolutely on the side of older engineers.
There is a vast difference in implementing one project vs. ten projects vs. hundred projects. It’s different to learn one programming language vs. ten. The more you do, the more patterns you figure out, and the easier it gets to concentrate on what is critical.
You may not remember all your projects and most likely didn’t use some languages over the decades, but the lessons learned got engrained into you.
Just to give you an example. I was writing about problems caused by big rewrites. How many hundreds (if not thousands of hours) did I sink into them? How much did the companies who employed me spend on this? This one is a pretty damn expensive lesson. I was involved in multiple big rewrites and even was able to pull off two. However, overall, the risk and cost are immense (comparatively to gradual cleanup).
For a person who has never gone through this, the idea of starting something from a clean slate and doing it “right” sounds very appealing. And somebody (who didn’t have much experience) will go and waste tons of time.
I think for pretty much each principle that I wrote down in My core engineering principles, I could put a price tag (how much time and money were spent on doing it a bad way).
However, I can’t emphasize more how important it’s to distinguish between knowledge and experience. “I did Java, Ruby, and Python” for the last ten years is knowledge. “I built out (with several other people) a system from the ground up, and we got it from 0 to 500k users and learned about scaling, production monitoring, that infrastructure should be codified (vs. manually handled)” is experience.
Anyhow. Another analogy I like is the notion that if you climb stairs, it’s more important that they lead in the right place versus the speed with which you are climbing them. And experience is a damn good tool to figure out where the stairs lead. The less experienced person may be climbing fast, but it doesn’t mean they are climbing the right stairs.
The negative side of experience (overtraining) / Risk-aversion
To make sure that it’s covered. There is a negative side to the experience too. Each of us tends to find some good local maximum (and enjoy it)
The issue is when you start perceiving it as a global maximum while the environment changes. The change often brings a better (higher) local maximum, while people still try to cling to the old one.
Getting back to the source control example. I saw the whole area of source control management wiped out. All these people who were tweaking Perforce for a living saw their employment opportunities disappearing within probably 5 years (with the advent of GitHub, GitLab, and so on). And the same is true for mobile engineers who were extremely proficient in currently defunct mobile operation systems.
And unfortunately, as we get older, we usually become more risk averse. And people start ignoring new things because they may be hype. This behavior (risk aversion) was precious when we were roaming the savanna 100,000 years ago. If you survived until old age (of 25 back then), you are doing everything right, and you should not change. However, it doesn’t work well in the current fast-paced environment.
Patience
You get more patient with age (usually). At least I am still waiting until my patience kicks in :)
That being said, if some deferred thing is going to happen in half a year, it won’t even raise a brow when you are 40+, while it can drive crazy 20+ years old.
On the one hand, tech is fast. At least it’s faster than a lot of other industries. However, still, there are tons of situations when you have to wait (for promotion, for the release of a newer/better OS that supports required API, for market traction).
I saw people (including younger myself) making stupid decisions based on the inability to wait for half a year.
Thinking out loud: I think some level of impatience is good for younger engineers. You don’t want to sit in the farthest cubicle and wait until things come your way (they may never will). However, constantly making rush decisions doesn’t help either.
Soft skills
People usually hone their soft skills as they age as they got exposed to more different situations.
It’s much easier to understand when your colleague is going through a hard time if you are 40 (because you had enough hard times too) vs. when you are 25 and still think that everything looks like unicorns drinking nitro-brewed Starbucks lattes.
I exaggerate a bit, but you get exposed to more sides of life and have more practice interacting with people.
Summary
I think the overall summary is simple. Your pure brain horsepower will go down with age. And between that and distractions, your mental output will decrease.
However, it’s more than covered by experience (when you become more productive because you choose a better path vs. running faster).
The most critical question you should ask yourself all the time is, “What did I learn?” If the answer is “Node.js and Angular”, you are screwed. There will be tons of junior engineers who will be better positioned than you.
The answers should be — some nontrivial experience, which is hard to internalize by just reading tutorials and throwing 100 hours at it.
P.S. #1 Ageism
Press enter or click to view image in full size
Important note on ageism. Does the tech industry have it?
Bu-ha-ha-ha… Do I even need to pose this question?
There is tons of ageism. You (yes, you, 29 y/o dude from Mountain View) may not notice it, but it’s everywhere.
Let’s start with simple things. I was writing about overtime. Who do you think can afford to spend extra 20 hours a week? A young person without obligation or an older person with obligations? And who will be let go first because they don’t “pull their weight”?
As I was writing, the median age hovers in the 30’s. These guys will run interviews in most of the places. Who do you think they will choose — somebody who is like them/talks like them vs. somebody who could be their parent’s age?
BTW. It’s too easy to throw rocks until you realize you live in a glass house. I was that dude who would get impatient with older engineers and that it took them a bit more time to figure things out.
You would probably say, “But…but… I know a great engineer who is old.”
Surely you do. Please count how many good engineers you know (who are not in the management of some sort) who are over 50? I can probably count them by fingers on one hand.
P.S. #2 Wrong terminology
I was (correctly) pointed out that IQ stays the same until the sixties. I agree; when I say “peak IQ” I am using wrong terminology here. However, any person over 40 will know what I mean. There are good days when everything clicks in place, and the mind is sharp, and there are quite bad days, when you feel that you can barely add numbers.
P.S. If you enjoyed this article, please follow me on Medium or subscribe via email.