18 Ago 2016
Local flavour

Tecnología: cómo se lanzan las nuevas funciones de car2go

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.

 

process

 

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 AndroidiOSBlackBerry 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.