Consider your software broken if:
- You're the only one to understand how it works
- You can't remember what a function does just by reading its name
- You're not using a version control system
- You're not using continuous integration
- You're not continuously monitoring the quality of your code
- You have little or no unit tests
- You have little or no integration tests
- You don't use an issue tracker
- You're not continuously monitoring the coverage of your code
- Your code coverage is less than 99%
- Your documentation if out-of-date
- You spend less than 10% of active development time on refactoring
- You have one line or more of bad-smelling code
- You have one line or more of hacks
- You don't have a clear release cycle
- You don't set milestones and stick to them
- You haven't worked on it during the last six months
- You have no written documentation about how it works
- You can't remember how it works after two weeks of vacation
- You are the only developer
- You are the only user
- You don't use it