Programación en Pareja (Pair Programming)
Muchas de mis conversaciones me han llevado a hablar sobre diversos axiomas o principios del Agile. Siempre intento seguir el DRY (Don't repeat yourself) y el YAGNI (You ain't gonna need it). Otro buen principio es el Pair Programming. En que consiste la programación en Pareja?, pues bien consiste en que 2 programadores combinas sus esfuerzos de desarrollo en un mismo sitio de trabajo. Por lo tanto, cada uno realiza una acción que otro no estÔ haciendo: mientras uno codifica, el otro prueba unidades o piensa en ejemplos. La persona que pica el código es el "Driver" y el que revisa el código es el "Observer". Los 2 programadores deben intercambiar roles cada x tiempo. Diversos estudios demuestran que la programación en pareja es un 15% mÔs lenta que la programación normal, pero que genera un 15% menos de errores.
- Beneficios de la programación en pareja:
- Mejores Ideas - brainstorming continuo, conocimiento mÔs amplio del problema y menos lagunas en la comprensión y mejores habilidades para resolver problemas de diseño.
- Mejor Calidad - menos errores, validación instantÔnea de ideas, enfoque coherente y una adhesión mÔs estricta a las convenciones del equipo.
- Mejor Conocimiento - compartir experiencia y conocimiento, mayor entendimiento del porqué, cómo y que fue hecho.
- Incremento de la Productividad - mejor enfoque y mayor intensidad, impulsando y motivando a los demƔs para lograr mejores resultados y perder menos el tiempo.
- Mayor disfrute - a la mayorĆa de las personas les gusta trabajar en grupo y resolver conjuntamente problemas de interĆ©s..
- CuƔndo se vuelve efectivo?
Como podemos ver en el grÔfico, el factor mÔs importante es emparejar las habilidades y los retos. En la programación solitaria (Solo Programming) uno es mÔs productivo en el modo de Flujo ya que sus habilidades y retos estÔn igualados. El Pair programming crea un modo mÔs eficaz, el Coaching en el que se aumenta la productividad global.Conseguir el éxito:
- Modo Flujo - dos programadores trabajando en un difĆcil e interesante problema. Pueden tener diferentes habilidades y desafĆos, pero ambos son capaces de encontrar una buena solución. Se puede obtener mediante el flujo de trabajo la resolución de una tarea compleja que combina su capital intelectual, conocimiento y experiencia para crear la mejor solución.
- Modo Coaching - Un programador experto con experiencia y conocimientos para resolver el problema los comparte con otros programadores que no puede resolver el problema por sà solo. Este programador junior tiene mÔs fundamentos para entender la solución y aplicación. Se aprende y se crece para poder convertirse en un mejor programador.
- Desperdiciar el tiempo de los expertos - el problema es demasiado simple que hace que la participación de expertos sea ineficaz.
- Novato Abrumado - el problema es demasiado complejo o requiere de nuevos conocimientos que impiden que el programador aprenda algo Ćŗtil.
- Referencias de interƩs:
Extreme programming and Agile methods.
Favourite Jokes.
:o)
ReplyDeleteSimple y concreto nos gustó