Login Barrapunto
XP (Xtreme Programming)
pobrecito hablador nos cuenta: «Hace unos días salió una nota en freshmeat sobre programación extrema, que dió lugar a debate. ¿Qué opinión les merece este modelo de desarrollo? ¿Qué modelo utilizas? Pido abrastacción del lenguaje, hablemos de modelos un poco.» No puedo evitar que la Programación Extrema me recuerde a las prácticas por parejas. Si tuvieráis que explicarle a alguien que no la conoce ¿cómo la definirías? ¿tenéis alguna experiencia con este modelo o con algún otro?
Este hilo ha sido archivado.
No pueden publicarse nuevos comentarios.
Y recuerda: Los comentarios que siguen pertenecen a las personas que los han enviado. No somos responsables de los mismos.

Algunas ideas interesantes
(Puntos:2, Interesante)( http://aparatos.blogspot.com/ | Última bitácora: Miércoles, 22 Julio de 2009, 06:44h )
Lo de programación por parejas creo que puede ser positivo: siempre da más vergüenza hacer una chapuza cuando te está viendo otro. Aunque, claro, si el otro es tan chapuzas como tú, igual os reforzáis mutuamente. En cualquier caso, que otra persona mire tu código me parece fundamental.
En lo que no estoy tan de acuerdo es en que lo plantean como algo radical y yo creo que hay ser más flexible y pensar que se puede combinar con metodologías más tradicionales. Tampoco estoy de acuerdo en que siempre haya que hacer lo más sencillo: a veces hay que mirar un poco más allá y lo que es más sencillo ahora puede ser un rémora para el futuro.
Los modelos de programación usados en las empresas
(Puntos:5, Divertido)( http://barrapunto.com/~orfeo/journal/ | Última bitácora: Jueves, 07 Octubre de 2010, 13:02h )
Esta forma de programar consiste en cojer a unos cuantos recien licenciados, pagarles muy poco e intentar que acaben en unos plazos demasiado cortos, incluso para programadores experimentados. Si a esto añadimos una rotación en los programadores muy alta, ....
El resultado es un producto mal diseñado, pero desarrollado, y que se prueba en entornos de producción por el agotamiento de los plazos.
No se dónde se usará la Programación XP, pero en mi mundo sólo se usa el tipo de programción que acabo de describir.
eXtreme
(Puntos:1, Interesante)Documento
(Puntos:2, Informativo)¿Pero en qué consiste?
(Puntos:1, Interesante)Es que son muchas veces que en las noticias de BP una frase explicando muy brevemente de qué se está hablando nos ayudaría a saber de qué trata la noticia a muchos.
Un método científico
(Puntos:3, Informativo)( http://ch3m4.org/ )
La idea que subyace en la Programación Extrema es la de aplicar el Método Cientifico a la metodología de la programación. Para su postulación se analizaron diferentes proyectos de desarrollo existosos y trataron de ver empíricamente aquellas características comunes que tenían. Las doce actividades que postula la programación extrema son estas características deducidas "empíricamente", y se consideran esenciales para que un proyecto pudiera ser exitoso. Estas actividades deben estar siempre presentes, y entre ellas debe existir un equilibrio tal que las deficiencias en una de ellas exigen más efuerzo en el resto de actividades.
Siempre se identifica a la XP con la programación por parejas, aunque hay otras actividades que me gustan mucho más como que la "jornada laboral es de 40 horas", sin horas extras (es importante para el proyecto dedicarle tiempo a la familia). Concretamente, la programación por parejas es una práctica que se vió que era muy buena porque, por un lado el programador que codificaba lo hacía para que el otro lo "entendiera", mientras tanto el otro (casi siempre callado y sin hacer críticas ;-) estaba ya pensando en los casos de prueba que iba a crear sobre ese código que estaba viendo crecer. Lejos de ser un "desperdicio" por tener un programador parado, resultó ser una buena forma de asegurar que la aplicación cumpliría con las especificaciones funcionales. Hay mucho más, y recomiendo leerse los porqués de las doce prácticas.
Modelo sin lenguaje?
(Puntos:1)( http://www.consultar.com/DiegoGomezDeck )
Esto es, imho, muy difícil (imposible?) de lograr. Los lenguajes tienen un FUERTE impacto en la forma de trabajar y un FUERTE impacto en el resultado producido.
Comenzando por:
Es fácil darse cuenta que no se puede hablar de una metodología en particular sin considerar las herramientas.
El eXtreme Programing fue formalizado por Kent Beck, en su famoso libro blanco de XP, después de sus años de experiencia usando Smalltalk y no es más que una descripción detallada de las prácticas de programación que los Smalltalkers vienen siguiendo hace más de 30 años. Los invito a leer una nota que salió en la revista byte de agosto de 1981 [1] donde Dan Ingalls (uno de los padres del Smalltalk) nos cuenta las motivaciones del proyecto y verán allí las semillas del XP.
[1] Principios de Diseño de Smalltalk [smalltalking.net] o Design Principles Behind Smalltalk [ipa.net]
Metodología usada normalmente
(Puntos:2, Inspirado)Lo mejor y lo peor
(Puntos:2, Interesante)La gente se centra demasiado en lo de la programación por parejas y yo creo que es lo de menos.
En mi opinion, esto es lo mejor:
Y lo peor, que esta metodología destila la idea de que se puede empezar a escribir código sin apenas gastar un segundo en la fase de análisis y diseño. Algunos ven esta metodología como una "licencia para tirar líneas" sin hacer análisis, y esto es pasarse. Claro que el arte del analista profesional está en saber encontrar el equilibrio...
Critica a XP
(Puntos:2)( http://barrapunto.com/ | Última bitácora: Lunes, 22 Octubre de 2007, 17:54h )
Crítica a XP en Dr.Dobb's
(Puntos:2)( http://eduoliveros.com/ | Última bitácora: Martes, 28 Diciembre de 2004, 21:19h )
XP es una colección de 12 buenas prácticas, se mete con 6 relacionadas en cadena.
* No hay requerimiento del cliente detalladamente escritos, estos consisten en "story cards" escritos a mano... una descripción del comportamiento del cliente. Estas descripciones no son muy detalladas y se pueden cambiar a lo largo del desarrollo, la teoría dice que el programador puede preguntarle al cliente cuando está centrado en el desarrollo de uno de estos "story cards". Como no existe una descripción detallada de los requerimientos, no es posible hacer un diseño detallado... lo que nos lleva al...
* Diseño rápido, rápidamente ir al código. Al no pensar en el diseño el tiempo suficiente el código se vuelve espaguetti, lleno de trucos a medida que el diseño evoluciona.
* Refactorizar tras programar, debido a que no se gasta suficiente tiempo en el diseño hay que gastar mucho en la refactorización del código (mejora del diseño de código existente). La refactorización tiene el peligro de introducir bugs (al extraer métodos, introducir parámetros, moviendo cosas), lo que se compensa con los test unitarios.
* unit testing, diseñando después de probar, el ciclo es: escribir tests, escribir código, ejecutar los tests, y por último refactorizar... con el peligro de tener que escribir tests para código que puede desaparecer en una de las iteraciones.
Todos estamos a favor de los tests unitarios, pero los tests no puede chequear la corrección del diseño. Lo que compensa el diseño errático y erroneo es la práctica de la programación en parejas.
* Pair Programming, generalmente en los proyectos (y especialmente en estos sin grandes especificaciones de diseño) los programadores se hacen expertos de su parte, con la programación en parejas y la rotación de las parejas se intenta que todos los miembros del equipo tengan un conocimiento completo del proyecto (suena bien, ¿enh?), lo malo es que es idealista. Si algún código tiene un bug serio ¿quien es el responsable? "--in short, who gets fired?".
* Collective Ownership (Propiedad colectiva) , es una espada de doble filo, por un lado el código malo será corregido por alguien cuando lo vea, pero nadie es realmente responsable de nada.
La teoría de XP dice que la comunicación suplanta al diseño muy definido, lo que puede llevar a que los desarrolladores empiecen escribiendo algo que se aleja bastante de lo que los clientes realmente quieren. Lo que se compensa con la presencia del cliente en el proceso de desarrollo (lo que a mi me parece ciencia ficción).
Una de las razones de incluir al cliente en XP es para incrementar el desarrollo "ágil". El cliente ve el desarrollo en un plazo de tiempo muy corto y ofrece un "feedback" inmediato. Lo que puede llevar a cambios de requisitos, cuando el cliente ve como se va comportando el producto... lo que lleva a problemas con las especificación del diseño y al peligro de entregar fuera de tiempo.
La falta de especificaciones nos lleva al principio del artículo...
La conclusión del autor es que los problemas que intenta resolver son los mismos que crea. XP se vende como una metodología ligera, pero la realidad es que XP requiere una gran disciplina de cada miembro del equipo. Lo que la hace todo menos ligera... finaliza diciendo que XP no es una metodología que se pueda recomendar :)