Pages

Sunday, December 4, 2011

Eat your Own Dog Food - Critical to Successful Agile Transition


I really like “eating my own dog food.”   Before you gross out, I am referring to the expression  the suggests a company should use the product it makes.  There are many benefits, including becoming better attuned to what customers are experiencing and creating tacit knowledge throughout the organization about the product.  I also believe it encourages innovation, increases quality, and builds pride within a company.  

When rolling out agile practices, the equivalent of “eating our own dog food,” is running your transformation effort like an agile project.  Doing so allows you to:
  • demonstrate the practices you are asking teams to follow
  • inspect and adapt to the specific needs of your organization
  • gain support of executives and stakeholders with transparency and demonstration of incremental progress
To exemplify how you can run a transformation effort like an agile project, I share recent experiences in rolling out the Scrum framework to 15 teams within a waterfall organization.  For clarity, I take some editorial liberties in simplifying the sequence of events at this company.  Transformations are often complex and messy, but I do not want to confuse the reader with superfluous details. 

Identifying Key Stakeholders and Defining Success
Before I assemble a team or create a backlog, I approach an agile transformation in a similar way to how I would start any project--trying to understand what the objectives are and what success will look like.  I meet with key stakeholders to understand problems we need to address and/or the opportunities we want to exploit by going through the agile transition.  I seek out multiple stakeholders at different levels within the company (and customers if possible) with different perspectives, as this provides me with a better understanding of the organization, it is culture, and the various players involved.  While some patterns of an agile transformation maybe similar, dynamics in one organization will be very different from another organization, which is why an adaptive approach to any transformation works best.  

I was fortunate to have executive level support in the example organization.  I met with the CEO, CTO, Chief Administrative Officer (CAO), Division Presidents, VP of Development, Project Sponsors, Tech Leads, Developers, Project Managers, Business Analysts, QA Leads, Customer Service reps (as a proxy for external customers), and internal users that the technology group served.  I asked open ended questions to understand what the interviewee wanted from the transformation and to identify what was and was NOT working in the current process.  I learned that there was very little trust between the technology teams and business partners.  On the business partner side, there was very little faith that technology would deliver.  On the technology side, there was a feeling that business partners provided inconsistent direction and had unreal expectations about what could be accomplished with the resources and timeframe provided.  Despite everyone caring about the company and wanting to do a good job, there was a real “us vs. them” mentality.

Building a Roadmap
I became the “product owner” of the agile transformation because I was accountable to the success of the effort.  I drafted a vision statement and success criteria of the agile transition based on what I learned from various stakeholders and got feedback from the sponsor of the transformation.  The vision statement, success criteria, and knowledge I had gained by talking to through the organization provided me with enough information to create a “roadmap” for the transformation. 

In this particular organization, I decided that the “Agile Transformation” would be broken up into 4 “releases”: 






  1. ‘Pilot Agile Practices’ with three distinctly different types of projects for two quarters.  The goal of this “release” was to prove the viability of agile practices within this organization.  
  2. ‘Stand up Dedicated Teams’ assembled teams of cross-disciplinary people dedicated to a specific business unit.  This was its own release because the developers, project managers, and quality assurance team members had been operating as a central pool of resources, often assigned to multiple and disparate projects at the same time.  I thought it was important to get people working together as teams.  Furthermore, the desire was to stand up all 15 teams at one time, as opposed to my initial recommendation of transforming a few teams at a time.
  3. ‘Implement Agile Management’ was next the next release.  The goal was to establish a baseline of the scrum framework across the 15 teams.
  4. ‘Introduce Agile Development, Build, and Quality Practices’ was separated from the introduction of Scrum because I did not have the bandwidth or resources available to implement these concurrently with the scrum framework.  
Having a high level roadmap, as simple as the one above, set targets and direction for those involved with the transition.

Creating a Backlog 
Now with a “roadmap” that suited the needs of this organization established, I was ready to create a backlog.  I decided to capture the requirements of this transformation in user story format.  Some examples of early stories include:
  • “As a trainer, I deliver an executive briefing so that senior leaders understand fundamental agile concepts and how this transformation will impact their org.”  
  • “As a recruiter, I have an updated Agile coach job description, so that I can find candidates that match the desired criteria.”
  • “As a team member transitioning to agile practices, I have participated in a kick-off meeting, so that I have an opportunity to raise questions about these changes.”
Each user story included acceptance criteria that detailed the conditions required to complete of this story.  This backlog was a living document.  I continuously added, updated, re-prioritized based on feedback from stakeholders and my own tacit knowledge about what would work within this organization. 

Establishing a Team
The transformation team, at the example company, consisted of me as product owner, two dedicated team members (one of whom had no prior agile experience), an external agile coach (who was consulting for a limited engagement), and part-time of several others. I am usually against fractional assignments for Agile Teams, but in the case of the agile transition I found the participation of these additional people to be extremely beneficial given their differing expertise and roles within the organization.

The dedicated team member, who had no prior agile experience, agreed to be the scrum master.  This was a great way to test training we has planned for future scrum masters and forced him up-to-speed quickly.  Partway through the transition, he was ready to coach and help teams that had never done Scrum before.

Sprinting the Transformation
Although this transformation team was not building software, we ran all the scrum ceremonies and baseline practices that the agile teams would do.  We did release planning, worked in two week sprints, estimated stories in points, held sprint reviews (aka sprint demos), and retrospectives.  The furniture was removed from an office in the technology area, so that we could post our task board,  tracked progress with a burndown chart, and hold our daily check-in.  We tried to live by the motto, that we were not going to ask teams to do something that we had not tried ourselves. It was visible to everyone that “we were eating our own dog food.”  I believe this not only helped us get buy into trying the practices we were prescribing,  but is the most effective way to run a transition.  

The transformation team was more in-sync about the baseline practices we wanted teams to follow, because we lived them.  The Sprint Reviews provided an opportunity for any stakeholder within the organization to see how the transformation was going and provide feedback.  Working iteratively and delivering value incrementally allowed us better respond to the needs of the organization.  By becoming self-governing, the transformation team was able to come up with better and more efficient solutions than if I was dictating how ever task should be done.  My transformation teammates were a source of many of the stories that we implemented (some of which I would not have thought to try without their suggestion).   

It is a pleasure running an large transformation effort like an agile project.  Did I mention, I like “eating my own dog food”?

Tuesday, November 22, 2011

Scrum Ceremonies

If you are new to Scrum practices, you might be wondering what ”Sprint Planning”, “Daily Scrum,” “Sprint Review” or “Retrospectives” are all about.  “What’s the deal with these funny terms,” and “why do we need these” are common questions from those who have not worked in this manner. In this post, I attempt to answer these questions and debunk any mystery around these terms.  



First, some background context.   Agile is a collection of software development practices that are characterized by close collaboration with business stakeholders, iterative development where increments of working software are delivered in short iterations (typically 1-4 weeks).  Agile practices were created by experienced software practitioners who followed traditional waterfall development for many years and believed there had to be a better way to develop and deliver software.   



The Scrum framework is the most common Agile methodology implemented in the United States.   Scrum was inspired by case studies of product development techniques which increased speed and flexibility within the automotive, computer, photocopier, and printer industries (see Nonaka, Ikujiro and Takeuchi, Hirotaka; The New New Product Development Game).  As you might have guessed, Scrum is a term borrowed from Rugby, where the team works as a unit, passing the ball back and forth, to advance down the field and score.



"Sprint Planning”, “Daily Scrum,” “Sprint Review” or “Retrospectives” are highly specialized ceremonies, each with a specific purpose.  The word “ceremony” is used, because they are not your typical meeting.  These are highly structured and designed to maximize the investment of the team’s time.   All of these meetings are “time-boxed,” creating a constraint for the team to work within so conversations stay focused and do not get off track.   


Sprint Planning
In Scrum, teams deliver software at regular, short iterations called “Sprints.”   At the “Sprint planning” session, the Product Owner presents the goal of the sprint and explains the requirements that s/he has prioritized prior to the planning session. The team will discus the requirements and acceptance criteria, estimate the work, break the work down into tasks, and commit to what they can accomplish within that time frame.   The session is very interactive between the team and the product owner.  By discussing and estimating together, the team will often surface different assumptions about the requirements that the product owner can clarify on-the-spot. The team also aligns on the technical approach it will use to accomplish the requirements.   The product owner gains a better understanding of the complexity required to accomplish the work and can re-prioritize or consider trade-offs in the scope of work / acceptance criteria to maximize the value returned by the team’s efforts.  Because the team estimates and commits to the work together there is buy-in and shared urgency about meeting the sprint commitment.  In a matter of hours, the team is ready to start developing against the highest priority work identified by the product owner.  


Daily Scrum
The “Daily Scrum” is a 15-minute meeting where the team syncs up on their progress against the work they committed to in Sprint Planning by answering three questions:
  • What tasks did I commit to accomplish yesterday and where I stand on that
  • What tasks will I commit to today
  • What risks/obstacles (if any) may prevent me from accomplishing this commitment to the team?
The team stands during this meeting and refers to specific tasks that are required to complete the work committed to in Sprint Planning.  This keeps the meeting focused and allows up to 9 team members to sync up within 15-minutes. Should any issues surface that require more discussion, they are “parked” and discussed with a smaller subset of the necessary team members so that  the others can get back to work.

Sprint Review
The “Sprint Review” (also known as “Sprint Demo”) enables the product owner and team to show case the work they produced during the sprint to stake holders. The team reports on whether it met its commitment and demos working software that is complete, meaning that it has met the acceptance criteria, passed testing, and considered to be “potentially ship-able.”   Incomplete or partially complete work (if any) is not shown during this session.  It can only be showcased in the sprint where it is completed. Stake holders will give feedback on what they have seen and may make suggestions to the product owner.  Based on this feedback, the product owner may decide to change or re-prioritize upcoming work that s/he has planned for future sprints.

Having a regular inspection point at the end of each sprint, where only working software can be shown, serves several purposes:
  • creates a regular rhythm for the team where there is a sense of urgency to complete the committed work throughout the entire project.  
  • It enables earlier feedback from stakeholders.  Allows for course corrections before it’s too late in the project life cycle.  
  • It gives better transparency about the actual progress allowing for the right adjustments to be made.  
  • it emphasizes working software, as opposed to other artifacts, as the tangible value that a team delivers. 
In traditional software development, many developers may not have not had an opportunity to showcase their work.  Having an opportunity to demo the results of their work and get feedback, creates a sense of pride in the work they do and servers as a great motivator.

Retrospective
The Retrospective is held at the end of every sprint.  One of the Principles behind the Agile Manifesto is: “The team reflects on how to become more effective, then tunes and adjusts its behavior accordingly”.  This ceremony provides a forum for the team to be thoughtful about what went well during a sprint and what they can try to improve in future sprints.  It also serves as a opportunity for team members to review any challenges internal or external to the team.  The team decides what action items to take on to address challenges or get better.  The retrospective encourages the team to continually improve.



I hope this post provides more clarity around what “Sprint Planning,” “Daily Scrum,” Sprint Review,” and “Retrospective” are all about.  There is no mysticism around Agile Ceremonies, but they allow for teams to plan, execute, and inspect their work in a short period of time.  It provides greater transparency to the progress against project objectives so that course corrections can be made earlier in the project life-cycle.  Product owners and team members are better aligned because they are working more closely together.  From my experience, working in this manner, can turn good performers into great teams that work closely to deliver excellent products.    If that isn’t magic, I don’t know what is.
Creative Commons License
This work is licensed under a Creative Commons Attribution 3.0 Unported License.