What we get is shorter development time, better accuracy in estimations, less bugs. Peace of mind for both developers and managers.

  • unit testing
  • continuous integration
  • coding standards (including the use of linter)
  • refactoring
  • Test-Driven development
  • Automated Acceptance testing
  • Automation (usually means CI or something similar)
  • Continuous Deployment
  • Pair programming
  • Frequent commits
  • Frequent code-review
  • collective code ownership
  • Behavior-driven development
  • Sustainable pace

Books

Articles

Counter points

  • Clean-up is invisible to users, we need to add new features.
    • Bugs are visible. Especially bugs that return.
    • Security issue are even worse.
    • Clean-up will help us go faster.
  • We don't have time for clean-up.
    • Prevention a lot cheaper than cure. Both in terms of money, time, and bugs.

Steps

  • Introduce (unit)testing.
       
    • Introduce the practice with low-hanging fruits even if they don't provide a lot of value. Get the CI going!
    •  
    • Increase the modularity of the code.
    •  
    • Increase the testability of the code.
    •  
    • Use mocking in the meantime.

Tools

  • Mikogo for remote screen sharing