Si eres Product Manager deberías amar la integración continua

on

Los product managers hablamos mucho de métricas, historias de usuario, roadmaps, backlogs, entrevistas con los clientes, y sin embargo poco se hablamos poco de la integración continua.    La integración continua no es realmente una herramienta del Product Manager, sino de tecnología, pero tener integración continua hace una grandísima diferencia en el día a día del Product Manager.

Qué es la integración continua

La integración continua se nombró por primera vez por Grady Booch en 1991, y la idea principal y lo que propone es se hagan las pequeñas mejoras que se hagan en el código se vayan integrando en el código base de manera continua.

Este paradigma del software permite que el código evolucione y se integre continuamente, sin necesidad de tener que hacer grandes cambios de versiones.  Lo que permite esta metodología es tener la version 1.0.1, 1.0.2, y que cada versión vaya añadiendo diferente funcionalidad.

Anterior a la integración continua se desarrollaba todo el código y luego se pasaba todo los tests.

La integración continua como cimiento de la entrega continua y DevOps

La evolución natural de la integración continua es crear una metodología ágil que permite la entrega continua de software.  Esta entrega continua permite integrar el desarrollo de software con el soporte y operaciones.  Dicho de otra manera, las modificaciones del código pueden lanzarse a producción y probarse con clientes de manera continua.

Todo esto permite que las modificaciones de especificaciones se puedan entregar al usuario  más rápidamente, por lo que el usuario puede probar nuevas funcionalidades de manera continua.

Así, si el ciclo de desarrollo es semanal, podríamos (simplificando mucho) que cada semana los clientes tendrán las nuevas funcionalidades listas para ser utilizadas.

Impacto de la integración continua en el trabajo del Product Manager

Por dar claridad al gran impacto que tiene la integración continua en el trabajo del Product Manager, veamos el trabajo de dos Product Managers, uno sin un entorno de integración continua, y otro con un entorno de integración continua.

Sergio, Product Manager SIN integración continua

  • Definición del producto: Usualmente Sergio definirá que quiere crear y además pedirá a un tester que defina las pruebas que el software necesita pasar para validar la funcionalidad
  • Desarrollo: Una vez definidas las funcionalidades, éstas se entregarán al equipo de desarrollo, y éstos empezarán a desarrollar lo propuesto por el Product Manager
  • Testing: Una vez que el código está desarrollado, el tester pasará una batería de pruebas para comprobar que la funcionalidad del código es correcta
  • Puesta en producción: Una vez los tests dan OK, entonces se busca un espacio de tiempo en donde haya menos tráfico, se pasa el código a producción, y una vez en producción se vuelve a probar
  • Vuelta a empezar: El ciclo se vuelve a empezar, y se suele llamar a cada ciclo “fase” del proyecto.

Carlos, Product Manager CON integración continua

  • Definición del producto: Carlos definirá el producto con la ayuda de su equipo de desarrollo ágil.
  • Desarrollo y test integrado : El equipo de desarrollo escribirá el código además de la batería de tests que el código pasará dentro del código.  Los tests están integrados en el código, y necesitan escribirse antes del código para luego ir pasando cada escenario una vez el código está escrito
  • Puesta en producción: Como el código tiene integrado el testing, y éste ya ha pasado, y siempre que el código de producción esté alineado con desarrollo, el código se empuja directamente a  producción.
  • Vuelta a empezar: El ciclo se vuelve a empezar, pero es continuo.  Siempre se puede volver a empujar código a producción si se cree oportuno

Ventajas de la integración continua

Estas son algunas de las ventajas de la integración continua:

  • Test A/B: Facebook es una empresa conocida por tener varias versiones del código funcionando para diferentes usuarios. Facebook, gracias a la integración continua, puede hacer experimentos y presentar a un grupo de usuarios una versión del producto y a otro grupo de usuarios otra versión del producto, y medir cual convierte mejor basado en métricas previamente definidas.  Este tipo de experimentos en Facebook es fácil de generar ya que la integración es continua.  Un día entras en Facebook y el botón de páginas está en el centro de la pantalla, y otro día ha cambiado está en el lateral.  Todo se mueve y nada se rompe gracias a la integración continua.
  • Más funcionalidad en menos tiempo: Si en los ciclos de desarrollo una batería de tests falla, el código no puede lanzarse.  Tiene que llevarse a los desarrolladores para que se arregle.  Esto no pasa en la integración continua ya que el test de pruebas está integrado con el código y la integración es por definición continua.  Esto permite sacar más funcionalidad en menos tiempo
  • Más facilidad para ir a un estado anterior: Si algún elemento de la integración continua falla, es facil ir a un estado anterior que esté probado que funcionaba. Se pierde menos esfuerzo y se compartimenta mejor el código lanzado.
  • Crear el producto que los usuarios necesitan: Debido a una mayor velocidad para llegar al mercado, los usuarios pueden probar las nuevas funcionalidades y dar feedback más rápidamente.  Además del feedback de los usuarios, podremos ver si las métricas mejoran con loas nuevas funcionalidades.
  • Menos tiempo arreglando fallas: Debido a que el código está integrado, el número de fallos (bugs) disminuye significamente

Conclusiones

El cambio de paradigma desde un desarrollo clásico a un cambio a integración continua es duro.

Implica cambios culturales de la empresa, y sobre todo de los empleados.  La forma de trabajar cambia, los roles y responsabilidades también. La adaptación es incómoda, y al principio la nueva forma de trabajar no es natural.

Todo el proceso de cambio cuesta, pero una vez se ha hecho la transformación, seremos más eficientes, podremos sacar producto más rápido y por lo tanto aprender que es lo que mejora la vida de nuestros usuarios, haciendo el trabajo del Product Manager mucho más sencillo y eficiente, lo que permite al producto tener mejores resultado en menor tiempo.

¡Así que si eres Product Manager, lucha por tener integración continua en tu producto!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *