Czytałem Extreme Programming Explained, drugie wydanie, aw rozdziale 11 „Theory of Constraints” autorzy mówią o starym i przestarzałym modelu rozwoju „push” i sposobie XP, modelu rozwoju „pull” . Wygląda na dość ważną koncepcję, ale wymaga tylko bardzo małego akapitu i dwóch zdjęć, które są jedynie ilustracjami „wodospadu” i procesu iteracyjnego, nic szczególnego w tych modelach oprócz podpisu obrazu. Szukałem i nie idzie o tym dalej w dalszej części książki. Nie mogłem znaleźć dalszych wyjaśnień ani dyskusji na ten temat w Internecie.
Jeśli jedyną różnicą jest to, że jeden jest „wodospadem”, a drugi jest iteracyjny , to po co pchać i po co ciągnąć?
Czy ktoś rozumie, jaka jest naprawdę różnica między tymi dwoma i podaje dobre przykłady?
Odpowiedzi:
Różnica między systemem pchającym a ciągnącym polega na tym, w jaki sposób jednostki pracy są przypisane osobie, która będzie wykonywać tę jednostkę pracy. Koncepcja push i pull nie jest unikalna dla rozwoju oprogramowania - pomysł wywodzi się z logistyki i zarządzania łańcuchem dostaw .
W systemie push tworzone jest jakieś zadanie, a następnie przypisywane do programisty. Zadaniem może być cokolwiek, od implementacji wymagania (lub komponentu potrzebnego do realizacji wymagania) po naprawę błędu do dokumentu do napisania. Ktoś, zwykle menedżer lub lider zespołu, bierze jednostki pracy, które należy wykonać, a następnie przydziela je członkom zespołu do wykonania. Po prostu praca jest przenoszona na ludzi, którzy będą to robić.
W systemie ściągania zadania, które należy wykonać, są przechowywane w kolejce, często w rodzaju kolejki priorytetowej. Przykładem może być zaległe produkty Scruma i sprinty, które zawierają historie użytkowników, które należy wykonać. Deweloper, który obecnie nie pracuje nad niczym, pójdzie do kolejki i zdejmie historię o najwyższym priorytecie, którą jest w stanie zrobić i nad nią pracować. Ludzie, którzy wykonują pracę, wyciągają ją z listy i robią to.
Koncepcja push i pull nie jest związana z iteracyjnym / przyrostowym a sekwencyjnym rozwojem. Zespół stosujący techniki iteracyjne / przyrostowe / zwinne może korzystać z systemu wypychania, podczas gdy zespół stosujący programowanie sekwencyjne może używać systemu wypychania. Zazwyczaj jednak metody zwinne (XP, Scrum) faworyzują zespoły samoorganizujące się, a zatem systemy ściągające.
Aby uzyskać więcej informacji, możesz zainteresować się tym postem na blogu na temat Push vs. Pull in Scrum . Kanban może być również interesujący - Kanban to metodologia pochodząca z produkcji, ale może być stosowana do opracowywania oprogramowania , która kładzie nacisk na rozwój na czas i redukuje obciążenie pracowników. Kanban jest również powiązany z Lean , kolejną koncepcją produkcyjną, którą można zastosować do tworzenia oprogramowania .
źródło