After many years of programming, I am starting to feel that there must be some sort of revolution coming in the world of software engineering. I remember learning about the waterfall vs agile way of working and thinking that the agile way of working makes significantly more sense in most cases. I believe a similar significant change in mindset must be coming soon™.
The issue
My experience is that most software is written in an unsustainable way. Tech debt is always causing issues and resulting in frustrated developers, but at the same time, it is normalised to have significant amounts of tech debt. In every job I’ve had so far, tech debt was causing development to grind to a halt. Even from a non-technical point of view, this is very problematic.
How can a business survive if it can’t respond to change? It can’t, really. So why is it so normalised? Maybe because the tech sector is still relatively young, and we simply don’t yet know better.
The solution
The interesting thing is that I don’t think the revolutionary change will be within the software engineering discipline itself. The right engineering principles already exist, otherwise, a term like Tech Debt wouldn’t exist, so it’s a matter of applying them properly. This means that the change will be in the mindset of engineers and especially in the mindset of managers and non-technical stakeholders.
Nobody wants development to grind to a halt eventually, so it’s a matter of prioritising a sustainable development pace with meaningful output over quick wins. The average tech company is simply too young to realise the detrimental effect of quick wins. It worked because it was new. If long-term, meaningful output is the goal, it’s very obvious that better adhering to engineering principles is the way to go.
The future
Automated Testing and Code Reviews are so ingrained in the engineering discipline that you almost can’t imagine that software was ever written without it. I think sustainable software engineering practices that prevent tech debt from having a significant impact on the business will become similarly ingrained. Perhaps engineers in the future will see it like I see waterfall vs agile or automated testing. They will look back at the way software is being written now and ask, “How did engineers stay sane managing massive codebases with 100s or 1000s of contributors for decades?” and the answer will be “barely”.
I truly believe we can do better. I also believe we will do better. For me personally, because I care about Software Engineering as a discipline, but pretty software doesn’t make the world go round. The reason I believe we will do better is because tech-focused businesses will need it to survive in the long term. Once sustainable software engineering becomes a competitive advantage, everyone will follow suit.