I don’t have empirical evidence that enterprise software is continuing to become more complex and expensive despite advances in software engineering such as Agile Methods and core technologies such as cloud and AI. Nevertheless, I think that all of us would agree that this is the case.
There are multiple reasons for this but one of them is that the practice of software engineering has failed to improve the quality and efficiency of software development and maintenance. I propose that one reason for this is that the discipline we call software engineering is really a collection of proven practices and fads and practitioners are not clear which is which. I was educated as an engineer and I understand that engineering is science-based. By that I mean that we learned a practice based upon rules that are derived from theories that have been tested and proven. We don’t design a building based upon someone writing a book with their ideas. But in developing software we are happy to read someone’s opinions and merrily adopt them. Worse, when engineers apply their rules they do so in ways that are standard, proven and verifiable. When we pick up the latest fad we get to decide what it really means, how to interpret it, and how to apply it.
There is a bias in the business computing world, that I perceive against “academic solutions”. We want to be practical and I’m not arguing that harvesting from past experiences is not a valid approach to improving software engineering.
I think that we have to embrace techniques, approaches and tools that are based upon sound, theories supported by valid evidence. We should stop looking for new variations and alternatives at every turn and focus on learning how to apply and optimize a selected approach.
I will be focusing some future thoughts on ways to do this.