We try to write the best code possible, simplify future maintenance, optimize for code reuse, and apply best practices and principles to help us achieve this.
However, what if this can serve as a double-edged sword?
In this talk, we'll analyze different ways and look at various examples on how through either under-use or over-use (or mis-use) of certain principles, we can inadvertantly introduce enough error surfaces, unintended complexity, or accidental coupling - that the only hope for a fix is a rewrite.