I'm a certified scrum master and, by trade, a UI/UX/Front end dev guy.
More than most I come across the issues faced by having folks with my skill-set within a cross functional team (the 'vertical slice')
The problems are:
- Front end dev effort and back end dev effort aren't pinned. 2 extremities of this are: A sprint backlog contains 40 story points and all are UI specialist work, and only 1 person is available to do them with another 5 being left with nothing to do. Polar opposite: A sprint backlog contains 40 points of which 0 front end / UI effort is required. 5 devs are busy but Mr/Mrs UI has nothing.
- Nearly always UX, usually UI and sometimes front end development can be forerunners to development. If you wanted to follow the vertical slice strictly you'd be creating a severe bottle-neck by waiting on that work before development starts.
I've seen solutions batted around, some better than others...
Don't have specialists, teach everybody to do everything.
I don't think this works. Developers can't design and UI/UXers are not going to learn Java overnight. Likewise we've all seen what happens when we test our own code.
Have a separate UI/UX/FED team
Personally I like this solution and have implemented it in the past, but it's oft criticised as it introduces a specialist team. It also plays with velocity as you're taking work away from the team.
My chosen solution, which I'm looking to improve on
The UI team is a Kanban team working alongside scrum dev teams. When a story goes in to a dev team's sprint, if any UI work needs doing a card also goes on to the UI team's kanban board. Stories can also appear on the UI Kanban board from Business Analysts, Product Owners, other Scrum Masters, Devs. The TODO columns is very fluid and constantly re-prioritised. Story estimation works as before. The difference here is that there is a constant throughput, based on priority, from UI. The problem you might have (going back to our all-UI example) is that when a large story gets dropped on UI this last-minute it becomes a bottleneck. The benefit with this system is that the product owner or BA could have dropped that on the UI team ahead of time.
TL;DR
Is there a better way to make sure specialist skills are kept busy in a sprint which you believe to be better than my chosen solution above?