The Blog Ship Software onTime! presents rules for being a green software engineer.
Then I got to thinking, as software engineers, what’s our responsibility for being green? I did a couple of searches and ended up with nothing. The general view appears to be that software developers are automatically green. After all, how could software not be green? It’s just a bunch of bits, right? Software hardly has an environmental impact, or so is the consensus. Can software be any more green than it already is?
As I thought more about the subject, I realized that in fact there is a huge variance in software greenliness (new word?). The notion of green has always existed in software development under a different name: “Simple!” Yes, simple, is the word we have used to describe the most green software in our industry and some of the most successful software products of all time have been the greenest solutions. I’ll get to some examples in a minute.
I started writing a long response, but I knew I was missing the point. So, after a few days I was able to simplify the issue.
Assumptions are made in what is considered efficient software, the problem almost all these assumptions run open loop. There are no closed loops to measure how accurate the design assumptions were once the software has been deployed. Bringing real time feedback to the developers on how well their code runs and how green it is in production is what will change behavior.
Some companies have started to expose the power consumption of applications in the data center to developers. You can do all the testing you want in development, but until deployment you don't know what really is happening. Most developers have no idea on the costs to provision more power let alone how much power costs.
The call to action for the devolper is to add application instrumentation which allows operations to determine the amount of power used by an application components and/or transactions. Few architects are thinking at this level, but I am finding a few who are.