From this point on, I’ll be blogging over at WisdomAt.Work. Head on over there…
How much wisdom is in the first line of the Agile Manifesto?
Well, what is the first line? I ask, because I all too often see people think that it’s “Individuals and interaction over process and tools”. That not the first line. That’s the first value, and I’d argue that missing the first line means that you’ve totally missed the deeper context for all of Agile thinking.
“We are uncovering better ways of developing software by doing it and helping others do it.”
That’s the first line. If you doubt me, check AgileManifesto.org.
Before you think I’m just being pedantic I’d like to walk through this sentence and really bring out its glory.
- “We”: this is something that’s done collectively, not alone.
- “are”: it’s done in the present, in other words all the time. This is not an invocation of past insights, it’s a reminder that you need to be present, in the present, conscious to what’s going on right now, and not relying on what might have happened in the past.
- “uncovering”: not inventing, or selling, or theorizing, or proposing. By being present, by paying attention to what’s going on here and now moment by moment, we can uncover what is emerging. Paying attention to the work will reveal how the work is actually working.
- “better”: not best, but better. In a creative field there is no best but there could always be better.
- “ways”: what ways? We’re not saying. We can’t. We don’t know. We are uncovering them. Agile has no answers! Sorry about that. If we thought we had the answers – the ways – we’d be selling you something that had worked for us in some situation we were in. Not your situation now. So we might achieve compliance if we had enough authority, but can you smell the hubris in that? The whole point is that we’re doing something creative. Something we’ve never done before. If we had done it before, we’d be using that! The trap is thinking you have done something before when you haven’t and relying on the “ways” that worked back then. The word “playbook” – I’m looking at you! And you, “standard operating procedure”! Those ideas are useful, even necessary, but they’re simply not sufficient in an rapidly changing world.
Where was I?
- “of developing software”: the authors of the Manifesto were at the time only thinking of software. But by taking out these words and replacing them with “working” we have a much more broadly applicable philosophy emerging. For developing software of course this all applies. But starting to work consciously, always being present to what’s emerging, that’s helpful in any field. It’s dogmatic to insist this only applies to software, and it’s closed-minded to think, for example, that “hardware can’t be Agile”. Remember “ways”? Uncover some better ways for hardware, why not? For accounting? Why not? For facilities? Why not?
- “by doing it”: the ways are being uncovered by the actual practitioners. Not theoreticians. Now theory and academic work is essential, I grant you. It can shift the paradigms of thought in which the work occurs, so it can actually accrue as “experience” not just “time served”. Ten years thinking the same way is not ten years experience. So think, and do. But theory on it’s own, no matter how fascinating, is ultimately of no value unless it’s applied.
- “and helping others do it”: which rounds us back to doing this not just collectively but also collaboratively. You get more done working with people than you do alone. More than that, it speaks to a deep principle of life: you can get whatever you want if you help enough other people get what they want. Remember where the money comes from.
This is the first line of the Agile Manifesto:-
“We are uncovering better ways of [working] by doing it, and helping others do it.”
It goes on “Through this work we have come to value-”
Now go read the values and principles and see if they don’t taste different than they did before you read this article. Delicious, eh?
Here’s the sublime: http://arlobelshee.github.io/AgileEngineeringFluency/Stages_of_practice_map.html? Arlo Belshee’s clarity is just dazzling.
And here’s the ridiculous http://lafable.com/ You Agilists should find this highly entertaining, and you may be surprised when you find out who’s behind it.
I’m clear that oddly, the message in the comical one is what’s missing from the serious one. Arlo’s graphic is fantastic, but it is dazzling, and dazzled you might miss something. What is it? Take a look, what do you think? How would you express that message?
Why oh why?
How often is an estimate correct? Why do we seem to under-estimate so often? We can’t always blame the pointy-haired boss. Can we?
Well, no we can’t. Really, we could have some sympathy for those pressuring us to higher certainty and lower costs. They’re just trying to reduce risk, even if the risk is of looking bad. Maybe they’re stuck in a world of cost accounting, unaware of its impact or alternatives. If a project has overrun, and if all you know is detailed estimation, then it’s easy to assume that you can’t have done enough detailed estimation. So there’s an urge to do more of it!
Doing more estimation is a waste of time and energy. Let me show you what is going on here. It is something simple and fundamental.
Let’s Estimate Something
Here’s some work we’re estimating. Let’s consider everything that could be known about this piece of work.
First, there’s some of it about which we have a high degree of certainty. We know what we know about this. Let’s call this KK – Know what we Know.
Then there’s the rest, the stuff we Know we Don’t Know. Call this KDK. This must have a degree of uncertainty, by definition. We could manage the uncertainty if we buffer the estimate. With a mature and wise customer, we could provide a range. The risk is that we assume the high end is more realistic, and those employing us turn the low end into a deadline.
So, we’re done. That’s our reasonable estimate. Quick! Commit!
Wait! We’ve missed something. It’s not a reasonable estimate. As it stands, it’s pretty much a guarantee of failure.
What are we up to here? We’re developing something new. If we were developing something that wasn’t new, we wouldn’t have to estimate it, would we?
If it’s new, there must be parts of it that we Don’t Know that we Don’t Know (DKDK), by definition. I mean – it’s new!
Here’s my question: will DKDK lead to more work or less work? (Hint: it’s MORE work! Duh!)
Well, here’s a grain of solace. Inside DKDK is DKK: what we Don’t Know we Know. Some stuff turns out to be very like something else we’ve already done, and we hadn’t realized it until we started work on it. This will account for those occasions when the estimate turns out to be high – sound of heavenly trumpets! But since we usually remember what we know, these occasions are not the norm.
The point remains: it’s all pretend until we start work on it and start realizing – making real – what’s actually involved. Nothing is certain until– when?– until it’s actually finished!
The truth is out there
Take a look at Steve McConnell’s classic work on the Cone of Uncertainty.
Note that the broad end of the cone, at the time of producing the estimate, gives a range of accuracy of the original estimate of from 25% to 400% of the actual.
The Standish Group’s CHAOS report shows this clearly. Here’s the table of Time Overruns from the report.
|Time Overruns||% of Responses|
|21 – 50%||18.30%|
|51 – 100%||20.00%|
|101 – 200%||35.50%|
|201 – 400%||11.20%|
Look at this as a histogram:
Thanks to DKDK the work more often ends up running long. Sometimes, sure, it’s early thanks to DKK. Only 20% of the time does the combination of KK and KDK prove roughly accurate.
Over to you
This is why the wise thing to do is turn the iron triangle upside down and declare that the team is fixed, the time is fixed (by sprints), and the scope is variable. This isn’t just wise, it’s because there is no such thing as a fixed scope! The scope of anything that hasn’t yet been created is unknown, and so must be variable. It’s all pretend!
Now, do I need to explain the genius of relative size estimation using story points, limiting work in progress, and reducing cycle time?
The only sensible thing to do is to estimate using a scale that is course grained, recognizes that the larger something is the more uncertainty there will be, and is local to those doing the work. Hence Story Points and Relative Size Estimation.
It’s only sensible to limit the amount we do to the smallest possible amount so we can check with our customers if it’s actually useful to them quickly, and adjust course accordingly. Continuous planning makes sense.
It’s only sensible to minimize up front detailed specification and estimation, as that’s the point when we know the least. Understand what is meant by Last Responsible Moment.
So give an estimate, sure. Estimate the whole thing. But it is unprofessional and irresponsible to then allow yourself to be held to a fixed scope in an Agile world. Don’t do it. You’ll only disappoint your customer when the intention was to delight them.
Comments, as ever, are more than welcome.
Thoughtful parable from Johanna Rothman on the feeble manager’s fall-back “Don’t bring me problems, bring me solutions”.
Today, a tip, nothing to do with Agility other than being a move towards a world where technology makes life better, not worse.
You’re on the move, and that important meeting is about to start. Your iPhone’s in your hand, but now you’ve got to find the invite. Wait, you remember you set up the dial-in number as a contact… but what’s the meeting code? Aaahhhh!!!!!!
Here’s a tip if you’re setting up online meetings. This works for an iPhone, I don’t own anything else, so please test it on your own smart phone and let us know in the comments how it works for you.
If you have a dial-in that’s a phone number, and a meeting id, and the nice electronic lady asks you to dial “#” at the end, there’s a way to set up the meeting invite so all your attendees could just tap once on the meeting reminder when it pops up on their phone – and they’re in!
The Tip – help your attendees
Enter the whole number and meeting ID in the following format, and iPhone users can just tap on the screen when the reminder pops up, and it will dial automatically.
Format: “+1 (555) 123-4567,,,999999999,,0#” where 999999999 is the meeting ID.
(If you want to put in a hard pause, use a semi-colon. The phone will them display a message “Dial <number>” that you can tap again and it’ll dial. E.g. “;0#” at the end means you will need to touch again as the phone asks “Dial 0#” so just touch where is asks and the hash is dialed.)
Why the “0” before the “#”? It’s a workaround for the iPhone bug that has a number ending in a “#” fail to dial. Neat, huh?
Note, don’t put a space into the meeting ID, the phone will take it literally and this tip won’t work!
So this trick would mean I could simply tap my screen once when the meeting reminder comes up and I’m into the call.
Sub-Tip – help yourself
If you’ve already received a meeting invite, open the appointment in your calendar and edit it to match this format, that works too. I’ve found that keeping the number in the meeting location field works well.
Respect and Time – this is Important!
Scrum has a set of ceremonies, some considered essential, some optional. What’s important is that they are held at consistent times.
Er… ok. Why’s that important?
Well, firstly, this allows for the attendees, both participants and observers, to plan their time well. It sets the heartbeat of the team, and allows for the measures that we use for a team’s predictability (velocity, Say/Do, cycle time) to have some basis in reality. Reality! Yay!
(Favorite theme: operating in reality works better than operating in make-believe!)
This is good. If your team is consistent and reasonably predictable, this is highly valuable to the business, as it allows them to do high level planning with increased confidence. Benefit to you: they’ve got fewer reasons to ask you to do crunch-work.
Secondly, there’s a bad side to not doing this, setting up regular ceremonies.
What does the bad look like, and why is it bad?
One of my favorite life principles is that you can always make more money, but you can’t make more time. (Despite claims to the contrary.) So respecting others’ time is fundamental. Being late or inconsistent around appointments is basically sending the message “My time is more important than your time, actually. Nyaah!”. It’s incredibly rude, and it’s a sure-fire way to undermine credibility, trust, and team cohesion. Is that worth it?
Don’t do it.
Don’t tolerate it.
I’ll be writing in due course about the SCARF model (see David Rock, “Your Brain at Work”) The “S” stands for Status. Sending a message that they are less important than you, even if that’s true, is an assault on their status. It activates a threat response, either having them unable to think clearly, or if strong enough, activating a fight / flight / freeze / appease response. That’s no way to run meetings.
Said another way, it’s a great way to get people pissed.
Can you see how much sense it would make to show respect for people’s time?
So what’s the first step?
So here’s what I suggest. Schedule your teams ceremonies, schedule the times when you’ll protect their ability to get on with work, and get the team to set rewards and sanctions (Reward: chocolate gift? Public cheer? Sanction: $1 fine? How about having to sing at the Stand-up? Or dance?)
Here’s an example of the kind of schedule you might want to set up, and how to use Outlook to support the team.
Let’s say your team has two week sprints, starting on a Wednesday. Here are the meetings you’ll need to set up:
- Sprint Planning: Wednesday 10:00 am to 11:00 am, recurring every two weeks on Wednesday, starting on first day of first Sprint. Invite Team, Product Owner can forward to stakeholders, also possibly engineering managers if they can act as technical consultants not bosses.
- Story Grooming: First Friday 3:00 pm until 4:00 pm, recurring every two weeks on Friday, starting of first Friday of first Sprint. Same invite list as for Planning.
- Sprint Demo: Second Tuesday 11:00 am until 12:00 pm, recurring every two weeks on Tuesday, starting last day of first Sprint. Same invite list as for Planning.
- Sprint Retrospective: Second Tuesday 2:00 pm until 4:00 pm, recurring every two weeks on Tuesday, starting on last day of first Sprint. Invite to Team only.
- Daily stand-ups:
- First Thursday and Friday, 10:00 am to 10:15, recurring every two weeks on Thursday and Friday. Invite to Team as contributors, anyone else as observers.
- Every weekday (middle week), 10:00 to 10:15, recurring every two weeks, starting on First Monday of first Sprint. Invite as 1.1.
- Last Monday, 10:00 to 10:15, recurring every two weeks, starting on last Monday of first Sprint. Invite as 1.1.
Outlook recurring meeting for first two Stand-ups.
Wow, that’s a bunch, am I right? But you only do it once!
Schedule work, not interruptions.
Get the people in the team to schedule the time they want to protect at work, so to other’s it’s clear that this time is Busy in Outlook.
In Outlook, have them add something like Daily, 9:00 through 10:00 Deal with email; Daily 11:00 through 5:00, Concentrate and Collaborate.
Outlook always allows you to Tentative Accept or Decline just one meeting instance. Use that sparingly.
Release Planning, Release Retrospectives, company All-Hands and Offsites, sure they will take precedence. Give people robust feedback if these get scheduled at the last minute, that’s not acceptable professional behavior.
But what are you telling the world if they look at your Outlook schedule and just see that it’s mostly free? It’s permissions to mess with your days my throwing meetings at you any old time. You’re asking for a drop in “S”!