¿Qué es la programación extrema? Claves de la metodología eXtreme Programming

La programación extrema, o XP por sus siglas eXtreme Programming, antepone la adaptabilidad del código a su previsibilidad. Sus principios son claros y promueven la supervivencia del software.


La ingeniería de software es una de las disciplinas que más ha evolucionado en las últimas décadas. Acoge muchas metodologías distintas, cuya aplicación varía según la naturaleza del proyecto o las preferencias del director. La programación extrema es una de ellas. Se focaliza en optimizar la adaptabilidad del código, anteponiéndolo a la previsión de su uso en el futuro.


Definición de programación extrema

La programación extrema consiste en aplicar una serie de pautas cuyo objetivo es la optimización del código para que sea lo más adaptable e infalible. Se sirve de una serie de dinámicas y patrones que buscan alcanzar el mejor resultado en el menor tiempo posible. Se actualiza constantemente para ir implementando mejoras y adaptarse a las funcionalidades que requiere el cliente.

La programación extrema es una metodología contenida dentro de lo que se conoce como desarrollo ágil de software. En consecuencia, muchas de sus técnicas también son adoptadas por otros modelos de desarrollo ágil, llegando a combinarse en ocasiones unas con otras según las necesidades.

Para ello, cuenta con cinco principios o valores básicos que veremos a continuación.

A qué llamamos programación extrema

Tras la somera vista superficial precedente, vamos a entrar a desgranar un poco más al detalle de qué va esto de la programación extrema XP.

Qué se entiende por programación extrema

Cuando hablamos de programación extrema, nos referimos a la aplicación de unas prácticas que cumplen cinco valores fundamentales. Porque sí, la programación extrema tiene valores. Los valores de la programación extrema son:

Estos valores impulsan a adoptar unas técnicas que redundan en la mejora continua y sin fisuras del software. Veamoslas una por una.

Simplicidad en programación extrema

La simplicidad apunta a un mayor entendimiento del código, de forma que sea más fácil de mantener. Para lograrlo, se realiza constantemente una práctica conocida como Refactorización. Esta consiste en modificar el código de forma que, sin cambiar el resultado final, sea más comprensible su lectura para todo el equipo. Para ello se unifica la nomenclatura de las variables, se elimina código redundante, se transforman trozos largos de código en subrutinas y se pueden reemplazar condicionales if por polimorfismos.

Igualmente, se reduce la documentación que acompaña al código, intentando que este sea lo más autoexplicativo posible.

Comunicación en programación extrema

Enlazando con lo anterior, la comunicación se realiza simplificando el código. Se minimizan los comentarios que puedan quedar obsoletos en el tiempo y se usa la programación en parejas. En esta, se juntan dos programadores para desarrollar el mismo código. De esta forma, la comunicación es fluida entre ambos y el código resultante está más optimizado.

Otra forma de practicar la comunicación es haciendo que el cliente forme parte del equipo de desarrollo. De esta forma la comunicación es fluida, constante, el cliente establece las prioridades y aclara las dudas que surjan sobre la marcha.

Retroalimentación en programación extrema

El hecho de que el cliente forme parte del equipo de desarrollo permite un feedback fluido con los programadores, más veloz y con menor necesidad de intercambio de documentación. Además, al avanzar en ciclos cortos, los desarrolladores pueden centrarse en tareas específicas sin distracciones.

Coraje en programación extrema

Este es un punto interesante puesto que implica soslayar un rasgo psicológico que puede afectar a la eficiencia. El coraje empuja al desarrollador a ser capaz de desechar código inútil u obsoleto, independientemente del esfuerzo que haya requerido desarrollarlo. Sucede a menudo que nos resistimos a descartar algo, no porque sea eficiente, sino por el trabajo que nos ha llevado desarrollarlo. Eso es un lastre del que hay que ser capaz de librarse. Desechar a tiempo ahorra optimizar algo que puede, y debe, sencillamente, ser descartado.

Respeto en programación extrema

Gracias al respeto entre los miembros del equipo, no se interfiere en el trabajo del resto de programadores. En programación extrema, este es uno de los valores menos definidos pero que se contempló tan importante como para incorporarlo después de que estuvieran definidos los anteriores. El trabajo en equipo requiere que se respete el trabajo de los demás miembros para obtener los mejores beneficios, evitando confrontraciones. El equipo trabaja como un solo organismo. Y este principio, el del respeto, es indispensable para lograrlo.

Historia de la programación extrema

Oficialmente, el origen de la programación extrema podríamos situarlo en el primer libro sobre programación extrema, "Extreme Programming Explained", que se publicó en 1999. Así que podría decirse que ese es el año de creación de la programación extrema. Su autor, de quien se podría decir que fue quien creó la programación extrema, es Kent Beck

Sin embargo, existen dos precedentes, o causas, que dieron lugar a esta metodología. Una de ellas fue la sustitución de la programación procedimental por la programación orientada a objetos. La otra se debe a la necesidad de acelerar la respuesta de adaptación del software debido al auge de Internet.

Estos dos factores impusieron que fuera preferible ofrecer ciclos de actualización más cortos, adaptándose a las cambiantes necesidades que imponía una más rápida y ágil adecuación del software a las necesidades de los clientes y usuarios. Como los sistemas clásicos de desarrollo no eran lo suficientemente ágiles, Beck ideó un cambio de paradigma en la metodología de desarrollo en equipo que supliera las carencias de los sistemas clásicos.

Ventajas y desventajas de la programación extrema

Las ventajas de la programación extrema resultan evidentes. Se trata de un marco de trabajo que antepone la eficiencia a corto plazo para adecuarse a las necesidades de la sociedad en cuanto a lo que esta espera del software. Por otro lado, requiere de un profundo conocimiento de sus técnicas por parte del equipo, así como de una constante y frenética actualización de conocimientos.

Se podría decir que las desventajas de la programación extrema se restringen al modelo básico de su funcionamiento. Impone una comunicación constante e ininterrumpida, que no siempre es fácil de gestionar en equipos de cierta envergadura. El factor humano adquiere mucho protagonismo y la gestión de recursos humanos no destaca por ser precisamente fácil de gestionar.

En cualquier caso, bien llevada, y con una dirección eficiente, la XP presenta, cuanto menos, una de las mejores metodologías de programación para resolver las demandas que la sociedad reclama al software que le permite funcionar.