¿Cuál es la diferencia con los modelos de desarrollo push and pull?

14

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?

michelpm
fuente
1
Continuo vs. Incremental es otro concepto subyacente que puede ser confuso. Por ejemplo, XP es un sistema de extracción incremental, mientras que Kanban se basa en una extracción continua (es decir, sin sprints en cajas de tiempo).
Michael

Respuestas:

15

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 .

Thomas Owens
fuente
Ahora que lo entiendo, veo que en realidad no se explica en el libro, solo se usa. Me gustan mis libros cortos, pero ese párrafo no solo fue inútil, sino engañoso.
michelpm
@michelpm No soy dueño del libro, por lo que no puedo comentar sobre la validez de lo que dicen, pero nunca he oído hablar de push and pull utilizado de ninguna otra manera como lo describí. Quizás si pudiera editar su pregunta para que contenga el párrafo o dos completos que describen empujar y halar, puedo refinar aún más esta respuesta.
Thomas Owens
Las imágenes específicamente asociadas con la cascada, lo que entiendo ahora es que no es una regla y realmente no ayuda a comprender los modelos. ¿No es eso lo que dijiste?
michelpm
1
@michelpm Es cierto que no es una regla. Por lo general, los modelos secuenciales son push y los métodos ágiles tienden a ser pull, pero no tiene por qué ser así en absoluto.
Thomas Owens