Allow for change
Having a good understanding of what you want doesn’t mean you can’t change your mind. We had to ensure Product Owners didn’t take our request for upfront User Stories as a refusal to allow change. A project without change is just a waterfall project.
After a team has been working together for a while they have a good idea of their capacity. We now try and ensure they don’t plan for all that capacity and they leave space for the unexpected. This can be bug fixing or maybe a toolchain outage, whatever happens the team needs to be able to react without working late into the night.
Technology knowledge matters
We want an empowered team but that shouldn’t mean we don’t value experience. Scrum advocates for teams to make all the decisions internally. While this removes friction it also undervalues the knowledge of the organisation. We allow the teams to drive design but we have a senior member of the architecture team embedded who will ensure quality and identify those decisions where outside help might be valuable.
Redesigned our QA process
Previously our QA Engineers developed all our automated tests. As Automated Tests are part of our Definition of Done this quickly led to a backlog of Pull Requests and an inevitable late night before the Sprint Review. Now each developer is responsible for creating automated tests for the feature they have built and this counts as their test Definition of Done. Then our QA Engineers combine these partial tests together into larger E2E tests. This has nearly removed the last minute integration rush and put us back on the track of doing real continuous integration.
We are starting to see progress and in general the teams seem happy with the process but there is more to do…