Why You Should Care about Efficiency in Software Development
Posted on Fri, May 21, 2010
"Software people don't want to be measured," a friend recently told me. He added that, when it comes to software development, up till not, "efficiency wasn't talked about."
Indeed, when it is talked about, it is is often in the context of "the wrong way do go about things." For example, in this blog post on Agile Development, Mendelt Siebenga writes, "Efficiency is easy to measure and easy to manage. That's why it gets a lot of attention but by focusing exclusively on efficiency effectiveness suffers."
He goes on to argue that sacrificing efficiency in the name of effectiveness "will often turn out to be the right choice." Now, while I agree that no amount of efficiency will make ineffective practices effective, I don't believe that we can afford to choose between one or the other.
On the contrary, I believe that our methods, Agile or otherwise, need to be BOTH effective AND efficient. Moreover, I think that a premium falls on efficiency for several reasons.
1. Speed Matters
Competition in the software industry continues to be fierce and thanks in particular to innovations in the SaaS space, speed to market is becoming a major factor. Given the rapidity with which software developers can get their applications to customers via the "as-a-service" model, time lost during the development process, either due to ineffeciency or ineffectiveness (registered by defects in the code, for example), is essentially revenue lost.
2. In the Cloud, You Pay for What You Use
While speed of deployment is certainly one advantage offered by the cloud, people are even more enamored by the cost savings it offers. Paying for compute time as a kind of utility allows you to synch your computing needs and the money you are paying to meet them, thus eliminating the days of major capital investment and the scramble to make it back via optimized usage.
However, as Alex Handy pointed out recently, "Bad Code=High Bills." Handy goes on to say that, because code which runs inefficiently and thus takes up more CPU time actually costs you more money than properly optimized code, "The cloud can give you a direct line from your code to your dollars."
Of course, that line ultimately leads back to how efficiently, or not, you produced the code in the first place.
3. You Can Work More Efficiently, So Why Not?
The biggest reason to think about efficiency in software development, I believe, is the simple fact that we can actually do things more efficiently. Take test automation as an example. Technical methodologies available and in use right now can bring about vast reductions in testing time without compromising quality. Similar examples can be found at every stage and level of the development eco-system.
The real question becomes: If there is a way to work more efficiently, is there any reason not to?
Image source: Royal New Zealand Navy.