Refactoring podcast with Martin Fowler: dosage and context
A while back I listened to this conversation between Martin Fowler and Luca Rossi on the refactoring podcast.
Since then I made a note to write down the most important things I learned (or re-discovered), but always postponed until today I was able to make some time for it.
Here's my take on the two most important things in that one hour long conversation.
Dosage
The concept of dosage is very familiar and very important to me. I've already written about it, under the name quantity.
I appreciate how Martin Fowler was able to find a better (and fancier) name for it.
Context
Software engineering, being as elusive as it is as a proper engineering discipline, is perhaps one of the most studied and written about fields of engineering.
And yet, we struggle to come up with truly universal practices that work everywhere.
One way to understand why some things work sometimes and don't work or fail miserably other times is by considering the context that was present when the solution was applied.
To sum it up, instead of reaching for: problem -> solution, we should go: problem -> context -> solution.
instead of reaching for: problem -> solution, we should go: problem -> context -> solution
Most prescriptions in software engineering fail to account for context (because of hype or conference-driven-development). For example: you have a monolith? Rewrite it as microservices.
Wrong! The full advice, with context, would be: do you have a monolith, and are you also struggling to keep the cognitive load into human-sized bits, then you might consider a microservices architecture. Oh, and by the way, be careful in determining the cognitive load, as that is very subjective.
I've seen software delivery getting worse with continuous integration, and again that's because we did not consider the context when we reached our for the solution.