Technical debt - was Re: datetime seems to be broken WRT timezones (even when you add them)
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
Rhodri James *-* Kynesim Ltd