El sueño de todo equipo es ofrecer un valor diferencial a sus clientes de forma consecuente y fiable. Conseguir la experiencia deseada no es fácil, hay que reaccionar rápidamente ante los cambios , evaluar las nuevas situaciones y adaptarse a ellas es fundamental a la hora de crear un producto de última generación que guste a los usuarios. ¿Cuál es nuestra filosofía? Crear un producto final que incremente tu espíritu y, al final, con pulsar un botón y puedas disfrutar de tu café mientras fluye la magia.
Pero, ¿cómo surge la magia? y, más concretamente, ¿cómo automatizamos el lanzamiento de una aplicación móvil cada dos semanas y conseguimos que el 99,9 % de los usuarios disfruten de ella sin errores? Resumiendo, esta productividad se sostiene gracias a la integración constante de nuevas funciones, la realización sistemática de pruebas y asegurandonos que cada desarrollo de una rama de integración continua (IC),pueda llegar a entregarse.
Ahora veamos en detalle el proceso de lanzamiento de una nueva función, desde su diseño, pasando por su fase de desarrollo y hasta que llega a manos de nuestros usuarios.
Fase de planificación
Como es natural, al principio surgen un montón de ideas para la implantación de nuevas funciones. Las ideas proceden de los fieles miembros de car2go y a través de distintas varias vías: accionistas, clientes y de nuestro propio equipo, entre otros. A continuación, ordenamos las ideas en función de su prioridad y se añaden a una lista llamada backlog ( tal vez hablaremos de este proceso en el futuro).
Como las ideas vienen de las historias de los miembros,, lo primero es que el equipo de diseño entienda el problema y realice un boceto de la posible solución. Luego, tras una serie de iteraciones, el primer prototipo wireframe se somete a la evaluación de usuarios reales, quienes serán los que validen nuestro trabajo, esperando encontrarnos en el camino correcto.
Luego, analizamos la historia del usuario desde un punto de vista técnico. El propietario del producto, junto con el equipo de desarrollo, refina y mide la complejidad de la historia. Para detectar problemas y hacer el seguimiento de los proyectos utilizamos la herramienta Atlassian Jira.
Conforme a las prioridades establecidas, llevamos una historia al sprint, acordamos los detalles de implantación y dividimos la historia en tareas específicas de la plataforma.
Fase de desarrollo
Durante esta fase, implantamos y validamos la historia del usuario realizando cada una de las tareas en una rama de funcionalidad (feature branch). Para ello utilizamos la herramienta Gitflow. Una vez finalizado, llega el momento de comprobar el diseño en detalle y validar si se cumplen todos los criterios. Luego, creamos una solicitud de extracción (pull request), nos aseguramos de que las pruebas de integración estén señalizadas en color verde y, solo después de recibir el visto bueno del resto de programadores, integramos la nueva historia en nuestra rama de IC. Para colaborar entre nosotros utilizamos la herramienta Atlassian Stash.
Fase de distribución
La fase de distribución comienza con una reunión de validación del equipo. En ella todos los miembros del equipo pueden examinar la historia terminada y encontrar posibles aspectos problemáticos en una sesión de validación manual. A continuación, resolvemos cualquier incidencia detectada o congelaciones del código (freezes). Cuando llega el momento de lanzar una nueva versión de la aplicación, uno de los programadores activa una tarea de Jenkins que ejecuta automáticamente pruebas, además de generar, firmar y cargar un binario en una tienda de aplicaciones.
A partir de este momento, los evaluadores alfa pueden descargar el binario y validar manualmente su integración siguiendo una hoja de validación. Si no se detectan problemas que impidan el lanzamiento, el binario pasa a la fase de prueba beta abierta. Tras muchas pruebas y análisis del feedback obtenido a través de varios canales, el propietario del producto y nuestros accionistas serán quienes decidan realizar o no el lanzamiento.
Sólo unos pocos datos que muestran cómo hemos evolucionado a lo largo del tiempo. La aplicación car2go ha sido actualizada desde 2012 y hasta el momento del siguiente modo: 5 veces en 2012: 6 veces en 2013; 10 veces en 2014; 18 veces en 2015; y 8 veces este año, hasta el momento de la publicación de este artículo (la estadística no incluye las herramientas de reparación (hot-fix). Prueba la última versión de la aplicación car2go para Android, iOS, BlackBerry o Windows Phone, y no olvides mantener tu dispositivo actualizado con las últimas funciones.
Por último, pero sin ser menos importante, puede que hayas detectado algunas directrices de scrum que han sido útiles para mi equipo a lo largo del tiempo, pero lo más importante entender que no existe ninguna receta universal, y que esto es solo una muestra de nuestro proceso de mejora continua, que quizás ya ha cambiado cuando leas estas líneas. Nos encantará recibir cualquier sugerencia o aclaración.