I started when productivity was measured in CLOCs, before C++ went ANSI. Today vs. then is so night and day, I wonder if the OP has any real sense of the big picture.
- Writing a line of code is done as a last resort when all attempts to avoid it have failed. (This comes from starting as a business, not software, consultant).
- Legacy code that has been debugged is almost always better than throwing out all of that QA. Wrap it and refactor it only as a response to bug report / enhancement + TDD.
- TDD, and the act of making software testable is far more valuable than the tests themselves. In my experience, regressions are few in maintainable testable code because it's maintainable and testable, not because of the tests themselves.
- Declarative almost always is better than imperative. See point #1.