Summary

Large codebases drive up development and maintenance costs by requiring more time to create and debug, and by creating longer learning curves for developers. When this cost is incurred while creating unneeded or unused code, it is waste because it doesn’t deliver value to the customer.

All aspects of software development—from requirements definition to design, implementation, and tests—contribute to codebase size. Minimizing the codebase size requires developers to be aware of the impact from each of these areas, and to look critically at anything that increases the amount of code.

Minimizing a codebase, whether it is a legacy system or a new development effort, is like a physical fitness program. First, you have to go on a diet to lose weight (eliminate unnecessary code); next, you have to hit the gym to get in shape (employ good coding practices); and finally, you have to maintain weight and fitness level (look critically at anything that has a chance of increasing the codebase).

Prioritized requirements are an important part of minimizing the codebase size, and they play a part in many other aspects of Lean and Agile software development.

It takes time and effort to instill the habits that help reduce the amount of code. Developers must learn new ways to approach writing code, and they will need to practice those techniques. Expect some resistance.

Get The Art of Lean Software Development now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.