About Sustainable Software Development
I try to explore some aspect around sustainable development applied to IT. At present, I see two ways of understanding this term.
Green IT: respect to the environment
This is the first thing I think of when I hear “sustainable development”: adopt a behavior that take care of the environment. We are not at the level of the infrastructure, that is the usual field when we speak about green IT. Here, I think about the way we program: the choice should be made across the algorithms and the patterns that do not increase so much the computer temperature and that consume less resources.
- Choose a low-consumption algorithm
- Have a behavior that conducts to respect the environment
- Choose a greener language implementation
The language and more specifically the way it is implemented (i.e. the way your source code is compiled and interpreted) has its importance in relation to green IT. One day, I have heard of a company that has abandoned PHP. Indeed, at this time, the way the PHP engine was implemented implied a high-rate in energy consumption.
But green IT drives us to difficult equations. Certain modifications in the code, in order to turn it to green code, can turn the other part of the code to high-rate in energy consumption. What are the good behavior that a developer should adopt in order to become a green developer? May we, one day, see a label for eco-software craftsman?
There is another aspect behind the “sustainable development” that can be represented by a question: How long will your code last? It is of the interest of a project to create a code that last in time. Not only for the developer himself but also for others. So, there is the question to become a perfect “software craftsman“.
- The code source is a document that describes how the software works. Thus, write your code so that any other sources of document (specifications, code comments, tests) become useless. By acting like this, any developer will not spent too many time to understand your code and it will not require heavy maintenance in order to evolve.
- Use of: best practices, design pattern, struggle against anti-pattern, some idioms. Do not use them without a preliminary reflexion, because a pattern can easily turned to a anti-pattern or an idiom can make your code unreadable.
Again, the software craftsmanship is a difficult exercise. On the one side, it requires a strong experience in software development. On the other side, more and more techniques or practices emerge in order to help you create a clean code. I think specifically about TDD, TDR, refactoring, and other practices. Furthermore, IT tools to analyze your code (Checkstyle, PMD, or Sonar in the Java world) help you to make progress in order to provide a better code.
Regardless on how “sustainable IT development” is understood, it requires experience and practice, because we have to think about a wide range of parameters that acts on how the resources are consumed or how the other developers will perceive our code. Nevertheless, there are tools to help us producing clean code and if you are confident in the future, tools will be created to help us producing green code.