Monday, September 25, 2017

Core Agile Practices and Rolling Wave process model

Core Agile Practices have a fundamental contribution to the rolling waving the work, where their multiple benefits (per practice) address many complexities, incertitude, and knowledge aspects. 
Each of these practices has a contribution to information-based work: create, gather, distribute, slice, validate (and get feedback) information.  That means we can have a feasible, effective rolling wave/work.      

Here are some examples.

Small Releases – key role – reduce the overall size of the wave. Transform a big wave (big release) into more smaller waves. Fundamental to dealing with complexity, incertitude and knowledge management. Affect all other aspects. The most important feedback loop is deployment and working in production. See [B1]

Iterations – similar with small release: slice the work, make the work easier. Slice the release and advance with validated releases and feedback.

Retrospectives – Apply feedback on all aspects of the work: correction and improvement feedback loop.

Daily meetings – slice the work more and make the day a unit for coordination and feedback. 
Pair Programming – build better product (information), good and in-time feedback, distribute knowledge.  Multiple roles on low granularity parts of the information rolling wave.  See [B1].

Solution Spikes & Proven Architecture Milestone – eliminate risks related to the solution giving a real progress of the wave. See [B2].

Envisioning – initial release looks ahead. Big upfront initial wave it is not feasible, but an envisioning (requirements, solution, and others) it is useful and pragmatic.  Whenever it is based on solution spikes will be better. See [B2].

Look Ahead Modeling – fill the gaps between envisioning and iteration modeling. Prepare the iteration modeling. Fill the gaps between iteration modeling and just-in-time. See [B2].

Model Storming (Just-in-Time modeling) - When information gathering/creating or validating become accessible and whenever it is necessary. See [B2].

Active Stakeholders Participation – involve and collaborate with the stakeholders in the whole life-cycle. You cannot rely only on a Product Owner approach if you want a robust approach on gather/build and validate the rolling wave information. See [B2].

TDD (Test Driven Development) – similar benefits with Pair Programming: better product, in-time feedback, and validation, distribute knowledge as Executable Specification. See [B1], [B2].

Continuous Integration – working software produced with small granularity/cycles. That mean that ones of the main fedback loops are very short and the whole rolling wave will be more robust. Usually suppose that many other Core Agile Practices are in place (such TDD, Model Storming, Pair Programming, Solution Spikes)

Consumable solution – it is a much strong condition than just working software for validating the work and the rolling wave evolution. See [B2].
Clean Code, Clean Architecture – these set of practices are enabling TDD, refactoring and effective, efficient product change (rolling wave progress).  Also, CC and CA are deccrease information complexity and easy distribution. See [B3], [B4].

Important – any of these practices have multiple contributions to a pragmatic, effective, efficient rolling wave of work/information.  Eliminating one of these practices could cause serious problems and a much significant effort. If you want to improve your process in context, you will need guidance about how practices could be distributed in the life-cycle using process goals and decisions points,

Read also

Bibliography and references

[B1] - Extreme programming explained: embrace change, Kent Beck, Addison-Wesley Professional; US ed edition (October 5, 1999). Note: I strongly recommend this first edition for understanding Core Agile, over 2004, 2nd edition.   
[B2] - Agile Modeling
[B3] - Disciplined Agile: Prove Architecture Early
[B4] - Clean Code, Prentice Hall, 2008, by Robert C. Martin
[B5] - Clean Architecture, Prentice Hall, 2017, by Robert C. Martin

No comments:

Post a Comment