In this post I contend that pull systems enable and promote working at a higher level of quality than is allowed by working according to a push system.
In traditional software development scenarios, project plans and timelines are imposed on development work. In addition, work is pre-assigned to specific developers. It is fact that any type of worker can only do so much work per hour, and there are so many hours in a day. When timelines (and a set number of human resources) are imposed on a creative, innovative process like software development, either the quality of the work decreases, or the amount of work decreases (if quality is kept constant).
If you give Michaelangelo 10 days to paint the Sistine Chapel, he will either paint only a corner of the ceiling to the desired quality (which is why you hired him in the first place), or he will paint the entire ceiling but it will look like rubbish.
This is a push system. The deadline is pushed onto the work. Work items are pushed onto specific developers.
However, if you don’t impose a deadline, and you don’t pre-allocate tasks to developers, the developer has the time available to him to ‘do a proper job’, i.e. complete the task to the level of quality required by the system. He is not under pressure to cut corners in either scope or quality. He is also not inclined to optimise to the incentive.
The challenge of these systems then becomes managing the uncertainties around such a project, like ‘when will it be complete’, ‘how much will it cost etc’. But in general, the quality of the finished product should be higher.