¿Cuál es tu ciclo de desarrollo? (release cycle)

Escaleras que nos ayudan a subirLa salida de una versión de un producto de software suele ser el punto final de un gran trabajo, pero el principio para muchos otros. Por este motivo, es importante tener claro y transmitir al equipo interno y los usuarios como es nuestro ciclo de desarrollo. De esta manera nadie tendrá falsas expectativas respecto al qué y el cuándo.

Nuestro ciclo de desarrollo debe aclarar al menos :

  1. Duración del ciclo de desarrollo completo.
  2. Numeración de las versiones a publicar.
  3. Tipos de versiones que aparecerán en cada ciclo (Beta, RC, Final, Parche, etc.)
  4. Condiciones que se darán para la salida de cada tipo de versión.
  5. Entregables que tendremos en cada tipo de versión.
  6. Definir cuando esa versión no tendrá más mantenimiento o soporte.

1. Duración del ciclo de desarrollo

Totalmente relacionado con las iteraciones que hagas en tu compañía. El tiempo depende de cada producto o empresa, pero es importante tenerlo definido y no cambiarlo para no confundir a ninguno de tus stakeholders

2. Numeración de las versiones

Durante la vida de una aplicación existirán muchas versiones y es importante que todos sepamos identificarlas para conocer que cambios tiene respecto al resto de versiones.

3. Que aparecerá en cada ciclo

En cada ciclo de desarrollo, generalmente, aparecerán distintos tipos de versiones:

  • Una versión beta para probar las novedades y poder distribuir entre usuarios más expertos.
  • Una versión release candidate con la supuesta versión final (Antes de los últimos detalles)
  • Una versión final que se distribuirá entre todos los usuarios.
  • Unos posibles parches que arreglarán problemas una vez publicada la versión final.

No todos los productos funcionan igual ni necesitan todos estos tipos de versión.

4. Condiciones que se darán para la salida de cada tipo de versión

Esto hace referencia especialmente a los «parches», debemos definir cuando y como saldrán los parches. No todos los cambios de nuestro software tienen porque generar un parche, en general solo los errores graves o que rompen una funcionalidad anterior deben convertirse en un parche. Publicar un parche tiene un coste operativo alto, en muchos casos con incluir ese cambio en el siguiente ciclo de desarrollo es suficiente.

5. Entregables que tendremos en cada tipo de versión

Cada tipo de versión es un mundo, en algún caso el entregable es un .zip o una url (beta), en otro son una url, instalable, pdf, documentación, vídeo, post, traducciones, etc.
Hacer un checklist de lo que incluye cada tipo de versión ayuda a preparar todo lo que liberaremos en cada parte del ciclo de desarrollo.

6. Definir cuando una versión no tendrá más mantenimiento o soporte.

Todas las versiones tienen un tiempo de vida, no podemos permitirnos dar soporte y mantenimiento a todas las versiones que han aparecido durante toda vida de una forma indefinida. Este tiempo pueden ser años y todos los stakeholders deben conocer este tiempo para saber cuando tienen para actualizarse a nuevas versiones.

Enlaces a información de ciclos de desarrollo de distintas aplicaciones :

Release Cycle de Confluence
Mcafee release cycle
Ciclo de desarrollo de Velneo
Blender Relase Cycle
Release Cycle de Fedora

¿Qué es una iteración?

Últimamente estamos hablando en muchos frentes de esta palabra. Pero realmente no sabemos exactamente que significa y que nos puede aportar. Unas pistas :

En el colegio:
Una iteración es un curso de un año en el que tenemos que recibir clases, tener exámenes, hacer trabajos y cada año va incrementando la dificultad para hacernos personas con más conocimientos.

En los días:
Cada día es una iteración, hacemos básicamente lo mismo ( desayunar, comer, viajar, etc ), pero cada día intentamos hacerlo mejor. Cuando añadimos una cosa nueva que creemos que nos aporta (ir a la piscina) al principio nos cuesta, pero al cabo de un tiempo lo hacemos sin problema y nadamos muy rápido. Si vemos que algo no es bueno, ver mucho la tele, en la siguiente iteración (al siguiente día) lo intentamos reducir o quitar.

En una empresa de software
Cada versión o periodo de tiempo, se hace siempre las mismas cosas ( probar, programar, informar, enviar mails, hacer campañas de marketing, instalar, evaluar, etc ) Con las iteraciones lo que intentamos es hacer siempre lo mismo, un poquito mejor. Quitando lo que ya no vale y añadiendo cosas nuevas que nos ayuden a cumplir nuestro objetivo.
Cada iteración nos cuesta menos hacer las cosas, porque ya las hemos hecho antes y hay poco nuevo que descubrir.

La gestión de iteraciones nos sirve para muchas cosas:

Problema : Quiero adelgazar

  • Opción sin iteraciones : Me hago una dieta puntual.
  • Opción con iteraciones : Intento cambiar algo en mi iteración diaria para que dentro de un año tener mejor figura.

Problema : Quiero que mis compañeros me valoren mejor

  • Opción sin iteraciones : Les invito a cenar.
  • Opción con iteraciones : Hago un feedback cada 6 meses, les escucho e intento ir cambiando esos detalles

Problema : Quiero subir el Everest

  • Opción sin iteraciones : Muero en el campo base 1 por cansancio
  • Opción con iteraciones : Subo montañas de 2.000 metros, luego de 3.000 metros, luego 5.000 metros, luego de 7.000 y luego subo al Everest

La gestión por iteraciones no sólo nos ayuda a conseguir nuestro objetivo, sino a ir adaptándonos a los cambios ( los nuestros, los del entorno y a los del objetivo ) a lo largo del tiempo.