This.I hijacked his comment: it's the maturity, skill, experience and moral of the team (read: human factor) that has the biggest influence on the state of the codebase.
Two things; first is related to the "law of the instrument" (Maslow quote)Could you guys elaborate on this... Or should a new thread be created?
Having mastered DI and IoC it now becones the defacto "hammer" for every problem, and nobody questions it. Like the Maslow quote, you can beat everything with a hammer, but fairly often it's absolutely the wrong tool."I suppose it is tempting, if the only tool you have is a hammer, to treat everything as if it were a nail."
Second is the "jenga" reference (also related to maturity and experience). Some teams hammer out code without ever writing a test; so inevitably someone ends up strapping on tests at the end... but when a codebase isn't approached with testability in mind, you inevitably end up having to break and redesign parts. Like jenga the more you tug, the more likely the whole construct is going to tumble.