Ir al contenido principal

eXtreme Programming - Programacion extrema


Comentando eXtreme Programming (Programacion extrema)


Es una metodologia Agil formulada por Kent Beck (firmante del manifiesto agil 2001), se focaliza en la adaptabilidad del codigo. Un elemento distintivo es que esta metodologia considera que los cambios son un ingrediente natural y esperado (a diferencia de las metodologias tradicionales), para los seguidores de esta metodologia los cambios en pleno proyecto son deseables, son un reto a su corazon. 

La capacidad de adaptarse hoy en dia es un componente indispensable para llevar a cabo desarrollo del software. Lo que el cliente pide hoy esta en evolucion continua, y esta de lado del desarrollador escribir un codigo sabiendo que a corto plazo debe cambiar, se va a adecuar a una nueva funcionalidad, etc.

Son valores de un codigo escrito bajo esta metodologia los siguientes:
  • Comunicacion: transmitirle al desarrollador su esencia, debe transmitir lo que desea lograr, los nombres de variables, metodos y clases deben ser elegidos cuidadosamente para que transmitan su proposito directamente al desarrollador.
  • Simplicidad: Para alcanzar este valor es necesaria la Refactorizacion del codigo. Esta tecnica es muy interesante ya que altera la estructura interna del codigo haciendolo mas facil de leer, comprensible y limpio sin cambiar su proposito. Por ejemplo, esta tecnica revisa cada variable y modifica su nombre por uno mejor, separa y descompone una funcion compleja en multiples funciones.
  • Valentia: Los desarrolladores que apoyan esta metodologia saben que si deben volver a escribir el codigo lo hacen de nuevo con el proposito de implementar cambios a futuro facilmente.
  • Respeto: el respeto por los miembros del equipo es fundamental, no se puede escribir codigo que reverse pruebas unitarias ya superadas.
  • Retroalimentacion: Como estamos en metodologia agil, los ciclos son cortos, el cliente participa a diario y da sus comentarios constantemente sin esperar por un corte o fin de version.

Hay caracteristicas distintivas esenciales en esta metodologia que colaboran para mejorar el producto:
  • Promueve el trabajo en parejas: Esta es una buena practica porque permite entre ambos discutir y acordar el codigo mientras se escribe, intercambiarse diariamente mientras uno escribe el otro comenta y va revisando.
  • Desarrollo incremental: Ciclos pequeños, entregas constantes, evolucion del producto que se va incrementando. Y esto es fundamental porque el cliente va percibiendo su evolucion constantemente.
  • Simplificacion: cuando algo es simple puede mejorarse exponencialmente de forma directa. Descomponer una tarea compleja en multiples tareas simples.

Como experiencia puedo comentar que en la refactorizacion del codigo un elemento esencial es la reutilizacion. Escribir codigo bien simple y claro que pueda ser reutilizado es una ventaja enorme en proyectos agiles, porque implementar nuevas funcionalidades se va a  convertir en seleccionar metodos, funciones y organizarlas para obtener el nuevo proposito. Es como cuando te dan 3 recetas y sabes cuales son los ingredientes empacados que debes seleccionar para prepararlas. Si conoces los ingredientes empacados y sabes en que pasillo del mercado estan, solo los tomas, los usas y presentas tus platos.









Comentarios

Entradas populares de este blog

Pasion - Mision - Vocacion - Profesion

Donde la Pasion, Mision, Vocacion y Profesion se unen es el proposito de lo hacemos. Pasion: Entusiasmo que se pone en algo que se hace o se defiende. [Diccionario Manual de la Lengua Española Vox. © 2007 Larousse Editorial, S.L.] Vision: La Visión es la capacidad de ver más allá, en tiempo y espacio, y por encima de los demás, significa visualizar, ver con los ojos de la imaginación, en términos del resultado final que se pretende alcanzar. La Visión es el sueño alcanzable a largo plazo, el futuro aspirado. [http://www.gestiopolis.com/concepto-de-vision/] Vocacion: La vocación es aquella atracción por lo que deseamos hacer, nuestra inspiración, nuestros sueños y anhelos. La vocación es la forma en que nuestros valores y la formación como personas salen a la luz y son expresadas a través de la profesión elegida. La vocación también es considerada como un proceso que se desarrolla durante toda la vida, ya que se construye de forma permanente. Implica descubrir quién soy, cómo s

Pensamiento Simplista o Sistemico

Pensamiento Simplista o Sistemico El tema de pensamiento sistemico implica mucho mas que una vision global de varios escenarios. En nuestro dia a dia el pensamiento simplista es el mas facil de encontrar, encontramos como respuesta un SI o NO ante preguntas que requieren una evaluacion y analisis mucho mas profundo. Estamos acostumbrados a ser sorprendidos por un error o incidencia e inmediatamente salir a solucionarlo, es decir, a combatir inmediatamente el incidente, y no el problema. Sin darnos cuenta que existe una relacion de incidentes asociados a un mismo problema. O lo que es peor, que resolviendo un incidente estamos dejando intacta la posibilidad de que ocurra nuevamente. Una incidencia (la punta del iceberg) siempre tiene un problema asociado con una causa raiz que lo origina (la parte sumergida del iceberg). Las causas de los problemas siempre estan ocultas debajo de la superficie, para encontrarlas y sacarlas a la superficie existen una serie de metodolog

La Gestion del tiempo

MATRIZ DE GESTION DEL TIEMPO Algunas recomendaciones a la hora de administrar y organizar las tareas. Es importante tener claras las prioridades y clasificacion de las actividades que desarrollamos en todos los espacios. Dwight D. Eisenhower pensaba que debemos dedicar atención y tiempo a nuestras actividades en función de su importancia y urgencia La Matriz de Stephen Covey la propone como una herramienta para administrar el tiempo en base a una clasificacion de las actividades a realizar. En general la mayor parte de nuestro tiempo debe estar focalizada en los cuadrantes I y II. El cuadrante II es el nucleo principal de nuestra gestion eficiente. Algunos conceptos para entender la matriz: Algo es Importante cuando contribuye a tus objetivos. Algo es urgente cuando requiere una atención inmediata.