George,
It's a relief to know the problem wasn't simply that I had forgotten
English. I feared that was the case, since nothing I wrote seemed to
be understood at all.
Of course people were using card walls long before anyone thought
about applying lean principles to software development. When I used
the phrase "kanban-style card wall" what I meant was that there are
columns for value-add activities, and just in front of each of those
is a buffer or WIP column. I label those types of columns in
contrasting colors to make the difference visual. People pull from the
buffer in front of the activity they're about to perform, and push
their results in the next buffer. The organization of the card wall is
based on those lean concepts, often associated with "kanban." I may be
out of step with the discussion, because when I think about "kanban"
I'm thinking of the general definition and not necessarily the
adaptation that folks like Karl and David have been crafting for
software development work. So, I'm thinking about one station pulling
from the previous station on the line (loosely). I like the card wall
to reflect that model.
I've found that software development work tends to fall into a "hybrid
push-pull" system, which is one of the typical variants of kanban in
lean manufacturing. I know Karl and the other guys want to see a pure
pull system, but I think there would have to be substantial changes in
conventional assumptions about organizational structure and other
business factors before that will be realistic. If that were possible,
it would imply a lot of other very good things about the way
businesses were run! But not this year.
The difference between that and a conventional agile card wall is that
the concepts of WIP, WIP limits, pull, and push are explicit. I think
that's a minor difference, but it seems to be helpful. When people
look at a conventional card wall and see that one of the columns is
empty, they might think nothing of it. When they look at a kanban-
style card wall and they see that one of the buffers is empty, it sets
off an alarm. They ask, What will happen when someone is ready to pull
work from that buffer? When people look at a conventional card wall
and see that one of the columns is jammed full of cards, they might
remark that the team has a lot of work to get done. When they look at
a kanban-style wall and see more cards in an activity column than the
WIP limit specifies, they immediately ask why the WIP limit was
exceeded. Their attention is drawn upstream in the process to discover
the cause. When people see cards piling up in one of the buffers, they
immediately see there's a bottleneck in the process, and it's obvious
what the team needs to do to keep the work flowing. This doesn't seem
to happen naturally with a conventional card wall; it seems to take
some discussion to get to the point that people realize what's going
on with the work flow.
It's not really a dramatic difference, but it seems to affect people
differently when they look at the board. Maybe it has something to do
with psychology, but that's not my field. I just allow myself to be
guided by what works vs. what doesn't work. Not very "scientific," I
guess. But if I'm not a psychologist, I'm not a scientist, either.
A kanban-style board looks a bit like a series of hand-offs, and some
(immature, IMO) teams do treat it that way, but it doesn't have to
represent hand-offs; it can just represent states that the work passes
through on its way to Done. The same team members can work on anything
they wish. I like to see people start to pick up tasks outside their
official job descriptions and begin to become generalizing
specialists.
Another cool thing about this is you can take the view of the work
back by a level of abstraction and show how the development team fits
into the larger delivery process. Here it becomes a tool that exposes
where the biggest delivery problem really is. It also shows the impact
of dependencies between teams and between agile and non-agile work
activities. In my experience, the biggest delivery problem is rarely
the developmen team or QA team. Those are the points in the process
where management sees smoke, but they aren't where the fire is
located. Kanban is a simple tool for making this visible to management
so that when they engage services from people like us, they're asking
for the right sort of help. This relates to the idea of the weakest
link in the chain; if you strengthen the development or testing team,
and it isn't the weakest link, then the improvements will have no
impact on the overall delivery process, and the improvement initiative
will fizzle. I don't know about you, but I've seen many teams ramp up
with agile practices and learn to work very effectively, only to have
the whole initiative quashed by management because it doesn't have any
impact on the overall process. It's because we've strengthened the
second-weakest or third-weakest link in the chain.
But this thread is supposed to be about time-boxing. Kanban is
orthogonal to that topic.
IMHO time-boxing is useful to help organizations break out of
complicated, linear processes in which people work in silos and depend
on indirect communication, such as documents, to get things done. It's
great for breaking out of Meeting Hell. I've often used time-boxing to
help people focus on value and flow. That might sound odd to a kanban
enthusiast, since the time-boxes by definition create mura (uneven
flow). They create batches, and the iteration ceremonies cause
stopping and starting. The thing is, if the organization is so locked
into a linear process that they can't even see the problem, they won't
be able to focus on continuous flow anyway, and the cost of time-
boxing will be repaid many times over. And that was the status quo in
organizations when time-boxed approaches started to gain traction in
the industry. Anyway, what I often do is make people stop what they're
doing when the time-box expires.
For instance, say the team is doing short-term planning, like
iteration or sprint planning, and they're sizing user stories (or
equivalent activities under whatever name). (You could just as well
talk about any other activity, too.) Novice teams often extend the
time they spend in sizing or estimating because they think they have
to get it all done in detail before they can move on. When I make the
team stop and they aren't finished, then they complain that they're
going to run out of work in mid-iteration. I assure them they are
right about that, and they need to experience the consequences of
failing to get the sizing done within the time-box. They worry that
they will "fail" in the iteration. I tell them they're right again,
and they will have the opportunity to explore the reasons why when
they have their retrospective.
The conventional assumption is that we should avoid all failures at
all costs. My view is that we should use minor failures as learning
opportunities while keeping work flowing steadily toward Done. I've
never seen the problem repeat itself. The very next iteration, the
team does a lighter-weight version of sizing and gets enough done to
set up their work for the iteration. Usually they do it entirely on
their own. IMHO the reason they do so is that they have experienced
the consequences of their own choices, and they own those
consequences. Time-boxing is a powerful tool for breaking habits like
that at all levels, even with management.
When people say kanban is more "advanced" than time-boxing, they might
be thinking about a pattern that I've seen in some organizations and
teams. As a team practices continuous improvement, they learn to shed
more and more iteration management overhead and it becomes feasible
for them to shorten their iteration length. Once the iteration length
goes down to about one week, teams begin to question the value of the
iteration management overhead and ceremonies. The same techniques that
initially helped them break out of the linear model start to become
overhead that doesn't provide any obvious benefit. That's the stage of
improvement when the team might be ready to dispense with formally-
defined iterations and move to an explicit continuous-flow process.
Since this sort of "kanban"-like thing appears to emerge after
practicing continuous improvement for some time, it can be called
"advanced" in a sense. But I do think a kanban-style system could be
instituted from the very beginning, provided expectations are set
properly, the rest of the organization is engaged appropriately, and
the success factors Jon listed are taken into account. We might also
use time-boxing, or we might not, depending on the circumstances. In
any case, I think the success factors are relevant to any change
initiative, and they are not "barriers" to approaches other than time-
boxing.
Cheers,
Dave
On Apr 26, 5:08 pm, George Dinwiddie <li...@iDIAcomputing.com> wrote:
> Hi, Dave,
>
> Dave wrote:
> > I think kanban is a pretty simple model. I'm at a loss to see why you
> > think it's complicated or hard to learn. Even with novice agile teams,
> > and even when using a time-boxed process model (as on my current
> > engagement), I prefer to use a kanban-style card wall. It seems to
> > make sense intuitively to team members and visitors to the team room.
> > Usually it doesn't need any explanation at all. It's also easy to
> > extend beyond the boundaries of the one team, if/when the organization
> > is ready to do that.
>
> I don't recall when and where I first was introduced to card walls, but
> I'm sure that it was before I heard about kanban and queue-limited
> process models.
>
> > Even if the best you can do in a given organization for the moment is
> > to help a given development team with the work they do, and you don't
> > have a mandate to deal with the end-to-end process, a flow-based
> > approach may be appropriate. I don't think we should just assume that
> > time-boxing is the only way to solve delivery problems. I'd rather
> > think that we have more than one tool in our toolkit. The appropriate
> > approach depends on the circumstances.
>
> Exactly. Unfortunately I've had some "kanban is better than scrum"
> colleagues tell me point blank that it's not a tool, but a belief system
> (e.g.,
http://tech.groups.yahoo.com/group/leanagile/message/4726). I