Successfully reported this slideshow.

Agile patterns in the real world


Published on

Instead of fighting about “who’s agile” or “who’s more agile than whom”, it would be useful to create a set of patterns, that once recognized would help us define if we are or have been able to successfully implement an Agile life-cycle for our project and portfolio.

In this session we will explore how it “feels” to work in an Agile project. It is not enough to do Scrum or Kanban, you need to know if you are doing it right.

  • Be the first to comment

Agile patterns in the real world

  2. 2. Vasco Duarte @duarte_vasco 2
  3. 3. 3
  4. 4. No! Mine is more Agile! My project is Agile! Can you please talk WITHOUT using Comic Sans? Live from the Agile WarsMany of us have seen this happen before. Someone from the outside (company orteam) comes in and sentences “you are not Agile” or “you are not doing Agile”. Thisdisdain and comtempt!Or you are having a discussion about your projects with your mates at the bar and Tom(always the smart ass) tells you off for not “doing it right”!Or better yet, your team is diagnosed with a terminal illness called Scrum-Butt. Oh MyGod! You say, what should I do? How long do I have to live? 4
  5. 5. Don’t Panic!Well, don’t panic! Labels are there to make religious wars interesting, but they don’treally help you with your work!It is much more useful to talk about what happens in reality when you do or don’t doAgile.It is more interesting to answer questions like:-How does it feel to work in your Project?-What is the stress level now or at the start/middle/end of your project?-What is the primary tool to follow progress in your project?-How do you organize your testing?-How do the different teams interact?So I decided to make a contribution. How about collecting this information? How aboutdetecting the underlaying patters that we’ve seen in Agile/Waterfall/Traditionalprojects? 5
  6. 6. These patterns or symptoms are useful for us when analyzing a project (e.g. for aretrospective) and assessing the progress of a team or a company from waterfall toAgile software development. These are necessarily only a small collection of patterns.Many more are needed to create a complete language that would help us define betterwhat an Agile project should feel and look like or don’t.This can be the start of our collective knowledge base about patterns we see in thesedifferent types of projects.The start of a real dialogue, instead of a religious war about who can use the “Agile”label. 6
  7. 7. The typical life-cycle phases of a projectWe’ll look at how different models feel at different lifecycle phases of your project.Before getting deeper into the patters let me define at the outset what I mean by life-cycle. In my context life-cycle refers to a stage/phase in the life of a project. Example: aproject that is "about to end" is in a different life-cycle phase than a project that is"about to start" or "ramping up". I define the following useful, although not exhaustive,life-cycle phases: Start, Middle, End.In this talk I’ll try to define what different types of projects (Waterfall, Linear Iterativeand Agile/Incremental Iterative look and feel like during these different life-cyclephases. 7
  8. 8. The waterfall life-cycle modelHere’s the waterfall life-cycle model, where each phase follows the previous phase in aLinear and pre-defined way.Yes, I know no-one really uses waterfall anymore. But there’s a lot of people TRYING TO! 8
  9. 9. The Linear-Iterative life-cycle model Design phase Development phase Testing phaseI want to introduce also the Linear-Iterative Life-Cycle model. This Life-Cycle model isiterative in it’s definition, but it is also Linear, in that there are specific phases in a pre-defined sequence.This linearity of Phases, like in RUP, is the distinguishing feature of this Model. 9
  10. 10. The Linear-Iterative life-cycle model Design phase Development phase Testing phaseI want to introduce also the Linear-Iterative Life-Cycle model. This Life-Cycle model isiterative in it’s definition, but it is also Linear, in that there are specific phases in a pre-defined sequence.This linearity of Phases, like in RUP, is the distinguishing feature of this Model. 10
  11. 11. The Agile (aka Incremental and Iterative) Life-cyle model Do all activities simultaneously in short iterations until ready… Release the productFinally we have the Agile or, as I also call it: “Incremental-Iterative” model. Here thedistinguishing feature is the fact that it is an incremental approach to softwaredevleopment, i.e. what you develop in the next iteration is Built on top of a selfcontained, working increment that you developed in the previous iteration. 11
  12. 12. P lan The WaterfallWaterfallBut how does it feel to be in these different types of projects? Let’s start with theWaterfall.Life-cycle phase: StartIn this life-cycle phase a waterfall project is typically in a situation where only theproject management team is assigned to the project and the goal is to create a plan,THE PLAN.The plan is typically composed of a set of requirements, an architecture target (maybean architecture plan or just a high-level picture to be developed further), a budget and(most importantly) a project plan.You know you are in a waterfall project when in the life-cycle phase Start you are mostlyspending time in front of a presentation or word editing software and have somemeetings (maybe weekly) where scope, budget and project plan are discussed. Thisphase typically ends with a "gate" where the project plan and Requirements +Architecture are approved.A dead give away of a waterfall project is that, in this phase no one asks or worriesabout writing a single line of code. Some sophisticated waterfall projects may include a"prototype" in the life-cycle phase Start, but it will usually be a throwaway anddeveloped by a sub-contractor who will not actually work in the project (after all theother teams are busy with the other projects). 12
  13. 13. I’m confused, I don’t have requirements ready by I am allowed to start coding? Linear IterativeIterative, aka Linear IterativeBut what about an iterative Project? How does that start?Life-cycle phase: StartIn an iterative project the Start phase will typically be called Inception and will, like thewaterfall projects focus mostly on defining requirements and creating/approving theproject plan.You know you are in an iterative life-cycle project when people start actually coding, butonly a few features. Programming is still being "ramped up", but theres nomilestone/gate that formalizes "start-programming" order.In some sophisticated Iterative projects people will mention Use Cases, customers,experience, business cases and may even have a prioritized list of Use Cases to beimplemented. Typically you will find that the Requirements document is quite shallow,delegating the clarification of most requirements to the actual "design" phase of theproject. 13
  14. 14. Do what it takes to trace a b ullet through the system AgileAgile, aka Incremental IterativeHow about Agile?Life-cycle phase: StartIn an agile project this phase is typically extremely short. A product manager willpresent a proposal for a new product or a new version of an existing product. Thisproposal will be discussed and approved. One or more teams are assigned to the projectfor a short period of time (called Sprint or Iteration -- confusing, I know) and produce arunning product, called a Product Increment.You know you are in an Agile project when the team talks about "releasing" thesoftware starting from day one. Each development team will include testers and eachRequirement (aka story or feature) will be discussed in order to create acceptancecriteria (aka conditions of satisfaction, aka test cases). These will typically be agreedbefore the team sets out to design the implementation but can also be updated duringthe Sprint/Iteration. 14
  15. 15. WaterfallLet’s now move to the “Middle” phase of the project life-cycle. Where most of the workhappens.Life-cycle phase: MiddleIn this phase the project is in "full speed", which usually means that teams are workingwith very little coordination (after all they have a "plan" to follow). Typicallycomponents are assigned to teams and they work on those in isolation.A dead give away that you are in a waterfall project is that your team does not integratecode with the other teams at all. Some sophisticated waterfall projects may have "sync-points" or "integration camps" where the component teams come together after a longperiod of development to integrate their code. These are grim affairs with muchovertime and gritting of teeth.In short. This is when the real work starts for Waterfall projects and that’s when the funends. Very soon the schedule pressure increases a lot! And of course no one remembersanymore the weeks and months spent on Project Plan and Requirements Collection.At this point we also have serious risks for the health of the proejct members. Pressureleads to burn-outs. We change their lives without their permission. 15
  16. 16. Linear IterativeHow about our friend RUP? (an instance of Linear Iterative)Life-cycle phase: MiddleNow the teams are working very clearly on the code. Some Iterative projects may evenhave several sync points (see above) within this life-cycle phase. They will be easier thanin a waterfall project, but "integration camps" are still common (although less frequent)and teams actively discuss the "code-line" policy (i.e. version control is an active part ofproject management.A dead give away of an iterative life-cycle is that there will be several iterations of about2-3 months in length at which point many teams try to integrate their code. In somesophisticated Iterative projects the teams will actually try to hold demonstrations of theexisting code and in some (far fetched) cases there will be a project-wide retrospectiveat this point.BTW: many agile adoptions go through this phase. It is ok to go through this Phase.Embrace the good practices and slowly move towards Agile. 16
  17. 17. AgileSo, how does agile feel at this point in the project life-cycle?Life-cycle phase: MiddleIn this life-cycle phase you will notice that the teams start to gel (if they are new) andthe project gains momentum. The teams demonstrate regularly what they haveaccomplished and some teams will have stopped holding retrospectives, because they"have nothing to improve". The pressure is always high in an Agile project, but never toohigh, and in this phase of the project the team is already used to the pressure level, theyknow how to tackle their stakeholders.You know you are in an agile project when the Product Manager is not the ProductOwner and is never or almost never present in the Sprint/Iteration planning meetings.That work is delegated to someone in the team that knows the technical product andworks with guidance from the product management to help the team manage andprioritize their backlog (aka Technical Product Owner).In practice this means that teams start to take responsibility over the product design.This is craftsmanship at its best. It is not the code, it is the product that is in the team’sminds. 17
  18. 18. Development Desperately testing and fixing phase phase WaterfallLife-cycle phase: EndNow we come to where the differences are the largest, and where Waterfall failsmiserably. This is where we lose all knowledge/insight about the real progress of theProject. The End-phase.In this phase the waterfall project is "code complete" and aiming to "code freeze".There is usually a milestone/gate that was passed exactly at the start of this life-cyclephase called "code complete" or "feature complete". It is at that point that the teams oftesters (typically many and in some far away country) are assigned to "test" the product.Obviously what they will be doing is a rather superficial sweeping of the floors to checkthat everything works. It is only after that that the project can pass the "code freeze"milestone/gate and the real testing can start.You know you are in a waterfall project when the project runs out of time before it hasquality enough to be released. The number of bugs being found is still very high, butprobably at about the same level of the bugs being fixed. This is when "management"comes in and pushes all the teams to fix as many bugs as they can (pulling all-nighters orall-week-enders if needed). Much motivational language is used but the count of bugsbeing fixed stays about the same. The project will eventually ship something, but theactual quality level can only be vaguely understood. Business takes precedence in thedecision making.In this graph we see a project “out of control”! 18
  19. 19. The “landing” curve But we are here… We should be here… Pre-determined length… Linear IterativeHow about RUP/Linear Iterative projects? I’m sorry to report that things are not muchbetter here…Youd be tempted to think that Iterative life-cycle projects would have an easier "End"phase, but you would be wrong. Just like in waterfall, the teams develop a lot of theircode in their own version control systems and integrate seldom (although much morefrequently than in a waterfall project). In large iterative projects there will be "vertical"sub-projects (typically less than 100 people) that will actually integrate their codefrequently but the multiple concurrent sub-projects will only really integrate their codeat the end.In this type of projects you will still find a very hectic "test and fix" phase at the end, butit will typically be focused around "complex use cases" as many of the simple use caseshave already been tested during the "Middle" life-cycle phase.You know you are in an iterative project because just like in waterfall Quality is an after-thought and you will find many, many bugs in the end of the project. The defect/errormetrics will be the main focus of the project management team in this phase, up to thepoint that sophisticated statistical models will be created to try to predict when theproject will end.Dont be fooled, in a project where error/defect metrics are used as the main projectmanagement tool no one is in control. The project end date is essentially unpredictableand typically management will decide (arbitrarily) when the product should be released.In some sophisticated Iterative projects Ive seen that a length is pre-set for this life-cycle phase based on history and, ironically, that seems to hold pretty well (althoughnot for the reasons you may think! -- stuff for another post) 19
  20. 20. Cod e Co d e Com e pl e t F reez e AgileLife-cycle phase: EndHow about Agile? Can that really be much better? Really?This is the life-cycle in which the Agile project will differ the most from the other twolife-cycle models. In the end of the project the team will still be developing new featuresat full speed. No one will talk about "code freeze" or "feature freeze" in the project, butthe testers and project management team will closely follow the Defect list.You know that you are in an Agile project when the defect/error list is short and theselection/prioritization of defects/errors is easy. Some teams will just start theiriterations/sprints by picking the most important defects out of the defect backlog,others will reserve some time/bandwidth in iteration/sprint planning specifically toimprove the quality of their product.The most noticeable difference however, will be that people will feel the pressure toadd more features at the end, rather than the pressure to avoid changing any code.Agile projects typically deliver a large amount of "test" code (i.e. code that is there totest the production code) which makes them confident that they can change the codeup to the last minute of the project.The focus is on the Value we deliver. New featurew, improvements, feedback fromcustomers.VALUE drives decision making. Not fear! Fear is the most common feeling in the othertwo approaches, but not in the Agile approach. 20
  21. 21. Self-awareness and ReflectionI hope that this collection of patterns from different types of projects will help you talkabout the level of agility in your project with your team.We should really stop bickering about "how agile we are" and start defining how anagile project "feels" like. What patterns do we see, what benefits and constraints wehave, etc.At the end of the day, what matters is that you understand your context. Thats the firststep to changing it!Use what you have learned here to reflect on your current projects. Use these patternsas a guidance in your experiments.But, please, change the way you work. Improve at all times and use this roadmap ofpatterns as your guide. Good luck and may the force be with you. 21
  22. 22. The force is strong with this audienceSo, now you’ve heard about some of the patterns that we have witnessed in real life.But that’s not enough.The next step is for you to review your own experience. Which of these apply to you?And how much?I’ve put together an Agility Scoring Sheet. You can use it to review how your fare withsome of these patterns.Over the next few minutes, please hook-up with someone and ask them which of thesepatterns apply in their last project. Do cross-scoring, ask a question, and agree on ascore based on the answer. 22
  23. 23. Currently an Agile Coach in Nokia, Vasco Duarte is an experienced product and project manager, having worked in the software industry since 1997. Vasco has also been an Agile practitioner since 2004, he is one of the leaders and a catalyst in the adoption of Agile methods and an Agile culture at Nokia and previously at F-Secure. Vascos contributions to the improvement of the software development profession can be read in his blog: You can follow Vasco on twitter: @duarte_vascoI’d like to invite you to continue this conversation on Twitter and on your own blogs.We, as a community, need to develop our knowledge and blogs and twitter are greattools to create connections and build a conversation that can develop our industry 23