Field: software development
A technical debt is anything that slows down either performance and development.
It could be:
- memory leaks
- zombie routines
- variable/function/type/endpoints misnomer
- out of date comments
- unhandled errors
- technological goldplates
- readability-hindering and overly-strict conventions
- non-forward compatibility
- unnecessary side effects / mutability
- god objects
- improper architecture
- unclear separation of concern
- flow dead-ends
- non-scalable storage access strategy
- unused data created in memory (seriously, this is annoying. Imagine reading codes like these like this:
fn renderSomeHeavyStuff(errorKind: string) {
let renderables = {
"kindA": someHeavyProcedureA(),
"kindB": someHeavyProcedureB(),
"kindC": someHeavyProcedureC(),
}
return renderables[errorKind]
}
)
- structure written imperatively
- stories written declaratively
- premature abstraction
- leaky abstraction
- overprotective abstraction
- over-complex resource endpoint
- under-complex procedure endpoint