Jevons paradox of client resource consumption


When analysing the effects of James Watt’s steam engine on the consumption of coal in England in the 19th century, economist William Stanley Jevons discovered something counterintuitive. He noticed that overall coal consumption levels went up after wide-scale adoption of Watt’s engine, even though it was vastly more efficient than its predecessors.

Most economists at the time assumed that increased efficiency would result in a corresponding linear reduction of consumption. Even in the 19th century there were fears that fossil fuel reserves would soon be exhausted.

Jevons instead argued that improved fuel efficiency increased fuel use because it also resulted in an increase in demand. Improved fuel efficiency lowers overall cost, which allows for more opportunity in value creation, making it more likely that engines will be used, and so increasing overall use of coal-consuming engines.

Jevons paradox is a classic example of non-linear, counter-intuitive system feedback loop. And it doesn’t only apply to the economics of energy consumption. I’ve previously mentioned Tog’s Law of Commuting, where an improvement in commuting times results in an increase in the average distance commuters live from the centre of a city. This is essentially the same phenomenon.

I believe Jevons paradox is widely prevalent in computing too. I would go so far as to say that it can be used to explain the explosion in the volume of client-side JavaScript seen on modern websites.

Why are some modern web apps so slow and poorly performing if JavaScript engines have made such huge leaps in their own performance characteristics?

Improved device and engine performance has made it more viable for developers to make use of them for more complex logic, where previously computational complexity was heavily weighted to server infrastructure. Having the client efficiently execute code reduces the costs to the organisation providing the application.

But like coal reserves, the computational ‘reserves’ of a client device is finite. Even with improved resource efficiency, in many cases the demand for client resources has outpaced it.

Back in the world of energy consumption, some environmental economists have proposed that efficiency gains are combined with conservation policies to keep the cost of use the same, in order to counteract the Jevons paradox.

Thought exercise for the day: What might a JavaScript ‘conservation policy’ look like?

All the best,

– Jim

Receive emails like this in your inbox

I write about front-end engineering leadership every weekday.

Sign up now and get my Front-End Engineering Responsibilities Laundry List PDF for free.

You'll get regular emails about front-end development. Unsubscribe at any time.