Les nouvelles fonctionnalités ont été déployées, profit ! Mais attendez, elles ne sont pas encore disponibles pour tous les clients, car elles sont en attente de traduction. Ce n'est pas idéal. Qu'est-ce qu'on fait ? Depuis que nous avons atteint le single item flow pour notre processus de développement, nous avons travaillé dur pour atteindre le même résultat pour notre processus de traduction, avec notre équipe de traducteurs indépendants. Une tâche qui, au départ, semblait impossible. Défi relevé !
Le défi
Nous pratiquons le Kata de l'amélioration, qui est un excellent moyen d'atteindre de grands objectifs (apparemment impossibles) de manière progressive et expérimentale, afin que la tâche devienne moins herculéenne.
Voici comment nous avons défini notre défi concernant les traductions pour les nouvelles fonctionnalités :
Parvenir à un flux d'articles uniques.
Traduit en un jour.
Pas de temps passé à répondre aux questions de l'équipe de traduction.*
Pas plus de cinq minutes consacrées à la préparation du paquet d'articles uniques.
Nous en voulions beaucoup ! Par où commencer ? Nous avons décomposé les choses et commencé par établir deux conditions cibles, la première étape de notre marathon en quelque sorte :
Définir et mesurer le temps nécessaire pour traduire un seul élément dans toutes les langues.
Faire traduire toutes les étiquettes des nouvelles fonctionnalités dans un délai de trois jours (à la demande).
Voilà quelque chose de réalisable...
Définition d'un seul élément
En ce qui concerne le développement
Un élément unique est une fonctionnalité qui est développée et déployée. Nous voulions livrer les traductions de chaque fonctionnalité à l'équipe de traduction au fur et à mesure qu'elles étaient disponibles. Nous avions besoin d'un moyen de regrouper ces informations pour les livrer.
Nous voulions fournir des traductions pour chaque fonctionnalité à l'équipe de traduction au fur et à mesure qu'elles étaient disponibles
Nous utilisons Jira pour gérer notre flux de développement, et les exigences de chaque fonctionnalité sont écrites dans ce que nous appelons une histoire dans Jira. Nous avons commencé par ajouter un nouveau champ à chaque histoire, où les développeurs pouvaient ajouter des détails sur les nouvelles étiquettes ou pages qu'ils avaient créées pour la nouvelle fonctionnalité. Nous avons également lié les nouvelles étiquettes à leur histoire dans notre base de données, afin de pouvoir facilement vérifier quelles étiquettes appartiennent à quelle histoire.
Un nouveau statut a ensuite été ajouté au flux de développement une fois qu'une histoire était en ligne : le traitement des traductions. Le passage d'une histoire à ce statut déclencherait un message contenant le contenu du champ à envoyer à l'équipe de traduction. Pour ce faire, nous avons utilisé un webhook. Les webhooks sont un moyen pour les applications de communiquer entre elles lorsqu'un événement spécifique se produit. Il s'agissait de notre première itération.
Nous avons rapidement remarqué que le nouveau champ et le nouveau statut étaient facilement oubliés ou ignorés, c'est pourquoi nous en avons fait une fenêtre contextuelle incontournable, qui apparaissait plus tôt dans le processus lorsqu'une histoire passait du test au déploiement.
Des discussions (saines ?) ont suivi sur les informations suffisantes à fournir aux traducteurs. Ils avaient besoin de connaître le contexte de ce qu'ils traduisaient et de comprendre le comportement d'une nouvelle fonctionnalité. Nous avons conclu que des captures d'écran annotées, accompagnées d'une brève description, étaient idéales. L'envoi d'un grand nombre de mots avec du jargon technique l'est moins.
Nous nous sommes rendu compte que nous écrivions déjà une courte description de chaque histoire pour les notes de publication internes, et le fait de l'intégrer automatiquement à la notification a permis aux développeurs d'économiser une étape. Les images n'étaient pas incluses dans le webhook au départ, nous devions les ajouter manuellement, et c'était un problème. Nous avons donc passé un peu de temps à faire en sorte que cela fonctionne également.
Tous ces petits pas commençaient à se transformer en quelque chose de vraiment utile !
Du côté de la traduction
Une fois que nous avions préparé un paquet d'articles uniques, nous devions décider où l'envoyer. Upwork était notre principal moyen de communication avec les traducteurs, au niveau individuel. Nous prenons en charge 24 langues, il était donc important de rendre la configuration gérable. Comme nous utilisons Slack en interne, nous avons invité toute l'équipe de freelances à rejoindre un espace Slack dédié à la traduction. Chacun d'entre eux a accepté. Cela a changé la donne !
Il était important de rendre l'installation gérable
Le fait que les 24 membres de l'équipe soient réunis dans un même espace, au sein d'une communauté, était tellement plus facile à gérer. Nous avons créé un canal de groupe dédié dans Slack pour envoyer les webhooks avec les nouvelles traductions, et des canaux linguistiques pour les contacts individuels.

Un exemple de l'un de nos messages automatisés sur Slack
La tâche suivante consistait à communiquer notre défi et nos attentes aux traducteurs : réagir aux webhooks dès leur arrivée, idéalement dans les 24 heures. Nous étions curieux de savoir comment cela serait accueilli, mais l'équipe s'est rapidement adaptée. Slack est idéal pour les messages instantanés, un pouce rapide ou une coche. Nous avons ensuite rédigé un petit manuel de traduction pour expliquer comment nous voulions que les choses fonctionnent et pourquoi, et nous avons répondu à certaines questions courantes. Nous l'avons épinglé dans l'espace Slack pour que l'équipe puisse s'y référer en cas de besoin.
Étant donné que nous avons créé et gérons notre propre outil de traduction, nous avons également ajouté un nouveau filtre pour les traducteurs, afin qu'ils puissent facilement trouver des étiquettes pour chaque histoire. Nous sommes ensuite allés plus loin en ajoutant un lien à leur webhook qui les amènerait directement à cette sélection filtrée.
Mesurer les temps
Une fois le système mis en place, nous devions être en mesure de mesurer les progrès accomplis. Nous voulions savoir à quelle vitesse les traductions étaient effectuées. Nous ne voulions pas faire cela manuellement pour chaque langue et pour chaque histoire déployée, la vie est trop courte ! Nous avons donc créé un moyen d'obtenir un rapport de la base de données sur les délais de traduction par langue, par histoire. C'est désormais possible en quelques clics... sans avoir besoin d'un développeur ! Cela nous a donné quelques chiffres à calculer et quelques pistes de réflexion.
Réduire les délais d'exécution
D'accord, tout est en place, mais le délai d'exécution n'est pas celui que nous espérions. Nous avons demandé beaucoup en réduisant un délai d'exécution de deux semaines à trois jours (nous nous efforçons d'atteindre un jour). Nous voulions savoir ce qui empêchait l'équipe freelance d'agir sur les webhooks au fur et à mesure qu'ils arrivaient. Il n'y avait qu'un seul moyen de le savoir, c'était de le demander. C'est ce que nous avons fait, et les réponses ont été surprenantes.
Certains traducteurs avaient tendance à regrouper les éléments, plutôt que de les traiter un par un, en raison de problèmes avec le système de suivi du temps d'Upwork et de la crainte de nous surfacturer. La solution consistait à encourager l'enregistrement manuel des heures de travail. Nous faisons confiance à l'équipe et souhaitons la rémunérer équitablement pour le temps qu'elle consacre à notre projet. Certains ont simplement eu besoin de temps pour s'adapter à la nouvelle méthode de travail.
Nous avons reçu des plaintes récurrentes concernant des problèmes liés aux notifications Slack, ou pings. Tous les membres de l'équipe n'utilisent pas Slack régulièrement. Après avoir expérimenté diverses fonctionnalités de Slack telles que les mots-clés, les mentions, les tags et les notifications par courriel, nous avons réussi à résoudre le problème. Nous avons ajouté une mention de canal et des mots-clés à notre webhook, ce qui a déclenché à la fois des pings et des e-mails en fonction des préférences de chaque traducteur. Cela signifie qu'aucun d'entre eux ne manquera les mises à jour à l'avenir !
Nous avons également reçu des demandes de modification de notre outil de traduction pour nous faciliter la vie. Ils ont demandé et nous les avons écoutés ! Nous avons amélioré la façon dont les étiquettes sont sauvegardées, de sorte qu'il est plus rapide de parcourir une liste. Nous avons également amélioré le filtre permettant de rechercher des libellés similaires existants, afin de préserver la cohérence de l'ensemble. Nous avons également ajouté un script de maintien en vie, de sorte que les sessions actives dans l'outil de traduction n'expirent pas au bout de 24 minutes, comme c'était le cas auparavant.
La vie d'un freelance peut être solitaire
La vie d'un freelance peut être solitaire, et nous aimons faire savoir à l'équipe qu'elle est appréciée, car elle est inestimable pour nous et fait partie intégrante de nos projets. Les t-shirts Owlsome Knowly ont peut-être contribué à cela, ainsi qu'un peu d'esprit communautaire sur Slack ?

Succès
Avons-nous relevé le défi ? Pas encore. Mais ce n'est pas grave. Nous avons fait d'énormes progrès dans la bonne direction, que nous n'aurions pas pu imaginer il y a un an. Nous avons également beaucoup appris en cours de route. Nos traducteurs sont une source inestimable d'informations et de commentaires, pour nous et les uns pour les autres. Nous disposons d'un flux d'articles unique et d'un processus en place pour les traductions. L'équipe bénéficie d'un contexte approprié, ce qui se traduit par des traductions plus rapides et de meilleure qualité pour nos clients. C'est ce que nous appelons une victoire !
L'équipe dispose d'un contexte adéquat, ce qui permet d'obtenir des traductions plus rapides et de meilleure qualité pour nos clients.
Le délai d'exécution n'est pas encore aussi rapide que nous l'avions défini dans notre défi, mais nous nous en rapprochons. Pour la majorité de nos langues, les traductions sont prêtes dans les trois jours. Au dernier décompte, nous avions des traductions pour 17 des 24 langues dans les trois jours, quatre suivaient peu après, et seulement trois restaient en suspens pendant plus de 10 jours.
Quelle est la prochaine étape ? Nous vous tiendrons au courant. Le marathon n'est pas terminé. Nous travaillons déjà sur le prochain défi.