Agile Practices Overview: Points and Team Velocity

Now that we’re apparently Post-Agile these days, I’d like to take a moment to remember why we — as an industry — were so excited about Agile to begin with. In particular, I’d like to look at some of the practices of Agile, and how they came around in the first place. There was a lot of wisdom and value in the Agile practices, and I’d like to call out that wisdom and value explicitly, as well as acknowledge where the difficulties with these practices were.

Moreover (and most importantly!) I’d like to hear from you about your experiences with these particular practices.

The first topic I’d like to hit is “points” and “velocity”. There is/was a lot of confusion about points, their value, and how they’re to be used. Because of that, the concept of “velocity” is totally lost. So let’s go back to basics.

The Problem:

Development estimates are notoriously difficult, yet are mandatory for business planning. Although developers have a sense of the size of work, trying to nail down a specific amount of time regularly comes with a +/- 100% margin of error. Further, the very basis of Agile is structured around refactoring the development process itself (more on that later), but there is no clear productivity metric out there (SLOCs punish refactoring and reward copy/paste; “tasks accomplish” assume equal weighting per task, etc.).

This Solution:

Create an artificial/abstracted metric of work — a measurement of the estimate itself. By giving tasks point estimates, we can measure how much work can get accomplished based solely on estimates. The amount of estimates the team can accomplish in a fixed time period is called the team’s “velocity”. This velocity naturally fluctuates over time, both in response to the team’s changing sense of the value of a “point”, as well as the team’s changing productivity. And while human tendencies to find patterns and make norms will probably cause points to standardize to some amount of “real work”, there’s no additional value in trying to measure that “real work”: we already know how many points of estimate we can accomplish, and we know how much we’ve estimated our current tasks for, so we have a good sense of expected delivery dates.

Difficulties:

  • Bootstrapping the system is tricky, since people need to be given a sense of what “a point” is worth, but equating a point to a time period ends up fixing the value of a point in people’s minds, thereby destroying the flexibility of the system — and that flexibility is the biggest value! So kicking off the first estimation session by explaining “eight points is a task that can be accomplished in one day” immediately undercuts the system.
  • Granularity on the system is lacking, and an implied linearity is a bad model for development. Development is by nature non-linear: for example, very simple things may only take 15 minutes, but even moderately complex things might take half a day, and very complex things might involve hours of work, not to mention conversations and meetings that span weeks. Unfortunately, if an average task is 5 or 8 points, 1 point is an overestimate of a one-word change: eights 1s does not equal the same amount of effort as one 8, even at the abstract level of estimation.
  • Trying to decide on a way to measure a team’s velocity is non-trivial. Do you use a rolling average? The last iteration’s velocity? Some number negotiated between the product owner and the development team? Without some kind of velocity measurement, the point system’s value vanishes, but a bad velocity measurement results in bad estimates for delivery dates and often in an over- or under-worked team.

What are your thoughts about using a point system? Was this assessment fair? Have you worked in places where it went well? Went badly?

Related posts:

  1. Excellent Post: “Am I Agile Or Not?”
  2. Lots of Positive During Phone Review for Agile 2007
  3. Agile Alliance is getting a shake-up
  4. Okay, Agile, What’s the Verdict?
This entry was posted in Agile. Bookmark the permalink. Post a comment or leave a trackback: Trackback URL.
  • http://www.intellectualdetritus.com Paul Wiedel

    Robert,

    My experiences with abstracted units of measurement for estimated work have always failed or caused problems when the people in finance find them.

    Part of this may be due to poor communication within the organizations that I’ve worked, but I think the natural tendency for someone in the CFO’s org chart is to want to turn those abstract units of work into something that can be used as a planned capital expenditure.

    It is my understanding that to accountants, paying software projects are the same as paying for any other durable good. On their spreadsheets they budget purchasing equipment the same way they do for purchasing software.

    It’s complicated and there are people who understand that domain far better than I do. What I do know is they want to know how much a project is going to cost when they define their budgets. Changing the cost or the scope seems to be a big no-no. GAAP accounting may be the antithesis of agile software planning.

    As a result of the accounting rules; the points, the ideal work days, the glimzarks, or whatever metaphor for work the software people want to call them turn into hours and then ultimately into dollars. Hide the points as much as they will, the people who pay the bills will find some numbers and they will likely adamantly insist that those points have some dollar value.

    How do we move beyond agility? I don’t know. It’s a domain that I’ve contemplated for a while. I think the needs of accounting and finance need to be taken into account and reconciled before we can move beyond agility.

    In practice, I think that capitalized abstracted planning can be done. What needs to happen though is that the scope of the project must be abstracted sufficiently to allow the project enough room to evolve the details of the implementation as the project is in process. The challenge there is getting everyone on the same page. Getting buy in from people in vastly different facets of an organization can be very difficult in practice.

    To an accountant, waterfall is an ideal methodology.

  • Mark

    Any quantitative value only has meaning when measured relative to absolute. This floating absolute renders the entire metric useless. Most of the programmers I’ve worked with don’t even have any concept of what points mean as they nervously offer a 4 or 8.

    We work in time. Time units are well established. If a team always comes in 20% over/under then start adding/subtracting 20% to their time estimates. Point abstractions are superfluous and confusing.

    • http://www.robertcfischer.com Robert Fischer

      Define “has meaning”. This approach has been experimentally demonstrated to contain and communicate information—namely, it effectively communicates the amount of work that the team is accomplishing by its own measurement. That’s something that has happened in reality, so I’m not sure how that fails to “have meaning”.

      You are absolutely right to say that “six points”, for instance, communicates no meaningful information without its context. But no language works without context, so that doesn’t bother me too much.

      You need to catch the postmodernism train, Mark—the reality is that the entire concept of “absolute” is pretty much out the window as soon as you’re dealing with people, so the very basis of your critique falls out. This is doubly true in the workplace, where illusions like “one hour of work” as a metric does such incredible damage to teams.

      • Mark

        “has meaning” as in “it takes the Earth 24 hours to rotate around its axis”. How many “points” is this?

        More importantly, when can my project manager expect his solution when I tell him “Oh, that’s a 60 pointer for sure”. He’s going to take that “60 point” estimate, look at the historical velocity and convert it to real time. He’ll also convert the uncertainty in my estimate by looking at my historical estimates vs. actual points achieved. Why are we making all this work for the poor guy/gal. Just tell him how long you think its going to take and save abstractions for your code.

        • Mark

          Actually, rather that make the system more abstract, I would make it more concrete by creating units of time for each developer. Having written software for over 30 years now its been my experience that one programmer can easily be 20 to 30 times more effective than another. (The latency in management realizing this fact is another matter.) What I would like to see is “Mark Hours” vs “Bob Hours”. If I estimate the work in “Mark Hours” and then Bob comes in to do the task the actuals will, as they always do, vary wildly. They problem then becomes one of knowing your team and knowing who’s going to do what way up front when your bidding the job.

          What needs to be re-thought is the concept that all programmers are created equal. They aren’t. Not by a long shot.

          • http://www.robertcfischer.com Robert Fischer

            You’re absolutely right. I’m very much in agreement with you.

            The term “24 hours” seems to have a meaning because we feign a consensus on what “hour” means. And, in that sense, a point has no meaning, because it has not fixed term.

            What a “point” has is a contextual meaning and an inferred meaning. The team develops a sense of a point, although the number of points that the team may get done in a week may well vary: by virtue that this previous task was 3 points, this new task should be 3 or 5 points. This is how language works, and human beings are really good at normalizing this kind of language.

            What I’m talking about with velocity is tracking that difference, not only from developer to developer but over time—after all, Mark Hours Before His Baby Was Born aren’t the same as Mark Hours After His Baby Was Born. And instead of assuming I’m on top of tracking all that or placing myself in the position of estimating how people’s life is changing, we can use empirical measurements based on information we’ve received about the process. Which is exactly what I’m proposing.

            As for when things are going to get done: it’s actually no more work for the project manager. The process you’re describing is easily done on a spreadsheet. Compare that to your option, where you’re allocating tasks to the various developers, having the task estimates change depending on who is picking them up, and basically creating an NP-complete bin packing problem for yourself. That’s a real nightmare for ETA!

  • Brett

    I thought the way it worked, or the way it works where I work, is there is a bucket of points available to burn in a two week iteration. This is not to say that 30 points = 2 weeks, therefore 1 week = 15 points and 1 day = 3 points. Doesn’t work like that. There are 30 points. There is a 2 week iteration. Then, projects are estimated in terms of points burn. When we reach 30 we say the iteration has been planned. The projects then need to be executed within the iteration. Its not about calculating points in terms of time. Its about getting a bunch of work done in a duration of time. Its a little more abstract but not entirely abstract. I don’t see how points estimation can work outside of the context of the larger Agile development methodology, specifically iteration planning. The two are intimately tied together. The concept of points estimation breaks outside of Agile methodology.

  • Categories