Five Key Numbers to Gauge your Agile Engineering EffortsJeff Nielsenjeff@jeffnielsen.comAgile Tech DCMay 14, 2011
There are many benefits to working incrementally in short cycles . . .
. . . if you can pull it off
Agile engineering practices are supposed to enable a flattened cost-of-change curveTDDrefactoringcontinuous integrationpair programmingcoding standardautomated buildsautomated tests. . .Craig Davidson, http://www.agileadvisor.com/2009/01/yagni-and-cost-of-change-curve.html
But it’s not sufficient simply to do the practices(They’re not binary)
How do we knowhow effectivewe are atflattening the curve?
Five key numbers . . .Not intended to be comprehensive or even very scientific
Seconds20#1How long until you see feedback from a test after writing or changing a line of code?1612840
#2How many one-line changes can you commitand push to testin an hour?Following the team’s practices, of course201612840Commits
The speed of the feedback affects the speed at which you can work
543210#3How many people on your team can explain the details of any particular section of code?
100%#4What percentage of your team members did you pair with in the last two days?80%60%40%20%0%
“Promiscuous” pairing speeds up communication and builds trust
#5How many manual steps does it take to get a build into production?15129630Steps
Higher transaction costs drive longer cycles and bigger batches
To lower the cost-of-change curve, we must lower the transaction costs associated with adding features
Make it cheaper toChange code Check in codeUnderstand the codeCommunicate with your teammatesPush code to production
If we can make changes cheaply enough . . . . . . the cost savings from quicker feedback and increased learning outweighthe costs of overhead and rework.
120967248240BONUSWhat’s theaverage typing speed of the programmers on your team?

Five Key Numbers to Gauge your Agile Engineering Efforts

  • 1.
    Five Key Numbersto Gauge your Agile Engineering EffortsJeff Nielsenjeff@jeffnielsen.comAgile Tech DCMay 14, 2011
  • 2.
    There are manybenefits to working incrementally in short cycles . . .
  • 3.
    . . .if you can pull it off
  • 4.
    Agile engineering practicesare supposed to enable a flattened cost-of-change curveTDDrefactoringcontinuous integrationpair programmingcoding standardautomated buildsautomated tests. . .Craig Davidson, http://www.agileadvisor.com/2009/01/yagni-and-cost-of-change-curve.html
  • 5.
    But it’s notsufficient simply to do the practices(They’re not binary)
  • 6.
    How do weknowhow effectivewe are atflattening the curve?
  • 7.
    Five key numbers. . .Not intended to be comprehensive or even very scientific
  • 8.
    Seconds20#1How long untilyou see feedback from a test after writing or changing a line of code?1612840
  • 9.
    #2How many one-linechanges can you commitand push to testin an hour?Following the team’s practices, of course201612840Commits
  • 10.
    The speed ofthe feedback affects the speed at which you can work
  • 11.
    543210#3How many peopleon your team can explain the details of any particular section of code?
  • 12.
    100%#4What percentage ofyour team members did you pair with in the last two days?80%60%40%20%0%
  • 13.
    “Promiscuous” pairing speedsup communication and builds trust
  • 14.
    #5How many manualsteps does it take to get a build into production?15129630Steps
  • 15.
    Higher transaction costsdrive longer cycles and bigger batches
  • 16.
    To lower thecost-of-change curve, we must lower the transaction costs associated with adding features
  • 17.
    Make it cheapertoChange code Check in codeUnderstand the codeCommunicate with your teammatesPush code to production
  • 18.
    If we canmake changes cheaply enough . . . . . . the cost savings from quicker feedback and increased learning outweighthe costs of overhead and rework.
  • 19.
    120967248240BONUSWhat’s theaverage typingspeed of the programmers on your team?

Editor's Notes

  • #3 Speed up feedback loops, know whether you’re building the right thing, whether it’s going to make you money, know if you understood the requirements, be more responsive to your customers, change direction quickly
  • #5 What if you could engineering things in such a way so that you could produce a constant stream of new features at a steady rate, regardless of the age and/or size of the system?
  • #8 OBJECTIVES Understand how various agile engineering practices help to flatten the cost of change curve See why lowering transaction costs is a key theme of agile engineering practices Be exposed to some ways to evaluate the maturity of their own agile engineering effortsHave ideas about how to improve their implementation of agile engineering practices
  • #10 This exposes the limit of how quickly you can work within your team context.
  • #12 Collective code ownershipSimple designGroup designTransparency in version controlReduce the WTH’s per minute in a code reviewPAIRING
  • #14 You need a shared contextBuild trust through interactionIf you aren’t working regularly side-by-side with your teammates, the team knowledge and cohesion is going to fracture