Designing a Delivery in a Distributed Environment
Several years ago I was coaching a project developing a large system consisting
of electronics, mechanics, firmware and software, with development teams in
several countries. The main development team was in the Netherlands, and the
team in Belgium kept delivering late and unreliable results, causing trouble
to the regular deliveries to stakeholders. I was sent to the Belgian
team to help them using Evolutionary Planning, so that they would learn to promise
what they would deliver, and then deliver as promised.
One Wednesday we started designing the next delivery and this is what we
did:
- Draw a TimeLine
We started by drawing the TimeLine for this DeliveryCycle. On a TimeLine
we put ticks on the line for days and weeks, depending on the scale. Weeks
for several deliveries. Days to detail actual work. In this case we put
ticks for the days of the TaskCycle we were planning.
- Mark the project Deliveries
We added the project Delivery, in this project Friday 11:00.
- Mark our own Deliveries
This was a TaskCycle for us as a sub-team, delivering
a Result to the main-team for integration into the project Delivery. We
decided that we should deliver by the end of Tuesday, so that our result
would be available to the main-team on Wednesday morning. This way, the
main-team could integrate and check the proper working and we would have
time to ease any hiccups if they would be there.
This meant that the TaskCycles for the sub-team would start Wednesday mornings.
As it happened, it was Wednesday morning.
- Determine the available time
We decided the gross available time for the team this week to be 36 hr rather
than 40 hr, because we were spending some time on learning, that Wednesday
morning. If people work full time, this means 24 hr plannable time (remember:
default we plan 2/3 of the gross available time, see "Weekly Planning").
- Determining what to do and what not to do
We checked the Tasks already prepared by Serge and Gregory. Serge was Project
Lead for 4 more people in this sub-team, so he needed to plan time (figure
2) for Management by Walking Around (MbWA), and for preparing for the next
week for the team. The remainder of the time he planned for his share of
the development work. Project Management easily deteriorates when the PM
is also working. Rule: First manage. If you still have time left: manage
better. If you really have time left, you may do some work. In order to
get the Delivery on time Serge still had to do a lot of work himself, knowing
that he'd have to catch up on management the next week. But adding up his
estimates (they already had learnt to realistically estimate quite well)
showed exactly 24 hr, so his planning was done quickly.
- Weeding out unnecessary things
Then Gregory came in. He had planned 42 hours of "necessary" work (figure
3). This didn't fit the 24 hr, so even if he'd try, we now already knew
that he wouldn't succeed, and the Delivery would fail. Failure isn't an
option, so we still had to do something about this. First we found out
that the first two Tasks in Gregory's list ("Draft design" and "Finish design")
were not for this Delivery and that the information to do the design wasn't
even sufficiently available from the main-team. So we moved these Tasks
to the future. He changed the time for these Design Tasks to 0, because
he didn't even know what he would have to do.
- Until you know you will succeed
Now we were at 30 hr (figure 4). Still 6 hours to move. The past week, Gregory
had been struggling with XML, actually spending more time on it than he liked.
Jerome knew XML better and had some time to spare. We called in Jerome,
and they decided to move the two XML tasks to Jerome. Because Jerome would be
quicker with XML, he said he'd need 3 hr per Task to do the work. This didn't
relieve Gregory completely from these Tasks, because he would have to explain
the Tasks to Jerome and integrate Jerome's result in his own result. So
Gregory planned 1 hr each for both Tasks, instead of the original 4 hr each.
Now he had 24 planned hr and he accepted the responsibility to deliver (figure
5).
One week later, Serge and Gregory delivered. No stress. They said they even had a few
hours left to implement something extra that they decided was actually forgotten
in the design. On the Friday, Serge went to the Dutch team to be present at
the Delivery to the Stakeholders. I was there to see whether he would really
cause a smile on the Stakeholders' faces. He did. Everything
simply worked.
Can you imagine what would had happened if we wouldn't had designed this
delivery?
For those people who like the "Lean" concepts:
Value Stream Mapping is used to find the wasted time in repeated activities:
we can see where we usually waste time and redesign the process to prevent the
waste. In development, there are many repeated activities where we can cut waste
using Value Stream Mapping, but there are also a lot of non-repeated, one-off
activities, where we only can prevent the waste by preventing to spend the time.
Preventing to spend the time we can only do by foreseeing that we are
going to do things we shouldn't do (or shouldn't do now). See the page
about preflection.