We are a small mobile development team (6 developers, 3 QA, 1 team leader). We're a little new to agile, and are just learning the ropes/making mistakes as we go. The whole team reports to a project manager in another country, who in turn talks to the client directly. This is done because of language barrier issues.
We are currently trying to adapt an agile procedure, where we do weekly scrums. For each release, here is the current flow:
- The specifications are taken from the client in the beginning.
- After studying what the client wants to do, we prepare prototypes and questions/clarifications and have the project manager in the other country reword and prepare for the client.
- After the client replies, we either proceed to step 4 or repeat step 2 until everything is aligned.
- We start implementing the specifications.
I'm aware that not every issue or error case in the specifications is determined in step 2, and may still arise in the later phases of the current release. However, there are times when, in step 4, the developers still get cases (sometimes edge cases) that they assert that the cases need to be handled and we should repeat step 2 again. It's currently giving the team a bad reputation to the manager, and most likely the company a bad reputation to the client. For these kinds of issues, is it better to:
- lock the specifications and any questions once step 2 is done, and move all the other cases (unless critical) to the next release for fixing
- add more time to step 2 (this, however, is also risky since giving more time for the developers give them more time to slack off (e.g. - the deadline is still far, I can take a breather for now))
I am aware this is a case-to-case basis, but on a general note, which would be better? Or are there any other possible solutions?