Paul McMahon argues that all code can be considered technical debt, emphasizing the importance of value over volume in software development.
Technical debt is compared to a financial loan: it can provide an initial boost in development speed at the cost of future efficiency. Just as loans come with the burden of interest, technical debt makes future development slower. McMahon stresses that while technical debt can be a strategic tool, it can also cripple development if it becomes excessive.
McMahon reflects on the allure of starting a project without technical debt, noting the rapid pace of feature development. However, as an application grows, so does its complexity, which invariably slows down development speed.
With maturity comes a network of 'code assumptions', where each new feature must align with existing ones. McMahon uses his experience with Doorkeeper to illustrate how adding seemingly simple features like attendance caps and waitlists can complicate development due to the underlying assumptions they build upon.
Some features may seem beneficial but can introduce more technical debt than value, using localization as an example. McMahon suggests that poorly executed, half-hearted attempts at localization can slow down development for little return, resulting in negative value.
McMahon challenges the notion that the act of writing code inherently adds value. Instead, the usefulness of the software to users is what truly matters, and developers should concentrate on implementing valuable features rather than writing code for its own sake.
Once a feature is established, it often remains due to reasons like the sunk cost fallacy and reluctance to upset customers, making the removal of features a rare occurrence.
McMahon endorses a minimalist approach to writing code, advocating for leveraging existing tools and features to fulfill needs while minimizing the introduction of new assumptions.
In closing, while recognizing code as necessary technical debt, developers are urged to defend their products against superfluous features and focus on creating truly valuable software.