The rationale was that the abstraction was necessary to make things easier to replace if they weren't needed but it was a false assertion on two levels (and it almost always is):
- that kind of replacement is unlikely to happen in the short/mid-term, and if it does it won't be in a way you anticipated.
- the simple version could be deleted and rewritten in less time than it would take to fix your highly abstracted/decoupled/meticulously architected integration
Of course, simple isn't easy and this approach to abstraction (where you take classes/methods longer than x lines and extract them into more classes and methods) is very easy to achieve... at a great cost.
> I hate code, and I want as little of it as possible in our product.
I know how I'll be spending a few hours in the next few days. Thank you for reminding me of his talk!