Lessons Learned from Agile Transformations: Part 5

Fifth in a Fifteen Part Series

By Chad Greenslade

I have often been asked about my lessons learned in delivering Agile transformations. Below is the fifth in a fifteen part series examining my lessons learned while instituting Agile concepts & practices. I hope that these lessons help you on your journey to Agile nirvana.

Lesson 5: Be Prepared to Address Difficult Questions & Refute Key Concerns

Moving to a completely new way of doing things can be scary, especially when the folks that will be carrying out the work have no advanced knowledge of how they will be carrying out the work. To the uninformed, Agile can be synonymous with little or no process, tools, documentation, commitments, or planning. The truth, however, is quite the contrary. These concerns and misconceptions must be met head-on if they are to be overcome. Below I discuss each concern that you’ll most likely encounter on your journey.

Concern #1: Agile teams don’t use any process or tools. While the first tenet of the Agile Manifesto is to value individuals and interactions over processes and tools, anyone with a cursory understanding of the methodology knows that Agile, in and of itself, is a process, and there are many tools on the market today to assist with facilitating and automating the agile processes. The bottom line is that Agile does contain processes and does promote the use of tools, however, the interactions amongst team members and the customer is more important than the use of any specific tool or process.

Concern #2: Agile teams do not produce documentation as the project progresses. The reality here is that a documentation-heavy, waterfall approach to writing software has been proven time and time again to be fraught with waste and rework. In today’s software development environment, it is much more valuable to begin with a high-level design approach and then refine this design as development unfolds. Agile teams will not spend hours attempting to document and control every single variable that they will encounter with on their development journey. Lightweight design tools will be employed including whiteboards and diagrams to produce just the right amount of design at just the right time such that development can begin and the design can be iterated. Agile teams will spend more time documenting the design of what’s been built versus attempting to fit development into a pre-engineered design. The effect is that design, development, and documentation happen at the same time.

Concern #3: Agile teams do not make customer commitments. In the old paradigm, the customer would deliver their requirements to the development team, the development team would provide an estimate, the customer would approve the estimate, and then the development team would commit to a release or implementation date. The customer would largely be absent throughout the design and development process, only to be re-engaged for user acceptance testing and release. In this process, the commitment is clearly visible and is part of the development methodology. The issue, however, is that a vast number of the commitments made by the development team were missed. Agile attempts to solve for this issue in a couple of different ways. First, Agile teams ask the customer to remain engaged throughout the design, development, and testing processes to ensure that constant feedback and collaboration occurs. This collaboration has the effect of ensuring that what is built actually solves the business problem and delivers the value requested. Second, Agile discards the big commitment made up-front in the old paradigm for a series of smaller commitments made incrementally towards the larger goal. The same rules still apply in that the overall project end-date cannot be determined until all customer requirements are defined and delivered upon. However, Agile realizes that in today’s software development environment, requirements evolve over time and are more conducive to a product development lifecycle versus a project lifecycle. Requirements don’t stop coming in once a software development project completes. Agile recognizes this and accounts for it via continuously updating roadmaps and release plans, which drive the lower, sprint-level commitments that are hallmark of the methodology.

Concern #4: Agile teams do not plan. As mentioned in Concern #3 above, you can clearly start to discern the tenets of Agile planning. The key difference between traditional Waterfall planning and Agile planning is that Agile embraces what is known as “horizon planning”. Horizon planning means that you can only plan, with any degree of accuracy, as far you can see. In other words, if you look at the horizon, you can make a plan for how to get to where you can see on that horizon, but you can’t plan with any degree of certainty for how to travel beyond that horizon. With each passing day, the horizon changes, and as such, your plans for how to get to the horizon should also change. Agile embraces the planning horizon and anticipates changing requirements by placing a top-down structure around the uncertainty. At the top level, a more high-level approach to planning is employed whereas at the bottom level a more realistic and time-bound commitment is made. The five levels are as follows:

  • Level 1: Product Vision. The product vision is a high-level narrative produced by the product owner. It can be high-level or very detailed depending on what is known, by the product owner, about the proposed product. In many cases it will contain a high level description of the product, the markets it will serve, the value to the organization, and a description of how the product will serve the market. The key outcome of the product vision is a general direction for the development team to embark upon when creating the product.

 

  • Level 2: Product Roadmap. The product vision is decomposed into a roadmap consisting of large work elements, known as “Features”, and high-level estimates for each, laid over time. The key concept here is that the estimates are high-level and the schedules are aspirational. The product roadmap is not meant to establish a product development end-date, but rather it is used to chart a path for product development, and attempt to start setting high-level expectations around when a minimally viable product can be delivered. The product roadmap, like most other Agile planning artifacts, is intended to be iterative and refined over time as the product vision evolves.

 

  • Level 3: Release Plan. Once the product’s features are defined in the product roadmap, a vertical slice of the features are taken for each quarter. This vertical slice becomes the release plan. For example, if your company’s product is a new website for ordering college textbooks, features could be “shopping cart”, “search”, “payment”, etc. In each release, you’ll want to include certain aspects of each feature in the release.

 

  • Level 4: Sprints. A sprint is probably one of the most widely known Agile concepts. A sprint is simply a time-box for completion of work. The most common sprint duration is two weeks; however, sprints can be as short as one week or as long as four weeks. It is not recommended to have a sprint duration longer than four weeks. Once the release plan is defined by quarter, the Agile team determines the number of sprints than can be accomplished in each quarter. User stories supporting each feature slice are written and selected by the team for completion in each sprint. The selection of a story to be completed in a sprint is a hard and fast commitment by the team to deliver a working piece of software within a certain timeframe. There is much that goes into the drafting, estimation, and selection of user stories for a given sprint. This guidance is outside the scope of this lesson.

 

  • Level 5: Daily Stand-Up. The daily stand-up is also a widely known Agile concept and fulfills the requirement of the team’s daily planning. It is probably the simplest Agile process. Its goal is to align the team, each day, around the current sprint’s objectives. It is a fifteen-minute meeting in which each person answers three questions relative to the deliverables in the current sprint; what did you do yesterday, what will you do today, and do you have any impediments (a.k.a. “roadblocks”). Typically the team’s Kanban board will be displayed to facilitate discussion. Problem solving is reserved for subsequent meetings to be scheduled by the Scrum Master.

 

In this lesson I’ve discussed some common concerns and how each of these is refuted. While it can take some time to persuade everyone to get on board, it’s clear that planning & process is not absent in Agile, simply better tailored to today’s software development environment.