Title : Dealing with technical debt
Link : Dealing with technical debt
Dealing with technical debt
While I've found framing software development and maintenance decisions in terms of technical debt to be useful for quite some time, Steve's post made me realise that the analogy of technical to financial debt is richer and more accurate that I realised. In particular, these two main points were really driven home:
- Technical debt must be serviced. In other words, the main characteristic of what makes something a technical debt is that it incurs future work just to keep things running. So, just like real debt, technical debt is about taking from the future to satisfy the present. Taking on a technical debt may increase your development velocity now, but at the direct cost of slowing your future velocity until the debt is cleared or you declare bankruptcy (abandon the system in question). Anybody who has inherited a project that is impossible to maintain will intuitively understand how this kills the possibility of meaningful further development until a major refactoring/rewrite is undertaken to "clear the debt".
- There are different types of technical debt, some of them 'good' and some of them 'bad'. With financial debt, 'good' debt is generally taken on either in order to invest in a productive and appreciating asset, or to invest in increasing productive capacity (e.g. borrowing to build a business). 'Bad' debt is debt incurred on depreciating or non-productive consumption (e.g. borrowing to buy shoes). Similarly, 'good' technical debt might be necessary to allow certain startup projects a chance to emerge into the light, whereas 'bad' technical debt is simply a cycle of slowing productivity and decay caused by poor planning and discipline. For example, taking on technical debt in dribs and drabs through sloppy development practices is nearly always a bad idea. By contrast, taking certain architectural shortcuts that allow a faster release in return for having to refactor several years down the track may be tactically wise.
With this fuller understanding of the mechanics of technical tradeoffs, I feel it should be possible to both make better decisions (is it more important to get the product launched this quarter even though it means that two years down the line, it will be less developed than if we'd taken our time?) and to better quantify and communicate the effects of that debt to others, especially those of a less technical bent. Understanding debt and its tradeoffs has always been central to keeping a business (or one's own finances) on a good trajectory; using similar thinking can hopefully help people keep their technical project on the right track too.
Such is the article Dealing with technical debt
That's an article Dealing with technical debt this time, hopefully can benefit for you all. okay, see you in other article posting.
You are now reading the article Dealing with technical debt with the link address https://wcest.blogspot.com/2013/04/dealing-with-technical-debt.html