I have recently joined a small software development team that has 1 product with multiple external customers. There is no specific project management methodology or framework being used, so development is rather ad-hoc. From what I understand, there is an ongoing challenge in that there has been a pattern of each release exposing bugs that were not caught during development and the release must then be rolled back to fix the bugs before reissuing the release again. As a result, the team distrusts its own releases, and delays its releases to avoid this pain.
Currently, there is no dedicated QA or Testing person, but I think that is not necessarily a critical problem as while it would be ideal to have a primary tester, Agile teams should strive to be cross-functional. However the developers have been testing and approving their own code (I know...)
I want to create a prioritised list of quality practices that should be implemented to improve this situation. In priority order, what are the most important quality practices to address, can you give a prioritised list of what you would address first.
The most immediate thing on my mind is to:
- Stop Developers from approving the testing of their own code.
- Introduce Lean-Agile Scrum practices (I am a scrum master), particularly a Definition of Done (DoD) to include quality criteria, Sprint Reviews to demo and inspect completed code, and Retrospectives to plan quality improvements.
- Start introducing TDD and practices from Working Effectively with Legacy Code by Michael Feathers.
What would you implement as a priority?