The topic of essential versus accidental complexity goes back to ancient Greece in a classification from Aristotle. But we can go just 30 years back instead of 3000 to find it well illustrated in software development, by Fred Brooks, a Turing award winner. In his 1987 essay “No Silver Bullet” he introduces two concepts, essential complexity and accidental complexity. Essential complexity is inherent to the problem the software needs to solve and cannot be removed.
There is something about having a long experience in this industry that is of high value to us because we get to witness how different technologies are born, going through a hype cycle, being adopted in very specific solutions or getting wider adoption or in some cases just being forgotten. For customers it may be a daunting task to decide where to invest. So many new technologies simply claim to solve world hunger. In general it is rare that a technology becomes universal across all vendors. TCP/IP can claim that, for languages C/C++ and Java have had success, for operating systems, is Linux the standard now? But what else? When it comes to programming for example, not long ago, multi-threading was the common way to scale an application. Then BigData proved that “scale out” may be a better way to address massive scale for data access. I think we knew this already in our NonStop world but the industry didn’t.