I would like to share a short letter I sent to the .NetRocks show many years ago which they read out:
"I find that the two most coveted attributes in a programmer is the appreciation for simple elegant solutions and plain common sense.
It seems as though there are too many of us that enjoy making life unnecessarily complicated within the systems we write/design.
It’s easy to complicate things nowadays with the wide array of abstraction mechanisms we have at our disposal. I always respect programmers/architects that can come up with a simple and scalable solutions. This inevitably pushes the system's complexity into the business rules where it belongs.
Unfortunately, I still find that a lot of programmers/architects make life unnecessarily complicated for the sake of job security. I feel that the one of the most overlooked issues by non-technical/technical management is the responsibility of the programmer (on top of getting the work done on time and within budget) to write self documenting and maintainable code."
END
“I value simplicity over everything; I always look for simplicity.” - Quote from Anders Hejlsberg
Opportunities to reduce technical debt (or delete code) occur when I can identify the following:
a) Code that has been is duplicated, not properly encapsulated into re-usable units.
b) Areas where the wheel has been re-invented. An API or set of tools/libraries already existed that do the job in a more elegant (and probably more efficient) manner.
c) Solutions where there are unnecessary abstractions or layers of indirection.
I do believe that if a software solution is working correctly and extensibility is not an immediate requirement there is no reason to refactor the code. "If it works, don't change it."