Різниця між системою поштовху і тяги полягає в тому, як одиниці роботи присвоюються особі, яка буде виконувати цю одиницю роботи. Концепція push-and pull не характерна лише для розробки програмного забезпечення - ідея походить від управління логістикою та ланцюгами поставок .
У системі штовхань створюється якесь завдання, а потім призначається розробнику. Завданням може бути що завгодно - від реалізації вимоги (або компонента, необхідного для реалізації вимоги), до виправлення помилок у документі для запису. Хтось, як правило, якийсь менеджер чи керівник команди, приймає одиниці роботи, які необхідно виконати, а потім розподіляє їх для членів команди для завершення. Просто робота підштовхується до людей, які будуть цим займатися.
У системі витягування завдання, які необхідно виконати, зберігаються у черзі, часто це пріоритетна черговість. Прикладом можуть слугувати затримки продукту Scrum та спринт-файли, які містять історії користувачів, які необхідно виконати. Розробник, який зараз ні над чим не працює, піде в чергу і зніме історію з найвищим пріоритетом, яку вони вміють робити, і працювати над нею. Люди, які виконують роботу, витягують твір із списку та виконують його.
Концепція поштовху та потягу не пов'язана з ітераційним / поступовим порівняно з послідовним розвитком. Команда, що використовує ітеративні / інкрементальні / спритні методи, може використовувати систему поштовху, тоді як команда, яка використовує послідовну розробку, може використовувати систему потягу. Однак, як правило, спритні методи (XP, Scrum) надають перевагу командам, що самоорганізовуються, і тому тягнуть системи.
Для отримання додаткової інформації вас може зацікавити ця публікація в блозі на тему Push vs. Pull in Scrum . Канбан також може представляти інтерес - Канбан - це методологія, що виходить з виробництва, але може бути застосована до розробки програмного забезпечення , що підкреслює своєчасну розробку та зменшення перевантаження працівників. Канбан також пов'язаний і часто використовується з Lean , іншою виробничою концепцією, яка може бути застосована до розробки програмного забезпечення .