Leveraging Legacy Technology
Podcast: Play in new window | Download (55.5MB) | Embed
Subscribe: Apple Podcasts | Spotify | Email | RSS | More
Most of us want to work on the latest tech. In addition to being more fun in general, newer tech also comes with less baggage, more job opportunities, and often solves emerging problems. However, beggars can’t be choosers. Eventually, either due to a surprise job loss, major economic turmoil, or a bad job situation that you have to get out of, you’ll eventually be stuck working with legacy technology in some capacity. In tech, the tip of the iceberg is comprised of organizations using the latest and greatest, and beneath that is a substantially larger number of environments that are using something developed between 5 and 40 (or more…) years ago.
At some point in the future, whether it is in the next couple of months, or the next 20 years, the economy will crash and burn to some degree, taking many jobs with it. It’s simple mathematics. While you might typically avoid older technology, you’ll find that there are situations where you have to deal with it, simply to get the bills paid. Your approach to this problem will determine your level of success once things recover enough to get a better job.
In effect, it’s like someone just showed up at your door with a dump truck full of manure. You either have to deal with a load of crap, or you have to figure out the right place to put it so it can become fertilizer. The willingness and ability to do this can often be a career changer.
You can effectively leverage working on a legacy system, provided that you know what you want to get out of it, other than a paycheck. A lot of developers tend to look down on work positions that use legacy technologies. This is excellent, because if you are any good, you can often have your pick of the jobs. Better yet, if you pick the right jobs, you can quickly build up non-tech skills and expertise that will help you compete with people whose technical resumes are more current.
Episode Breakdown
Experience With Older Tech
The most obvious benefit to legacy tech projects is the opportunity to learn legacy tech. While this may not seem like much, if you can still get a job in an older technology stack, that means people are still using it. As stacks get older and there are fewer people using them, the price per hour for getting development help often goes up. This is especially true of stacks that are more than 10-15 years old. Additionally, experience with older tech is often very useful even in jobs with newer technology, simply because you may have to integrate with it.
Networking
People that work with older tech also tend to be older. In addition to often being good mentors, they tend to know a ton of other people in the tech community. While you might not think that the mentoring aspect is too valuable when you are dealing with older tech, the fact is that you can often bounce ideas off of people who are used to an older way of doing things and gain surprising insights. Many times, people who are using legacy technology are very good advisors on how to deal with non-technical problems in your career, such as office politics. If they’ve survived in one position for a while, there’s probably a reason for it. Additionally, you might serve as a mentor to THEM on some of the newer stuff. This can be advantageous to both of you.
Experience Converting To Newer Tech
If you end up on a legacy project, learn well, and have experience in new technology, you can often be heavily involved in porting that technology to a newer platform. This will give you more experience in BOTH technologies, as well as a ton of other useful non-technical experience. As it gets harder to find developers of legacy technology, you might a useful (and lucrative) niche in converting business systems from an older technology to a newer one. Lots of people do this and make a lot of money with it.
Experience With Slower-Changing Peripheral Tech
A lot of newer technology is built on top of older technology. A lot of times the underlying, older technology changes at a much slower rate than the stuff that is placed atop it. If you learn the old stuff, that knowledge may be valuable for a much longer period of time. A great example of this is databases. Your favorite GraphQL library probably makes use of ORM technology under the hood, that itself uses older database APIs. If you are working with older technology, you often get more than a peek inside the way that things used to be done. The things you learn there can be extremely valuable whenever you do get back to using a newer stack.
Improvements Of Code Maintenance Skills
Nothing shows you how coding practices break down over time like working on an old codebase. A lot of stuff that seems like a really good idea when you start using it (deep inheritance hierarchies, global variables, reuse when it isn’t warranted) cause a TON of pain later on. Once you’ve dealt with the fun of having to do major refactorings on something like a deep object hiearchy, you’ll be far more careful about using them in the future. This is a good thing, because a true “senior developer” should be able to pick out situations where you are painting yourself into a corner and avoid them. You’ll also get better at debugging and troubleshooting in the presence of limited data, poor documentation, and no comments. These are extremely valuable skills that are only about half science, while the other half is largely intuition. In effect, you’ll learn which practices you don’t want to engage in and you’ll have had enough painful experiences with them that you will stop doing them.
Experience Training/Leading A Team
Additionally, teams with a stagnant technology stack are often very eager to learn about newer approaches that might make their jobs easier. If you know the newer technology, you are in a position to teach. Sometimes, groups of less experienced developers get stuck working with older technology as well. If you are more experienced in newer technologies, this can be a good opportunity to start learning how to lead a team.
Opportunity For Moves Upward Or Laterally
Oftentimes, development shops that are stuck in old tech have a major issue with turnover. While this can be because of an unpleasant environment, it can also simply be due to the technology in use. If it’s just a problem with the technology and there is high turnover, it may be easier to get a promotion under these circumstances. Even in a bad environment this can work for you if you manage to avoid being the target. Bear in mind that for every officer Darth Vader choked to death on his ship, several others got promotions. If you can reach such a position and stay there for a little while, you can often jump ship to a much better salary. This can also be a good time for a lateral move. A lot of these companies are more desperate for help, don’t know they need help in certain areas, or don’t need someone to be full-time in a certain role. This can be an opportunity to partially move into adjacent positions such as QA, Devops, project management, design, etc., without as much risk to your salary.
Learning A Business
Older technology companies can often have a wealth of onsite knowledge about certain business sectors. It can be very lucrative to remain in those sectors even after you leave. This is especially true if you start consulting. While you can certainly learn tons of useful information about a particular line of business while working on the newest technology, the information you glean may be fairly shallow, especially if that company is new in the market. If a company is using legacy software in a particular market, that tends to mean that they have been around for a long time and that typically means deep knowledge about a market and a strong network in that market. Both of those can be very helpful to you in your future career. This business knowledge can give you a lot of options in other parts of the industry, or in adjacent industries if you play your cards right. If you are closer to retirement, it can also make you valuable enough to stay at the company with the older technology until it’s time to retire (a lot of people do this and it’s reasonable not to want to learn the latest thing any more if you are about to retire).
Regroup And Work On Your Own Stuff On The Side
Jobs with legacy technology are often a bit more stable, have improved work life balance and can often be easier than jobs with bleeding edge technology. If you are trying to build your own thing on the side, this can make it easier. Companies that maintain legacy software will also change your view on what is actually required to build a stable side project. Rather than just thinking about it in terms of technology, consider paying more attention to the “non-technical” stuff the company is doing. You can learn a lot about processes, tools, and the like from other people who have already been successful. Sometimes a company that has you maintaining legacy systems might be a perfect candidate for your first customer for a side concern. You have to approach this with caution and really pay attention to any employment contract you have, but it can be viable.
Deal With Complex Non-Work Situations From Stability
Sometimes your personal life is about to get messy and you are better off getting a more stable, less demanding job to deal with it. Whether it’s health issues, and impending marriage (or divorce), children about to be born (or about to go to college), or you simply have a desire to rebuild your finances, a job with legacy tech might be a good choice. Life is not entirely about just the programming frameworks you use; sometimes other things that are more important intrude. Sometimes you want a job that doesn’t have such a heavy training and learning requirement while you navigate other issues. Be careful about becoming too complacent, however. You need to keep your skills and network up to date, or such a job can become a horrifying trap. Sometimes your career will be better off if you ease up a little bit, handle major life situations in a way that doesn’t become pathological, and then return to the grind.
Tricks of the Trade
What may seem intuitive to you as a developer, or even to your QA team who are familiar with the application may not be so for the average user. This is especially true for those users who are not comfortable nor confident with technology. Avoid making massive changes to an interface right before a massive upswing in use. This could be tax software before April or school software before August. This is something FaceBook does right, when they change their User Interface they slowly roll it out giving people the option to try the new interface and switch back if needed. That’s not always possible so when you are making big changes to a legacy system schedule them to be the least intrusive to your users.