Showing posts with label Iterative. Show all posts
Showing posts with label Iterative. Show all posts

Friday, November 20, 2020

Dramatic changes in Scrum Guide 2020

Disclaimer - these are my personal opinions about Scrum Guide changes  

Most changes are not substantial. In many cases, Scrum becomes more generic because we have less guidance on Scrum's rules and practices, and by default we are free to find more options. At the same time, the small set of fixed rules remains the same with one important exception.

The Sprint is no longer an iteration.

The Sprint is no longer an iteration. Scrum no longer provides the explicit backbone for the work life cycle. Scrum is changing even more in the direction that it is not a product development framework, but a support framework for product development.

Sprint Review changes

The desired outcome of the Sprint Review and Sprint end was changed. 

2017 Guide - Sprint Review section

<<"A Sprint Review is held at the end of the Sprint to inspect the Increment and adapt the Product Backlog if needed.">> - See [R1]

<<The Product Owner explains what Product Backlog items have been “Done” and what has not been “Done”;>> - See [R1]

So, at the end of the Sprint during the review, the development team finds out from the PO what part of their work is done and what is not done. This is a kind of acceptance.

2020 Guide  - Sprint Review section

<<The purpose of the Sprint Review is to inspect the outcome of the Sprint and determine future adaptations. The Scrum Team presents the results of their work to key stakeholders and progress toward the Product Goal is discussed.>> - See [R2]
<<During the event, the Scrum Team and stakeholders review what was accomplished in the Sprint and what has changed in their environment. Based on this information, attendees collaborate on what to do next. The Product Backlog may also be adjusted to meet new opportunities. >> - See [R2]

Only one of the two objectives was kept: review of the work and adjustments of the plan, adaptation. It is no longer an acceptance to explain what is done and what is not done. Changes in the Increment could explain this part.

Increment Changes

2017 Guide - Increment section

<<The Increment is the sum of all the Product Backlog items completed during a Sprint and the value of the increments of all previous Sprints. At the end of a Sprint, the new Increment must be “Done,” which means it must be in useable condition and meet the Scrum Team’s definition of “Done.” >> - See [R1]

<<The increment is a step toward a vision or goal. The increment must be in useable condition regardless of whether the Product Owner decides to release it. >> - See [R1]

We have one Product Increment per Sprint, which is done at the end of the sprint, and which could be released or not. Consequently, the Sprint is an iteration. One (enhanced) iteration.

2020 Guide - Increment section

<<Multiple Increments may be created within a Sprint. The sum of the Increments is presented at the Sprint Review thus supporting empiricism. However, an Increment may be delivered to stakeholders prior to the end of the Sprint. The Sprint Review should never be considered a gate to releasing value.>> - See [R2]

The Sprint will now group one or more Increments. Explaining what is done and what is not done is no longer one of the goals of the Sprint Review. The remaining Sprint Review scope is only about inspect & adapt part ("empiricism"). Explaining "what is done and what is not" will be necessarily happen before delivering some of the increments to the stakeholders (before the Sprint Review). 

Here is the work sequence before the new Guide

  • plan the Sprint
  • development (all the stuff, including testing) the intended Increment
  • review: PO accepting what is done (and that become the Product Increment produced by the Sprint), final inspect of adapt and a potential release     

 Here a possible sequence of work using the new guidance:

  • plan 
  • For each increment: development + accepting what is done and what is not + potential release
  • review: inspect & adapt 

What is the difference?

Previously, Increment delivery was managed by Scrum explicit rules, while the Sprint was an enhanced iteration managed by the Scrum rules as well. 

With the new guidance, Increments delivery is free-style, outside the Scrum rules. Scrum Sprint just plan several increments together and later analyze them post-factum in the same package. 

What is the purpose of the change?

Scrum claims that is very generic. At least for software development, there are three main categories of solution delivery life-cycle: iterative (iterative-adaptive), lean and exploratory. The previous version of Scrum was purely iterative (Sprint ~ an enhanced iteration) and does not match with the cases when you produce increments of working software very fast (~lean life-cycle, sometime Kanban based). 

  The Scrum Ceremonial cannot be executed for small increments

The Scrum ceremonial cannot be executed for small increments (no time), so they change the Sprint definition to apply the ceremonial to more increments when needed.   

What is the problem with this change?

Is not a problem with the change itself, but with the way as Scrum is presented and used. It was presented and used as an universal and generic approach, but it was a deception if you want to manage only with Scrum fast deliveries and high incertitude case. Now the deception is clarified: Scrum ceremonial in an iteration cannot handle all your types of solution delivery. Okay, but what about the new guidelines that make the Scrum more generic? Yes, Scrum become more generic by acknowledging the fact that will not manage the delivery life-cycle but will only provide support. 

A good part of the delivery is out of scope for Scrum guidance   

It is good time for the teams and organization using Scrum to understand that a Scrum-only approach is not a good idea, and Scrum small guidance needs to be complemented with other sources. 

 

References 

[R1] The 2017 Scrum GuideTM - https://www.scrumguides.org/scrum-guide.html

[R2] The 2020 Scrum GuideTM - https://www.scrumguides.org/scrum-guide-2017.html


   


     

  



Sunday, March 12, 2017

A Page of History: 1975 "Iterative Enhancements"


The dawn of Agile and Iterative Development comes in the 90s, and the "end of the beginning" was the 2001 Agile Manifesto. Anyway, as Kent Beck has recognized, his generation has, in fact, "rediscovered" some principles and practices that have been use by their predecessors.    

Alistair Cockburn has recently bring back in attention (tweet) a page of history for software development, the 1975 description explicit of Iterative Development: 

Iterative Enhancements: A Practical Technique for Software Development, by Victor R. Basili and Albert J. Turner  (IEEE Transactions on Software Engineering, Vol. SE-1, No. 4, December 1975)  

More, you can find here other "Agile" practices and principles: 
  • "Refactoring" guidelines: redesign approach similar with XP - Extreme Programming
  • "Active Stakeholder Participation": user reaction always required for feedback - similar with  Disciplined Agile "Active Stakeholder Participation"
  • "Inspect and Adapt" - an review result-goals approach similar with Scrum Principle 
  • Context count and tailor process to context principle, similar with Disciplined Agile approach
  • "Proven Architecture Milestone" - Start with an initial skeletal sub-problem, that contains "key aspects of the problem" , "...whose implementation would make a usable and useful product available for the user". This approach is very similar with the en-to-end skeleton from the Discipline Agile "Proven Architecture Milestone".  ... and more: use of this milestone & the iterative approach to make progress toward a "Consumable Solution" and clearly suggest a "Risk-Value Lifecycle", such in Discipline Agile. It is interesting that the author clearly start the description of the method with this part. In my understanding, their approach is somewhere in the middle between "Proven Architecture Milestone" and "Do it twice" advice of Winston Royce from 1970, but applied in an iterative context.
Important: this 1975 paper was a report of their concrete work and experience with development of production compiler for SIMPL-T language.

References 


 

Monday, April 13, 2015

Polydamas Syndrome

 

..Great strength but little sense

 

Polydamas was an panktration (panktration - almost no rules mix of boxing and wrestling) champion at 93rd Olympiad, 408 BC.  Beyond Olympic success, there are some legends about his strength and power, that could remember of mythological Herakles (Hercule): he kill a lion with bare hands, he stop a moving chariot and win a fight with more "immortals" of  Persian king Darius.

However, he died trying to held with this hands the roof of cave that is crashing down around him.  

"The death of Polydamas, the Thessalian, when he was crushed by the rocks, made clear to all men how precarious it is to have great strength but little sense."  - Diodorus Siculus, Historical Library,  9.14.2

The key concept is the feasibility of an endeavor: no matter the skills, strength and power you have , but only if all these abilities are matching with the difficulty of the task. Knowing what we cannot do, the limits of our abilities it is very important.

Of course, we want always to go further and test and improve our abilities, but the also the involved risks matter, as in the Polymadas case.  

Polydamas Syndrome in software development 

 

Software development it is an area where this syndrome it is manifesting rather very often. The high rate of projects failures is not only a problem of inadequate management and inadequate engineering but also a problem of overestimating the involved skills versus the difficulty of  the context problems. 

Waterfall approach, for example, it is sign of this syndrome: if the iterative development try to manage the complexity in smaller parts, waterfall claim that will "eat" all the complexity in one piece.

Software development is the activity where most often smart people repeatably fails due to wrong estimation of their abilities on facing complexity.

Here are other examples from real life:
  • Reckless: We have no idea about how to solve what the customer want, but we commit to solve it (eventually with also a committed delivery date). Possible reasons: wants to gain appreciations from customer and management. The root cause could be a gambling disorder-like behavior or just an immense vanity  
  • Inadvertent: We know that we have no idea about the solution, but we hope that we will find it. That is happening many times with individuals that want a higher role or position and just hope that they will succeed without some previously proved practice. 
There are similar terms that the ones used by Martin Fowler describing the Technical Debt Quadrant. The "Polydamas Syndrome"  instantly produce or induce Technical Debt, that sometime could be irreversible.

By their nature, people could be reckless, inadvertent,  "normal" or too cautions. We need an adequate work discipline in order to get from all of them a good enough estimation for the balance between abilities and difficulties and also of the resulted risks in case of significant imbalance.     
Agile development at least it is defined as the "art of possible" and any manifestation of "Polydamas Syndrome" is a sign of severe agility problems and in general severe problems in the software process that should not be tolerated.

Solution Spikes and Architectural Spikes from XP are an possible answer to feasibility problems in Agile approaches, but a more complete set of practices could be found in DAD - Disciplined Agile Delivery that also have feasibility related milestones and an explicit approach for such risks.

"Seduction"


A big problem is that people with "Polydamas Syndrome" are very seductive for management and for customers. They represent at the first sight the dream collaborators: they will quickly commit to any request. The consequences are visible rather on medium and long terms. The main problem is when the management of the development side does not control the result risks. It is rather not expected that the customer side to be aware of these risks and they will surprised when the effects will become visible.

Saturday, January 11, 2014

Agile fundamentals: Working software

This concept it is highly used when we talk about Agile. It is mentioned in Agile Manifesto, first as a main value and then as part of the agile principles. In the same time it is highly misunderstood, even by some claimed agile practitioners.

Waterfall versus Working Software


The main dilemma concerning the process approaches in software development is not "Agile versus Waterfall" - that is false and confusing - but rather Waterfall versus Working Software, that mean Waterfall versus Iterative Development. Why? Very simple answer: the process approach that has a main attribute the Working Software is Iterative Development. Ok... but what about Agile? Agile is one of the main variants of Iterative Development, and probably most used.
There are 4 main Agile values and associated principles. There are also few others values and principles related to software development. Anyway - Working Software/Iterative development is the first one, if not as value, but at least as attribute that define an entire category of non-Waterfall approaches .

"Traditional" PM main problem


A "traditional" PM for software domain is not the one that use PMBOK based PM style, but the one that one that use Waterfall as project life-cycle model.  (... PMBOK does not propose any life-cycle model because that is out of its scope). The first thing that should know a such project manager is: if Agile is not needed, that could be ok, but Iterative Development is not optional for a good project management in the software development case.
Working Software it is a must!

Agile related confusions


Good understanding of working software it is fundamental for a real Agile process. 

The Bad and the Ugly


An often misinterpretation of the Agile Manifesto is the following: we do not need documentation, we just craft some software. That is not agile, and it is very harmful.

The Good


The right interpretation of W.S. concept from the A.M. is when we are thinking to the working software resulted at the end of an iteration: analyzed, designed , implemented and tested & fixed software. Nothing is missing? The complete "formula" should be: continuous integrated (working) software.
Recap:  we should use iterations (smaller than one month, but better of two weeks of less) and working software should be the main result and measure of the progress at the end of the iteration.

The Great


Softwarecraftsmanship Manifesto states also that we need not only working software, but also "well-crafted" software. Something similar could be found also in the Agile Manifesto principles, where the used terms are "good design" and "technical excellence". Finally, that mean that for Agile we need "well-crafted" working software. Why? That will enable, enhance and offer steadiness to the agility. Also, that mean we will produce less Technical Debt, that is a condition for Agile (and agile methods as Scrum) and also for any good process.