Estaba leyendo Extreme Programming Explained, Second Edition y en el capítulo 11 "The Theory of Restraints" los autores hablan sobre el viejo y obsoleto modelo de desarrollo "push" y la forma XP, el modelo de desarrollo "pull" . Parece un concepto bastante importante, pero solo toma un párrafo muy pequeño y dos imágenes que son meras ilustraciones de la "cascada" y el proceso iterativo, nada específico sobre estos modelos, excepto por el título de la imagen. Busqué y no va más allá en el resto del libro. Tampoco pude encontrar más explicaciones o discusiones al respecto en Internet.
Si la única diferencia acerca de esos es que uno es "cascada" y el otro es iterativo , ¿por qué empujar y por qué tirar?
¿Alguien entiende cuál es realmente la diferencia entre esos dos y da algunos buenos ejemplos?
Respuestas:
La diferencia entre un sistema push y otro pull es cómo se asignan las unidades de trabajo a la persona que llevará a cabo esa unidad de trabajo. El concepto de push and pull no es exclusivo del desarrollo de software: la idea se origina en la logística y la gestión de la cadena de suministro .
En un sistema push, se crea algún tipo de tarea y luego se asigna a un desarrollador. Una tarea puede ser cualquier cosa, desde la implementación de un requisito (o un componente necesario para cumplir un requisito) hasta una corrección de errores en un documento para escribir. Alguien, generalmente algún tipo de gerente o líder de equipo, toma las unidades de trabajo que deben hacerse y luego las asigna a los miembros del equipo para completar. Simplemente, el trabajo se aplica a las personas que lo harán.
En un sistema de extracción, las tareas que deben realizarse se almacenan en una cola, a menudo una especie de cola prioritaria. Un ejemplo podría ser el producto de Scrum y los atrasos de sprint, que contienen historias de usuarios que deben hacerse. Un desarrollador que actualmente no está trabajando en nada irá a la cola y sacará la historia de mayor prioridad que pueda hacer y trabajará en ella. Las personas que están haciendo el trabajo sacan el trabajo de una lista y lo hacen.
El concepto de empujar y tirar no está relacionado con el desarrollo iterativo / incremental versus secuencial. Un equipo que usa técnicas iterativas / incrementales / ágiles podría usar un sistema push, mientras que un equipo que usa desarrollo secuencial podría usar un sistema pull. Sin embargo, por lo general, los métodos ágiles (XP, Scrum) favorecen a los equipos autoorganizados y, por lo tanto, a los sistemas de extracción.
Para obtener más información, es posible que le interese esta publicación de blog sobre Push vs. Pull in Scrum . Kanban también podría ser de interés: Kanban es una metodología que proviene de la fabricación, pero se puede aplicar al desarrollo de software , que enfatiza el desarrollo justo a tiempo y reduce la sobrecarga en los trabajadores. Kanban también está relacionado y se usa a menudo con Lean , otro concepto de fabricación que se puede aplicar al desarrollo de software .
fuente