Our team has decided to develop using BDD/TDD in an effort to become the Agile team we're supposed to be. Vertical slicing appears to be an important part of agile working and gaining the quick feedback we require, although I think we're going to hit a problem when we start dividing our PBI tasks between us.
We are creating a distributed system with multiple web services and a single page app. Take these two user story examples, each which represent a PBI:
- As a user I want to be prompted to enter my smartcard PIN so that I can login
- As a user when I enter my smartcard PIN correctly I am taken back to the system so that I can use the system's modules
The problem comes from the tasks that are required for each of these PBIs/user stories to be completed, as some are shared.
For example, a business requirement of our organisation is that all requests must be logged. So the acceptance criteria for these PBIs (and just about any other we will have) must contain a call to an audit service.
So with the way we plan on using vertical slicing I can imagine two devs both writing the same part of the audit service that does the logging, including the tests that will drive the implementation, effectively wasting one developer's time.
Also there's the element of remembering which PBI included some functionality that will be required in others.
How do you organise in order to avoid this? Is this an inherent problem with vertical slicing? It seems this would be less of a problem with horizontal slicing.