Agile Estimation and Planning
Part 7 – Stable Funding
So far, we’ve been able to see that relative sizing can help us eliminate ownership bias in estimation. We’ve shown how the concept of velocity can give us a means of projecting when a collection of jobs can be completed. We’ve shown that adjusting team size into groups with the ability to execute cross-functional tasks at the same time can lead to efficiency.
But we haven’t talked about how you budget for these situations. I am frequently approached by clients wanting to know conversion factors for story points and hours, so they can calculate cost of a feature by multiplying hours times resource cost — just as they always have. As we’ve seen in the previous sections, even in a conversation about something as simple as mowing a lawn, the connection from lawn points to hours is tenuous at best. And to quote myself from an earlier point in this section: “THERE IS NO (consistent) RELATIONSHIP BETWEEN POINTS AND HOURS!”
So what are we to do? It’s actually easier than you might think…
Let’s begin with my one-man lawn-mowing business. Recall when I was asked to estimate how many lawns I could do in a weekend, I gave the forecast of 16 lawns per weekend (where Definition of Done = Just Mowing) and 9 lawns per weekend (where Definition of Done = Mowing, Trimming, Cleanup). What REALLY IMPORTANT assumption am I making here?
When I made this forecast, I assumed that I would be the only one working on my team, and I further assumed that I would be devoting all of my energy to the work of my business. In project manager parlance, I am 100% allocated to my business… that is to say, this is the only thing competing for my attention.
In my imaginary iteration of one-weekend, I will devote two full working days of 8 hours each to the effort. I therefore have a cost to my business of :
Labor Cost = 16 hours (per weekend) x (my hourly rate)
For this example, let’s assume I’m going to pay myself $10 per hour. So my labor cost for my Team is $160 per weekend.
So if I make good on my forecast, a Velocity of 9 points, will cost
$160 / 9 points = $17.78 per point
Further, I use one tank of gas each time I mow my 1-point lawn, so I could reasonably extrapolate to say that a 2-point lawn would take 2 tanks, and a 3-point lawn would take 3 tanks. The gas tank on my mower holds 1/4 gallon (or 1 quart) of fuel:
Material Cost = (1/4 gallon per point) x ($4 per gallon) = $1 per point
Nine points of lawns will cost me $9 in fuel. So total cost for my business is $160 + $9 = $169 expense PER WEEKEND.
For my team, each lawn point is going to average out to:
(Labor) + (Material) = Total Cost
$17.78 + $1.00= $18.78 per point
Which means I need to charge $19 per lawn point … let’s call it an even $20 to make a profit on my business. My business nets $1.22 per job.
Why would I do this? I can hear the project managers and delivery managers screaming their heads off. They’ve actually been doing it since I calculated Labor Cost a few paragraphs back, and it’s starting to give me a headache. I know why they’re upset. I calculated the cost of my team members by potential time, not by time spent working. It’s like I’m paying a salary for hourly work! That’s crazy! Who would do that?
I’ll give you a minute as you gaze into the looking glass…
Yes, my friend. You are that crazy, wonderful person who pays a fixed salary to your people, regardless of how much work they do! And let me tell you, it’s the reason everyone gets so wrapped around the axle on budget. Good grief, listen to them: “Why am I paying for them when they’re not working? That’s not fair! I should only pay for the time they’re doing work! Well, I’ll show you! I’m going to pay someone to make sure everyone is busy every second of the day so I don’t waste any money on idle time ever again! Yeah, that’ll do it! And because I’m so good at getting project managers to get workers to work, someone should pay me too! Which means I need to be busy, every minute of the day… uh… micro-managing them into a frenzy of performance…”
Done? Welcome back. Easy to fall down the rabbit hole, isn’t it? We’re going to have to agree to make a few adjustments on how we look at our teams. Our teams are not made up of individuals contributing moments of time to a string of semi-related tasks. Semi-related tasks are the same as multi-tasks. They are inefficient. Refer back to the previous discussions.
For years, you’ve piled task after task on your folks in the name of keeping them busy, but in between those tasks, you wasted their time to task-switching. They weren’t actually efficient. You just chose to ignore the waste.
So for the time being, let’s assume that we will have a steady backlog of lawns that we need our team to mow — more lawns than they could possibly do in a single weekend. Let’s further assume that management of these teams will be limited to making sure they are assigned to work on the most important lawns first, and that they always try to finish every lawn they start so there is a steady stream of value being produced. Those last two suppositions are vital. To make sure they finish what they start, they can’t be assigned more work than they can do.
As long as the value being produced exceeds the cost of producing it, we’re going to make a profit, so for this moment, let’s agree that profit is good, and any profit is sufficient to justify continuing this thought exercise. Agreed? (Don’t worry, we’ll worry about maximizing profit in a future section.)
Until this moment I’ve talked about my one-man team. That’s good as an illustrative jumping off point, but I’m not the kind of team we should be worried about…
Now, let’s take a look at Ed’s Team. He has three guys, and let’s say they all earn $10 per hour as well. Ed’s labor expenditure is triple what mine is ($480 per weekend). Also, his monster machine uses more fuel than mine, plus he’s using a gas-powered lawn trimmer. So Let’s just say that Ed it burning $3 in fuel for every point of lawn his team mows.
When we asked Ed how many points he could deliver in a weekend, he laughed at our guesstimate of 60 points per week, and said he can really only do more like 36. So let’s use that… and pay close attention. The math is calculated the same.
$480 / 36 points = $13.33 per point
For Ed’s team, each lawn point is going to average out to:
(Labor) + (Material) = Total Cost
$13.33 + $3.00= $16.33 per point
Which means he could charge $20 per 1-point lawn as well, and still make a profit. (He actually charged me $25 – but remember, he has to truck the equipment around… which has far more to do with the reason for his velocity only being 36 points).
What do you think would happen to either of our forecasts if our teams weren’t fully allocated? Take for example, Ed’s leaf-blower guy, Joe. Of the three jobs, Joe has the easiest job because it takes less time than the mowing and the trimming, plus he can’t actually blow grass clippings that haven’t been deposited on the sidewalk yet. This means that at times, it may look like Joe is idle. To correct this, what if Joe was assigned to work on another lawn care team? I think you can see that sets up Joe to become a bottleneck to completing work. What if the two lawn care teams are not operating in close proximity, necessitating travel time (task switching cost) as he shifts from one team’s job site to the other?
This is the next assumption I want you to embrace. It is not uncommon to put people on multiple teams, and forget to account for the transit time between the two. We inevitably slow down both teams as they wait for the shared resource to appear… all in the name of keeping one resource busy. Instead, I’m sure there are a million tiny non-leaf-blowery things that Joe could do to make sure the job goes smoothly. Maybe he grabs a small mower and gets in between tight spaces the monster mower can’t reach. Maybe he helps out with some edging, or collects the money from the customer. Joe isn’t just a leaf-blower anymore! He’s a hero.
So if we take these assumptions and bundle them together, we arrive at an interesting premise. Every member of Ed’s Team should be fully allocated, and fully committed to completing each job they take on. Because of this, each member of Ed’s team will be as busy and engaged as possible, each focused on the delivery of value. And because of that we can now make a huge leap forward in our budget conversation!
Our fully-allocated, salaried team, with a steady backlog of work available to them, will COST us the same amount – every – single – weekend. So if Ed’s team comes to a point where they can reliably produce 36 points of lawns each weekend, and they always cost the same amount every weekend, then we are in a stable funding state, where the cost to customers are proportionately calculated by how much value they received.
Per our earlier calculation, Ed need only charge $16.33 per 1-point lawn, and double that for 2-point lawn, and triple that for a 3-point lawn, and 5-times that for a 5-point lawn, etc… Then Ed will make sure he rounds up so the business gets a cut of the profit.
In a Stable Funding model, it pays to keep our teams together and static so they can become predictable. When that association manager comes to Ed, and asks what it will cost for him to maintain all the lawns in a subdivision, Ed knows his cost per iteration, and he knows how many lawn points he can deliver for that cost.
TO BE CONTINUED…