Showing posts with label management. Show all posts
Showing posts with label management. Show all posts

Monday, January 31, 2011

Management’s Role in Scrum


In one of my earlier Blog postings, I responded to a comment and stated that I believed that “Scrum aims to make managing software development easy”.  I believe this is true because the core of Scrum is the self-empowered, self-organizing Team.  In its simplest form, a Scrum Team is fed a prioritized list of user stories and the Team commits to delivering some set of top stories in a fixed amount of time.  Because the team is empowered, it is up to the team itself to figure out to divide the work between themselves and deliver “done” stories by way of a potentially shippable product at the end of the sprint.   

As an Engineering Manager, I can sit back and watch an established Scrum team crank through their work.  I can readily track the Team’s work via burn down charts and the Scrum task board.  In fact, I was able to do just that during our recent Pilot with the Tool team.

A fully-functioning Scrum team will ask for help from the appropriate people, usually Subject Matter Experts (SME) and Product Owners (PO), and will inspect and adapt to make their work more efficient.  When any blocking issues occur, often called impediments, the team will raise these issue to their ScrumMaster.  Nowhere in the Agile Manifesto or Scrum Guide is a role for Engineering Manager defined.

Because there is no need for day to day management and oversight of a Scrum team, the traditional software engineering manager may feel marginalized, perhaps assuming that their primary responsibility is writing annual performance reviews.  Ugh, what a horrible role that would be.  Thankfully this couldn’t be further from the truth, particularly during the process of transforming from a Waterfall process to an Agile one.
A Manager’s Top Priority

A manager’s top priority is to put their employees in a position such that they have the best opportunity to succeed.  In a Waterfall environment, this usually means breaking down and assigning the work, working to identify and resolve cross-team dependencies, managing the team’s schedule, and communicating release status to upper management.  The common thread for these activities is that they facilitate the Waterfall development process.

In an Agile environment, a manager’s goal is the same, to create the best environment possible for that allows their employees to succeed.  But facilitating the development process in Scrum is very different.  Initially with Scrum, a manager has to be a champion for the process and help employees unlearn roles and responsibilities they’ve grown accustom to in Waterfall.  With Scrum, first and foremost, it is a Team effort versus an individual one.  The Team makes a commitment to work together and do all the work necessary to deliver “done” user-stories.  This can’t be understated. It may be hard for a manager to defer to the team and let the team self-organize, but once a manager “let’s go of the reins” and lets the team “figure it out”, their real work begins.

An Agile Manager’s Real Work

The first job of a manager is to assemble the right people for each Scrum team.  The skills and personalities needed for a waterfall-oriented team are often drastically different than needed for an Agile team.  Because Scrum teams deliver vertical increments of functionality teams members may need to be more cross-functional than siloed.   For example, rather than a team of User Interface engineers, a more appropriate team would include UI, middleware and database engineers, covering features from the front-end all the way to back-end.   This may require a more matrix-oriented organizational reporting structure or changes to the existing organization, something that may ruffle territorial feathers.  But such changes may ultimately what is best for the organization, and a manager should accept and adapt.

Managers have a broader understanding of the business, and can also act as subject matter experts (SME), providing coaching to the team as requested, and additionally participating in the Sprint Reviews where feedback on delivered functionality can be voiced.   

In addition, managers should also consider and account for external influences that may impact the team.  Because the team has committed to a delivering features in a time-boxed iteration, managers should make it one of their top goals to keep the team from being interrupted.  Team priorities are managed via the Product Backlog and short sprints give Product Owners frequent opportunity to re-prioritize work.  Managers should strive to block interrupts during a Sprint, by either pushing back on the intrusion or pre-identify organizational capacity for predicted interrupts such as software maintenance.  I could go on and on about this as I feel strongly about this point.  The Team makes a strong commitment to deliver on the stories.  Managers should respect that and equally make a strong commitment to protect them from interrupts and priority-shifts during the Sprint.

Perhaps one of the most important roles a manager has in Scrum is to address team impediments. A manager should regularly connect with the ScrumMaster to understand and work to eliminate impediments identified by the team.  Impediments may be easy to remove, such as finding budget money for new hardware (perhaps not so easy!), or may sound impossible, as in fixing the timezone issues between the U.S. and India.  Regardless, addressing impediments of all shapes is critical to the health and productivity of the team and it is ultimately managements responsibility to address these issues that can’t be addressed by the team.  Impediments offer an opportunity to think out of the box and to operationally improve organizational efficiency.   Here, out of the box thinking and sometimes creative organizational changes can make a huge impact to the team.  It’s a perfect opportunity for the manager to challenge “the way things have always been done.”   Removing impediments could almost be a full-time job, particularly for an organization transforming from Waterfall to Agile.

Some final thoughts on a manager’s role in Scrum:  A manager should never be the ScrumMaster for teams containing direct reports, as this, in practice, breaks team self-organization. Some companies have, however, had success with managers acting as co-Product Owner.  Engineering Managers partner with Product Managers, with the Engineering Managers focusing inward on the team, and the Product Managers facing outward to the customers.  This role may work where the manager has a strong technical background and the team is without an Architect or strong full-time Product Manager.

Agents of Transformation

Over the past year we’ve asked each Agile pilot team to drastically change the way they work, by holding daily stand-ups, tracking and publishing Sprint burndown and regularly delivering potentially shippable software every 2 weeks.  But as managers we’ve essentially kept our day-to-day work environment unchanged.

Converting from Waterfall to Scrum forces engineering managers to change their day-to-day activities within the organization.  Rather than “owning” the project schedule, their role shifts to enabling and coaching self-organizing teams as well as removing impediments.   But I’d offer up that the role goes a step further: as Managers, the organizational transformation starts with us,  the business owners.   

Agile development challenges us to see beyond the “this is the way we’ve always done it” mantra. Just because it “is”, that doesn’t mean it “has to be”.  And there lies the opportunity for transformation.  As the management leaders of this company, it is our responsibility to not only facilitate this transformation, but to also partake in it ourselves.

Friday, January 21, 2011

The Burn Down Chart: A Picture is Worth a Thousand Words

Back in the halcyon days of Digital Equipment Corporation (DEC) my team was “volunteered” to  participate in a pilot process improvement effort called Software Metrics In Action (SMIA). As project leader of 10 engineers working on an 18 month project, we were a perfect candidate for this effort of inspecting and adapting and ultimately improving our software development methodology via Software Metrics.  My participation in this process gave me valuable experience with process improvement.  What I didn’t realize at the time was that I was being exposed to many of the key elements of the yet-to-be named Agile software development philosophy.

As I look back to that period of time, I recall measuring every piece of the software development process we could identify. Our team motto was “Data tells the truth about perception.” Seriously!  We measured everything.  We compared task effort ‘actuals’ with ‘predicted’.  We tracked our time for development, test, vacation, dentist and doctor visits, even bathroom breaks, and we had graphs for every data series.  But in the midst of this data collection and evaluation there was one metric that stood out. It was the one ultimate metric that the business owners, our management, was most focused on: the “work remaining”, specifically: when can we ship?   

To track the answer to this question we kept a Microsoft Project schedule that contained only the remaining work.   Each day we adjusted the start date of the project each day to the current day and recomputed the remaining schedule.  As more project work got completed, our knowledge grew and so did our confidence in our task estimates and our release date.   By continually refining our estimates based on new knowledge, we were able to track, in “real time”, the effective project completion date on a daily basis.

My teams effort in our1990’s pilot organically stumbled upon one of the key mechanisms Scrum uses today to track project status. Scrum monitors “work remaining” by using the concept of Burn Down, and in particular, Burn Down Charts.  

Burn Down Charts

There are two types of burn downs that are generally tracked by a Sprint team, the Sprint Burn Down and the Release Burn Down.  They both operate similarly, but have a different scope.  The Release Burn Down most closely matched my DEC pilot schedule release date monitoring, as it tracks work remaining for the entire project.  The Sprint Burn Down tracks work remaining within a single Sprint, usually 2-4 weeks long.  Because the Progress Agile pilots were of such short duration, each Progress pilot focused solely on Sprint Burn Down Charts.

Understanding how to interpret these charts is important. As a business owner they provide a valuable and near-instant view into the health (or status), of the current effort, be it a Sprint or Release.  

Reading the Charts

A burn down chart is laid out simply: The x-axis denotes number of days in the iteration (or project), the y-axis, for a Sprint Burn, is amount of available time in hours (for a release burn down, it is story points - topic for another blog).  The numbers on this axis are computed by multiplying 8 (hours/day) times the number of team members, assuming each team member is full-time on the effort.
Reading a burn down chart is fairly simple once you understand what to look for.   Burn down charts show a the rate of progress of work being completed compared to the ideal rate of completion of that work.  All burn down charts have one thing in common: the ideal burn down line with the ideal slope.  Note the pink line in the Sprint burn down chart taken from one of our Agile pilot teams.  This pink line shows the ideal rate of progress, specifically that one day of work (8 hours times the number of team members) is completed each day.  There are 5 days of work, the Sprint iteration is 5 days long, and at the end of the sprint, 5 days of team work should be completed.

The pink line is boring. It’s boring because it is our control value, it’s slope is always the same.  In this chart, the interesting line is the blue line.  The blue line denotes the predicted remaining work for the iteration, in essence the current remaining workload of the Sprint.  If everything works out as we hope, at the end of the sprint, day 5 in this example, the blue line will converge exactly with the pink line, at zero work remaining (since there is zero time remaining!).    If we examine this chart on day 2 and day 3, we can see that the team is ahead of schedule, because it is below our control line.  Possibly the team under-committed to work, but regardless, at day 2 it looks like they are on track to meet their commitment to complete everything they said they would.   By day 4 the team is exactly on track.  But something happens by day 5 because they are half-day behind.  Perhaps a team member became sick or perhaps the team discovered some major unknown work at the last day.  Either way, this is likely a bad example I have chosen to discuss because the team missed their commitment and everyone only found out about it the last day.  The retrospective for this Sprint must surely have been interesting!  This chart introduces more questions than it answers, but it encapsulates a interesting story.  It turns out that this sprint was a bug fix sprint, in essence a “release sprint”, designed to produce a customer-shippable technical preview kit.  Bug fixing uncovered further bugs and the team was unable to fix everything they found in time for the release, the end of the sprint.  

Yes, that burn down chart tells quite a story, a thousand words, as they say, and if you are the business owner, it’s your quickest and best view into each project team.

More Examples
Let’s look at a couple more burn down charts.  In this chart the team is tracking close to the ideal progress line, the black line in this chart format.

The remaining work, Task To Do blue bars, are flirting above and below the ideal.  With 2 days remaining, it is likely this team complete all of their committed work.  In fact, because the remaining work amount hasn’t changed the last few days, it suggests that an inquiry to the ScrumMaster might be needed to see if people simply haven’t been updating work remaining in their effort to complete the Sprint.

In this final chart below, it looks like the team has over-committed, almost from the start, and true to form, they were unable to complete a bunch of work, just over two days of work.
As you become more comfortable with read burning down charts, you will be able to make project status assessments in a matter of seconds.  Tools such as Rally or VersionOne automatically generate these charts based on user data, or, as with one of our Agile pilots, a standard spreadsheet can be created to plot the team data.

Scrum Metrics

Metrics capture what happened in the past.  With historical metrics, we hope that we can understand the past and adapt more efficiently to similar conditions in the future.  While Scrum values inspecting and adapting, Scrum looks forward for iteration and release status using burn down charts.  

Incidentally, my Digital Equipment Corp Software Metrics in Action pilot was deemed a success: our 18 months development project was released 1 day ahead of our original schedule.  You can’t change the past, but sometimes you can predict the future...