brownfield kintsugi  

Kintsugi is Japanese for “golden joinery”. An art of repairing broken pottery with usually golden glue of sorts. The idea is that the resulting ornament is better of after the repair. It becomes one of a kind. It has a story. I can imagine someone breaking shit on purpose.

Software is shipped with functionalities and features assumed necessary. Rarely is one shipped without bugs. Software adapting to trends in the future is rather impossible to make. So it gets broken, becomes outdated, reveals weird and unexpected edge cases. It is then patched up with hotfixes and paskofixes.

These fixes, they can be golden, made of chewing gum, or of the dark essence towards which brownfield sometimes hints.

Yes, this is a far fetched and silly analogy, but what if age old software was more treated as like kintsugified pottery? Most software contain heaps of undocumented features and fixes made during it’s lifetime. Sometimes it is too brittle to continue with. It cannot handle modernisation, it would just break if tried.

But the software still contains a wealth of information, and can be useful in the greenfield successor project. It is a reference. A source of inspiration and insight. A treasure deserving a pedestal, a glass cabinet, a marveling audience.

If not too brittle, a refactoring replaces the old pieces with newer ones, little by little. The better fixes are imitated, whereas the paskofixes are replaced with shining new parts. It’s a slow progress ending up with a mix of kintsugi and shine. A safer, though sometimes costlier, approach. When brittleness cannot be isolated to any particular area, when the refactoring is impossible to start from any clear feature, perhaps the project is better of contained somewhere where it can be consulted but does not cause any more trouble to the users and developers wading the brownest of fields.

At this point, even the tangled web of gum and porcelain floating on a sea of excrement has some hidden jewel there somewhere. It’s just too cumbersome to extract. The unindented jewel then appears in the form of horror, comedy and a different kind of marvel. The unimaginable path taken to reach an unthinkable end result.


Now read this

programming, slow

Software development is generally considered a thinking person’s activity. Word thinking usually implies deliberate pondering and careful reasoning. However, there’s a clear-cut difference between thinking fast and slow (coined Systems 1... Continue →