Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I was reading Extreme Programming Explained, Second Edition and in the chapter 11 "The Theory of Constraints" the authors talk about the old and obsolete "push" development model and the XP way, the "pull" development model. It looks like a quite important concept, but it takes only a very small paragraph and two images that are mere illustrations of the "waterfall" and iterative process, nothing specific about these models except by the image caption. I searched and it doesn't go any further about it in the rest of the book. I couldn't find any further explanations or discussions about it in the Internet either.

If the only difference about those is that one is "waterfall" and the other is iterative, them why push and why pull?

Does anyone understand what is really the difference between those two and give some good examples?

share|improve this question
    
Agile folk love dualities. To them, everything is black or white, waterfall or agile, push or pull. Boring. –  CesarGon Mar 18 '12 at 18:20
    
youtube.com/watch?v=OSKL1Ph0eQc –  jfrankcarr Mar 18 '12 at 19:13
1  
Continuous vs. Incremental is another underlying concept that might be confusing matters. For example, XP is an incremental pull system while Kanban is relies on continuous pull (i.e. no time boxed sprints). –  Michael Mar 18 '12 at 22:38

1 Answer 1

up vote 4 down vote accepted

The difference between a push and a pull system is how the units of work are assigned to the person who will be carrying out that unit of work. The concept of push and pull aren't unique to software development - the idea originates from logistics and supply chain management.

In a push system, a some kind of task is created and then assigned to a developer. A task could be anything from the implementation of a requirement (or a component needed to realize a requirement) to a bug fix to a document to write. Someone, usually some kind of manager or team leader, takes the units of work that need to be done and then allocate them to the members of the team to complete. Simply, work is pushed onto the people who will be doing it.

In a pull system, the tasks that must be done are stored in a queue, often a priority queue of sorts. An example might be Scrum's product and sprint backlogs, which contain user stories that are to be done. A developer who is currently not working on anything will go to the queue and take off the highest priority story that they are able to do and work on it. The people who are doing the work pull the work out of a list and do it.

The concept of push and pull aren't related to iterative/incremental versus sequential development. A team using iterative/incremental/agile techniques could use a push system, while a team using sequential development could use a pull system. However, typically, the agile methods (XP, Scrum) favor self-organizing teams and therefore pull systems.

For more information, you might be interested in this blog post on Push vs. Pull in Scrum. Kanban might also be of interest - Kanban is a methodology that comes from manufacturing, but can be applied to software development, which emphasizes just-in-time development and reducing overload on workers. Kanban is also related to and often used with Lean, another manufacturing concept which can be applied to software development.

share|improve this answer
    
Now that I understand it, I see that it is not really explained in the book, just used. I like my books short, but that paragraph was not just useless, but misleading. –  michelpm Mar 18 '12 at 20:06
    
@michelpm I don't own the book, so I can't comment on the validity of what they are saying, but I've never heard of push and pull used in any other way that how I've described. Perhaps if you could edit your question to contain the full paragraph or two that describe push and pull, I can further refine this answer. –  Thomas Owens Mar 18 '12 at 20:09
    
The images specifically associated waterfall with push, what I understand now is that it is not a rule and doesn't really help understanding the models. Isn't that what you said? –  michelpm Mar 18 '12 at 20:17
1  
@michelpm That's right that it's not a rule. Usually, sequential models are push and the agile methods tend to be pull, but it doesn't have to be that way at all. –  Thomas Owens Mar 18 '12 at 20:42

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.