Software, structure, evolution?
The structure of systems and their evolution is an often overlooked aspect of a product/organization, but it can be terribly important even in the “malleable” field of software.In a working paper by MacCormack et al. we are able to see the structure of many software products and see how the “core” evolves over time.
These issues are especially pertinent to the context of software, given that legacy code is rarely re-written, but instead forms a platform upon which new systems are built. With such an approach, today’s developers bear the consequences of design decisions made long ago. Unfortunately, the first designers of a system often have different objectives from those that follow, especially if the system is successful and therefore long lasting. While early designers may place a premium on speed and performance, later designers may value reliability and maintainability. Rarely can all these objectives be met by the same design.Don’t forget such decisions can last for the life of the product! For example Windows still has some problems with non-English folder/file names, legacy of the old MSDOS days! For a further discussion in the realm of architecture read Brand’s wonderful “How buildings learn”.
