"Companies advertising outdated stacks open you up to the risk of building the wrong sorts of skills, which can have far-reaching effects on your career." (Emphasis mine.)
The wrong sort of skills? Like adaptability, strong diagnostic skills, pragmatism, self-awareness, and not being a massive diva all the time? Although it's true that these things can have a far-reaching effect on your career.
Every company that's been around for a while has legacy code and you need to lose the fear of working with it. You also need to develop enough humility to realise that the code you're writing today is tomorrow's legacy.
Yes, the wrong set of skills. If the market is looking for, say, React devs then you'd be a fool to accept a job where you are expected to work with, say, Delphi or AS400. Yes, maintenance jobs working on old established services are enough to make a living and even a profitable one, but let's not fool ourselves into believing that your odds of being the top candidate in today's or tomorrow's high-profile projects will be greater if you waste your time in outdated stacks.
May just be the business we're in but I feel going with the old limits your breadth (but maybe with a higher price tag? COBOL?)
All right, so maybe you feel bad now about not listening to the engineering team and maintaining a continuous migration of your business-critical code to modern platforms over the last 30 years. But that's all in the past and your million-dollar business will be shuttered by the tax authorities in three months if you don't get this sorted out right now.
Maybe we'll have a world one day where everyone knows the "obvious" fact of technology leadership that everything should be continuously migrated to the state of the art. But maybe we won't, and maybe this fact isn't obvious at all, or even correct. Who knows?
In the meantime, people with skills that have an extreme demand/supply factor can command the highest rates, even if they won't be hired at tomorrow's startup. That's not to say it's a bad idea to learn current skills (for diversification), and definitely say no to working with legacy tech for small money, but that's really an orthogonal point to the one oaiey was making.
I looked into this recently, because I wanted to see if it would be worth learning COBOL to help maintain old banking systems. Unfortunately the pay is nowhere near $20000 / week, and experienced COBOL programmers typically make around $100 per hour, or $70k per year at a full-time job. Right now you can make much more money with modern web and mobile development.
Here's some previous discussion about COBOL rates: https://news.ycombinator.com/item?id=14083214
I was surprised to hear it was only $100/hr, but some people say it might go up to $1000/hr, and one person was making "high six figures". So I don't know. Maybe it's worth getting into if you have some good connections.
Big brand contractors cost us around the same.
DBAs, Sys Admins, operators, a bit more.
Having 30y experience myself, from mobile and Java to Mainframe Assembler, I find the older guys - both on mobile (few) and COBOL (most) to be much more focus on engineering a system that lasts whatever you throw at them, while (most, not all) young coders are about speed and hashing something together that works (but needs overhaul after 3-4 years).
Just my own experience, not saying is the only perspective.
I've noticed that tendency in younger developers too and it's utterly infuriating. Do you do anything to discourage this and, if so, what?
I was fortunate to be a young developer with a desire to write things that could last, so I skipped a few steps and found myself doing the mentoring perhaps sooner than most, but instilling the notion that this thing needs to continue to function, and rejecting work that isn't in service of that goal, is doable.
Only if you expect to leave that company in the next few years like an SV-style webdev. Some of us like the stability of working for an organization where employment time is measured in decades.
I ask because I tend to find that we are generally incentivized both to stay on the leading edge and to, if not running a consultancy, to be regularly moving on to new positions. And it is rare, to the point of IMO barely worth considering as a possibility, to find a company that won't get rid of you given half a chance if it makes short-term numbers better.
I have little fear of being laid off at my company because they didn't even lay anyone off during the last recession. It isn't publicly traded, and has a very flat managerial structure, so the typical 80s-guy bullshit doesn't really fly here. We don't make software and get our revenue from selling ad space, we make real things for real people and we charge real money for them.
I've interviewed devs with over a decade of experience who clearly opted for a stress-free existence feeling like their work was actually helping people, and now here they are in their mid-40s looking for a job with an obsolete skillset and an obvious track record of not adapting to changes.
It's great that you lead a stress-free life in your 20s and 30s, but how do you expect to cope with the problem of being obsolete and useless and no better than a 20yo fresh out of college (and in some regards far worse) when you reach your 40s and 50s?
If you're offering 10%-a-year raises, etc., what you're saying makes sense to me, but otherwise people are going to leave because it's stupid and self-harming not to.
How do you square that circle?
I've never seen layoffs. A person who regularly moves on is quite undesirable, because they would leave before being useful. It typically takes a year before we can really put somebody to use, and two years isn't uncommon.
I left after 15 years.
And why do I care about being a candidate for a high-profile project? Pay? Yes, there can be good pay - along with lousy work-life balance. To steal a line from Agassiz, I cannot afford to waste all my time making money.
And why is an out-dated stack "wasting my time"? Do you have a utility function for my time? I deny the validity of it. I would say that chasing a high-profile project in React is almost certainly wasting my time.
Having code that's lasted long enough to need maintenance is a sign the company has at least some grounded-in-reality fundamentals. The projects that fell apart upon learning the business model was untenable or the technical or social problem insurmountable, generally don't need maintenance programmers.
Staying a little off the bleeding edge also lets you focus on quality execution, rather than chasing the trends. Sometimes the eventual best practices aren't even offered and understood if you're adopting a platform or framework too early. Nobody wants to hit a "drop everything and rewrite because there was a huge API shift" moment.
While high turnover is almost always bad, low turnover on legacy projects might mean that critical parts of the infrastructure have been locked up by ideologues. It's not automatically bad but you should very certainly ask some pointed questions in this area. A yellow flag, if you will.
No business owner or manager wants that. I know lots of programmers for whom any excuse to throw away everything and rewrite from scratch is basically Christmas. Some of the more unscrupulous ones might even try to engineer unnecessary excuses to do just that.
My point: You don't have to give a rational explanation of why you prefer maintenance. You can do so from your perspective, but it won't translate to those who, due to their personality, prefer other phases.
But if you want to say that projects that made it to maintenance should have money available to pay you, then yeah, you've got a point that transcends personality...
Tech stacks aren't that hard. Especially when it comes to web frameworks. To me, maintaining legacy stuff in legacy technologies requires primarily grit - the ability and patience to wade through unique and idiosyncratic mess with a debugger and come out alive on the other end. The fundamental skills of a developer, and even the fundamental technical challenges, don't change that much between frameworks or even programming languages.
The primary danger of being in legacy tech to me is having wrong keywords on your CV and getting auto-filtered when applying for a new job. I know businesses would love to immediately hire experts in their particular tech stack, but let's not kid ourselves - the stacks are trivial compared to learning the processes and code at a particular business. I don't see why a competent Angular developer wouldn't be able to pick up React in the inter-job period to the level comparable with what that person with "React" on their CV has.
Assuming what I wrote above is true, then note that hacking around outdated CV keywords is a much different problem than mitigating those "wrong sorts of skills" working with non-fad tech would hypothetically give you.
True. We're primarily a .NET/TypeScript/React/SQL Server shop but I'm happy to consider anyone with some experience of a C-like language, and some web development experience - it's also not necessary for these things to overlap. Beyond that, if you know what a database (of any sort) is I'm basically happy.
It's hard enough to find people who can program well in any language without making life even more difficult for yourself by adding requirements for N years experience in a given framework or technology.
I think programming language/tech stack is about 8th on my list of deciding on where to work, etc. (This just inspired me to do some writing on the subject, since I've delivered systems in most major tech stacks over the years.)
The former kind of project teaches you valuable lesson. The latter, however, teaches you skills of dubious value, such as NIH-driven development, playing political games to deflect bugs on other teams, and dealing with bugs in dubious ways (stuff I've seen: detecting corrupted writes to flash devices and correcting them by re-writing corrupted sections until all writes operations are successful).
Thing is, if you do this stuff for too long, your mastery of skills that you need to work in healthy organizations tend to decline.
When making hiring decisions many organisations put great emphasis on the specific skill sets detailed in the resume.
As such it can become dangerous if you end up with a resume dominated with legacy coding skills.
I think this is also a good area to contrast the two things listed: tons of places have jQuery, it’s still actively developed, and it’s relatively straightforward to replace incrementally whereas CF is proprietary orphan-ware prudent shops have been migrating away from since the late 90s, when it became apparent that they were only indifferently supporting it, so you’re one unpatched bug or Adobe management whim away from a messy forced migration.
That is just the reality of the web if you live in a high wage country. There is very little legacy work in web technology that is not outsourced.
Which ones, out of curiosity?
Relatedly, constantly jumping into new stuff can actually _hurt_ your progression because if you never master existing tech (find its limits, reading its source), you'll have more trouble seeing the relationships and trade-off's of the new stuff, and spend way too much time just learning API's without gaining any intuition.
An experienced programmer with all the shiny keywords is rare.
I know of companies training COBOL developers to make sure they can maintain these legacy systems. Mostly they are also the mission critical systems.
The web applications at these financial institutions will be in more modern crappy frameworks. But rest assured the expert COBOL developer gets paid much more for doing a lot less :)
The new guys get removed first. Ones working on shiny less critical processes. Shiny and critical generally happens in startups.
When legacy is being replaced, old timers generally see the writing on the wall and move on as well as retrain.
Working for a short time on an outdated technology is not necessarily a red flag.
Others, like jQuery, might be in a much more precarious position. The point of the article is avoid these if you can.
The most crap but working technology might be in places which earn money.
They probably won't.
You might have more job opportunities with the latest and hottest tech, but you will have far less competition with legacy ones. And you can have a long and successful career with them.
If anything I would consider a red flag to have proprietary or in-house stacks. Those could damage your career by employer lock-in, where your build expertise in tech only used in that company, thus reducing your marketability.