Mario De’Cristofano is a Head of IT for an EV company in the West Midlands called Petalite, is also a Digital consultant for several organisations in the Midlands & runs a delivery podcast called the Delivery Manager Daily about Agile & programme management. Having previously worked in management consultancy across the UK, Europe & the US for brands such as UK Gov, National Highways, the Home Retail Group, & Roku, helping software delivery teams do what they do faster better & smarter. Mario’s been responsible for leading & delivering UK Public sector digital services, scaling development teams & now focuses on helping organisations deliver & execute their IT & Software strategies.
Every element of our lives is surrounded by technology & the software that often underpins it. From our home appliances, and personal electronics to the public services we use daily. It can be painstakingly frustrating when these services don’t work or are glitchy. In an era when the bar of entry to software engineering is very low & tools like Microsoft’s Power Platform & even the use of Ai can be used by anyone to create solid functional software foundations, we are still at the mercy of buggy websites, payment terminals which don’t work & don’t ask me about the vending machine in the gym that refuses to take payment!
Part of my career is speaking to organisations about why software projects fail. Our industry is littered with the well-known ones, from public sector projects haemorrhaging cash to tech-heavy companies being sued out of existence for data breaches, functionality mishaps & much more.
Articles such as Software Disenchantment, a post by Nikita Prokopov, or even this great Medium article by Preslav Rachev about the same topic, – there’s definitely an agreed consensus that the software we use becomes ever bloated, complex & prone to failure. I work as a Head of IT now & I’m regularly grappling with Operating system updates occupying gigabytes of size, it’s the same with mobile phone updates. I play Xbox & I’m always staggered at the latest game release or update payload being over 100GB!
So, is software getting worse?
I’ve also worked leading development teams in the public & private sectors & I’ve come up with five reasons why I think software is getting worse in 2024.
- Not enough competent & experienced developers
In tech consultancy firms, there’s a definite route into junior software engineering by way of academies & internship programmes. Well-intended & aimed to fill the curriculum gap in schools & universities, they can be a great foray into a career in Software engineering for many. However, what I see happen is these young inexperienced teams are often lifted & shifted into huge projects due to a need to ‘fill seats’ & software is churned out in very poor form. Little is done to underpin these ‘Agile’ teams with experience & leadership & you in turn start building technical debt from the first line of code that’s written. I’ve worked in dozens of Scrum teams where my day-to-day hasn’t been to help deliver good code, it’s been to appease customers & clients as to why their software isn’t as expected, or why an Engineer isn’t getting the pay they felt they deserved or that we don’t have time to build in improvement, just ship the code!
- Competent & experienced developers are spread too thin
In all the teams I’ve led, managed & worked with, I’ve never met a senior developer who is fully happy in their work. They are often at the mercy of firefighting problems caused by junior Scrum teams (see 1 above), ill-advised leadership decisions, & asked to do their own projects plus support juniors plus write functioning code quickly. Software engineering requires clear minds & space to create, develop & test, often developers don’t get this luxury. They are simply thrown into organisational fires & expected to make code work. This feature has a bug? Ship it & fix it in the next sprint.
- Zero pride in work
As a direct consequence of the first two points above, it’s very difficult to ask over-stretched individuals to have pride in their code, when they are expected to often develop in under-tooled & under-resourced environments. There’s very little opportunity for code to be improved, get made better, or refactored to be more efficient when all the focus is on getting it ‘out the door’ & to start ‘earning profit’. I’ve seen many exhausted & disillusioned development teams be at the heart of mission-critical infrastructure we rely on every day, struggling with all the things I’m mentioning here. I’m not talking about start-up minimum viable products where there’s some acceptance in a few bugs here or there, but I’m talking about services that drive the public sector, or banking or healthcare for example.
- Software development is under-valued
As everything & everyone is expected to become ‘fungible, ‘t-shaped’ & ‘cross-purpose’ in an ever-more difficult labour market, software engineering is often seen as an expensive & over-done necessity. Management teams & exec boards are now able to cobble something together in AI & then have a low-cost junior developer to ‘polish & ship it’. I’ve seen so many times organisations skip the planning & understanding of the problem, they just mock up their own vanity project & expect juniors to make it happen.
Further, consumer expectations are hit & miss, people want stuff, & they want it now & aren’t always too fussed on quality. Heck, they won’t want to pay for it anyway, look at this recent distribution study of free versus paid for software in the Android market.
Good quality engineering is expensive, (& so it should be) with firms reticent to want to pay top dollar for top quality, always looking for the cheaper option & the quickest route to market. This economic choice trickles down into the actual product itself & we therefore have a market littered with bad software products.
- Software engineers have too much leverage
Something often not talked about so much is the power software engineers have. They can determine work hours, and technology stacks, hold out for higher salaries, and go fully remote. Ask any Agile Scrum lead, engineers with the right mindset can be an exceptional force for good, but teams using their power nefariously can cause huge damage to not only an organisation but an industry. I’ve worked on projects crippled by disenfranchised software engineers, & I started my career in IT un-coupling organisations from the tight hold of them.
So, what needs to happen?
In an ever-near future world where everyone is writing software we have to be careful, we don’t create a prison of faulty badly designed software that further imprisons us in a technology hell. Developing software to solve problems without a deep understanding of the context of the problem in the first place, or thinking we know what to solve before we’ve invested in the science of discovery will only lead to huge cost overruns, more failed IT projects & more frustrated users. Organisations need to think about the problem, invest more in teams & environments & pay more credence to the ‘art’ of good software engineering.