Skip to main content

Los feature flags son un cambio radical para los gestores de productos. Te permiten lanzar nuevas funcionalidades sin complicaciones: sin cambios de código, sin lanzamientos completos y sin ningún riesgo.

Piénsalos como un interruptor que puedes activar para personalizar tu producto o hacer experimentos al instante. Ya sea que quieras acelerar los ciclos de lanzamiento o probar nuevas ideas, los feature flags ponen el control en tus manos.

En este artículo, compartiré las mejores prácticas para la gestión de feature flags y te mostraré cómo utilicé estas técnicas en Guardian Soulmates, la plataforma de citas de The Guardian, para simplificar una gran renovación de producto.

Want more from The CPO Club?

Sign up for a free membership to complete reading this article:

Paso 1 de 2

Este campo es un campo de validación y debe quedar sin cambios.
Name*
Este campo está oculto cuando se visualiza el formulario
Key Takeaways

Definición: Las banderas de características mejoran los ciclos de lanzamiento al permitir implementaciones seguras y flexibles de funciones sin cambios de código.

Por qué son útiles: Convenciones claras de nomenclatura para las banderas de características ayudan a los equipos a entender fácilmente su propósito y evitar confusiones.

Uso efectivo: Gestiona las banderas eficazmente eliminando las obsoletas y asegurando que se puedan activar o desactivar fácilmente.

Comienza desde pequeño: Usa las banderas de características para pruebas empezando por audiencias pequeñas y ampliando en función del feedback para minimizar riesgos.

Mejores Prácticas para la Gestión de Feature Flags

Para gestionar eficazmente los feature flags y asegurar lanzamientos de producto sin contratiempos, es importante seguir buenas prácticas que fomenten la claridad y la eficiencia. Aquí tienes algunas prácticas clave a tener en cuenta:

  • Usa un sistema consistente: Ya sea mediante una herramienta de gestión o un archivo de configuración, asegúrate de que el sistema sea fácil de entender y accesible para todos los miembros del equipo.
  • Define convenciones claras para los nombres: Cada tipo de flag (por ejemplo, lanzamiento, permiso, kill) debe tener nombres únicos y descriptivos, garantizando claridad para todos, incluso años después.
  • Haz que sea fácil activar/desactivar los flags: Los flags deben poder activarse o desactivarse fácilmente sin necesidad de cambios de código o intervención de desarrolladores.
  • Elimina flags obsoletos: Quita los flags que ya no se necesitan para evitar desorden y reducir la deuda técnica en tu sistema.

1. Usa un Sistema Consistente para la Gestión de Feature Flags

No importa si usas una herramienta de gestión de feature flags (como por ejemplo LaunchDarkly), un archivo de configuración o una tabla en la base de datos. Sea lo que sea que uses, el sistema debe ser fácil de entender e incluir buenas convenciones de nombres, para que cada ingeniero de software comprenda para qué sirve cada flag.

Dedica un poco de tiempo, al introducir los feature flags, a discutir cuál es la mejor solución para ti, ya que querrás mantener este sistema a largo plazo. 

2. Define Convenciones de Nombres para los Distintos Tipos de Feature Flags

Puedes implementar feature flags para lograr muchas cosas diferentes:

  • Flags de lanzamiento: facilitan la integración de código en producción antes de que una funcionalidad esté lista para su publicación general.
  • Flags de experimentación: para crear una prueba A/B, el flag controla qué grupo de usuarios recibe qué experiencia.
  • Flags de permisos: permiten controlar el acceso a determinadas funcionalidades para diferentes clientes 
  • Flags de "kill": permiten degradar el producto de forma controlada en caso de cualquier problema de rendimiento o sobrecarga. 

Las convenciones claras de nombres para cada tipo de flag significan que todos saben para qué sirve cada flag incluso años después. 

We’ve collected the goods — AI prompts, exclusive deals, and a library of resources for product leaders. Unlock your account for access.

We’ve collected the goods — AI prompts, exclusive deals, and a library of resources for product leaders. Unlock your account for access.

Este campo es un campo de validación y debe quedar sin cambios.
Name*
Este campo está oculto cuando se visualiza el formulario

3. Facilita el Encendido/Apagado de los Flags

La gran ventaja de los feature flags es que pueden activarse y desactivarse fácilmente. Lo ideal es disponer de una forma de configurar un flag sin necesidad de cambiar el código ni intervención de un desarrollador. Dado que los flags pueden usarse ampliamente, varios equipos pueden querer gestionarlos, por ejemplo:

  • QA para investigar o replicar una situación particular de un cliente.
  • Atención al cliente para activar o desactivar una funcionalidad para un usuario.
  • El equipo de DevOps para cerrar (partes de) tu producto de forma controlada en caso de sobrecarga u otros problemas. 

Si cuentas con una pantalla online para configurar los flags, todo esto se puede hacer sin trabajo del equipo de ingeniería. 

4. Haz Visibles los Ajustes de los Feature Flags

Debe ser fácilmente visible qué combinación de ajustes de feature flags están activados para un usuario específico. Esto debería almacenarse junto con el perfil del usuario tanto en tu base de datos de usuarios como en tu sistema de analítica.

Esto puede resultar muy útil para atención al cliente al investigar cualquier problema reportado. También puede ser muy valioso analizar diferentes comportamientos de los usuarios con diferentes ajustes. Es esencial al analizar los resultados de una prueba A/B.

5. Elimina Flags Obsoletos

Los flags de lanzamiento y experimentación son, por definición, necesarios solo temporalmente. Tras el despliegue completo de una funcionalidad controlada por un flag o la finalización de un experimento, planifica tiempo para eliminar el flag como último paso. Así evitas acumular deuda técnica en el código y tu gestión de feature flags se mantiene ordenada y fácil de entender. 

6. Evita dependencias entre banderas

Cada bandera debe tener un propósito específico e independiente de cualquier otra. En el caso de las banderas de permisos, esto significa que el código debe ser tan modular que diferentes funcionalidades puedan activarse en cualquier combinación.

Si se necesitan múltiples banderas para habilitar un caso de uso en particular, o si potencialmente entran en conflicto con otras banderas, la configuración de las mismas puede volverse confusa y, tarde o temprano, surgirán problemas en la experiencia de los usuarios. 

7. Utiliza switches de funcionalidades para evitar ramas en el código

Cuando se discute la implementación de una funcionalidad importante en el equipo de producto, también debes hablar de cómo dividir el desarrollo del software en partes más pequeñas. En este punto, deberías considerar también el uso de una bandera de funcionalidad. 

Cuando implementas una bandera y la mantienes desactivada, evitas la creación de ramas de funcionalidades de vida larga. En su lugar, el código de la nueva funcionalidad puede ser fusionado y desplegado continuamente sin ser expuesto a los usuarios en un entorno de CI/CD (integración continua / entrega continua) o en un sprint ágil de despliegue de código. Esto mejora la integridad de tu base de código ya que no hay procesos de fusión grandes ni complicados y los conflictos se detectan rápidamente.

Además, desacopla el despliegue del código de la exhibición de los cambios a los usuarios finales, como se explica en el punto 8.

8. Usa banderas de funcionalidades para lanzamientos de prueba pequeños

El lanzamiento de grandes novedades suele ser estresante y arriesgado, pero puedes afrontarlo exponiendo tu funcionalidad primero a una pequeña audiencia, monitorear los efectos y retroceder si es necesario.

Si has utilizado una bandera de funcionalidad para fusionar y liberar tu código constantemente antes de exponerlo al público, como se recomienda en el punto 7, ya tienes la herramienta para lograr esto.

Cuando tu nueva funcionalidad esté lista, actívala en el entorno de producción para exponerla solo a testers internos, después a un pequeño porcentaje de clientes (lo que se conoce como lanzamiento canario), y luego a toda tu base de usuarios. 

En cada paso monitorizas las métricas clave. Si algo sale mal en cualquier momento, puedes simplemente desactivar la bandera de nuevo e investigar el problema sin el estrés de un rollback complicado. 

El siguiente estudio de caso muestra un ejemplo de cómo reducir riesgos en un rediseño mayor de un producto. 

Estudio de caso - Uso de banderas de funcionalidad en el rediseño de Guardian Soulmates

Cuando trabajé como gerente de producto en Guardian Soulmates (la plataforma de citas por suscripción de The Guardian en ese momento), nos encontramos con dos desafíos: un sitio móvil deficiente y una imagen de marca desgastada. Decidimos abordar la transición a un sitio responsivo y renovado en dos etapas. 

Seamos sinceros: a los clientes generalmente no les gustan los cambios, especialmente a los que pagan. Un rebranding es un esfuerzo importante que puede generar mucha disrupción.

Discutimos cómo lograr de la mejor manera nuestros objetivos de reemplazar el sitio móvil e implementar una nueva imagen de marca sin causar demasiado trastorno a nuestros suscriptores. La solución elegida fue un proceso en dos etapas que involucraba dos banderas de funcionalidad:

  • Bandera para disposición responsiva: esta bandera nos permitió mostrar cualquier página de manera individual ya sea en diseño responsivo o en el diseño de escritorio existente (el sitio móvil separado se mantuvo sin cambios hasta que estuvimos listos para lanzar el nuevo sitio móvil por completo). 
  • Bandera para la nueva imagen de marca: Esta bandera nos permitió mostrar todo el sitio con la antigua o la nueva identidad visual.

Bandera para el sitio responsivo

Después de crear una estructura responsiva, migramos las páginas, una por una, al nuevo diseño adaptativo. Si trabajas en algo similar, estas herramientas para prototipos de diseño responsivo pueden ayudarte a probar e iterar sobre los diseños antes de salir en producción.

Por cada página migrada, la bandera de funcionalidad responsiva se activaba primero para un pequeño grupo de usuarios, quienes podían dejar sus comentarios.

Después de algunos días, la página responsiva se activaba para todos los usuarios. Este proceso se repetía hasta que todo el sitio era responsivo. 

Después, el sitio móvil se cambió al nuevo sitio responsivo. La disrupción para los usuarios de escritorio fue mínima, ya que habíamos transformado las páginas gradualmente. 

El impacto para los usuarios móviles fue pequeño porque teníamos pocos usuarios móviles en ese momento (¡el sitio móvil antiguo no era muy bueno!). 

Bandera para el rebranding del sitio responsivo

Tras el despliegue del sitio responsivo, la bandera de nueva imagen de marca nos permitió cambiar todo el sitio entre la antigua y la nueva identidad visual.

Los desarrolladores implementaron un botón en el sitio para cambiar la imagen de marca para cada usuario, lo que permitió a diseñadores, QA y también a mí, como gerente de producto, comprobar el avance.

Las páginas rediseñadas se lanzaban de manera continua, pero en el entorno en vivo esta bandera permaneció desactivada para que ningún usuario viera páginas con la nueva identidad visual.

Cuando todas las páginas estuvieron listas, pusimos un botón en el sitio para que los usuarios pudieran inscribirse en una vista previa pública de la nueva imagen de marca. Este botón activaba el cambio a la nueva imagen de marca para el usuario. Los usuarios pudieron darnos sus comentarios y, después de una semana, activamos la nueva imagen de marca para todos. 

Todo el proceso fue completamente sencillo tanto para el equipo de desarrollo como para nuestros clientes. Fue un excelente ejemplo de cómo usar banderas de funciones para reducir el riesgo de una importante renovación del sitio. 

Si te interesa comprender con mayor detalle lo que hicimos, puedes encontrar un artículo sobre el proyecto de rediseño de Soulmates en el Blog de Ingeniería de The Guardian.

Reflexiones finales

Si configuras bien la estructura inicial, verás que usar banderas de funciones puede aumentar enormemente la flexibilidad y eficiencia de tu producto.

También deberías considerar usar banderas de funciones para iniciativas más grandes con el fin de minimizar riesgos, así como un plan de gestión de lanzamientos para asegurar una implementación suave. Además, puedes emplear IA en la gestión de lanzamientos para crear este plan. ¡El único límite al uso de banderas de funciones es tu imaginación!

Cuéntanos en los comentarios cualquier forma ingeniosa en la que hayas utilizado banderas de funciones en tu producto. 

Si quieres más consejos y trucos para mejorar tus habilidades de gestión de producto, por favor suscríbete a nuestro boletín.

Consigue la ayuda de otro Product Manager en tu equipo con esta útil guía: Cómo crear una descripción efectiva del puesto de Product Manager Ágil (+Ejemplo)

También vale la pena revisar: