In a sentence:
Anything about your code and development environment that slows you down.
- unclear, unreadable code
- lack of
- test automation
- build automation
- deployment automation
- and anything else that could be automated but you do manually today
- duplicate code
- tangled architecture and unnecessarily complex dependencies
- slow, ineffective tools
- uncommitted code and long-lived branches (hides problems that will slow you down later)
- important technical documentation that is missing or out-of-date
- unnecessary technical documentation that is being maintained and kept up-to-date
- lack of test environments
- long build-test cycle and lack of continuous integration