Dodo Pizza es una empresa internacional: operamos en 13 países y no tenemos previsto detenernos. La mayoría de las pizzerías se encuentran en la región de Eurasia: Rusia, Kazajstán, Bielorrusia, Kirguistán, Uzbekistán. Este ya es un gran negocio operativo, somos líderes en el número de pizzerías. Este negocio solo necesita ser respaldado y desarrollado en profundidad, porque aquí el negocio y la TI trabajan juntos en funciones comprensibles.
- .
- .
- .
- .
- : , LTV .
Y luego (de repente) entra una empresa y dice: "Queremos empezar en Nigeria", en el mismo decimotercer país en el que ya operan 2 pizzerías. Hasta 2019, el lanzamiento era poco común: 1 país por año. El equipo de desarrollo que acompañó al lanzamiento cambiaba constantemente. No se hizo hincapié en la aceleración con este enfoque.
No está claro si el nuevo país "disparará" o no. ¿Quién lanzará el país? ¿De qué producto tendrás que tomar un equipo? El equipo "afortunado" tendrá que distraerse de su característica asesina, recordar cómo implementar el sistema y enfrentar ciertas dificultades. Averigüemos cuáles.
Dificultades para iniciar una empresa
El descubrimiento de un nuevo país es una sorpresa (quizás). A veces hay oportunidades en el espíritu empresarial que simplemente no se pueden perder, incluso si no está preparado. Por ejemplo:
- ha aparecido un socio fuerte que está dispuesto a correr riesgos;
- un jugador local fuerte abandona la región;
- el socio estaba buscando, buscando, buscando y de repente encontró una premisa onírica;
- luego de un viaje de negocios internacional, nos dimos cuenta de que ya no podíamos posponer y que necesitábamos con urgencia lanzar el país.
Tratamos de planificar las aperturas con anticipación, pero a veces la vida hace sus propios ajustes.
Lanzamientos individuales. Al lanzar un país al año, no tiene sentido mantener un equipo dedicado. El equipo de desarrollo que lanzó el último país se fue para hacer otra característica espectacular.
Cuando es el turno de abrir un nuevo país, todas las listas de verificación están desactualizadas, y el equipo que lanzó el último país solo puede ayudar a trompicones. No se enfocó en acelerar el inicio del sistema con este enfoque. Lanzamiento y bien, volveremos en un año :)
Razfokus.Debido a los lanzamientos únicos, el equipo de desarrollo que se ocupará del nuevo país tendrá que romper con las características asesinas de Eurasia para obtener beneficios dudosos en Europa o África. Un nuevo país, la primera pizzería, la inversión dará sus frutos en 1 o 2 años; muchas cosas pueden salir mal.
Muchos componentes, un sistema enorme y muchas conexiones: no hay un sistema de lanzamiento integrado ni expertos. Lanzar un nuevo país, desde el punto de vista de Dodo IS, no es solo copiar y pegar el código o presionar un botón mágico. Este es un proyecto separado con sus propias características locales. El lanzamiento tarda de 3 a 4 meses (a veces más).
Cada país necesita su propia experiencia, por ejemplo, en el sistema de fiscalización de cheques. Para integrarse con sistemas locales, necesita conocer los detalles de los sistemas de direcciones. Por ejemplo, en Eslovenia, el apellido del cliente es parte de la dirección que debe tenerse en cuenta en los servicios al cliente.
Hay muchas características similares, y nuestro equipo ciertamente no tiene todo el conocimiento sobre ellas. Esto significa que distraeremos a las personas del otro equipo que tienen experiencia, adicciones, durante mucho tiempo.
Dificultades técnicas
Dodo Pizza se lanzó en abril de 2011. En junio de 2011, comenzó el desarrollo de Dodo IS. En ese momento, nadie pensó siquiera que pronto lanzaríamos pizzerías en otros países, porque era necesario apoyar rápidamente (muy, muy rápidamente) el creciente negocio en Rusia. Por ejemplo, el primer checkout de un restaurante apareció en el sistema en 2 semanas de desarrollo, ya que sin él era imposible abrir un restaurante en la primera pizzería.
No hubo tiempo para pensar en todo y poner escalabilidad y componentes independientes del país en la arquitectura del sistema. Lo último que pensamos fue que el código que estamos escribiendo ahora se usaría en algún lugar de Eslovenia o Estados Unidos. Por lo tanto, a lo largo de los años de rápido crecimiento, se ha acumulado mucha deuda técnica, lo que ahora está frenando el lanzamiento.
Se necesita mucho tiempo para implementar el sitio web y el back office de Dodo IS... No puede simplemente tomar y registrar un dominio para un nuevo país en las configuraciones de Nginx e implementar el sistema haciendo clic en el botón. Es una lástima.
Además, cada país tiene sus propios detalles. Es necesario darle al socio un producto que sea adecuado para un país específico, y no solo un "Dodo IS general". Comenzando por la adaptación de formatos de direcciones, números de teléfono, tipos de calles y asentamientos, organizaciones, y terminando con adaptaciones más globales. Agregue a esto muchas operaciones manuales y copie y pegue por código: enums, configs, scripts.
Traducciones al idioma del país . A todos nos encanta Excel: crea tablas, colorea líneas, escribe fórmulas complejas, consulta datos de otro documento. Para eso fue diseñado.
En Excel, cargamos líneas con términos para el socio, él tradujo (sin contexto ni imágenes), cargamos Excel con traducciones y repetimos el ejercicio. Esto no es para lo que se creó Excel. Sí, y los recursos, desafortunadamente, no contenían todos los proyectos y líneas; el código tuvo que ser editado.
Un ejemplo de archivo con traducciones.
Además, después del lanzamiento del país, aparecen nuevas características en el sistema: los equipos de Eurasia no dejan de escribir características mientras estamos desplegando el país. Para estas características, se necesitan traducciones y nuevamente en Excel. Largo, caro, inconveniente. No puedes hacerlo sin desarrolladores.
Cajas e impuestos... El pago y envío del restaurante y el pago a domicilio son componentes de Dodo IS. Sin ellos, no se puede vender nada ni en un restaurante ni a domicilio. Checkout debe adaptarse para el nuevo país, y el código es un monolito y genera muchas dependencias. Resulta que, además del desarrollo comercial (impuestos, tasas, requisitos para un cheque), es necesario escribir cuidadosamente la lógica para el nuevo país, para que la impresión de cheques en Rusia no se rompa.
Aplicación móvil . No sabíamos cómo lanzarlo inmediatamente con la apertura del país: no había suficiente experiencia, tiempo, todo. El socio a veces tuvo que esperar seis meses (a veces más) para que lanzáramos la aplicación después de la apertura del país . Es desagradable.
Nota... Hay una aplicación para todos los países: la situación es como con las cajas registradoras. Al iniciar una aplicación en Rumania, es importante no "enganchar" a otros países.
El lanzamiento también es compatible . Páginas de destino, sonidos de alerta en la cocina, errores de traducción: todas estas pequeñas molestias suelen aparecer en los primeros meses. Por lo tanto, después del lanzamiento del país, el apoyo también es importante.
Cómo resolvimos los problemas comerciales
Estábamos en tal situación en mayo de 2019. Y 2020 prometía ser un año atractivo: queríamos lanzar 4 países a la vez. Tenía que hacer algo para no estropearlo.
Hemos seleccionado un nuevo producto independiente - "lanzar nuevos países" - y hemos establecido un objetivo ambicioso: lanzar un país "en el botón". Con un botón, podríamos:
- desplegar el sistema tal como está;
- , : , , ;
- , -, .
Mando. El objetivo no se puede lograr sin un equipo. Por lo tanto, en mayo de 2019, el equipo de MyLittleCoders acordó convertirse en el equipo de descubrimiento de países el 100% del tiempo. Hemos destacado la apertura a un nuevo producto: hay una métrica de “velocidad de lanzamiento”, hay un equipo, la acumulación de aceleración está llena de tareas. Todo se juntó, es hora de actuar.
Logotipo del equipo de
Story Map de MyLittleCoders (MLC) . La estrategia a largo plazo es clara: acelerar, buscar personas, adoptar competencias. Era necesario aprender a "lanzar el país llave en mano" de forma independiente, sin distraer a otros equipos.
Comenzamos con el lanzamiento de Nigeria, 3 meses antes de la apertura. Nigeria se convirtió en un país de prueba desde el que comenzaron a construir sistemáticamente un proceso de lanzamiento claro. Y así lo hicimos.
Aparte de nuestro objetivo principal de lanzar una pizzería en octubre, registramos las cosas que consumieron más tiempo para volver después del lanzamiento. Después del lanzamiento, creamos un story map y, según las observaciones, anotamos las cosas que llevan más tiempo.
Fragmento del story map del lanzamiento de un nuevo país.
Cómo resolvimos los problemas técnicos
Asistente de configuración inicial del país. El análisis del story map mostró que algunas de las etapas se pueden automatizar, lo que acelerará significativamente el lanzamiento. Por tanto, la primera mejora significativa fue el Country Wizard.
Después de comprar un nuevo iPhone, la configuración del teléfono anterior se transfiere en un par de clics: 3 pantallas y el nuevo teléfono está listo para funcionar. Queríamos hacer algo similar para Dodo IS.
- Ejecute el asistente de inicialización de países.
- : « ».
- , , , .
- ( ).
- Next, next, next — - .
En el transcurso del trabajo, el concepto cambió. Inicialmente, queríamos agregar todas las configuraciones del sistema al asistente de país (el producto que RO quería y soñaba, el equipo era sobrio y optimista). Pero ya teníamos un panel de administración interno, que no tenía sentido duplicar en el asistente de configuración. Luego dejamos en él solo ese mínimo de configuraciones, sin las cuales el sistema simplemente no podría iniciarse. Los productos, menús, precios de proveedores y envases se pueden ajustar más tarde.
¿Por qué no puede arrancar el sistema sin tantos parámetros? Históricamente, estos parámetros fueron necesarios para el desarrollo del Dodo IS. Es una tarea separada para el equipo desacoplar dichas dependencias y hacerlas opcionales para su lanzamiento.
Al final, todo salió genial. En lugar de muchos lugares donde necesita editar algo, nosotros:
- pasar por 1 asistente de configuración inicial;
- obtenemos un volcado nuevo del sistema;
- se lo damos a los chicos de la infraestructura para que rueden.
Dos días (y no un mes como antes), y el sistema está listo para funcionar.
Un ejemplo de configuración de parámetros de entrega mediante el Asistente de configuración inicial.
Lanzar listas de verificación. No siempre es posible lograr la aceleración solo a través del desarrollo y la automatización. Las listas de verificación de inicio son un ejemplo de esto. A veces es suficiente describir en orden qué y para qué se debe hacer, dónde presionar, a quién patear, qué guión rodar.
Por lo tanto, el equipo de analistas-desarrolladores describió meticulosamente todo el proceso. Como resultado, tenemos un documento grande con números y puntos: qué hacer antes del lanzamiento, qué durante y qué después.
Fragmento de la lista de verificación del lanzamiento.
Reciclar listas de verificación antiguas es un proceso divertido. Los desarrolladores se turnaron para recorrer las listas de verificación con las manos, abrir y configurar países de prueba, recopilar dolores y mejorar las listas de verificación. Y así varias veces. La ventaja de este enfoque es la profunda inmersión de los chicos en el sistema en sí.
Configuración de país desde un punto . No basta con recopilar todos los ajustes del asistente de países. Es importante que el sistema y sus componentes también lean estas configuraciones desde el mismo repositorio. De lo contrario, resultan situaciones divertidas. Por ejemplo, cuando el gerente de la oficina muestra la moneda correcta (para Nigeria, naira) y la vitrina de las piezas muestra traicioneramente rublos. Cada servicio consideró su deber crear sus propios escenarios. Tuve que pasar por 7-8 lugares en el sistema para que todos finalmente mostraran la moneda correcta.
Quería editar la configuración en un solo lugar y luego aplicarla en todo el sistema. En realidad, nos enfrentamos a la necesidad de realizar cambios en casi todos los componentes del sistema. Los cambios son pequeños, pero hay muchos componentes.
Gracias a los esfuerzos titánicos del equipo, 100.500 líneas de copiar y pegar a distancia y una pizca de magia de programación, el sistema ahora toma la configuración de un único repositorio. Aún quedan "colas", pero la mayoría de las configuraciones se han centralizado. Ahora puede configurar la máscara del teléfono o el formato de la dirección u otras configuraciones para todo el país en un solo lugar.
Nota . La historia de cómo cortamos copiar y pegar durante mucho tiempo y cómo traducimos el sistema para usar el servicio de directorio merece un artículo técnico aparte. Si está interesado, escriba en los comentarios.
Traducciones. En lugar de Excel, quería un sistema de localización simple y comprensible, de modo que:
- no hubo necesidad de cargar nada en archivos de terceros;
- recibir notificaciones de que se ha agregado una nueva línea de traducción;
- estaba claro qué líneas y en qué idioma aún no se han traducido.
Buscamos servicios de localización, hablamos con soporte y nos decidimos por el servicio Crowdin . Simple, con una diferenciación de roles, surgió como un guante. Me gustó especialmente la función en contexto: cuando abrimos un sitio web o back office en un entorno especial y editamos las líneas directamente en la interfaz. Para que pueda ver de inmediato dónde y qué estamos corrigiendo exactamente: conveniente.
Edición en contexto de Crowdin.
Crowdin se conectó primero a la oficina administrativa, conectando gradualmente el monolito, luego los servicios recortados y luego el sitio web. No todo funcionó de inmediato, pero ahora es suficiente agregar nuevas líneas para la traducción para que los socios puedan ver y traducir ellos mismos.
No más Excel.
Toda la localización se ha simplificado: el socio ahora puede realizar traducciones por adelantado y sin la ayuda de los desarrolladores. Entonces, cuando estemos listos para implementar Dodo IS y el sitio, las traducciones suelen estar listas.
Anteriormente, las traducciones estaban en código: el proceso comercial de traducción tenía que estar vinculado al desarrollo y las versiones. Gracias al servicio Crowdin, resultó que estos 2 procesos eran independientes. Ahora estamos probando todos los servicios nuevos, páginas de destino y, siempre que haya algo para traducir, conéctese directamente a Crowdin. Esto simplifica enormemente la vida y le brinda al socio la oportunidad de realizar traducciones a nuestro propio ritmo, y nosotros implementamos el sistema a nuestro propio ritmo.
Como beneficio adicional, configure el idioma del sistema en inglés de forma predeterminada... Anteriormente, el sistema usaba ruso de forma predeterminada, lo que no es adecuado para socios internacionales y sus empleados. Ahora, si faltan algunas traducciones en el sistema, el socio verá los textos en inglés. Esto suele ocurrir inmediatamente después de que se implementa el sistema.
Cual es el resultado
Desde julio de 2019, hemos hecho un gran trabajo: hemos creado un sistema de lanzamiento y hemos agregado una estructura a todo el proceso . Configuramos el sistema a través del asistente, el socio traduce las interfaces de forma independiente y no depende de los desarrolladores.
Se describe en detalle todo el camino para implementar un nuevo país . Ahora el viaje dura entre 2 y 3 semanas, en lugar de 3 meses antes. Una semana después del inicio, el sitio web y el back office están abiertos. Aún no están llenos de datos, pero ya pueden recibir pedidos.
Planes
Agregue aproximadamente la misma cantidad : todo lo que está arriba no es ni la mitad del trabajo. Ahora nos espera un nuevo desafío: gradualmente, paso a paso, país por país, para mejorar este sistema. Por ejemplo:
- expandir gradualmente el "paquete de lanzamiento", agregando nuevas funciones allí, por ejemplo, "Sitio para trabajar en Dodo" o "Sitio para compradores misteriosos";
- agregue soporte multilingüe en el sitio web y en la aplicación;
- Simplifique aún más el asistente de configuración inicial del país;
- agregar un sistema de complementos para cajas registradoras con el fin de atraer a subcontratistas locales para desarrollar un módulo para la impresión de cheques para un país específico.
Aplicación . Desde enero de 2020, se nos ha unido el equipo móvil de Legionarios (3 personas). Planeamos "distribuir deudas": lanzar la aplicación en todos los países y aprender cómo lanzar nuevos países inmediatamente con la aplicación.
Integración de pago . Ahora bien, esta es la etapa más larga del lanzamiento del país; planeamos acelerarla. Planeamos cortar las cajas registradoras (la lógica para imprimir recibos) del monolito, moverlo a un servicio separado y hacer una arquitectura de complemento allí. De esta manera, podemos involucrar a equipos de terceros para desarrollar un complemento para un país específico. Por ejemplo, una empresa de subcontratación en Polonia hará una integración de cajero para Polonia escribiendo un complemento apropiado. Esto te permitirá acelerar aún más.
Finalmente
Lanzar el país es la mitad de la batalla; ahora también necesita apoyar a los socios existentes (que se han convertido en uno más):
- UK;
- ;
- «» «» ;
- .
Además, hay muchas hipótesis, solicitudes de desarrollo de socios internacionales existentes. Estas solicitudes pueden no ser interesantes para Eurasia, donde el mercado ya se ha formado, pero relevantes para Europa, donde recién estamos comenzando a crecer.
Es por eso que estamos armando un nuevo equipo para la región EMEA. Este equipo adaptará el sistema a los mercados locales, creando la singularidad que distingue a los negocios en el Reino Unido de los negocios en Nigeria. Buscamos desarrolladores experimentados para unirse al equipo. Si está interesado en descubrir el mundo, lanzar nuevas pizzerías en el mapa y resolver tareas no rutinarias, estamos esperando que se una al equipo. Escríbeme a d.pavlov@dodopizza.com - Estaré encantado de hablar :)
Nota . En la publicación, Katya Landyreva describió con más detalle lo que te espera un poco y por qué es genial trabajar en nuestro producto.