Programación Extrema: Qué es y principios básicos

Programación Extrema: Qué es y principios básicos
programación extrema portada min

La programación extrema es una metodología de desarrollo ágil que tiene como principal objetivo aumentar la productividad a la hora de desarrollar un proyecto software. Da prioridad a los trabajos que dan un resultado directo y en los cuales se reduce la burocracia que pueda existir en el entorno de trabajo.

¿QUÉ ES UNA METODOLOGÍA ÁGIL?

Las metodologías ágiles tienen como punto fuerte la adaptación a cualquier cambio en un proyecto para aumentar sus posibilidades de éxito.

Una metodología ágil tiene varios principios:

  • Los individios y sus interacciones son más importantes quue los procesos y las herramientas.
  • El software que funciona es más importante que la documentación exhaustiva.
  • Colaboración con el cliente en lugar de negociación de contratos.
  • No hay que seguir un plan cerrado, sino adaptarse al cambio.

Estos 4 puntos los veremos más adelante.

PRINCIPIOS BÁSICOS

Tenemos 12 principios básicos que se agrupan en 4 categorías distintas:

  • Retroalimentación.
  • Proceso continuo en lugar de por bloques.
  • Propiedad intelectual compartida.
  • Entendimiento compartido.

RETROALIMENTACIÓN

  • Principio de pruebas: lo primero que se debe hacer es establecer un período de pruebas de aceptación del programa, en el cual se definirán las entradas y salidas del sistema. Básicamente se define lo que debe hacer el software desarrollado. Como si fuese una caja negra.
  • Planificación: el cliente (o su representante) escribirá sus necesidades para definir concretamente las actividades que el sistema debe realizar. En esta fase se creará un documento que contendrá historias de usuario que forman el plan de liberación, el cual define los tiempos de entrega de la aplicación para poder recibir feedback por parte del cliente.
  • Cliente in-situ: el cliente (o su representante) deberá formar parte del equipo de desarrollo. Se le dará poder para determinar los requisitos de la aplicación, definir la funcionalidad y dar prioridad a determinadas cosas. Gracias a esto, habrá una fuerte interacción con los programadores, disminuyendo así el tiempo de comunicación y la cantidad de documentación a redactar. El cliente estará con el equipo durante todo el proceso de desarrollo del proyecto.
  • Pair-programming: este punto junto con el anterior son los más radicales de esta metodología. Consiste en escribir código en parejas compartiendo una sola máquina. Según los experimentos ya realizados sobre este método, se producen mejores y más consistentes aplicaciones a igual o menor coste.

PROCESO CONTINUO EN LUGAR DE POR BLOQUES

  • Integración continua: consiste en implementar progresivamente las nuevas características del software. En lugar de crear versiones estables en función de una planificación previamente realizada, los programadores reunen su código y reconstruyen el proyecto varias veces al día si hace falta.
  • Refactorización: mediante la constante eliminación de código duplicado y/o ineficiente los equipos de programación mejoran el diseño del sistema. El código se evalúa continuamente para ofrecer la mayor calidad posible.
  • Entregas pequeñas: el producto es evaluado en un ambiente real mediante la colocación de un sistema sencillo en producción el cual se actualizará rápidamente, es decir, cada 2 semanas (3 como máximo) el software será puesto en producción.
programación extrema horas min

Entendimiento compartido

  • Diseño simple: el mejor programa será aquel que cumpla con los requisitos y sea más simple. Es importante proporcionar un software que cubra las necesidades de un cliente. Ni más ni menos.
  • Metáfora: expresa la visión evolutiva del proyecto y define los objetivos del sistema mediante una historia.
  • Propiedad colectiva del código: el código tiene propiedad compartida. Nadie es propietario de nada, ni siquiera de lo que ha desarrollado. Todos los programadores son "dueños" de todo el código. Según esta metodología, cuantos más programadores haya trabajando en una parte de código, menos errores tendrá.
  • Estándar de programación: define las reglas para escribir y documentar código, además de cómo se comunican las diferentes piezas de código desarrolladas por diferentes equipos. El objetivo de esto es que parezca que el código ha sido escrito por una única persona.

BIENESTAR DEL PROGRAMADOR

  • Semana de 40 horas: los programadores cansados escriben peor código. Es importante minimizar las horas extras y mantener a los programadores frescos y descansados. De esta manera, se generará mejor código. Si es necesario hacer horas extras, quiere decir que el proyecto está mal planificado.

Opiniones/Conclusiones

Os dejo unas tiras de Dilbert sobre extreme programming que me han hecho gracia:

extreme programming dilbert
- "Vamos a probar algo llamado programación extrema. Primero, escoged una pareja. Ambos trabajaréis con un sólo ordenador durante 40 horas a la semana". - "El nuevo sistema tiene un minuto y ya odio a todo el mundo".
extreme programming dilbert 2
- "No puedo hacer todo esto para la primera versión y cada versión necesita una historia de usuario". - "De acuerdo, aquí tienes una historia: haz todo lo que te pido o arruinaré tu vida".

Esta metodología existe desde el año 2001, es decir, que tiene relativamente poco tiempo. Aunque lleve tan sólo unos años ha revolucionado el mundo de la industria de desarrollo software generando diversas opiniones, tanto buenas como no tan buenas. Entre los puntos negativos, podemos encontrar varios:

  • Los programadores suelen querer ser propietarios del código que desarrollan: como se ha mencionado anteriormente, nadie es propietario de nada. Se tiene como objetivo el desarrollo de un código homogéneo, del cual no podamos saber quién lo ha escrito. Además, se establecerá un estándar de programación que ayudará a cumplir esto.
  • ¿40 horas semanales de trabajo? A veces son más: si los programadores tienen que estar haciendo horas extra, quiere decir que el problema está mal planteado. Es posible que haya que trabajar más horas, pero no como se debe tomar como norma. Programadores cansados = peor código.

La programación extrema funciona mejor con gente con talento: profesionales capaces de hacer un diseño simple y escalable. Ellos mismos sabrán amoldarse y adaptarse al entorno de trabajo.