Ayer celebramos la tercera edición de las Feature Talks, donde hablamos sobre cómo preparar un producto de software para la internacionalización: Internationalization & Feature Flags.
Este tema surge de las conversaciones que se iniciaron en la anterior Feature Talk #2 – Multitenancy & Feature Flags y aprovechamos para profundizar en la parte de customización por cliente debido a la internacionalización.
Internacionalizar un producto de software
Iniciamos la sesión poniendo en común qué significa la internacionalización y definiendo qué son las feature flags y explicando cómo sacarles el mayor partido posible.
Finalmente, nos pusimos manos a la obra con algunos casos reales de retos de internacionalización y los resolvimos mediante el uso de feature flags.

¿Cómo definimos el concepto de internacionalización para un producto digital?
Empezamos con un brainstorming entre los distintos participantes para acordar y centrar el concepto de internacionalización para una plataforma de software. Salieron varias ideas según los casos de uso a los que se enfrentan los ingenieros en sus respectivas empresas.

El reto de la internacionalización contiene muchos ángulos distintos y también es importante entender qué es necesario e imprescindible para empezar. No podemos abarcar todo de inicio.
¿Por qué las feature flags son relevantes para el caso de la internacionalización?
Empezamos preguntando a los participantes qué sabían acerca de las feature flags y cómo las habían utilizado en el pasado.
En general, los ingenieros de software piensan en las feature flags como un switch ON/OFF. Si bien esto es correcto, las feature flags son mucho más que eso, ya que éstas tienen la capacidad de albergar una lógica compleja para decidir si está ON/OFF. Lo cual abre oportunidades de segmentación según metadatos a la vez que no solo pensar en ON/OFF si no en gestionar múltiples versiones de una misma funcionalidad.

Podéis encontrar más información de las feature flags en nuestra entrada de blog ¿Qué son las Feature Flags y para qué sirven?
Casos de uso de feature flags para la internacionalización de un producto de software
Finalmente, nos adentramos en varios retos de internacionalización explicando porqué y cómo utilizar las feature flags para resolverlos.
Primer Caso

Segundo Caso

Tercer Caso

Durante la discusión de los múltiples casos de internacionalización gestionados mediante feature flags, salieron dudas y opiniones encontradas con el uso de feature flags:
Estas feature flags me generarán muchos “ifs” en el código que me complican su mantenibilidad a la vez que me acabarán suponiendo una deuda tecnológica.
Aprovechamos este momento para introducir el concepto de Feature-Driven Development, un concepto que nosotros utilizamos y que nos permite implantar las feature flags de forma elegante y sin generar deuda.
Además, lo ejemplificamos con la forma en que nosotros estructuramos el código con un caso sencillo:
/src
/features
/super-feature
/v1
/v2
/v3
index.js
if (featurit.isActive("SUPER_FEATURE")) {
switch (featurit.version("SUPER_FEATURE")) {
case "v1":
import "v1.js";
case "v2":
import "v2.js";
default:
}
}