Get Free Consultancy

Strategies for reducing the environmental footprint of software development were discussed at QCon London. Holly Cummins emphasized that improving algorithm efficiency can decrease energy use, which contributes to sustainability. She also suggested that turning off systems when not in use can significantly reduce environmental impact.

Key Factors in Sustainable Software Design

Cummins outlined that a sustainable, high-performance system should be optimized for low memory usage, high throughput, minimal networking, and elastic scaling—qualities already sought after in software design. She highlighted that hardware production impacts the environment through raw materials and the energy required for manufacturing. As hardware reaches its end of life, it contributes to e-waste, which contains non-renewable resources like copper, platinum, and cobalt. To tackle this, the primary solution is to reduce the creation of e-waste by making software more efficient.

Reducing Waste Through Software Design

Many software systems are based on outdated assumptions. Updating these assumptions can improve performance, reduce costs, and save energy. For example, Java frameworks often rely on reflection, a technique that dynamically updates application behavior, but modern applications may not need this flexibility. By updating these design choices, developers can reduce unnecessary complexity and waste.

Another area to reduce waste is by switching off systems when they are not needed. Many organizations leave systems running unnecessarily, such as batch jobs over weekends or staging systems overnight. Although some developers may be hesitant due to past experiences where systems malfunctioned after being turned off, Cummins argued that the real risk is in leaving systems on when not in use.

Addressing Boilerplate Code

Boilerplate code—repetitive code present in most applications—can be a sign of inefficient API or language design. Rather than relying on AI to generate this code, the solution lies in designing more expressive APIs that eliminate the need for redundant coding, saving time and reducing waste.

The Productivity Paradox

Cummins also discussed how working less can actually improve productivity. Citing historical examples like Henry Ford’s shift to a 40-hour workweek, she pointed out that shorter work hours can lead to higher revenue and reduced attrition rates. Studies show that time off can stimulate creativity and problem-solving by activating the brain’s default mode network, which is why people often come up with ideas when they’re not actively working.

Jevon’s Paradox and Its Inverse

Cummins referenced Jevon’s Paradox, which suggests that increasing capacity leads to greater demand, thereby not reducing overall congestion or time lost. To counter this, she proposed an “inverse Jevon’s maneuver,” where working fewer hours leads to lower demands on time, allowing for more significant achievements despite reduced work hours.

Solutions for Software Efficiency

To eliminate software waste, Cummins recommended using frameworks like Quarkus, which optimize applications by moving processing to build time instead of runtime. This reduces the memory footprint and improves performance. Additionally, using smaller, more efficient AI models can yield better results with lower energy and cost compared to larger models. For complex problems, combining smaller models with orchestration can also be effective.

Building Systems with a Smaller Environmental Footprint

To minimize environmental impact, Cummins suggested designing systems with the ability to easily turn them on and off, similar to the simplicity of flipping a light switch. This can be achieved with infrastructure as code and resilient systems, which support automation for turning systems off when not needed. Cummins called this approach “LightSwitchOps.” She shared examples like a Belgian school saving €12,000 annually by turning off computers overnight and a US company reducing AWS bills by 30% by stopping instances after hours. Pre-built solutions like Daily Clean provide a simple interface for scheduling these power-saving actions.

In conclusion, reducing software waste involves not only improving software performance but also considering broader sustainability practices in system design, code efficiency, and resource management.

    Leave a Reply

    Your email address will not be published. Required fields are marked *