Scenario
I taught vertical slicing to the Scrum Team that I was coaching. I used their product architecture as a reference to explain them the way to slice the work to build an end-to-end feature. For long, the team members are used to create and structure their work based on their single function/layer specialization, like database, middle tier or front end etc. From there, they thought vertical slicing is something that is impractical as they don’t see any one team member owning it. In the component model, with single function/layer specialization, one team member or the other will know and own their part of work/layer – which they don’t obviously see in a feature story. With some hesitation, they accepted and started following this. It is then found that they struggle to finish the items that they have taken up for a sprint. They could not meet their sprint goal. They repeatedly failed to create a product increment. This was discussed in the retrospective, and team brought up various blocks and surprises which they encounter on their way, causing delay. One important block that was brought up during the retrospective was “waiting!!”. The team members said that someone or the other always finishes their part of component earlier than others and have to ultimately wait for integration. Sometimes it became evident that they were not able to complete even a single end-to-end feature in a sprint.
Suggested Solution:
Though vertical slicing or creating an end-to-end feature is a great way, it works well especially when the Scrum Team is a Cross-Functional Team having members with “T” shaped skill sets. I realized that this creates dependency within the team while working in a sprint.
Keeping in view the Product architecture – I taught them to run a design workshop as part of sprint planning. I started with asking the team to visualize the components involved in the vertically sliced story/work. This was easy for them as they were working as a single specialization group before. I encouraged them to first collaboratively design interfaces between the components for them to communicate between each other – so that components and interfaces together implemented as a feature. They followed the design workshop during the sprint planning, when the end-to-end feature is expanded into individual tasks. The design workshop also considered how to virtualize those interfaces, so that they serve right from the first day of the sprint, much before the component behind the interface is developed, especially for those consuming components of those interfaces.
Practicing this for several sprints (almost six to seven sprints), I found the team is able to comfortably deliver end-to-end features, meeting the sprint goal. The team was able to extend this design workshop practices and creation of virtual interfaces with their other dependent teams. Without they realizing, the “T” shaped skill set is seen developing within the team, as team members start collaborating on designing the interfaces, making it virtual and using them in the sprint – they are in a position to learn and appreciate the other interacting components of a feature.