{"id":1155,"date":"2011-11-24T20:45:44","date_gmt":"2011-11-24T20:45:44","guid":{"rendered":"http:\/\/www.saasoft.com\/blog\/?p=1155"},"modified":"2011-11-24T20:45:44","modified_gmt":"2011-11-24T20:45:44","slug":"push-pump-pull","status":"publish","type":"post","link":"https:\/\/hcse.blog\/?p=1155","title":{"rendered":"Pushmepullyu"},"content":{"rendered":"<p style=\"text-align: left;\"><a href=\"http:\/\/www.improvementscience.co.uk\/blog\/wp-content\/uploads\/2011\/11\/PushPull.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignleft size-medium wp-image-1161\" title=\"PushPull\" src=\"http:\/\/www.improvementscience.co.uk\/blog\/wp-content\/uploads\/2011\/11\/PushPull-300x264.jpg\" alt=\"\" width=\"300\" height=\"264\" srcset=\"https:\/\/hcse.blog\/wp-content\/uploads\/2011\/11\/PushPull-300x264.jpg 300w, https:\/\/hcse.blog\/wp-content\/uploads\/2011\/11\/PushPull.jpg 363w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a>The <em>pushmepullyu<\/em> is a fictional animal immortalised in the 1960&#8217;s film <em>Dr Dolittle<\/em> featuring Rex Harrison\u00a0who learned from a parrot how to talk to\u00a0animals.\u00a0 The pushmepullyu was a\u00a0rare, mysterious\u00a0animal that was\u00a0never captured and displayed\u00a0in zoos. It\u00a0had a sharp-horned head at both ends\u00a0and while one head slept the other stayed awake so it was impossible to sneak up on and capture.<\/p>\n<p style=\"text-align: left;\">The spirit of the <em>pushmepullyu<\/em> lives on in Improvement Science as Push-Pull and remains equally\u00a0mysterious and difficult to understand and explain. It is confusing terminology. So what does\u00a0Push-Pull acually mean?<\/p>\n<p style=\"text-align: left;\">To decode the terminology we need to first understand a critical metric of any process &#8211; the <em>constraint cycle time<\/em> (CCT) &#8211; and to do that\u00a0we need to define what the terms <em>constraint<\/em> and <em>cycle time<\/em> mean.<\/p>\n<p style=\"text-align: left;\">Consider a process that comprises a series of steps that must be completed in sequence.\u00a0 If we put one task through the process we can measure how long each step takes to complete its contribution to the whole task.\u00a0 This is the <em>touch time<\/em> of the step and if the resource is immediately available to start the next task this is also the <em>cycle time<\/em> of the step.<\/p>\n<p style=\"text-align: left;\">If we now start two tasks at the same time then we will observe when an upstream step has a longer cycle time than the next step downstream\u00a0because it will\u00a0<em>shadow<\/em>\u00a0the downstream step.\u00a0In contrast, if the upstream step has a shorter cycle time than the next step down stream then it will <em>expose<\/em> the downstream step. The differences in the cycle times of the steps will\u00a0determine the behaviour of the process.<\/p>\n<p style=\"text-align: left;\">Confused? Probably.\u00a0 The description above is correct BUT hard to understand\u00a0because we learn better from reality than from rhetoric; and we find pictures work better than words.\u00a0 Pragmatic comes before academic; reality before theory.\u00a0\u00a0We need a realistic example to learn from.<\/p>\n<p style=\"text-align: left;\"><a href=\"http:\/\/www.improvementscience.co.uk\/blog\/wp-content\/uploads\/2011\/11\/PushPullExLead.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignleft size-medium wp-image-1165\" title=\"PushPullExLead\" src=\"http:\/\/www.improvementscience.co.uk\/blog\/wp-content\/uploads\/2011\/11\/PushPullExLead-300x197.jpg\" alt=\"\" width=\"300\" height=\"197\" srcset=\"https:\/\/hcse.blog\/wp-content\/uploads\/2011\/11\/PushPullExLead-300x197.jpg 300w, https:\/\/hcse.blog\/wp-content\/uploads\/2011\/11\/PushPullExLead.jpg 523w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a>Suppose we have a process that we are told\u00a0has three steps in sequence, and when one task is put through it takes 30 mins to\u00a0complete.\u00a0 This is called the <em>lead time<\/em> and is an important process output metric. We now know it is possible to complete the work in 30 mins so we can set this as\u00a0our <em>lead time expectation.<\/em>\u00a0\u00a0<\/p>\n<p style=\"text-align: left;\">Suppose we plot a chart of lead times in the order that the tasks start and record\u00a0the\u00a0start time and lead time for each one &#8211; and we get a chart\u00a0that looks like this.\u00a0It is called a <em>lead time run chart. <\/em>\u00a0The first six tasks complete in 30 mins as expected &#8211; then it all goes pear-shaped. But why?\u00a0 The run chart does not tell\u00a0 us the reason &#8211; it just alerts us to\u00a0dig deeper.\u00a0<\/p>\n<p style=\"text-align: left;\">The clue is in the run chart but\u00a0we need to know what to look for.\u00a0 We do\u00a0not know how to do that yet so we need to ask for some more data.<\/p>\n<p style=\"text-align: left;\"><a href=\"http:\/\/www.improvementscience.co.uk\/blog\/wp-content\/uploads\/2011\/11\/PushPullExWIP.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignleft size-medium wp-image-1166\" title=\"PushPullExWIP\" src=\"http:\/\/www.improvementscience.co.uk\/blog\/wp-content\/uploads\/2011\/11\/PushPullExWIP-300x197.jpg\" alt=\"\" width=\"300\" height=\"197\" srcset=\"https:\/\/hcse.blog\/wp-content\/uploads\/2011\/11\/PushPullExWIP-300x197.jpg 300w, https:\/\/hcse.blog\/wp-content\/uploads\/2011\/11\/PushPullExWIP.jpg 523w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a>We are\u00a0given this run chart &#8211; which is a count\u00a0of the number of tasks\u00a0being worked on recorded at\u00a05 minute intervals. It is the\u00a0<em>work in progress run chart<\/em>.<\/p>\n<p style=\"text-align: left;\">We know that we have a three step process and three separate resources &#8211; one for each step. So we know that that if there is\u00a0a WIP of less than 3 we must have idle resources; and if there is a WIP of more than 3 we must have queues of tasks waiting.<\/p>\n<p style=\"text-align: left;\">We can see that the WIP run chart looks a bit like the lead time\u00a0run chart.\u00a0 But it still does not tell us what is causing the\u00a0unstable behaviour.<\/p>\n<p style=\"text-align: left;\">In fact we do already have all the data we need to work it out but it is not intuitively obvious how to do it. We feel we\u00a0need to dig deeper.<\/p>\n<p style=\"text-align: left;\">\u00a0We decide to\u00a0go and see for ourselves and to observe exactly what happens to each of the twelve tasks and each of the three resources. We use these observations to draw a Gantt chart.<\/p>\n<p style=\"text-align: left;\"><a href=\"http:\/\/www.improvementscience.co.uk\/blog\/wp-content\/uploads\/2011\/11\/PullPullExGantt.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignleft size-large wp-image-1167\" title=\"PullPullExGantt\" src=\"http:\/\/www.improvementscience.co.uk\/blog\/wp-content\/uploads\/2011\/11\/PullPullExGantt-1024x417.jpg\" alt=\"\" width=\"525\" height=\"213\" \/><\/a>Now we can see what is happening.<\/p>\n<p style=\"text-align: left;\">We can see that the cycle time of Step 1 (green)\u00a0is 10 mins; the cycle time for Step 2 (amber) is 15 mins; and the cycle time for Step 3 (blue) is 5 mins.<\/p>\n<p style=\"text-align: left;\">\u00a0<\/p>\n<p style=\"text-align: left;\">This explains why the minimum lead time was 30 mins: 10+15+5 = 30 mins. OK &#8211; that makes sense now.<\/p>\n<p style=\"text-align: left;\">Red means tasks waiting\u00a0and we can see that a lead time longer than 30 mins is associated with waiting &#8211; which means one or more queues.\u00a0 We can see that there are two queues &#8211; the first between Step\u00a01 and Step 2 which starts to form at\u00a0Task G and then grows; and the second before Step 1 which first appears for Task J\u00a0\u00a0and then grows.\u00a0So what changes at\u00a0Task G and Task J?<\/p>\n<p style=\"text-align: left;\">Looking at the chart we can see that the <em>slope<\/em> of the left hand edge is changing &#8211; it is getting steeper &#8211; which means tasks are arriving faster and faster. We look at the interval between the start times and it confirms our suspicion. This data was the clue\u00a0in the original lead time run chart.\u00a0<\/p>\n<p style=\"text-align: left;\">Looking more closely at the differences between the start times we can see that the first three arrive at\u00a0one every 20 mins; the next three at one every 15 mins; the next three at one every 10 mins and the last three at one every 5 mins.<\/p>\n<p style=\"text-align: left;\">Ah ha!<\/p>\n<p style=\"text-align: left;\">Tasks are being\u00a0<strong>pushed<\/strong>\u00a0\u00a0into the process at an increasing rate that is <em>independent<\/em> of the rate at which the process can work.\u00a0\u00a0\u00a0\u00a0\u00a0<\/p>\n<p style=\"text-align: left;\">When we compare the rate of arrival with the cycle time\u00a0of each\u00a0step in a process we find that one step will be most exposed &#8211; it is called the <em>constraint step<\/em>\u00a0and it is the step that controls the flow in the\u00a0whole process. The\u00a0<em>constraint cycle time<\/em> is therefore the\u00a0critical metric that determines the maximum flow in the whole process &#8211; irrespective of how many steps it has or where the constraint step is situated.<\/p>\n<p style=\"text-align: left;\">If we\u00a0push tasks into the process slower than the\u00a0constraint cycle time then all the steps in the process will be able to keep up and no queues will form &#8211; but all the resources will be under-utilised. Tasks A to C;<\/p>\n<p style=\"text-align: left;\">If we\u00a0push tasks into the process\u00a0faster than the cycle time of any step\u00a0then queues will\u00a0grow upstream of these multiple\u00a0constraint steps &#8211; and those queues will grow bigger, take up space and take up time, and will progressively clog up the resources upstream of the constraints while starving those downstream of work. Tasks G to L.<\/p>\n<p style=\"text-align: left;\">The\u00a0optimum is when the work\u00a0arrives at the same rate as the cycle time of the constraint\u00a0&#8211; this is called\u00a0<em>pull<\/em> and it means that the constraint is as the pacemaker and used to <em>pull<\/em> the work into the process. Tasks D to F.<\/p>\n<p style=\"text-align: left;\">With this new understanding we can see that the\u00a0correct rate to\u00a0load this process is one task every 15 mins &#8211; the cycle time of Step 2.<\/p>\n<p style=\"text-align: left;\"><a href=\"http:\/\/www.improvementscience.co.uk\/blog\/wp-content\/uploads\/2011\/11\/PullGantt.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignleft size-large wp-image-1168\" title=\"PullGantt\" src=\"http:\/\/www.improvementscience.co.uk\/blog\/wp-content\/uploads\/2011\/11\/PullGantt-1024x417.jpg\" alt=\"\" width=\"525\" height=\"213\" \/><\/a>We can use\u00a0a Gantt chart to predict what would happen.<\/p>\n<p style=\"text-align: left;\">The waiting is eliminated, the lead time is stable and meeting our expectation, and\u00a0when\u00a0task B arrives thw WIP is 2 and stays stable.<\/p>\n<p style=\"text-align: left;\">In this example we can see that there is now spare capacity at the end\u00a0for another task &#8211; we could increase our\u00a0productivity; and we can see that we need less\u00a0space to store the queue which also improves our productivity.\u00a0 Everyone wins.\u00a0This is called <strong>pull<\/strong> <strong>scheduling<\/strong>.\u00a0 Pull is a more productive design than push.\u00a0<\/p>\n<p style=\"text-align: left;\"><strong>To improve process productivity\u00a0it\u00a0is necessary to measure the sequence and cycle time of every step in the process.\u00a0 Without that\u00a0information it is impossible to\u00a0understand\u00a0and rationally\u00a0improve\u00a0our process.<\/strong>\u00a0\u00a0\u00a0\u00a0\u00a0<\/p>\n<p style=\"text-align: left;\">BUT\u00a0in reality we have to deal with variation &#8211; in everything &#8211;\u00a0so imagine how hard it is to predict how a multi-step process will behave\u00a0when work is being pumped into it at a variable rate and resources come and go! No wonder so many processes feel unpredictable, chaotic,\u00a0unstable, out-of-control\u00a0and impossible to both understand\u00a0and predict!<\/p>\n<p style=\"text-align: left;\">This feeling is an illusion\u00a0because by learning and using the tools and techniques of Improvement\u00a0Science it is possible to design and predict-within-limits how these complex systems will behave.\u00a0 Improvement Science can unravel this Gordian knot!\u00a0\u00a0And it is not intuitively obvious. If it were we would be doing it.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>The pushmepullyu is a fictional animal immortalised in the 1960&#8217;s film Dr Dolittle featuring Rex Harrison\u00a0who learned from a parrot how to talk to\u00a0animals.\u00a0 The pushmepullyu was a\u00a0rare, mysterious\u00a0animal that was\u00a0never captured and displayed\u00a0in zoos. It\u00a0had a sharp-horned head at both ends\u00a0and while one head slept the other stayed awake so it was impossible to &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/hcse.blog\/?p=1155\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Pushmepullyu&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[17,32,35,42,43,45,46],"tags":[57,83,91,119,154,178,217,220,222,249,309],"class_list":["post-1155","post","type-post","status-publish","format-standard","hentry","category-examples","category-productivity","category-reflections","category-how","category-why","category-what","category-teach","tag-baseline","tag-cycle-time","tag-design","tag-gantt-chart","tag-lead-time","tag-model","tag-productivity","tag-pull","tag-push","tag-run-chart","tag-work-in-progress"],"_links":{"self":[{"href":"https:\/\/hcse.blog\/index.php?rest_route=\/wp\/v2\/posts\/1155","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/hcse.blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/hcse.blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/hcse.blog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/hcse.blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1155"}],"version-history":[{"count":0,"href":"https:\/\/hcse.blog\/index.php?rest_route=\/wp\/v2\/posts\/1155\/revisions"}],"wp:attachment":[{"href":"https:\/\/hcse.blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1155"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/hcse.blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1155"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/hcse.blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1155"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}