Trivial Things and Accounting

‹ Bob Chase
April 2023

An axiom

Every non-trivial software problem is an accounting problem.

Trivia

By trivial I don't mean inconsequential or worthless, I mean easy.

And by easy I don't mean simple or obvious, I mean that once you've written a function or library to do the trivial thing, you're done with the thing.

I worked at a shop where we calculated a score for the performance of a cellular network. The score calculation was our secret sauce, it was our intellectual property and it was trivial. It required significant knowledge and context to conceptualize and implement, but once implemented it was no longer the The hard part was that we had hundreds of millions of measurements to which we applied Bayesian filters, linear/temporal proximity averaging and kriging before we even got to our secret sauce. Then we had to take the output from those calculations and perform additional steps in order to present meaningful views and actionable recommendations for our clients. of the problem.

Accounting

By accounting I really mean keeping track of things.

If you have a calculation to perform one time, then you will primarily focus on making sure that the calculation you perform is the calculation you intended to perform. Then you're done. But if you have to perform that calculation a billion times, then you will primarily focus on juggling those billions of inputs and outputs. The calculation becomes trivial in light of all the things that you have to keep track of—in light of all the accounting.

A Reformulation

Another way to make my case is to say:

The hard things in software development are often the management of data and management of Not as catchy as the axiom, right?

We like to focus on the shiny parts of our problems which can end up being the trivial things. Meanwhile, the time and effort and resources will inevitably be devoted to keeping track of all the stuff.

Do yourself a favor, get good at accounting.