Technical debt - was Re: datetime seems to be broken WRT timezones (even when you add them)

Rhodri James rhodri at kynesim.co.uk
Wed Feb 12 08:16:03 EST 2020


On 12/02/2020 00:53, Python wrote:
> In pretty much every job I've ever worked at, funding work (e.g. with
> humans to do it) with exactly and precisely the resources required is
> basically impossible, and management prefers to underfund the work
> than to overfund it, for cost-savings reasons.  This basically means
> that any non-trivial work you do inevitably will become technical debt

s/become/accrue/.  The work itself isn't the debt, but its 
sub-optimality creates debt (or future headaches, if you prefer to think 
of it that way).

> IMMEDIATELY, because you will not be given the time to do the job
> completely in the first place, there will inevitably be bugs which are
> minor enough to ignore indefinitely, and most likely, in order to meet
> arbitrary-but-nevertheless-real time constraints you will find
> yourself obliged to take shortcuts.  So conceptually "costs" may be
> different from "debt" but in practice, you never have one without the
> other, and "debt" is really just "costs" you haven't paid yet.

It's that last bit, "you haven't paid yet", that's the important part. 
Project managers and accountants alike are very much in favour of 
putting off paying for things if they can.  Sometimes they can be 
persuaded that the interest on the debt (the extra cost that the code 
structure imposes on fixing bugs) is too much, and then you get the 
opportunity to refactor and reduce the overall debt (at a cost, 
obviously) and the interest you will pay in the future.

Sometimes, and this is the bit that bean counters really like, you can 
get away without paying the debt by ditching the project entirely before 
the debt is paid off.  If you don't want to piss your customers off you 
need to pay the cost of a replacement project, which will accrue its own 
technical debt...

-- 
Rhodri James *-* Kynesim Ltd


More information about the Python-list mailing list