The first installment of this series introduced team development activities in general, including engineering and software development, as being built on three foundations: cooperative games, craft and lean processes. In this installment, I wish to expand on lean processes.
Decisions as Inventory
Lean processes derive originally from lean manufacturing, which is part of the Toyota Production System. Lean manufacturing may seem like a peculiar foundation for software engineering, because surely if there is one difference between manufacturing and engineering, it is that manufacturing is about making the same item many times, and engineering is about approaching situations that are unique each time.
However, in any team design activity, we notice that one person waits on another person for a certain types of decision. We can, in fact, make a map of who waits on whom for what sorts of decisions. For software, what we see is something like this:
The users and sponsors make decisions about what they want. They feed those decisions to user interface (UI) designers and business analysts (BAs). The UI designers and Bas--collaboratively with the users, or on their own--make detailed decisions about the appearances, behaviors and data to be put into the system. They feed those decisions to the programmers.
The programmers make decisions about the program. Those