I think lots of folks start off with agile this way, still relying heavily upon written documentation. As your team works together more and iterates, hopefully you figure out how to improve and streamline this, finding out which parts you really need and which parts are cruft.
While I don’t think I can pinpoint a particular thing that got us to a much lighter process, I’d say that for my team, our stories are super light. They’re usually just a few sentences, basically covering the hard requirements.
During our grooming, people tend to ask about edge cases, questions they might have about how to implement, etc, which might add a sentence or two before we point. We actually don’t measure velocity, but going through grooming/pointing forces us to have these discussions and get on the same page.
As for testing, nothing is called out explicitly in the stories, but we’ve built a solid quality culture - unit tests are a given, and people think about whether integration or other tests higher up the pyramid are needed, both as they write the code and as they review it.
My role on the team is technically an SDET, but lately, the vast majority of my time has been spent reviewing code or nudging/mentoring our newer team members to have quality mindsets.
For a team that’s new to agile and is just starting to adopt automation, my general advice is:
- have stories to automate a few high level end to end tests
- make sure all new work has good unit tests
- strategize how to add integration tests - this can be a challenge since there’s a lot of tooling that might be needed here, whether it’s figuring out containerization, test runners, CI integrations, what and how to stub/mock dependencies, etc.
I generally don’t worry too much about the legacy code, and treat this similar to a strangler fig approach, where the older code will get tests as it gets updated. One clear sign that you’ve built a quality culture on the team will be that when folks have to touch older code and they realize there are no tests, they’ll likely spend some time refactoring and making the code more testable so they have a safety net while they do their new work.