Your code is your debt
You spend money, efforts and bug management to control your debt. Code doesn’t automatically generate revenue, user features and user satisfaction do. It doesn’t matter that you write 100 000 lines of code in 10 000 hours and complexity is 1 million (it, well, matters for technical guy) if those efforts doesn’t acquire new users or generate more revenue. It is like saying: I have borrowed 1 million dollars and spent all in this project. It sounds cool but it doesn’t do any benefit to the company. Even worse, it harms the company.
Inventory is what you produce but just sitting on some warehouse/storage and does not generate any money. It could be even worse if it costs you any money to store those things.
Like Joelonsoftware said: inventory can happen in each of the following software process, and they can have different results:
- Decision-Making Process: documentation, product backlog, feature ideas…
- Design Process: diagrams,
- Implementation Process
- Testing Process
- Debugging Process
- Deployment Process
Each of stage’s products can never be implemented, get ignored or become unrealistic the next time. Here, we don’t talk about the waterfall process, which could make it even tremendous. For example, the feature backlog that is written in hundreds of pages that 90% are not implemented. The bug database contains all the bugs, efforts to maintain them and understand them but only 10% of them get fixed after a long time.
As with any kinds of inventories, after a while, your products inside the inventory gets obsolete, and needs cleaning up so the new things can be added in. The obsolete inventories will cost you the efforts and time to create it, maintain it and get rid of it. It is the same for software engineer, the bugs that are no longer bugs (after lots of updates), the features documentation that are not compatible with the current products…
It is important for manager to understand about the similarity of the cost, the debt, the inventory and the revenue in a software engineering process. It is easy to measure engineer by how much code they write, but it is the same as measuring how much debt he brings to the team. Higher debt doesn’t mean higher revenue, so be careful.