The fundamental flaw in software accounting

You’ve just shipped a feature. The team rejoices, and management congratulates the team for making the deadline.

Sure, the team cut corners, but product is out, move on to next product.

But then defect reports start coming in.

In a typical org, after they get past customer (support|success), the reports will land with the product (manager|owner) who begins the rework of prioritizing the bug reports against new work.

Development will likely contribute to the discussion and sometimes take on fixing the defects, all rework, which is waste.

Do you measure this?

In basic accounting, you track assets and liabilities. In software accounting, we typically only track the assets.

You shipped code, great. You can’t build a business if you can’t ship. But are you also tracking the rework caused by the decisions made in the process of shipping that code?

Shortcuts taken today will cost money later if you want to keep working on that code base. For example, Ruby on Rails’s ActiveRecord can provide amazing shortcuts for getting things running quickly, but the standard doctrine on how to use it will inevitably lead to monster classes that everyone is afraid to change.

Bugs don’t just spring into being. Software, once committed, remains exactly as it is. There are no crappy code gremlins or demented elves that tinker with the code in your repositories. Every defect can be traced back to some moment or moments of human hands on keyboards. And this isn’t to say your developers are bad. There are systemic reasons why decisions are made.

It’s not just bugs either. How much time do your developers spend trying to figure out how to accomplish work items vs. accomplishing them? That friction exists because of past decisions.

If you just accept bugs and slowdowns as a reality that can’t be dealt with, you won’t track the cost of rework and slowdowns. If you don’t track their cost, you won’t perceive a problem. If you don’t perceive a problem, you can’t improve the situation. If you can’t improve the situation, you are consigned to forever fighting fires.

It doesn’t have to be that way.

(Major thank you to Scott Bellware for exposing me to this concept.)


Like this message? I send out a short email each day to help software development leaders build organizations the deliver value. Join us!


Get the book!

Ready to learn how to build an autonomous, event-sourced microservices-based system? Practical Microservices is the hands-on guidance you've been looking for.

Roll up your sleeves and get ready to build Video Tutorials, the next-gen web-based learning platform. You'll build it as a collection of loosely-coupled autonomous services, developing a message store interface along the way.

When you're done, you'll be ready to contribute to microservices-based projects.

In ebook or in print.