As someone relatively old, I've been in a lot of developer interviews. I also noticed that older programmers tend to not be as up to date in newer technologies or ways of doing things.
I don't think it's strictly limited to technology. How many 50-year old do you know who listen to trap music? Or approve of the way teens dress these days?
It's just the classic "older people tend to be more conservative" fact. At some point most people get stuck in the things the were doing/liking when they were younger. The hate new music, they dismiss newer technologies (to open a rats nest: Electron anyone?)
I'm sure I'll get comments like "I'm 18 and I hate trap music and Electron". That's not the point, I'm talking about distributions not individual cases.
I've been doing this a long time and it doesn't matter to me.
The newer stuff is most of the time just a variation on a theme that I've seen turnover three or four times since i've been doing this.
What older coders have that younger ones do not, is experience. This can often halve the workload on some projects. The older I get in this profession, the more results I get out of less and less code.
Also, let's not immediately fetishize the newer stuff. It is often a less well implemented retread of older technology. Seems like people have less patience for learning existing systems, so they just re-write some quick and dirty replacement and call it good.
Perhaps it might be better if younger programmers learned the old stuff instead of just badly reinventing the wheel every few years.
And this attitude is why older developers find it harder to get a job (I’m in my mid 40s myself).
What older coders have that younger ones do not, is experience. This can often halve the workload on some projects. The older I get in this profession, the more results I get out of less and less code.
I keep seeing this as an excuse for older developers who don’t want to keep up the date and stay marketable. Code is code. At some point you have to put lines in editor to make stuff work.
Also, let's not immediately fetishize the newer stuff. It is often a less well implemented retread of older technology. Seems like people have less patience for learning existing systems, so they just re-write some quick and dirty replacement and call it good. Perhaps it might be better if younger programmers learned the old stuff instead of just badly reinventing the wheel every few years.
The market can stay irrational longer than you can stay solvent.
My post above didn't mention it, but I also learn new stuff. And some of it is really useful.
I don't insist the client use my preferred technologies. I may recommend them, sure, but in the end I'll learn what I have to do get the job done.
This whole thread reminds me of a story:
A small town barber has been cutting hair for decades, and charging his customers a fair price.
One day a national chain opens a salon just across the street and advertises $10 haircuts.
A customer asks, "Aren't you worried they'll drive you out of business?"
The barber grabs a piece of cardboard, scribbles something on it quickly, and props it up in the window.
The sign reads: "We fix $10 haircuts."
I think the best business model for an older developer is to fix $10 haircuts. Seek out those kind of jobs that capitalize on your experience.
There are so many messes out there that if you can bill yourself as a cleanup guy, you'll never run out of clients.
That's pure gold. Not to say there haven't been advances--there certainly have been. But, there's also the issue of the shininess of new tech giving it undue cred, while simultaneously translating to an outsized denigration of the tech it purports to replace.
Frankly, a lot of these problems have been solved, and solved well.
Look at NoSQL as an example. There are certainly use cases for it, but then people went nuts, exclaiming things like "RDBMS must die" and touting no ACID transactions as a feature/benefit. Then, you get the trickle of reports that maybe NoSQL wasn't the best choice for this or that.
Finally, fast-forward to 2018 and you have announcements from MongoDB that they now support ACID transactions.
Many older coders have seen enough of these cycles, and have adopted a justifiably-cynical posture of "wait for it...".
Yet "Wait for it" usually turns out to be correct.
I think if you pick a concrete example of this phenomena (say, Java applets vs. WebAssembly) and you ask "so why didn't someone take Java Applets and update them, why do we need WebAssembly?", the answers to why this happens start to become more apparent. It's not so much that Java applets were good and then we decided they were unfashionable, as that Java applets were always kind of ugly and we eventually stopped tolerating them.
For examples from before say, 2000, say Turbo Pascal a lot of the answer is because the thing in question was a proprietary product so once the financially backed dev team stopped working on it users were forced to move on to something else. Other times it's because the thing was written for an 80's computer platform that no longer exists outside of emulation and retrocomputing collections. Sometimes it's that the graphical standards the original used were for hardware with very different capabilities and making the thing usefully work on a newer system would almost require a total rewrite anyway.
Even beyond all that, there's another problem: Software is fairly hard to do literature review for. If I want to know if a particular research idea has been done before, I can hop on Google Scholar and figure it out with a few hours of carefully constructed search queries. Doing the same thing for software is very difficult, especially because most products for the majority of the fields history were proprietary. As a consequence, we don't have our history available to analyze in any easily accessed form. The Internet Archive has been doing what they can to rectify this situation. (See: https://archive.org/details/BeyondCyberpunkMacintosh) Nonetheless, there are still serious problems in this area.
I'm a younger person (23) who shares your frustrations, but I don't think that you can really wag your finger at people when there are real barriers to what you're proposing.
I've been asking this exact question on various HN threads with WebAssembly announcements, and the answer is always one of "Applets are insecure" or "Java is insecure".
So I don't really follow your example here... whatever security model you want to have, it seems much more obvious to implement it for Java applets than to implement WebAssembly and then implement your preferred security model for WebAssembly. Why do you think we replaced applets with WebAssembly?
(It's kind of a leading question -- my experience as a browser user suggests that we stopped using applets, spent a while not having them, and then started working on WebAssembly. By that analysis, we never replaced applets with WebAssembly -- we replaced applets with nothing, and then replaced nothing with WebAssembly. That would tend to support the more crotchety answer of "people developed WebAssembly because they just forgot about applets".)
Before that, computer networking killed most of the running systems. And before those, any new computer would require all new software, so there was no continuation at all.
Things seem to be getting slower with time... maybe except on Javascript frameworks.
This eliminates much of the proprietary lockin and portability problems you mention. I never was saying people should just keep using Delphi into the 21st century.
Also, my comments apply to broad categories of solutions not just software implementations in the narrow sense.
For example: I just replaced (had to for perf reasons) a NOSQL solution in one of our applications with MySQL.
Ironically, the application would actually scale better with NoSQL in theory, but the choices the developers made along the way (data modelling and API design) made it perform worse on the NoSQL DB than on MySQL.
The tactical solution, which fits our needs and the size of our user base, turned out to be to replace a new shiny thing, with an older technology. The benefit gained was more flexibility with queries, which in turn allowed us to speed things up significantly with little effort.
The previous team burned a lot of time learning the new NoSQL thing to then not get any benefit from it at all.
Creaky old software tools from the 70’s that are actually still in use have fought off decades of competitors that attempted to improve them.
I think the reason older coders don't "keep up" is because you have to lose ground first. If I want to adopt a new technology, I have to first learn how to handle problems I ALREADY KNOW HOW TO SOLVE with my current technologies. The better I am with solving the problems I encounter already, the more I will have to backpedal before I can go forward in a new tech. And while I definitely get better overall from learning a broader base of techs, over time there are definitely diminishing returns. The cost-benefit of learning something new vs spending that time either learning more of what I'm already in, or just solving any of the infinite things I want to get done is a balance that will slide more and more towards not bothering to learn new tech unless there's a real need.
Add in that this is an industry rife with Imposter Syndrome that DEFINITELY bites you in the face during any moment of struggling to "get" a new tech, and there are plenty of incentives against embracing new tech beyond just "I don't like change". (though that is definitely present - I'm a JS dev currently, so I'm well familiar with the dismissive and arrogant attitudes that can be tossed around).
So most of the issues I fix are due to mistakes I never would have made, because I already made them 10 or 20 years ago.
The worst part is that I no longer think in code, I think in piping data around and working functionally or declaratively because my brain is so apprehensive of side effects. I've found that younger programmers don't tend to realize how dangerous imperative programming (especially object-oriented programming) can be in the long term.
So what I really struggle with is motivation, because it can be so disheartening to not be listened to, or to work hard on an implementation only to have the elegance of its abstractions muddied beyond recognition by developers who don't take the time to understand them.
It's probably too late for me. I cling to a fantasy though of saving enough money that I can take a step back from programming and work on some of my own demo languages/frameworks that illustrate the flaws with the status quo. Because of handwaving and cargo culting, today's apps and websites encode so little core logic in proportion to lines of code that I'm hopeful I can make a niche for myself working at a higher level of abstraction and bidding less money on contracts someday. But it might just be a fantasy.
This post hit really close to home for me. It's especially depressing to be caught between these "pearls before swine" moments and Impostor Syndrome and for a while this made it very difficult for me to work up the courage to go to job interviews.
I am currently working somewhere that I genuinely love, as one of two senior engineers on a team of 7. I think I love it so much because I work with people who care about the quality of their work and respect the experience I bring to the table. They've been around long enough to see the cost of making the same mistakes I made 5 years ago, and have outgrown the "just ship it" mentality so many startups are born with and rewarded for. When you're trying to build a 100-year company, you value good engineering.
Most software jobs in California are at startups that are not trying to build a 100-year company, more like 100-week companies. In fact, most venture-funded startups are trying to have as short a lifespan as possible, because they exist to generate short-term returns through big-money exits instead of creating reliable revenue streams. This often actively disincentivizes high-quality engineering, and I think is a big reason why it can be so depressing to work with startups.
If a new technology is good or seems like it has potential I dig into it, and due to experience I can generally pick up something to the point of productivity in a day or two that takes junior developers weeks or months to reach. Or at a minimum know enough to figure out how to trouble shoot blocking bugs others can't solve by knowing where to look for solutions and what those solutions might entail. So to an extent I keep up to date in that I read the value propositions and reviews on new technologies so I know when they might be an appropriate tool in my toolbox to tackle some solution or other, on the flip side i'm not in a rush to pick up every flavor of the week framework or library that is more than likely to vanish with out a trace in 3-4 years.
Meanwhile outside of a persistent google recruiter whose been asking to do an onsite for the last year I've gotten dear john'd for something like 3 roles in the last month including one where i'm personal friends with the SVP of engineering. Is it missing keywords on my resume, my age, my career path, education, wth knows but unless the market has tanked it strongly differs from my experience a few years prior.
https://www.dropbox.com/s/haod1gpfjd723lg/Keith-Brings-Resum...
1. Objectives on resumes are useless fluff. Yours doesn’t add anything useful. It’s so vague, I couldn’t even tell what type of job you are looking for. Project management? Test? Software Development?
2. Your whole summary of skills sections is word soup. I would completely ignore it. Anyone can list technologies they touched once. It’s too unfocused. In your experience section list how you actually used those technologies. Why put you know how to use source control? That’s like listing you know how to type. Why list 8 different languages? Could you handle a deep technical dive in all eight?
3. In your work experience section, you listed your accomplishments, but I have no idea what technologies you used to accomplish anything. You didn’t list the languages you used in any of your jobs since 2007.
I wouldn’t call you in for an in person or a phone screen based on your resume. You claim that you can pick up a language in a day or two but I can’t tell from your resume where you feel technically in any specific area. Again, it looks like you think because you can figure out the syntax of a language you’ve avoided learning the ecosystem, the tooling, the frameworks etc.
You can ignore picking up popular frameworks but you won’t be competitive with people who have stayed up to date.
If you came into an interview saying that you could advise on a technology based on “what you read” and you said you decided not to actually put it into practice, that would be a red flag.
I’ve been working for 20 years. I at one point had an encyclopedic knowledge of C and C++, that’s nowhere on my resume, neither is VB6, Perl, or PHP. I don’t want a job in any of those languages and I don’t want to discuss them.
My resume for the last 8 years has been entirely focused on telling the story I want to tell. I’m a backend C# developer/architect with some front end Javascript experience.
Slowly it’s been morphing into an architect who specializes in “cloud native solutions” with AWS and I’ve added Python and Node and hopefully will be adding the $cool_kids front end stack over the next year or two.
So much this. I’m in my 40s and I am on my third pivot. The first was a C++ bit twiddler for 12 years. The second was an MS stack “enterprise developer” and now a third - JavaScript everywhere, $cool_kids front end stack, AWS, and the Docker ecosystem. It’s been about a year and it’s going to realistically take 2 to 3 more.
That's a good point. But you also need to consider it from the point of view of the person sitting across the table. You might be very productive solving a problem in COBOL (to exagerate the point), but they are much more comfortable in Python/Vue.js and don't want to burden themselves with legacy ways. Because they can find someone solving the problem in the stack they want.
I switched jobs recently and tried to adopt a zen-like attitude of beginners mind. It definitely helped...but I'd be lying if I said I never hit frustration points where I'm trying to go from A to C but I have to learn all about B when I don't WANT to care about B, I want to get to C. A good attitude helps, but I think the underlying reason is still true and is part of why experienced devs aren't adopting new tech at the rate of newer devs.
Now, a lot of companies do over-engineer and cutting edge tools aren't necessary in a lot of cases, but that's a separate problem.
Learn things that will be important for forever. Life is a breath and then we are gone.
All they are is dust in the wind.
Within 10 years here I had encountered more than 10 different CPU architectures. I've lost count now, but it is probably at least a dozen. The same goes for OSes.
I'm pushing 40, and like reggae, acid jazz, electronic. I keep up to date (as far as one can) with tech, programming, cloud and the like.
It's not just me - it feels like a lot of older people around me don't match the old stereotypes. Older colleagues are learning Typescript, my grandmother reads erotica...
Youth culture is of course always changing, but older people are perhaps more liberal than they used to be, and don't feel like they need to behave a certain way any more more.
I'm proud of your grandmother, but TMI, man. TMI.
Any sane person with half a brain hates Electron.
(Not that there are any good alternatives, but still...)
Can we please kill this myth already? That was extraordinary so during the era when social changes swept through society, but someone who spent their formative years during the 70s will hardly regard today's society anything else than an extension of the changes which took place then.
There are many different ways to act conservatively. Resistance to new ideas because "but we've always done it this way" is a lot more common with people whose definition of "always" stretches to five (maybe ten) years.
> Electron anyone?
Well, let's put it this way: Most ideas are bad. But you can't dismiss all ideas on that statistical ground, because then you would miss the really good ones.
Serious consideration: I wonder how the cost of "older programmers not being as up to date" compares to the cost of younger programmers too quickly adopting newer technologies.
But you're not talking about distributions. You talk about the individuals you meet in interviews.
That's a different issue. New music really is garbage; the entire industry has changed over the last several decades. There's a reason so many younger people are listening to classic rock.
Can I ask where it is you live to see hordes of young people finding solace in classic rock (or any sort of purely guitar-based music) ? Except maybe in US rural communities where it's all about country music (always has been, always will be) those days are well and truly over. "Nobody wants an electric guitar anymore" : https://qz.com/1013293/rock-and-roll-is-dead-sales-of-fender...
Meanwhile electronic music has taken millenials by storm. Tomorrowland festival sold out nearly 400.000 tickets in 40 minutes a few weeks ago. Same kind of numbers every year for Electric Daisy Carnival in the US.
Never in history has there been so much quality music released every day in all genres, because musicians can now do so without the gatekeepers of the past, much like Youtube has shattered the TV networks.
The consequence of that is that it's all about fragmented niches and discovery can be challenging. But there is gem after gem in my Spotify "Weekly Discovery" playlist. There has never been a more exciting time to be a music lover !
This for example: http://www.hawaiianreggae.org/artists
Nice and mellow, lots of young new artists. It's a pretty good scene.
If you look at my resume over the past 10 years and the tech I’ve used, it’s indistinguishable from younger developers.
But...it was popular in the late 90s, which corresponds to us mid-40 age people anyways.
I do find that companies seem to know how to evaluate young programmers: just test them on their knowledge of your tech stack. Any young coder who is good and is working in that stack will know the basics. The bad ones won't.
For older coders, I'm not sure that same signal works. I've forgotten more frameworks than most coders will ever learn. I mostly don't care about programming languages, they're roughly the same and I can learn a new one in a couple weeks.
I know technologies like Rails and SQL, but I don't play with the new toys as much as I used to, becuase lately I would rather solve a new problem or build a new tool than learn a new tool.
But how do you evaluate a coder on their ability to solve problems? Much harder.
Even more difficult, how do you get a 24 year old coder who only knows react and FireBase to evaluate a 37 year old coder who has built web frameworks from scratch?
It's another world, and a lot of companies just don't bother.
Thankfully I have no desire to work at any of those companies. I solve problems. If a company can't hire for that I don't belong there. There are plenty of companies trying to hire people to solve actual problems, not just put coder butts in seats.
Yes, you can learn anything at a superficial level in a couple weeks. If you've spent the last ten years maintaining an ASP.NET WebForms app running on IIS, then within a couple of weeks, you can contribute code to a Go microservice running in Kubernetes and using Kafka.
And that kind of "basic competence, with the ability to learn more" is what hiring managers want out of a junior dev, so if you don't keep your skills up, well, great, you're as useful as a junior dev.
But what they want out of senior devs is people who know the ins and outs, who understand what to do and why to do it and can explain that to others, who can avoid the pitfalls of bad tech choices and misguided implementation patterns.
If you've got decades of experience on your resume, my guess is that you want to be evaluated as a senior dev. And if you're a senior dev who doesn't know modern tech, then... you're not that useful. Your encyclopedic knowledge of the WebForms event lifecycle doesn't give you any particular insights into the design challenges of a microservice ecosystem; your ability to tweak IIS for maximum performance won't help you write a Helm chart.
If you want to be hired as a senior dev, you need to understand how the modern world works, and all the posturing around "I could learn it in a week" or "I prefer to focus on problems" doesn't impress anyone.
So yes, it's helpful that people keep current, and obviously waiting for a new developer to get up to speed on the particular stack is always a cost (and it isn't a couple of weeks, for anyone). However, if what you really need is a senior person, it may well be worth that time.
Seeing this assumes the hiring manager understands how software is actually produced and maintained, not just what their current tech stack needs. It's surprising how often this isn't true, but a contributing factor is how mid level mangers are made - which is related to this discussion I think.
You might be great at mentoring... but you have to know the stuff to mentor people in it. You might be great at communicating with stakeholders... but you have to understand the technical constraints of your system in detail to have that communication. You might understand principles of software design and debugging... but you still need to understand the particulars of these technologies to make your design or to focus your debugging.
And yeah, you can learn the tech stack, and a company that really needs a senior dev eventually could do okay to hire a senior dev with out of date skills, and wait for them to get trained up. But don't plan on it taking three weeks, is all I'm saying. To really get to that point of fluency and domain expertise takes longer.
(And also, one of the things that senior devs are supposed to do is evaluate new technologies and figure out when and where adopting them can make sense. If you've fallen so far behind on learning new tech, then it's not clear if this is something you're able to do -- maybe it is, and you just worked for a workplace that stifled adoption of new tech, or maybe you're someone who'll just learn what you need and then stop paying attention.)
Also, most coding is maintenance. So yes, an experienced developer in some language is really worth a lot when you initially start out designing your system. But most of the work spent on that system will be maintaining and extending it and to be able to proficiently do that you need to:
1. Grok the problem domain, so you can connect the real-world / problem you're trying to solve with the code in front of you
2. Have a grasp on the limitations of your own system, which will come with experience as you work longer on it
Those things don't really count as languages, they appear to be a mix of development environments, software packages and architectures. Learning these things is critical and hard but there is a key mitigating factor. That factor is that really what needs to be learned is 'how we do things around here' which is typically company specific and needs to be learned by a new hire anyway.
My experience suggest new hires in cognitive roles (at medium-large businesses) take 1-2 years to get to the point where they can be proactively useful, purely from learning who is who, what the corporate history is, what ahs been tried before, why things are what they are and what their role's problem domain is really intended to be by their boss. Compared to that set-up time, the cost of knowing or not-knowing a technology is quite small.
> This whole "learn a new one in a couple weeks" mindset is toxic and needs to die.
It is true though. Learning a new programming language to the point you can write bug-free code and execute someone else's design is really easy. Learning how to solve a new problem is typically the hard part.
I 'learned' Python in 2 weeks. What I write looks a lot like C code, and I didn't make great use of the standard libraries, but it works fine. Compared to that learning how to use a large new library for a new problem typically takes a months.
The language + tools aren’t barriers anymore, the interesting part of solving business problems and how to apply the tools become the fun ones.
Once you've learned and used a half-dozen imperative languages day-to-day, there's very little new when picking up another imperative language. It's mostly mapping common concepts onto new syntax, plus some new features and maybe quirks/gotchas.
Silly little example: After an hour of reading a Go tutorial, and having never looked at the language before, I was able to diagnose a bug a co-worker had been struggling with for two hours, because I recognized the pattern from something similar in Django (a python framework). Now knowing what to look for, a quick Google search had the exact answer to the problem right in the first result.
Moreover, if you're proud of how hard it is to learn ins and outs of your tech stack, you're likely using a shitty tech stack and costing your company tons of money.
But you can’t be proficient at an architectural level with a stack in two weeks no matter how good you are.
Would you say that you could me an iOS/Android developer in two weeks just because you picked up Swift/Java?
But to your actual comment: I'm learning new things all the time. My focus when I'm coding in my spare time is a simple IDE, some project management tools, and a simple game engine I am building. I learn new things in those projects literally every day.
I'm not going to do a bunch of hello world apps in random new "Pro" technologies. I did a lot of that in my 20s, it was fun and I was curious about them, but my interests have shifted.
There are enough jobs I can say "no" to the people who want only coders who are using the newest "Pro" toolset.
Honestly, a good hiring manager will realize you ideally want BOTH that person and people like me on a team. One person will know that Rails 7 solves our new problem, and the other will know that a simple refactor will save 30 hours of headscratching over the next year.
And this is where ageism rears its head.
If two people apply for the same position, and you're OK hiring someone who has only 2 years of experience for the position, don't ask for more from someone who's been working for 20 years.
Why not? I’m older than you and I have passed plenty of technical interviews on the $latest_tech.
Sure you can learn a language in two weeks but a language is far more than syntax. There is the ecosysystem, frameworks, third party packages, etc.
And honestly, I would be more concerned about hiring someone who built their own bespoke framework from scratch than someone who used an existing one. Building frameworks rarely adds business value.
If I were interviewing such a candidate, I'd dig into why they built a custom framework. The answer to that question could be quite enlightening, especially if they mention business reasons for doing so, or if they talk about what they've learned since then.
When I started my own business a decade ago, I decided that existing web frameworks wouldn't suit my needs and built my own. Though I built a framework that suited my needs extremely well, it was a massive distraction from my actual business (which wasn't even tech). In interviews, I freely discuss how my NIH syndrome contributed to my inability to get the business off the ground; I've found that it tends to go over rather well with interviewers.
If they're over 45, then they likely worked in the late 90s and early 00s. If they were like many of us, then they worked on at least some web applications back then. This was far before jQuery and even Prototype.js on the frontend. Java, PHP and Perl were commonly used on the backend (or where I lived, more often IIS with asp). But the start of the career of someone in their 50s and even 45+ was before any commonly-used framework in open source scripting languages used for web development (unless you consider PHP to be a framework).
Even Spring framework was only created in 2003 (I just checked to confirm). Symfony in PHP was 2005. And those took several years to catch on in their respective ecosystems.
Tons of companies had in-house frameworks back then. Who did you think wrote them?
Even if someone working back then never explicitly built a framework, they used design patterns that mirror today's frameworks. If not, they were writing spaghetti code (and to be fair, that was pretty common back then).
Based on your username and your assertion ("older than you"), you're what, 45? Have you forgotten what it was like back then?
Granted, I hear what you're saying, but I'm not convinced your blanket dismissal is the right analysis without digging deeper on the individual details.
Agreed. However, if you're a software company you've already likely made all of those decisions. If I come work for you, I'm stuck with them. It doesn't matter if I like the package manager or the frameworks. That's just the background against which we work.
Our work is making our lives better, and solving the company's problems to the best of our ability, given all those constraints.
> honestly, I would be more concerned about hiring someone who built their own bespoke framework from scratch
Yes! I feel honestly quite nervous about sharing that aspect of my work, because I worry people will see me as out of touch.
But I am quite up front that I don't advocate using my toolkit in production environments. My professional advice is usually quite conservative. I tend to advocate for minimal disruption and using standard tools as they were meant to be used.
However, because I do that all day at work, I see all the cracks and warts in the architecture and when I go home I want to work on the future.
And even though you are correct "building a framework rarely adds business value"... that's not what motivates me. I do think there is value being created, and I will eventually be able to cash in on that. But I am doing it because I am interested in the future, and I want to work on tools that transcend the pointless busywork I have to deal with day to day, in the name of meeting quarterly goals (which TBF is crucially important in a business context).
I get direct enjoyment from working in my own little hobby world where those constraints don't exist, and that is enough motivation for me.
Let’s say you learn C# in “two weeks”. Is that going to be enough time to get proficient with ASP.Net MVC? Entity Framewor? IIS? The built in logging framework? The DI framework? Middleware? What if they are using Xamarin for mobile? Let’s say you did pick up Xamarin (which I haven’t).
Would you know the fiddly bits about doing multithreaded processing with desktop apps using Windows Forms?
It's almost like you're pretending the years between 2008-2012 never happened, but I'm sure that's not the case.
Hum... My experience is that whatever framework a business use in any widespread manner, I do always have to build another one on top, because generalist libraries completely suck for productivity. Unless you are a single app shop, then you can just hard-code everything.
I don't get how improving development speed does not add business value.
If their is a problem, they have to wait for a response from the one Guru who wrote it.
Most architects who think their problem is a special snowflake usually isn’t.
>I've forgotten more frameworks than most coders will ever learn.
Forgotten knowledge is worthless
> I mostly don't care about programming languages, they're roughly the same and I can learn a new one in a couple weeks.
I used to think that, its possibly true, but the platform that comes with the language certainly can't be learnt in a couple of weeks so I dont think this is true as it used to be.
> I know technologies like Rails and SQL, but I don't play with the new toys as much as I used to, becuase lately I would rather solve a new problem or build a new tool than learn a new tool.
This is a real problem for you if companies are hiring for people that know the new toys.
> It's another world, and a lot of companies just don't bother...Thankfully I have no desire to work at any of those companies...There are plenty of companies trying to hire people to solve actual problems
That's great now, but in the future the job market might not be so tight and then people with your attitude might find it really tough.
Not really, you pick up something you forget much faster than something you've never seen before. It's all in there somewhere.
I do agree that testing for the ability to solve problem is hard and gets neglected.
To play devil's (or manager's) advocate - have you ever crunched the numbers on what it takes to pay you for a couple of weeks? That's not a trivial investment, especially considering the risk that you just thought you could learn a new language in a couple of weeks but were wrong.
(although I agree with the sibling comment — one doesn't really learn most languages in a few weeks)
Architecture and processes that was fine for one environment was horrible for the other.
In development terms, you can write FORTRAN in any language.
Let’s not talk about the one Java developer who thought he could pick up C in two or three weeks. It was ugly.
With an IQ test, the same way you evaluate anyone else on their ability to solve problems.
Better to hire for your particular skills. And younger is cheaper.
I don't want to start a flame war about diversity, I just want to get the facts straight.
https://diversity.google/annual-report/
https://www.facebook.com/careers/diversity-report
https://en.wikipedia.org/wiki/Race_and_ethnicity_in_the_Unit...
Anyways the article as a whole is heavy on anecdote and low on data & facts. There is an emphasis on outcome metrics but the author doesn't bother to examine any data on productivity vs age.
Asians, especially from India have an out of proportion presence in technology jobs. It is no different than any other ethnic industry affiliation. Irish were cops, Greeks own diners, and South Asians are huge in tech, and have ethnic social networks that connect folks to jobs, just like any other tightly meshed ethnic community.
> The organizers know how male and white the tech industry is, so they make a special effort to recruit a diverse speaker lineup.
Yes, the author was using social awareness to segue into ageism, but it is still factually incorrect (or at least highly misleading) to state that the industry is predominantly "white".
It's worth mentioning that for 2017 leadership, the Google numbers are significantly different: 26% asian, 68% white (and 75% male). So the decision making is still quite white and male.
In case you missed the memo, the current cultural climate and trendy narrative structure demands that everything, no matter the topic, must include some reference to identity politics. Facts only interfere in this sort of narrative building, so please ignore your data and focus on emotional triggers instead.
As a female developer I really don't like the idea that I might be selected just to fill a quota.
Bonus points if it fits somehow into the very trendy culture war narrative.
My take is that older programmers who maintain their skills on new technology are worth their weight in gold. The financial trick is to pair them with younger developers to create an overall cost effective team. If both the older and younger devs go in with the right attitude, it can be wonderful for both the project and their respective careers.
I also think it's really, really dumb to push developers into management positions if they can't do the job. I'd much prefer putting younger managers with great management skills into the mix than just rotating older devs into that role.
Bottom line: software requires lifelong learning. If you can't or won't stay current, you're in trouble. If you can, then it's just agism or a bad business model that's keeping you out of awesome projects.
A lot of older Python candidates are being passed over for younger ones. Sure they might not be learning Rust, but there are younger python developers that are having an easier time getting a job, and they aren't necessarily learning Rust either.
[1]: https://stackoverflow.blog/2017/09/06/incredible-growth-pyth... https://insights.stackoverflow.com/trends?tags=python%2Cjava...
Does it make sense to consider Python an old language if it's still a living language? The next version is coming out in October, and most new projects started today are running on versions released within the three years.
This seems pretty different than something like COBOL, where it's technically still being developed but not in anywhere near the same way.
Python, I'd argue, is very much a living language. It was introduced in 1990, so it's 29 years old. Last release was 5 days ago as I write this [1]
Java, is also a living language. It was introduced in 1995, so it's 23 years old. Last release was in September 25 [2]
Cobol was introduced in 1959, so it's 1959. [3] The last table release was 2014 (which is a lot newer than I would have expected). Cobol is a great object lesson, I think, as the parent comment calls out. I don't think many software engineers would consider it a "modern" language, but according to the Wikipedia article, as of 2012, 60% of businesses use Cobol. So it's far from a "dead" language.
Lisp was introduced in 1958... 61 years old. [4]. I don't think many developers would consider Lisp dead, either.
Cobol's longevity seems to be tied to the fact that much of the legacy code encapsulates business logic, as opposed to UX logic (websites, mobile apps, etc.) There's more than a few lessons in there I think...
[1] https://en.wikipedia.org/w/index.php?title=Python_(programmi...
[2] https://en.wikipedia.org/w/index.php?title=Java_(programming...
[3] https://en.wikipedia.org/w/index.php?title=COBOL&oldid=88324...
[4] https://en.wikipedia.org/w/index.php?title=Lisp_(programming...
I've had managers who were both technical and people-oriented. They both bring a lot to the table. But the older I get, the more I value having a manager I can go to who is good at managing optics and helping me deal with political or institutional roadblocks. In an idea world, I'd have both.
But fundamentally, if you can't move the decision making power/responsibility/(+ to some degree compensation) out to non-traditional locations in your org structure, you'll naturally have to move those people towards the more traditional locations....
I also think it's really, really dumb to push developers into management positions if they can't do the job.
Even if they can do the job, it may not be the best use of their time. If someone is really good technically, they are more difficult to replace than a competent middle manager. So if that's the trade off you are making, you are probably losing out.and also true of older programmers who maintain their skills in older technologies. see all the COBOL comments below. If history is any guide, competent Java programmers in 10 years will not be aged out, and will be compensated more than whoever is competent (regardless of age) at the current tech stack.
This has been known forever, yet it still happens - Why?
>> I'd much prefer putting younger managers with great management skills into the mix...
One reason is it is impossible to tell if a young manager has great management skills. It's really hard to tell if an experienced manager has strong skills.
As a result, technical proficiency is used as a proxy for management potential. It probably has a stronger correlation than picking a random person, but is not great. The new manager is then really unhappy, quits or is fired or eventually learns the new skills and is successful.
Repeat.
>This has been known forever, yet it still happens - Why?
This problem exists in hardware departments too. My best guess is that they want managers familiar with the tech/industry/company. My second best guess is that it's a natural human tendency and hasn't been addressed systematically.
I think what's actually happening is some programmers, who happen to be older, don't keep up with their skills. Then when they interview, they bomb it, or talk about how they could do the same thing in an older stack.
That's great, but the company is really invested in the current / new stack, so it doesn't make sense to hire someone who does not have those skills. So they pass them up and find a candidate who knows the software the company is looking for.
But the older interview candidate, instead of reflecting on themselves and realizing they need to spend time enhancing their skills, they simply say the company was "ageist" and blame it on age discrimination.
Blaming others is generally easier than blaming yourself, I guess.
On the other hand, ageism is real. When I was younger I was told more than once by managers, straight up, this candidate is too old so find an excuse not to hire. And now in my 40s, when I walk into some companies for an interview, I can feel the decision has been made before I even start talking. Not everywhere, not even most places, but it happens for sure and it's not even that subtle.
Making a real time video chat client is now a literal programming exercise, it used to be the domain of multi-million dollar venture backed startups that were valued in the billions.
Real time chat between users is now a feature that is added to an application in a day, or even a few hours if you follow any of the myriads of tutorials available on YouTube.
Go from writing a UI in C/C++ to writing it in any of the higher level languages. Assuming you don't get caught in some design pattern trap that results in massive code bloat, it is now possible to do things in hours that used to take days to weeks.
Heck, transparency is no longer "write some ASM" routines, it is setting an opacity variable!
Some tech stacks, such as those for making basic CRUD apps, may have actually degraded a bit, but at the same time someone who is only slightly technical can now drag and drop their way to an online store front that is a fair bit more powerful that Viaweb was back in the day!
Heck, it is possible to now go from an empty folder to writing+deploy HTTPS API endpoints in under half an hour.
Edit:
More stuff!
App (not web!) updates can be deployed to users by uploading a file and having a client pull down the changes and seamlessly switch over to the new code next time the app is launched. Versus mailing out disks!
There are app stores that you upload intermediate code to and they'll compile apps to the appropriate architecture for a customer's device!
During 72 hours of coding for Ludem Dare, game developers and artists work together to create games that are as complex as a full fledged commercial game would have been 25 years ago.
And of course, many corporate software engineering efforts continue to fail or go massively over budget for largely political reasons.
Likewise, moving from ASM to C to Smalltalk is a night-and-day improvement... that we made in the 1970s. The difference again is what hardware we get to run it on.
Video game construction kits existed in the 80s, and 80s GUIs looked pretty much the same as they do now if you ignore resolution.
Drag and drop application development was huge in the 90s, and the CRUD applications of the time weren't significantly different than now, other than they didn't run in a browser. HTTPS wasn't hard back then, and you could write a Perl endpoint in half an hour easy.
When it comes to things like playing video, it's easy now but I don't even really consider it programming. You're just installing software that does it for you.
Libraries and OSS and StackOverflow and various services have made a real difference. I'm not arguing that we haven't made progress. I'm just saying that I can see how some people feel that this year's incremental advance or retreat is not nearly as exciting if they've seen how the last 20 worked out.
Myself, I've gone back to using Ventrilo because I realized that I really don't care about having video.
I've never done this in C/C++ specifically but I have to imagine that the GTK bindings are mostly language agnostic. Using a tool like Glade[0], you can build a GTK GUI with ease.
Glade was released 21 years ago.
[0]: https://developer.gnome.org/gtkmm-tutorial/stable/chapter-bu...
Edit: Ah, it's actually named that and I found a lot of results for it:
https://www.activestate.com/resources/webinars/perl-paradox/
This is a topic I'm very interested in (and as I've gotten older, my interest has only grown).
In ~20 years as a coder I've seen only a handful of overt ageist issues. I've seen plenty of ageist language and attitudes, and even more assumptions, but those are a lot harder to answer "Yeah, but would they turn down a qualified candidate for that?" about. I've known people who were both experienced and open-minded, as well as those that were experienced and closed-minded.
End result: No idea what to believe. I'm not comfortable assuming one way or the other, because either assumption is harmful if incorrect.
On the other hand, companies who engage in age discrimination are probably shit companies, so are you really losing out by them not considering you?
If they have the money to make my life easier, and I end up not getting it, then yeah, I lose.
If they have the experiences that make me a better dev, and I end up not there, then yeah, I lose.
If they aren't actually that bad, they just have this one area of ignorance, but I never get to experience all those other benefits, then yeah, I lose.
If I'm NOT in a hot tech center and this is one of the relatively few jobs that is available/is a step up, and I don't get it, then yeah, I lose.
I myself have nothing to complain about, at least not in my experiences to date, but in terms of considering the issue overall, I don't think it can be so easily dismissed. I recall plenty of older techies struggling after the end of Y2K and the dot-com bust when the market wasn't "If you want a job, you can get a great one", and I assume there are plenty of people in the above categories.
Except they don't "simply say that".
It's a fact of the industry that is backed up by (a heck of a lot of) experience and observation, unfortunately.
In that sense, it's kind of condescending to deny the reality of the (sometimes painful and frustrating) experiences many people are having in this regard.
My strategy is: live in the bay area so I can get paid like crazy, live a very frugal life much below my means, invest diligently, and hopefully have enough money to retire in my late 30s (in a much cheaper area, of course), so that when I'll be told that I'm too old, I'll raise my middle finger and leave the scene with the few million dollars I saved.
I wanted to pop back in time and say thanks. Yeah you didn’t retire in your late thirties like you thought you would mostly because it’s harder to make FI cash than you thought. The crash of 2020 took a few years to get passed but hey 45 is the new late thirties as they say now.
The reason I’m thanking you is you went ahead and struggled and saved anyway while things got tough and now you are free. Just FYI, I texted my QUIT to the HR bot in the Philippines just before I came back to see you.
Btw quitting is harder than you think. Just to let you know, I don’t blame you. Not quitting at 40 when you could eke bye because they offered you 2x what you’d ever made to stay; yeah the place was thalidomide for your soul but then your wife (I’m not telling) got pretty sick and that cushion was worth it.
Also: take care of your health and sleep more. An extra ten years of long hours at the terminal has left me not as healthy as I’d like.
To be fair, I don't plan to retire at 39 or 40, as long as someone hires me with reasonable compensation (2x would be a dream!). I'm purely trying to protect myself against a foobar scenario where indeed, I become obsolete from the point of view of most employers, due to "old" age.
You're assuming that he would actually want to stay in that other place long enough for the house purchase to make financial sense. You have to own a house at least 5 years for it to work out, minimum. Moreoever, in the big tech hub, you're making more money, so if you keep your living costs low, you'll bank more cash than living someplace cheaper.
Curious, why? I am having no problem being hireable right now at all (literally just joined a FAANG recently).
As far as I know, it would be impossible to get the same pay I'm getting now anywhere else. Even after considering the high cost of living, the spread between income and cost of living is very high, and allows me to stash away a significant amount of savings every year, to pay for my future freedom. I really doubt I'd be able to save that much if I were working anywhere else.
What else would you suggest?
If I could pop back in time, it would be to (somehow, because I didn't back in 1992) recognize that where things were at was the Bay Area, and moved there instead of staying in Phoenix.
But here is where I am, and while I make a decent salary, I certainly am not retiring any time soon.
The whole age thing is standing in sharp relief in my mind currently, because things are slightly "up in the air" at my current employer; I want to stay employed here, and I'm sure my employer wants to keep me, but recent events may potentially cause the relationship to have to be dissolved if the projects and numbers don't line up. I can understand that from a business perspective - fair's fair.
But the prospect of interviewing yet again, 3 years after getting this position, is not something I look forward to. I have new skills I can bring with me that I didn't have before, so that's a plus, but I worry that the age thing may be a barrier.
I'll probably have to lower my salary ask just to have a chance, but I won't do that unless I don't get any traction after a few months of looking - should I have to do so.
Even with that, though, I tend to wonder if the question in the minds of those hiring will be something akin to "Why isn't he a team lead or a manager?"; which is something I don't have, and have never been offered - possibly because I've never been able to stay at a company long enough to get to that level - either they go out of business or they get sold 2-3 years after I join, or the company is just too small to have any kind of way to advance you into such a position (I've found that I fit best in companies of under 50 employees, and the fewer the better).
Maybe if there's another time around coming for me, I should look into startups, though that seems like a bust from the get-go (ie - find a startup, in Phoenix, who needs a 45+ year old software engineer - that's probably a very small pool, if it exists at all).
It is what it is, I guess. I am fortunate in that I am debt free, at least.
If I could go back in time I would have the done the bay area thing when I was young too. But, life is a bit of give and take - there are some good things that happened in my life not taking that course (even if they didn't all work out as planned). So you kinda have to appreciate those parts of life and accept the fact that you are maybe not in the financial situation you wish you were in.
The only guarantee we have in life is this moment :)
"the software engineering labor market can stay irrational towards older people longer than the 2 decades past 40 where I could stay effectively employable".
The expectation in the industry is that Senior people would be even better at it, because of their years of experience.
This,however, is not what I’ve seen on the ground. Most senior devs that I interviewed, who were clearly smart and experienced took much longer than new grads to solve most of the questions. Personally, I try not to hold it against them, if they can clear the bar, but I wonder how many other people do the same.
Also, I know in music they do blind interviews, were people perform behind a curtain to avoid any biases they might have (gender, race etc).
May be it’s time to do something similar in Software, since we already are prioritizing white board interviews above anything else?
Edit: I am not advocating for Leetcode types of questions. I do believe that most companies hire like this (including my current company, where I get minor if any say in hiring process). So just pointing out my observations regarding the status quo.
The fact that a person with years of experience solves an interview question more slowly than a fresh out of college grad should be a huge red flag that our interview questions are bullshit and don't reflect real world challenges.
Reality: piles of legacy code that requires deep insight into product, legal, and marketing details to understand and untangle.
Guess which one leetcode script kiddies will suck at?
The question isn't how much you should hold it against older developers, but how much you hold it against leetcode as a way of assessing developers.
Seems like basic logic to me.
"Keeping up with with new technologies" is generally a euphemism for "uses a random set of frameworks I chose". Amusingly, devs who demand everyone to learn their frameworks are often the same people who try to stop anyone at their company from using or doing anything genuinely new, because it would undermine their position.
This is, BTW, why there is so much talk about the "shortage" of software engineers right now.
This is a great point. I feel the same at work where a buzzword laden framework is more valuable than directly using a library underneath that framework.
In my experience a database is a database, even if you call it something else. Really a database isn't too different from flat files with some helper functions to make rooting around them easier. In turn that's not to different from storing the information in RAM. Different ways to get at them but in the end you have the same bits in that string.
Same with programming languages, I don't know the specific one you use perhaps but I move between C, Python, Javascript and Go without much friction (Jetbrains IDE's are helpful for when you forget specifics of syntax after a time away from a language). Sure I have to look up some how something is done in the standard library of one language vs another but I've gotten pretty quick at that. If I'm working on a existing codebase I can look how similar problems are solved and replicate that style.
Containerization, Lamdba, serverless. It's the same old code running in new ways. I don't know what value to edit in the config file but that's just a google search away. At the end of the day its "I need to hit this endpoint and get this back" same story, different cast of characters.
I don't mean to humblebrag or anything but it seems like a non-issue to me. I understand how computing systems work generally and the laws of physics impose some hard limitations that sort of massage any solution to look similar enough to any other that it isn't that hard to figure out what is going on. Sure I'll lack some of the deep knowledge that someone who has focused solely on these set of technologies may have but honestly most of the programmers I meet don't have that to begin with.
I'm 34, so it might become different when I'm in my forties, but so far it's not getting any harder. Your summary below is spot on.
> I understand how computing systems work generally and the laws of physics impose some hard limitations that sort of massage any solution to look similar enough to any other that it isn't that hard to figure out what is going on. Sure I'll lack some of the deep knowledge that someone who has focused solely on these set of technologies may have but honestly most of the programmers I meet don't have that to begin with.
Additionally, there are different levels of knowing a language. You can write perfectly workable programs in C without ever touching function pointers. So what's your level of mastery?
And then there are more difficult languages. Have you tried C++ or Scala? Ever explored the esoterical intricacies of Java's type system? Lisp? Objective-C? Kotlin? ADA?
Ok, that's languages. How about parallelism? Massive parallelism? Tight resource constraints such as limited memory? Error handling? Modern language and compiler design?
I'm not trying to say you need to know all these things to be a decent coder. My point is there are many harder problems out there and maybe if you're bored you might want to try working on some of them.
I'm 40, and it's easier than ever.
I do get a bit pissy now when I have to spend a week learning some technology that I end up using for 15 minutes to do one thing, and then discard, but that's about it. (That has, unfortunately, happened.) But otherwise, it's easy. I've done non-trivial development now in languages that I don't even properly know, I just know all the surrounding languages and how to Google fast enough to make up for the rest.
I will also get a bit pissy when I do one project over here and they're all in Ansible, and I do another project over here and it uses Salt, and then I tweak something over there and it's in Puppet, and then I have to help out over there and they're in Terraform + Docker + some home grown Compose thing that predates Compose, etc. That general category of things was a legit advancement and I prefer using them to what came before (in my world, nothing but precious snowflake servers), but I'm frustrated that I have to keep relearning the easy "surface syntax" stuff over and over again for what is almost the same exact task.
I will also admit to a bit of impatience with the "re-inventing the wheel" phase of new technologies. For a recent example, the initial AWS "serverless" stuff (dumb name, inevitable idea) was written with like zero attention paid to the basic needs of source control, or the utter inevitability of how your service that was designed to have like 10 5-line scripts in it will be used to implement the next Amazon, so I stayed far away from it. Even now I'm not sure it's all that great. Docker I'm still not all that up on for somewhat similar reasons; for all the "innovation" in it it took years to be able to do basic things halfway properly. I'm definitely kind of done riding the cutting edge in the sense of chasing down communities that I can look at and tell are just going to be chasing their own tails for the next couple of years.
Sometimes a tech community comes out led by a person or a team that has experience, though, and when that happens I'm all over it.
Plus at this point there's literally so many things going on that nobody can keep up, not even the "young bucks". There is not a single person on this planet who is at expert level with all of the cream-of-the-crop Javascript frameworks, and there hasn't been in a long time. There's just too many now. When $YOUNG_GUY is up-to-date on 80% of the hot new shit and $OLD_GUY is sneering at it and up-to-date on 0% of it, back in the 1990s and such, yeah, $YOUNG_GUY might have an advantage. But when $YOUNG_GUY is up-to-date on 3% of the hot new shit and $OLD_GUY is up-to-date on 1.5% of it, and also knows a lot more stuff and can drop into a much wider array of projects and contribute (with the contribution being something other than "Let's rewrite all of this in $HOT_NEW_SHIT before we do anything else!"), the difference is far less extreme, even on the new tech's terms.
Unsurprisingly, computer programming isn't such special and amazing stuff that, almost uniquely in all the fields of human endeavor, you're worse after doing it for 20 years than you were after doing it for 2. Other than cases where the body itself just breaks down, like professional-level sports, almost nothing works like that. I think it's a historical accident of some very unique circumstances in the 1990s that have lead anyone to believe programming is different. I think the idea has gone a long ways towards dissipating already, but has a long way to go yet, too.
For myself (note: am old), I'm just following the advice I've always given to other minorities that are discriminated against to various degrees. Which is: don't whine, and play the cards you were dealt as best you can.
The FAANGS may not, but many other employers can spot talent when they see it. Keep looking--there's a niche for everyone.
I'm not sure how I feel about it. Sometimes I just feel fortunate for the career I've had. I mostly wonder if I'll miss it or be glad to move on to a new chapter.
For me it's a combination of 1) I see the writing on the wall: they don't really want me in this profession any longer and 2) I'm getting tired of it anyway — increasingly less willing to (laterally?) "move my skills".
Begrudgingly learned Swift (I like it tho). Begrudgingly learned every new code management system that has come down the pike....
I'll switch careers and move on, go back to "service sector" pay scale.
Maybe I worry more for the current crop of programmers. Those of my generation did all right — had fun. The industry is changing and not necessarily in a direction that looks enjoyable.
One more protip. At a higher level, moving up further does not mean being a better coder. It means talking to people (often on different teams), thinking and generating ideas (and applying for patents), sometimes taking risks to prove those ideas, figuring out how to improve process, and generally communicating. If you believe you're not good at any of these, you can actually study and practice them and get better at them. I did, and it's working out for me.
This means, right now, half of programmers have been doing it for less than 5 years.
This is the primary reason older programmers seem oddly rare, 87.2% of programmers are less than 15 years into their career, 75% less than 10.
If you're 50 and you've spent many years drilling down through increasingly deep scalability and throughput challenges, that will increase your value beyond what any fresh-out could provide.
If instead you spent your time learning a new JS framework each year and are proficient at 30 of them by age 50, good for you, but good luck finding a job.
That's not to say that the specialists have it easy, but they do have an advantage here.
In the first case I didn't particularly mean to specialize, but just to continuously do things you really don't even know if you can, to continually push against what you think is possible for yourself: create a js framework for instance, even a terrible one that you abandon after a year and move on to a completely different project, but that requires you to dig and research and stretch your brain. The second case was more you know it's possible and it's just following a tutorial to get up to speed on the techniques; someone else did the "hard" work, and you're not really getting anything out of it.
The first thing gives you skills that age well: you'll learn about lots of gotchas about the internals of how js and presumably other language runtimes work etc, which will help in lots of different positions; the second just gives you a line item on your resume until that fad is gone.
E.g. this free (!) intensive course in Sweden: https://www.academy.se/artiklar/tieto-och-academy-startar-ko...
My hunch that consulting jobs that require COBOL are primarily looking for experience (especially with finance systems) than for 40 years experience specifically with COBOL.
When you come out of college, you might be pretty close to the state of the art because you've been doing nothing other than getting to that exact point. Then it suddenly gets harder, because most of your time is spent working on whatever technology you already have instead of ramping up on new ones (plus eventually family and such).
Sure, you can try to weave as much learning as you can into your job, but it's almost never enough. Most people will end up getting further and further behind, or more and more specialized. The harmful effect of the first becomes apparent quickly; the second can actually be quite lucrative for a while until suddenly it isn't. Either way, at some point your knowledge becomes pretty severely devalued until you go back to spending near-full-time to catch up.
It's hard to blame employers for favoring newer knowledge over older, but the effect on older workers is still pretty profound.
For context, I'm 37. I watch conference topics on topics I find interesting but they're often just mildly informative, definitely not the type of thing I'm going to travel halfway across the planet to see live. A lot of the time it seems to be more about making a name for the person or the company they work for. It seems the number and prominence of tech conferences has exploded in the past few years, I don't even remember hearing about these at all when I started out (mid-00s).
To me, the future isn't very bright for anyone who just wants to be an "employee" for the rest of their life, coder or not.
OTOH, the manager path is dangerous in recession times. You lose a lot of "hard" skills, and if you lose your cushy manager job at company A it isn't necessarily obvious to company B what value you have when things are tight.
Depends on where you work. If R&D is core to the business, there will be a non-management ladder and plenty of near-retirement greybeards around the office.
Note: many fashionable names in "tech" don't fit that bill.
OTOH if you learned a little bit about various things, it's very likely that one of them will be that next fad, or its precursor. So when it happens, it'll be that much easier to learn.
So it's a balance. Going either too deep or too broad can backfire.
Do any of the "older" folks here have advice on orienting one's career to brace against this effect (beyond the typical "always be learning")? Feels like it's coming up quick.
Assuming a large component of ageism in tech might be related to narcissism and in-group bias.
The company where I work administers a survey of all tech employees every year, then publishes the results as a series of graphs, which can be broken down at any branch in the org chart. The very first question is "how many years of industry experience do you have?" The graph for my team is, shall we say, bimodal. There's a bell curve between 1-4 years, and a spike at 30 years.
I've been building things for a long time, and I try to impress upon the other developers on my team (or in my org) that I've never, ever, had an opportunity to build at the scale that they're being asked to build at in their first gig out of school. If I come off as negative, it's only because I can say with surety that X won't work because it didn't work in the past. I expect to learn, with my team, whether we can make things work at now scale.
There are times that I miss hours and hours of uninterrupted coding, and being inventive at small scale. My leadership would take me out to the loading dock and kick the shit out of me if I tried to contribute at that level.
My job is, essentially, to educate, and slap the team off of local optima. To impress upon them that their customers are king, and that their customer base includes themselves and their teammates, paged out of bed at 3am. And to impress upon their management and the business that we really to need to focus on improving operations, rather than add features from time to time. It is also to observe the progress of, and advocate for the developers on my team.
I feel (at the time of writing... Talk to me on Monday afternoon) like I'm lucky that my employer points senior engineers at problems like this.
Which is practically infuriating to read, once you take even a passing glance at her easily findable profile.
If recruiters are really saying that about her -- this just shows (yet again) how utterly useless they are at what you would think would be their core function:
That is, identifying and promoting technical talent.
Hopefully this attitude will change as the valley ages and people will learn that a lot of software engineering principles don't change as quickly as the buzzwords do.
D&I benefits those trying to increase the supply of coders and via supply and demand reduce the rates. Older engineers are going to want more money etc.. Of course a nice benefit with the movement (for those who want to exert downward pressure on the wages) is that many D&I initiatives also tend to be ageist. IE: accusing the previous generation for enabling bad behavior, stating that the majority of older workers are white/male anyways etc.. Older workers generally are more skeptical of the D&I efforts. The D&I supporters have a penchant for getting people fired etc. for expressing any dissenting views against the cause...even if the person expressing the dissent is an under-represented person.
For the ones trying to reduced labor costs it kills two birds with one stone. They get an expanded pool of labor. Plus the D&I crowd does most the dirty work for pushing out older workers. Now rinse wash and repeat with importing workers from low cost countries. The rich get richer and the rank and file engineers get caught up in the battles as either active participants or collateral damage.
It has very little to do with doing things that are morally right and all about money. The moral outrage distracts everybody and keeps the infighting going so that the labor does not organize and target the real problem.
So far, I've not seen any pattern to back this up. I've worked with a few coders in their mid-20s that knew PHP or Java very well, but refuse to learn a front-end framework or Node JS. They act as though the burden of learning a new stack when they've already learned what they know from school was too much to ask.
Likewise, I've worked with coders in their 40s and 50s who still love learning new technologies, and are more than happy to learn the new "Javascript framework of the week", especially if they see the benefits it provides over what they currently use.
I'm in my early 30s and have a strong distaste for Electron, but I know a mid-40s coder who loves Electron and would never code a desktop app any other way.
I find myself reading about Smalltalk and NEXTstep and am continually impressed with the solutions of the generations before me (and their respect for their users' resources) while the coder in his 50s I've worked with loves that we live in a time where trading RAM and CPU for easy maintainability is the norm.
What bothers me isn't just the ageism, but also the absolutism based on anecdotes. It seems to me that the same person who would dismiss an older coder based on age, is also the kind of person who would, say, "never hire someone with C# experience even if they have Python experience, because we use Python and anybody with C# experience is slow and inflexible" (real thing a manager once said) or "never hire someone who prefers to use Sublime Text because we use a 'real IDE' like Netbeans" (again, thing a manager once said).
Hire the right man or woman for the job. Pick the right tool for the task at hand. Be open to new technologies and using them for their strengths, but also learn from the good and bad things of the past. None of this seems that difficult to me, yet it seems is a continual problem in the field.
In my opinion, this is both true but not a problem. The reality is that it's much easier to have a large impact as a manager than as an individual contributor. I have worked with L5's, L6's, and L7's, and honestly I couldn't tell the difference between them. That's not to say the higher level people didn't deserve to be higher level as they had more accomplishments, but I personally didn't really feel like they had much more impact, if any.
For all but the largest and most complex projects, there aren't really going to be sufficiently difficult problems that it makes a big difference. I don't think I've ever been on a project where there were more difficult problems than engineers capable of solving those problems for any level of difficulty.
> Based on interviews with a half-dozen programmers, it is clear to me that companies should create a qualitatively different role for their most senior individual contributors. Candidates for such roles would be judged by their past effectiveness, the same as managers are, not by a fast-churning checklist of skills. Greater clarity would mean engineers could climb the ladder faster, and the prestige and renewed intellectual challenge of each level would keep programmers motivated into their fifties and sixties.
> Proven engineers who occupy the most senior roles should be deployed to solve the hardest problems on the most critical projects.
At least at Google, being judged based on past effectiveness and being given the hardest problems is already true. Or rather, higher level engineers have greater independence to be able to choose what problems they'd like to solve.
People who are good at development can't be determined by any outside criteria -- you have to talk, test, and learn about them. At my company, we have developers from early twenties to early sixties. We don't care about any race, gender, background, anything -- all of it's immaterial to whether you can create and code. Join us: https://www.datakitchen.io/company.html#hiring
How dumb or gullible does one have to be to actually think this? I'm betting it's mostly the 20 something year olds that would ascribe to such stupidity.
Let's just accept that there is no track for programmers period. There are no promotions beyond senior at most companies. You peak in your early 30's and then you continue to work at about the same compensation and level for the rest of your career. A few people can find more interesting work, but it will require jumping to different companies and a lot of self-training. Unless it's at FAANG, all that work will be for an extra ten, twenty, or thirty thousand dollars. And raises? I've never hear of such a thing in any industry these days.
The best option is to keep on top of your skills, find a job working 25-40 hours a week, possibly remote, and find some meaning in other parts of your life. Work isn't everything. It's not even the most important thing.
There are and will be plenty of jobs for older coders. It's a new profession, but older coders who stay on top of the tech are still plentiful. You just need to know where to look. Also, many people don't make it as coders period. If there is a shortage of old coders, it's because people drop out because they can't make it. Even better for the rest of us. As if being in your late thirties is old. What bullshit.
However I have several friends around my age who never bothered to learn anything beyond C++, and they are definitely struggling. They either are stuck in jobs because they're the only person who knows how to recompile some ancient module, or they're out of work and freaked out about the future.
Ageism is real, but so are some of the stereotypes. Older programmers are often going to be more resistant to change, and can be more sure of themselves even when they're wrong. The flipside is they often have forgotten more than a young programmer even knows.
Present Valley hiring practices seem to optimize for general aptitude, and downplay or disregard the value of experience.
There's also the undeniable fact that older people in general have built up more obligations and responsibilities, and are often more skeptical of the value of equity because they've been a few startups and their options never amounted to anything. Therefore, they are going to prefer stability and cash over the promise of future rewards.
Prior to this I'd been doing freelance work and there it's more difficult. Especially if you don't have any particular unique skill or tight relationship with a solid client or a high level of marketing savvy, it's hard to compete with kids that are willing to do things at half the price. And I think that's fair: even though I consider myself a very solid coder, most consulting gigs I've worked on could have been handled by someone less skilled and worked out just fine.
There are a lot of skills churn in this industry, and even as someone still on the young side, I'm rather leery of this trend. I imagine much of this trend has to do with the fact that the population of programmers is still increasing at a significant rate. I heard somewhere that the population of programmers has doubled roughly every 5 years for many decades. Add to that the fact that (as pointed out in this article) more and more programmers move into non-dev roles as they get older. It's not too surprising that employers are going to tailor their hiring process to younger engineers if that's what the hiring pool looks like.
My focus has tended to be on developing proficiency with older technologies that have stood the test of time (Unix, RDBMs, Erlang, etc.). The fact is that when it comes to technology, the longer it has been used, the longer it will likely continue to be used - this applies as much to COBOL as it does to LISP. It's not that I don't get excited about new technology, but when I do I tend to be more excited about tech that builds on the great ideas of the past rather than tech that purports to be radically new.
I don't know how this strategy is going to play out. I certainly do enjoy learning new things (that part of why I got into this business in the first place) but I also want to know that I am increasing my value in the market place by developing mastery in skills that are going to have lasting value.
2. On the weaknesses of promotional tracks for ICs
When I was working at HP, I was told explicitly: "We promote people in the management track to see if they can do the job, we promote people in the technical track if they're already doing the job". I'm not sure if this is the right approach, but it definitely does make it more difficult to stay technical.
There are many valuable qualities that generally only come from seasoned engineers: qualities like leadership, expertise, communication skills, project management skills, and strong professional networks. The problem is that while time is a necessary ingredient to cultivating those qualities, it is not sufficient. We have to be intentional about shoring up our weaknesses in these areas. This is something I've heard from some of the most respected scientists and technologists - people who are arguably at the pinnacle of success and reputation - say that they wished they had done better in.
You could look at unemployment and workforce offices that offer job search databases to the unemployed. I went to the Arapahoe County Colorado office a year ago, looking for training grants, and saw pretty big listings for coders.
I’m not the greatest, but I get the job done and produce results. That’s what businesses want.still, I wonder how sustainable that is.
So its an indication of an extreme sickness in a society or culture where younger than 27 is too young and dumb to pick a spouse, then from 27 to 35 is the only economically viable life, then at 35 they're too old to be hired anymore so turn em into soylent they're good for nothing past that. Crazy that our ancestors were productive members of society from 18 to 65, and the most gaslit generation tries to hide the economic decline by claiming its "natural or self evident" that kids these days only get to live as productive adults from 27-35.
I mean... pro sports players have longer careers than coastal programmers...
Another hilarious analogy is the claim the building trades are horrible because 30 years of that will destroy your knees or whatever; well, the solution to that isn't a 8 year, at most, "career" writing code. Plenty of 50-something electricians making bank decades after their peers who went into programming are utterly unemployable in their field...
A similar sickness can be seen in K12 school teaching where the average teacher now has only a couple years experience before getting kicked out for being too expensive and too many kids willing to work cheap.
Fundamentally a culture/society that is built on the demand side to have people spend like crazy from ages 18-65, if not 0-85, is utterly doomed to collapse if that culture is only willing to pay a tiny minority of people ages 25-35.
I would argue programming is not necessarily a career path any more than being a carpenter or other labor job; some people will be "up or out" in five years, but I'm not sure why someone supposedly can not program for 40 years, any more than I have no idea why a doctor can prescribe for 40 years, or a truck driver can drive for 40 years, or a bean counter can count beans for 40 years.
Another cultural trend somehow not mentioned is kids need the baby sitting an open office nursery provides; if everyone older than 40 works as a contractor for more money, its not really a problem that companies only hire children as W-2 employees. I'm probably never going to be a W-2 employee again for a variety of age and race and gender discrimination reasons; I'm OK with that and enjoying making plenty of money outside the W-2 nursery.
1. The pool of older programmers is a little bit 'lemony'. The "really talented ones" either move up into cushy roles, move into freelancing/consulting, or start their own thing, etc., so they won't be applying to random job listings. And most 'good to average' individuals will build up a solid professional network throughout their career and if done properly they should have an easy-ish time finding and getting new roles. So that leaves folks who are a) for some reason their network doesn't extend to the job they want (maybe they are trying to switch fields, or they are targeting a small company with no mutual connections) or b) they are a lemon (to put it politely). And to complicate matters, the standard programming quizzes/whiteboard interview doesn't work too well on more experienced programmers. Their raw programming knowledge/ability is usually good enough, generally the issue is with something else (slow, hard to work with etc..).
2. If you are an ambitious 20/30 something doing the hiring, unless you have really good 'job security' (like best friends with the founder or some other leverage) then it's probably easier to hire folks with less experience who won't challenge you for your role. This is somewhat an extension of the 'A's hire A's, B's hire C's' mantra, but on the axis of seniority and experience as opposed to talent. There are plenty of senior programmers that are comfortable being an IC under a younger manager, but there are also plenty that would happily jump on the management track and climb right over you if the opportunity was there. And the 20/30 something manager won't know which one they hired until its' too late.
3. There are plenty of industries and opportunities where seniority and experience is respected, and many of these industries are hiring programmers. You just have to look outside of the SV bubble. Banking, Healthcare, Energy, Construction, etc... And because a lot of these industries operate in more regulated and bureaucratic environments the 'SV 10x ninja' is just not that useful. And some of the 'lemons' mentioned above, who don't fit the SV mold, but who are perfectly serviceable employees in most regards would probably do fine in these environments.
I also think we are starting to age out of the 'high school dropout gets $20M in funding' era, which exacerbated the agism-in-programming issue. That sort or worked in consumer web/app tech, but tends to fail spectacularly everywhere else. So at the very least this 'post-40s' agism will probably start to fade, and likely get replaced with the 'post-60's'
Truly excellent programmers in my age group are absurdly well paid as consultants. But it takes courage and extreme productivity to live like that. Most people my age don't have the gumption to do that.