Let’s see: You have a great customer/product owner. Your team masters the agile planning game. You create all code through TDD – like a rock climber puts in spikes, even in your sleep. Refactor like a chef keeps the kitchen tidy to be able to serve all the time. You and your team communicate through tests with each other and the customer/product owner. Your team is addressed like a single person. It was a long time since you needed anything transitional guidance or middleman like a scrum master. The continuous integration and delivery infrastructure is up to date. You never put you hand in the patients stomach without another surgeon standing by, that is you pair program all production code. All spikes are done as unit tests. The team communicates with tests. Teams communicate with tests and tree-like capability graphs with post-it’s on a whiteboard and master how to coordinate and build large systems with multiple agile teams.
Great!
But what about the stuff you actually need to DO THINGS with all this agility? Do you have pieces enough to solve any puzzle that is thrown at you? How do you hone your skills? Do you go to Coders Dojos? DO you practice Code katas? Do you learn (from) a new programming language every year? How often do you just read code from some other project to learn? Have you ever reverse engineered some piece of technology, hard- or software? (More on this in What’s Up Your Sleeve?)
People often expect agile teams to be flexible, innovate, well agile. We are supposed to catch anything that gets thown at us. To Improvise and Adapt. Like Theatresports (http://en.wikipedia.org/wiki/Theatresports) where a team with actors are challenged with a theme they are supposed to improvise around. The best team wins. How do they do that successfully, and in front of an audience? Without any rehearsal? They use “riffs” to build their on-the-spot improvisations.
Riff is originally a musical term that was allegedly coined by the legendary American jazz saxophonist Charlie Parker. (Parker recorded “Thriving on a Riff” in 1949)
A riff is something well-defined that you can practice and master but with loose ends that you can splice together with something else. Music is mathematical and precise, yet a medium of flexibility and emotion. Riffs in music is well-defined patterns and building blocks and the improvisation is how they are spliced and blended. The same goes for improvisational theatre.
So the next agile planning session when your agile team is expected to be innovative and able to improvise with a high-quality result: Where are your agile riffs?
One aspect of agile riffs is of course to master software craftsmanship like TDD, refactoring, continuous deployment, apir work, etc. But you also need to be curious on how things are built. Like a jazz musician that digs numerous other jazz performances instead of just practicing by myself. Katas in great but you need influences. The alternative is some Agile Duel of The Banjos.