In my earlier post I explained why we needed this. In this one I’ll describe some principles and practices that should be in it
Use some degree of test-first. At a minimum, anytime a request is made the question “how will I know I’ve done that” should be asked
An understanding that delays in feedback, workflow and between getting and using information causes unplanned work
A focus on finishing over starting
All work should be done in vertical slices so as to quicken feedback
When writing code separate use from construction
Make all work visible within the team, including how the work is being done
If you can’t plan ahead (eg, you’re in a maintenance group) use kanban to manage work and have set cadences for review and retrospections
If it is inadvisable to create cross-functional teams do as best as viable and create visibility with the outlying dependendencies
When considering a design, design as if no matter how you designed your code it would be wrong
Avoid duplication by attending to Shalloway’s Law-“if N things need to change and N>1, Shalloway will find at most N-1 things”. Follow Shalloway’s principle “Avoid situations where Shalloway’s law applies.”
Several others but these alone will make your Scrum better.