Computational vs Economic Efficiency
Efficiency is a concept in both economics and programming. This article will compare and contrast these two views of efficiency.
Efficient coding can be described in 3 ways. These 3 descriptions often but not always imply essentially the same implementation:
- Efficient code is DRY, not duplicative. Efficient code is reusable, modular, and generalized, not overly specified.
- Efficient code is concisely written and small in character or byte size. Efficient code is written on a need to know basis, presenting the minimal information needed to accomplish requested functionality.
- Efficient code executes as quickly as possible with minimal resource usage and requirements.
There are many cases, however, where efficient coding is not economically efficient. In these cases the code may be optimized from a technical resource usage point of view but it is not optimized from the point of view of maximizing profitability on the market for supply, demand, or other reasons. Examples include:
- When code is technically optimized it may not be readable. Such is the case with minified code, for example. This can create supply problems of productivity. DAMP code is not technically efficient but it may be economically ideal because it improves productivity.
- Convenience coding or hacking can allow for rapid production with suboptimal code. Sometimes getting to market ASAP matters more than optimized coding from a business perspective.
- User experience sometimes demands duplication. In Microsoft Word, for example, there are at least 3 ways to turn text bold. You can use control + b, you can click the button in the ribbon, or you can trigger a listener function from a plugin. While this creates a degree of technical duplication it is economically efficient because it improves demand for Microsoft Word by improving the product from a usability standpoint.
- Sometimes it is good to organize a program in a way that is loosely coupled, decentralized, and implements separation of concerns. These approaches create redundancy in order to reduce the likelihood and impact of system failure or improve security. For example, the decentralized operation of the bitcoin blockchain involves many people downloading and duplicating the same blockchain.
- Ensuring maximum environmental compatibility may involve duplication. For example, you might have to write a particular function a number of times in order for it to be compatible with Firefox, IE, older versions of IE, Linux, Mac, Windows, desktops, tablets, cell phones, and so on.
Agile methods do a solid job of maximizing demand by frequently retargeting developer tasks to ensure production code is meeting consumer preferences.
Agile methods are ideally coupled with a development style that maximizes development speed toward whatever product customers are demanding and excludes code or methods that doesn't service that objective.