News for hackers. Stuff that matters.
Re:A Taxonomy of Technical Debt by theptip on Wednesday April 11, 2018 @03:28PM (#16814624)
I found contagion to be a great clarifying concept too; it's something that I've been looking at in my codebase as the team expands.

My gut feel is that it's not necessarily about what you write in the first place, but what you refactor -- sometimes you can get away with a gradual replacement strategy (like std::string => AString from the article), but if the original pattern is contagious and bad, then you might have to take a more aggressive one-shot refactoring approach.

I've definitely seen this where a localized refactor is made to try to find a better way of doing something, we decide that we like the new way, and then don't find the time to replace the rest of the usages, resulting in a confusing state of affairs where you need to know which is the "blessed"/"correct" way of doing things.

I think that "contagion" is a good lens to use when assessing what the refactoring strategy should be for a given change to the codebase.

Re:A Taxonomy of Technical Debt by e28eta on Thursday April 12, 2018 @01:48AM (#16818345)
I really enjoyed the Lava Layer antipattern for incremental refactors that never complete. Having learned to recognize it, I think I'm more aware of the cost/benefit of introducing a new pattern, even if it's better in some way.

http://mikehadlow.blogspot.com/2014/12/the-lava-layer-anti-p...

Re:A Taxonomy of Technical Debt by tetha on Friday April 13, 2018 @01:18PM (#16831963)
That article has changed my behavior in some places as well. Sometimes it's indeed better to sit down and replace the entire old solution, instead of going incrementally. It's a bigger immediate pain, but less following pain.