Sustainable Software Development: a little insight in our model
Because our software is meant to support our clients over the long-term we need a sustainable way of developing and maintaining software. Here we describe the method we use at the SA-team to develop sustainably.
Laws of software evolution
From the laws of software evolution by Lehman  we know software goes through continuous adaptions which can be best described as evolution. Creating software is not enough, nor is it the most challenging part, the continuous adaptations to ever-changing clients is the main challenge of our software.
Instead of building for the short-term and hoping for the best long-term we chose to embrace the responsibility we have in evolving our software long-term. We know our clients will change, we know regulation will change, we know the environment they operate in will change and we use that knowledge today by building software for the long-term. For us there is only a single way to create software and that is by creating it in a way that embraces change, a foundation that allows the software to evolve over time.
More than just feature development
Embracing change requires more than just developing features, it requires more than just developing features in a sustainable way. To reflect everything it requires we created a model which encompasses all the vital parts we believe are necessary to embrace change:
- Continuously improve the team and people working on the software
- Provide a sustainable organization that fosters continuous improvement, scales well and provides sufficient capacity
- Continuously improve the functional parts of a product, what is great functionality today will not be considered great a few years from now. Greatness requires constant improvement.
- Continuously improve the code of a product, by evolving the architecture over time to better reflect the changing product and by continuously refactoring we make sure adaptations remain cheap
- Sustainable feature development by using minimal increments (minimal viable product) and using expert client-knowledge through our stakeholders
All elements combined provide a model that allows us to evolve software and to embrace change.
The model can be summarized visually in the following way:
It is important to note that removing any building block leads to crumbling of the whole structure after which long-term happiness of clients suffers. Another key here is that the natural focus of software developers and software development teams is to focus entirely on feature development, which is insufficient to achieve long-term happy clients. Our software development teams are responsible for more than just feature development, they are responsible for long-term happy clients.
Abiding by the laws of software evolution and embracing change is not easy, but we have developed a method that works for us. The main insight is to make our team responsible for long-term happy clients and everything that it entails and not just feature development.
 M. Lehman, “Programs, Life Cycles, and Laws of,” Proceedings of the IEEE, pp. 1060–1076, 1980.