Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

I think TDD shines in combination with a layered architecture, the combination of both increases “changeability” of the project. Layered architecture and DI makes easy and possible to test any layer. And the test become a live documentation of how to use the code you have written.

Refactoring becomes then easy although sometimes tedious, but provides a degree of confidence that your change works with all posible ways to use the code.

Its also healthy to break the rules if time pressure, but keeping a registry of technical debt, helps keeping the morale up. There is nothing more demoralizing that working on an environment where you can’t estimate because who knows what will be broken, it’s hard to make improvements because everything is entangled, and there is no time to invest in a rewrite. This usually ends up with very talent people quitting if they are unable to fix it.



Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: