#100DaysToOffload Difference Between Productivity And Efficiency

As I’m trying to figure out how to become more efficient, I need to figure out what that even means, especially because efficiency can be easily confused with productivity. So let’s have some term definitions:

  • Productivity measures how high the volume of production in a given time frame is
  • Efficiency measure the degree of avoidance of effort during production

So productivity is about how much you can do in a given time and efficiency is about how to avoid extra steps and still get the same job done.

Productivity can be a trap sometimes because it speeds us up to get more done, where a better way would be to do less without producing less output.

In programming, we have two types of work: analytical and implementation work. I think that in both cases there are ways to limit the amount of unnecessary effort.

If the work is analytical, the question is alway what do I need to know right now to make it work? Knowing a little too much about a given module without knowing it all, might make me want to change the code more than I need to. Instead, I should write down what I have learned in my notes system. “How to run the importer without downloading images” could be an example. I would want to know more than that, maybe also how to change the importer, so that it excepts a parameter to not having to monkey around in config files, but knowing where to go and what to comment out is enough and gets the job done.

If the work is implementational (is that a word? now it is!), then there are many ways to exert extra effort: I could create new classes, interfaces, services, methods, refactor unwieldy code, add parameter and return types, make a piece of code behave more according to the architecture, add missing tests, … the list is endless. So far I always looked for best practices within the company or outside the company if there was no consensus yet on how to do things. But best practices add up to become an endless list of what to do and how.

This imagined list of things to do when touching or creating code can have a cascading effect, because change begets more change.

I will have to keep my eyes open for things that I do that strictly speaking don’t need to be done to be a more effective programmer.

Contents