Sustainable Software Development refers to a set of principles and practices which enables a team to maintain an optimal speed in development indefinitely for the sustainability of the development team and ergo, the company.The more successful a software development company is, the more demand it has on its development team for new features etc. Unfortunately, the increasing pressure can lead the development team to lose long term focus on development of both new features and issues creating a vicious circle making the systems fragile with time. This is when the team adapts to a “code then fix” mentality, becomes myopic in fixing defects and resolves to temporary patches which are never later addressed resulting in Unsustainable Software Development.
In unsustainable development environments, teams are essentially reactive to changes. Sustainable Software Development is the opposite to this definition, where teams are proactive to changes. Despite the increasing pressure, development teams will do the work to the highest value to customers, highest quality and are reliable. They will be in a virtuous cycle where they continuously improve themselves to aid them with the increasing demands. They adapt a set of principles and practices which allows them to increase their efficiency in response to the growing pressures allowing them to maintain a consistent pace in the long run.
4 main factors in maintaining sustainable software development are;
- Trying to make our code as less complex as possible
- Design and development in ‘configuration’ to ensure it’s able and receptive towards change with low cost
- Periodically revisit development strategies to ensure its best in industry
- Continuously monitor the quality, stability and performance of the software
Teams should develop software at the optimal development pace (not fastest) by doing proper functional and technical design and review prior to actual coding. Sustainable Development reflects efficiency and the balance between short- and long-term needs – when designing features for customers, the right amount of work required to fully meet the need of the customer in the timeframe required should be done, but thinking and designing the features from a long-term standard product perspective where any remaining work goes in the development roadmap so that it’s never missed but progressively worked on.
By adapting to standard frameworks and a configurable approach when designing and developing features, the cost of change is kept low allowing the quick and receptive adaption to change in the future.