Growing up in software, there has always been an older person to tell me about how they spent half of their careers working in languages like assembler, or COBOL, or FORTRAN. At the time, there were no computer science or computer engineering degrees, so they came into tech through curiosity and usually a traditional engineering degree or physics.
It wasn’t just people I met, there was a whole generation of people working on just a handful of languages. This lead to a whole lot of legacy software and people that could happily make a career by learning one of those languages and working maintenance.
Maybe with the exception of Java, that idea of eventually coasting on a legacy language and product are a thing of the past.
One company I worked with had a product that was built on at least 25 or 30 different code repositories. Each repo had some special function and served to add functionality to the product some how, but even more they served the need of a few programmers to try out every programming language they had ever heard of.
It’s not hard to figure out that this made hiring difficult. Not just because a person needed an unreasonable amount of knowledge and experience to be able to work on the product. But also, because a stack (and staff) like that only attracted people that would help to make the problem just a little bit worse. People that had interest in technology that was new, and probably a little obscure.
Tomorrows Legacy Code
For some, the legacy code and software of tomorrow will be met with one of two challenges. They can continue making the technology stack more and more complicated to attract people that can’t say no to trying something new. And, continue making a product that will be a series of hacks to get different technologies to talk and rewrites of existing functionality in new languages when that doesn’t work.
Although there are some people that will work on Java for a long time, in many ways the idea of sticking with one technology stack for an entire career or until that stack is no longer popular is dead.
I haven’t worked with that company in a while, but my understanding is that they have started to abandon a lot of those code bases and feature sets in an effort to simplify. A change of guard happened and between the people that remained and the new hire, no one wanted to deal with what was left behind. Now they are shooting for one product, built on a few languages as they can possibly get away. That seems like a smart way to go.
Software is pretty messy right now because of the big language push. But, until things settle down a little bit, it’s what we have. For some of us, it might make sense to not be on the leading edge.