Comment reprendre un nouveau pays en 3 semaines

Imaginez une chaîne de pizza sphérique dans le vide qui veut conquérir le monde (cela n'est jamais arrivé, et le revoilà). Elle a déjà ouvert des pizzerias dans 13 pays et prévoit d'augmenter ce chiffre. Il y a à peine un an, le lancement (d'un site web, d'une application et d'un système d'information) était rare - 1 pays par an, et maintenant le délai est réduit à 3 semaines. Ce qui nous a empêché de le faire avant que l'équipe informatique ne nous aide, comment nous nous sommes débarrassés d'Excel et comment il s'est avéré accélérer, nous le dirons dans l'article.







Dodo Pizza est une entreprise internationale - nous opérons dans 13 pays et nous ne prévoyons pas de nous arrêter. La plupart des pizzerias sont situées dans la région Eurasie: Russie, Kazakhstan, Biélorussie, Kirghizistan, Ouzbékistan. C'est déjà une grande entreprise d'exploitation, nous sommes leaders dans le nombre de pizzerias. Cette activité n'a besoin que d'être soutenue et développée en profondeur, car ici, l'entreprise et l'informatique travaillent ensemble sur des fonctionnalités compréhensibles.



  • .

  • .

  • .

  • .

  • : , LTV .



Et puis (tout d'un coup) une entreprise arrive et dit: «Nous voulons démarrer au Nigeria», dans le même 13ème pays, dans lequel 2 pizzerias opèrent déjà. Jusqu'en 2019, le lancement était rare - 1 pays par an. L'équipe de développement qui accompagnait le lancement était en constante évolution. Il n'y avait aucun accent sur l'accélération avec cette approche.



On ne sait pas si le nouveau pays «tirera» ou non. Qui lancera le pays? De quel produit devrez-vous prendre une équipe? L'équipe «chanceuse» devra se distraire de sa fonction qui tue, se rappeler comment déployer le système et faire face à certaines difficultés. Voyons lesquels.



Difficultés de démarrage pour une entreprise



La découverte d'un nouveau pays est une surprise (peut-être). Parfois, il y a des opportunités dans l'entrepreneuriat qui ne peuvent tout simplement pas être manquées, même si vous n'êtes pas prêt. Par exemple:



  • un partenaire fort est apparu, prêt à prendre des risques;

  • un acteur local fort quitte la région;

  • le partenaire cherchait, cherchait, cherchait et a soudainement trouvé un lieu de rêve;

  • après un voyage d'affaires international, nous nous sommes rendu compte que nous ne pouvions plus reporter et qu'il fallait de toute urgence lancer le pays.



Nous essayons de planifier les ouvertures à l'avance, mais parfois la vie fait ses propres ajustements.



Lancements uniques. Lors du lancement d'un pays par an, cela n'a aucun sens de garder une équipe dédiée. L'équipe de développement qui a lancé le dernier pays est parti pour couper une autre fonctionnalité meurtrière.



Quand vient le tour d'ouvrir un nouveau pays, toutes les listes de contrôle sont obsolètes et l'équipe qui a lancé le dernier pays ne peut aider que par à-coups. Il n'y avait pas l'accent sur l'accélération du démarrage du système avec cette approche. Nous avons commencé et d'accord - nous reviendrons dans un an :) 



Razfokus.En raison de lancements uniques, l'équipe de développement qui s'occupera du nouveau pays devra rompre avec les fonctionnalités tueuses pour l'Eurasie pour des avantages douteux en Europe ou en Afrique. Un nouveau pays, la première pizzeria, l'investissement sera rentable dans un à deux ans - beaucoup de choses peuvent mal tourner.



De nombreux composants, un système énorme et de nombreuses connexions - il n'y a pas de système de lancement intégré ni d'experts. Lancer un nouveau pays, du point de vue de Dodo IS, n'est pas simplement un copier-coller du code ou appuyer sur un bouton magique. Il s'agit d'un projet distinct avec ses propres caractéristiques locales. Le lancement prend 3-4 mois (parfois plus).



Chaque pays a besoin de sa propre expertise, par exemple sur le système de fiscalisation des chèques. Pour s'intégrer aux systèmes locaux, vous devez connaître les spécificités des systèmes d'adresses. Par exemple, en Slovénie, le nom de famille du client fait partie de l'adresse qui doit être prise en compte dans les services clients.



Il existe de nombreuses fonctionnalités similaires et notre équipe n'a certainement pas toutes les connaissances à leur sujet. Cela signifie que nous détournerons les gens de l'autre équipe qui ont une expertise - les dépendances, pendant longtemps.



Difficultés techniques



Dodo Pizza a été lancé en avril 2011. En juin 2011, le développement du Dodo IS a commencé. À cette époque, personne ne pensait même que nous lancerions bientôt des pizzerias dans d'autres pays, car il était nécessaire de soutenir rapidement (très, très rapidement) l'activité croissante en Russie. Par exemple, la première caisse d'un restaurant est apparue dans le système en 2 semaines de développement, car sans elle, il était impossible d'ouvrir un restaurant dans la première pizzeria.



Il n'y avait pas le temps de réfléchir à tout et d'intégrer l'évolutivité et les composants indépendants du pays dans l'architecture du système. La dernière chose que nous pensions, c'est que le code que nous écrivons actuellement serait utilisé quelque part en Slovénie ou aux États-Unis. Par conséquent, au fil des années de croissance rapide, beaucoup de dette technique s'est accumulée, ce qui ralentit maintenant le lancement.



Il faut beaucoup de temps pour développer le site Web et le back-office de Dodo IS... Vous ne pouvez pas simplement prendre et enregistrer un domaine pour un nouveau pays dans les configurations Nginx et déployer le système à l'aide du bouton. C'est dommage.



En outre, chaque pays a ses propres spécificités. Il est nécessaire de donner au partenaire un produit qui conviendra à un pays spécifique, et pas seulement un "Dodo IS général". En commençant par l'adaptation des formats d'adresses, des numéros de téléphone, des types de rues et de localités, des organisations, et en terminant par des adaptations plus globales. Ajoutons à cela un grand nombre d'opérations manuelles et de copier-coller par code: énumérations, configs, scripts.



Traductions dans la langue du pays . Nous aimons tous Excel: construire des tableaux, peindre des lignes, écrire des formules complexes, se référer aux données d'un autre document. C'est pour cela qu'il a été conçu.



Dans Excel, nous avons téléchargé des lignes avec des termes au partenaire, il a traduit (sans contexte ni images), nous avons chargé Excel avec des traductions et répété l'exercice. Ce n'est pas pour cela qu'Excel a été créé. Oui, et les ressources, malheureusement, ne contenaient pas tous les projets et toutes les lignes - le code a dû être édité.





Un exemple de fichier avec des traductions.



De plus, après le lancement du pays, de nouvelles fonctionnalités apparaissent dans le système - les équipes d'Eurasie n'arrêtent pas d'écrire des fonctionnalités pendant que nous déployons le pays. Pour ces fonctionnalités, des traductions sont nécessaires et encore une fois dans Excel. Long, cher, peu pratique. Vous ne pouvez pas le faire sans les développeurs.



Guichets et taxes... La caisse du restaurant et la caisse de livraison sont des composants de Dodo IS. Sans eux, rien ne peut être vendu ni au restaurant ni à la livraison. Le paiement doit être adapté pour le nouveau pays, et le code est dans un monolithe et il tire beaucoup de dépendances. Il s'avère qu'en plus du développement commercial (taxes, taux, exigences pour un chèque), il est nécessaire d'écrire soigneusement la logique du nouveau pays, afin que l'impression des chèques en Russie ne se casse pas. 



Application mobile . Nous ne savions pas comment le lancer immédiatement avec l'ouverture du pays: il n'y avait pas assez d'expertise, de temps, de tout. Le partenaire a parfois dû attendre six mois (parfois plus) pour que nous puissions lancer l'application après l'ouverture du pays . C'est désagréable. 



Remarque... Il y a une application pour tous les pays - la situation est comme avec les caisses enregistreuses. Lors du lancement d'une application en Roumanie, il est important de ne pas «accrocher» d'autres pays.



Le lancement est également un support . Pages de destination, sons d'alerte de cuisine, erreurs de traduction - tous ces petits désagréments apparaissent généralement au cours des deux premiers mois. Par conséquent, après le lancement du pays, le soutien est également important.



Comment nous avons résolu les problèmes commerciaux



Nous étions dans une telle situation en mai 2019. Et 2020 promettait d'être chaud - nous voulions lancer 4 pays à la fois. J'ai dû faire quelque chose pour ne pas tout gâcher.



Nous avons choisi un nouveau produit indépendant - «lancer de nouveaux pays» - et nous nous sommes fixé un objectif ambitieux - lancer un pays «sur le bouton». Avec un bouton, nous pourrions:



  • déployer le système tel quel;

  • , : , , ;

  • , -, . 



Commander. L'objectif ne peut être atteint sans une équipe. Par conséquent, en mai 2019, l'équipe MyLittleCoders a accepté de devenir l'équipe de découverte du pays 100% du temps. Nous avons souligné l'ouverture sur un nouveau produit: il y a une métrique «vitesse de lancement», il y a une équipe, le backlog d'accélération est plein de tâches. Tout s'est réuni - il est temps d'agir.





Logo de l'équipe



Story Map MyLittleCoders (MLC) . La stratégie à long terme est claire: accélérer, chercher des personnes, adopter des compétences. Il a fallu apprendre à «lancer le pays clé en main» de manière autonome, sans distraire les autres équipes.



Nous avons commencé avec le lancement du Nigeria, 3 mois avant l'ouverture. Le Nigéria est devenu un pays test à partir duquel ils ont commencé à construire systématiquement un processus de lancement clair. Et c'est ainsi que nous l'avons fait. 



En plus de notre objectif principal de lancer une pizzeria en octobre, nous avons enregistré les choses les plus chronophages à revenir après le lancement. Après le lancement, nous avons construit une Story Map et, selon les observations, noté les choses qui prennent le plus de temps.





Fragment de la Story Map du lancement d'un nouveau pays.



Comment nous avons résolu les problèmes techniques



Assistant de configuration initiale du pays. L'analyse de la Story Map a montré que certaines des étapes peuvent être automatisées, ce qui accélérera considérablement le lancement. Par conséquent, la première amélioration significative a été le Country Wizard.



Après l'achat d'un nouvel iPhone, les paramètres de l'ancien téléphone sont transférés en quelques clics - 3 écrans et le nouveau téléphone est prêt à fonctionner. Nous voulions faire quelque chose de similaire pour Dodo IS.



  • Exécutez l'assistant d'initialisation du pays.

  • : « ».

  • , , , .

  • ( ).

  • Next, next, next — - .


Au cours des travaux, le concept a changé. Au départ, nous voulions ajouter tous les paramètres système à l'assistant Pays (le produit RO voulait et rêvait, l'équipe était sobre et optimiste). Mais nous avions déjà un panneau d'administration interne, qu'il était inutile de dupliquer dans l'assistant de configuration. Ensuite, nous n'y avons laissé que ce minimum de paramètres, sans lesquels le système ne pourrait tout simplement pas démarrer. Les produits, les menus, les prix des fournisseurs et les emballages peuvent être modifiés ultérieurement.



Pourquoi le système ne peut-il pas démarrer sans autant de paramètres? Historiquement, de tels paramètres étaient nécessaires au développement du Dodo IS. C'est une tâche distincte pour l'équipe de découpler ces dépendances et de les rendre facultatives pour le lancement.



En fin de compte, tout s'est bien passé. Au lieu de nombreux endroits où vous devez modifier quelque chose, nous:



  • passez par 1 assistant de configuration initiale;

  • nous obtenons une nouvelle décharge du système;

  • nous le donnons aux gars de l'infrastructure pour qu'ils roulent.



Deux jours (et non un mois comme auparavant) - et le système est prêt à fonctionner.





Un exemple de configuration des paramètres de livraison à l'aide de l'assistant de configuration initiale.



Lancez des listes de contrôle. Il n'est pas toujours possible de parvenir à une accélération uniquement grâce au développement et à l'automatisation. Les listes de contrôle de démarrage en sont un exemple. Parfois, il suffit de décrire dans l'ordre quoi et pour ce qui doit être fait, où appuyer, qui botter, quel script lancer. 



Par conséquent, l'équipe d'analystes-développeurs a méticuleusement décrit l'ensemble du processus. En conséquence, nous avons un grand document avec des chiffres et des points: que faire avant le lancement, quoi pendant et après.





Fragment de la liste de contrôle de lancement.



Le recyclage des anciennes listes de contrôle est un processus amusant. Les développeurs se sont relayés pour parcourir les listes de contrôle avec leurs mains, ouvrir et mettre en place des pays de test, collecter les douleurs et améliorer les listes de contrôle. Et ainsi plusieurs fois. Le bonus de cette approche est l'immersion profonde des gars dans le système lui-même.



Paramètres de pays à partir d'un point . La collecte de tous les paramètres de l'assistant Pays ne suffit pas. Il est important que le système et ses composants lisent également ces paramètres à partir du même référentiel. Sinon, des situations amusantes se produisent. Par exemple, lorsque le responsable du bureau montre la bonne devise (pour le Nigeria, le naira) et que la vitrine des pièces montre traîtreusement des roubles. Chaque service considérait qu'il était de son devoir de créer ses propres paramètres. Nous avons dû parcourir 7 à 8 places dans le système pour que tout le monde montre enfin la bonne devise. 



Je voulais modifier les paramètres en un seul endroit, puis les appliquer dans tout le système. En réalité, nous sommes confrontés à la nécessité d'apporter des modifications à presque tous les composants du système. Les changements sont minimes, mais il y a beaucoup de composants. 



Grâce aux efforts titanesques de l'équipe, 100 500 lignes de copier-coller à distance et une pincée de magie de programmation, le système prend désormais les paramètres d'un référentiel unique. Les "queues" sont toujours présentes, mais la plupart des paramètres ont été centralisés. Vous pouvez désormais définir un masque de téléphone ou un format d'adresse ou d'autres paramètres pour tout un pays en un seul endroit.



Remarque . L'histoire de la façon dont nous avons coupé le copier-coller pendant une longue période et traduit le système pour utiliser le service d'annuaire mérite un article technique distinct. Si vous êtes intéressé, écrivez dans les commentaires.



Traductions. Au lieu d'Excel, je voulais un système de localisation simple et compréhensible, de sorte que:



  • il n'était pas nécessaire de télécharger quoi que ce soit vers des fichiers tiers;

  • recevoir des notifications qu'une nouvelle ligne de traduction a été ajoutée;

  • il était clair quelles lignes et dans quelle langue n'avaient pas encore été traduites.



Nous avons cherché des services de localisation, parlé au support et choisi le service Crowdin . Simple, avec une différenciation des rôles - est venu comme un gant. J'ai particulièrement aimé la fonctionnalité en contexte: lorsque nous ouvrons un site Web ou un back-office dans un environnement spécial et que nous éditons les lignes directement dans l'interface. Ainsi, vous pouvez immédiatement voir où et ce que nous corrigeons exactement - pratique.





Édition en contexte de Crowdin.



Crowdin a d'abord été connecté au back-office, reliant progressivement le monolithe, puis les services sciés, puis le site Web. Tout n'a pas fonctionné tout de suite, mais il suffit maintenant d'ajouter de nouvelles lignes de traduction pour que les partenaires puissent les voir et les traduire eux-mêmes.



Plus d'Excel. 


Toutes les localisations ont été simplifiées: le partenaire peut désormais faire des traductions à l'avance et sans l'aide des développeurs. Ainsi, lorsque nous sommes prêts à déployer Dodo IS et le site, les traductions sont généralement prêtes.



Auparavant, les traductions étaient dans le code - le processus métier de traduction devait être lié au développement et aux versions. Grâce au service Crowdin, il s'est avéré que ces 2 processus étaient indépendants. Maintenant, nous essayons tous les nouveaux services, les pages de destination et partout où il y a quelque chose à traduire, connectez-vous directement à Crowdin. Cela simplifie grandement la vie et donne au partenaire la possibilité de faire des traductions à notre rythme, et nous déployons le système à notre propre rythme.



En prime, définissez la langue du système sur l'anglais par défaut... Auparavant, le système utilisait le russe par défaut, ce qui ne convient pas aux partenaires internationaux et à leurs employés. Désormais, si certaines traductions manquent dans le système, le partenaire verra les textes anglais. Cela se produit généralement immédiatement après le déploiement du système.



Quel est le résultat



Depuis juillet 2019, nous avons fait un excellent travail - nous avons construit un système de lancement et ajouté une structure à l'ensemble du processus . Nous mettons en place le système via l'assistant, le partenaire traduit les interfaces indépendamment et ne dépend pas des développeurs.



Tout le chemin du déploiement d'un nouveau pays est décrit en détail . Maintenant, le voyage prend 2-3 semaines, au lieu de 3 mois plus tôt. Une semaine après le début, le site et le back-office sont ouverts. Ils ne sont pas encore remplis de données, mais ils peuvent déjà prendre des commandes.



Des plans



Ajoutez à peu près la même quantité - tout ce qui est ci-dessus ne représente même pas la moitié du travail. Aujourd'hui, un nouveau défi nous attend - progressivement, étape par étape, pays par pays, pour améliorer ce système. Par exemple:



  • étendre progressivement le "package de lancement", en y ajoutant de nouvelles fonctionnalités, par exemple, "Site de travail dans Dodo" ou "Site pour les acheteurs mystères";

  • ajouter un support multilingue sur le site Web et dans l'application;

  • Simplifiez encore plus l'assistant de configuration initiale du pays;

  • ajouter un système de plug-ins pour les caisses enregistreuses afin d'attirer les sous-traitants locaux pour développer un module d'impression de chèques pour un pays spécifique.


Application . Depuis janvier 2020, l'équipe mobile des Légionnaires (3 personnes) nous a rejoint. Nous prévoyons de "répartir les dettes" - de lancer l'application dans tous les pays, et d'apprendre à lancer immédiatement de nouveaux pays avec l'application.



Intégration de la caisse . C'est maintenant la plus longue étape du lancement du pays - nous prévoyons de l'accélérer. Nous prévoyons de couper les caisses enregistreuses (la logique d'impression des reçus) du monolithe, de le déplacer vers un service séparé et d'y créer une architecture plug-in. De cette façon, nous pouvons impliquer des équipes tierces pour développer un plugin pour un pays spécifique. Par exemple, une société d'externalisation en Pologne effectuera une intégration de caissier pour la Pologne en écrivant un plugin approprié. Cela vous permettra d'accélérer encore plus.



finalement



Lancer le pays est la moitié de la bataille - maintenant vous devez également soutenir les partenaires existants (qui viennent de devenir un de plus):



  • UK;

  • ;

  • «» «» ;

  • .



De plus, il existe de nombreuses hypothèses, demandes de développement de partenaires internationaux existants. Ces demandes peuvent ne pas être intéressantes pour l'Eurasie, où le marché est déjà formé, mais pertinentes pour l'Europe, où nous commençons à peine à croître.



C'est pourquoi nous constituons une nouvelle équipe pour la région EMEA. Cette équipe adaptera le système aux marchés locaux, créant ainsi le caractère unique qui distingue les entreprises au Royaume-Uni des entreprises au Nigéria. Nous recherchons des développeurs expérimentés pour rejoindre l'équipe. Si vous souhaitez découvrir le monde, lancer de nouvelles pizzerias sur la carte et résoudre des tâches non routinières, nous vous attendons pour rejoindre l'équipe. Écrivez-moi à d.pavlov@dodopizza.com - je serai heureux de parler :)



Remarque . Dans le post, Katya Landyreva a décrit plus en détail ce qui vous attend un peu et pourquoi c'est cool de travailler dans notre produit.



All Articles