Les développeurs compétents semblent être toujours insatisfaits. Du coup, vous pourriez partir du principe qu’ils sont remplaçables mais vous risquez d’avoir quelques déconvenues. D’une part, vous allez rencontrer des difficultés à trouver la bonne personne et d’autre part vous allez certainement finir par prendre une personne moins expérimentée et on ne parle même pas des connaissances de votre produit qui seront perdues…
Si vous appréciez l’équipe expérimentée que vous avez vous devriez envisager de travailler sur ce que l’on appelle l’expérience développeur pour les garder.
L’expérience développeur est une approche de management basée sur la question : “Comment pouvons-nous rendre une journée normale meilleure pour nos développeurs ?“.
Pour vous donner une meilleure idée de ce que c’est, vous pouvez le comparer avec l’expérience utilisateur (UX). Avec la montée d’Internet, les gens ont découvert la liberté de choisir entre de nombreux services. Maintenant, il est impensable pour un produit digital de ne pas avoir une bonne expérience utilisateur.
L’UX s’intéresse aux utilisateurs. Le DX s’intéresse aux développeurs.
Il arrive souvent d’entendre les questions suivantes :
L’argent n’est pas suffisant pour conserver les meilleurs développeurs et les rendre productifs. Il faut retirer les obstacles qu’ils rencontrent.
Que va-t-il se passer si vous décidez de reconstruire de zéro un système d’une dizaine d’années qui n’a subi que peu d’entretien ou dont l’équipe était trop petite pour pouvoir tout gérer ?
Rebâtir des projets avec une logique imprévisible ou non documentée peut être effrayant. Les développeurs, surtout si la lassitude pointe, s’enfuiront à la première occasion. Quant au fait de devoir corriger des bugs dans du code legacy, il est plus facile de dire “au revoir”.
Dans le même registre, les différences de style de code sont inévitables mais cela devient ingérable si chaque développeur doit travailler avec cinq syntaxes ou trois méthodes de nommages différentes.
Les développeurs sont des personnes à l’écoute des tendances. Ils veulent travailler avec des technologies qui vont leur simplifier la vie.
Ils vont revenir d’une conférence, lire un article ou regarder une vidéo. Ils vont être enthousiastes et vont vouloir le partager avec le reste de leur équipe en expliquant que cela leur permettra de résoudre toutes leurs complexités. Malheureusement, le CTO va dire que même si cela a du sens, ce n’est pas la priorité ou bien que le système est trop rigide pour le mettre en œuvre de si tôt.
La plupart de ces refus seront bien acceptés mais créerons un sentiment de stack technique inflexible qui va s’amplifier au fur et à mesure du temps. Au final, cela poussera vos meilleurs développeurs à aller voir ailleurs.
Cela ne viendrait à l’esprit de personne qu’un professionnel de la restauration cuisine avec du matériel grand public. Il en va de même pour vos équipes. Il leur faut du matériel professionnel de qualité.
De votre côté, vous vous y retrouverez rapidement. Prenons l’exemple d’un développeur qui compile son code 10 fois par jour à raison de 120 secondes par construction. Il perd 20 minutes par jour à regarder son code compilé. Si vous lui donnez une machine qui abaisse ce temps à 60 secondes. Vous allez faire gagner plus de 34 heures par an de productivité par développeur. La rentabilité de la machine sera vite amortie…
Il en va de même pour toute la chaîne de production : IDE, CI/CD, infrastructure, services externes, etc. De bons outils sont des crises de nerfs en moins pour vos développeurs et de la productivité en plus pour vous.
Les développeurs recherchent un environnement sain dans lequel évoluer. Ils veulent avoir le droit à l’erreur et être dans une culture d’entraide.
Voici quelques indices que votre environnement de travail présentent une mauvaise expérience développeur :
Gardez toujours en tête que le remplacement d’un développeur est difficile. Même en termes de coût et de temps, il fait bien plus sens de chouchouter les développeurs que vous avez plutôt que d’en trouver d’autres. De plus, les nouveaux auront certainement les mêmes exigences à terme…
Aujourd’hui, il y a un nombre croissant d’API disponible. Même le nombre de produits dans le même secteur ne fait que croître. Par exemple, il existe plus de 25 services rien que dans le secteur des CRMs.
Ce foisonnement de possibilité signifie que les entreprises doivent se battre pour survivre et le produit qui gagne sera celui qui aura la meilleure expérience développeur. Améliorer l’expérience revient à avoir plus d’utilisateurs et donc plus de ventes.
De nos jours, il n’est plus suffisant de faire simplement une documentation d’API. Le marché s’attend à avoir une expérience intuitive et autonome. Voyons quelques moyens d’y parvenir.
Le processus d’onboarding de votre produit doit être intuitif. Il ne doit pas y avoir la nécessité d’une intervention humaine. De l’onboarding à la génération de clé d’API, l’intégration et la maintenance tout doit être compréhensible pour un nouvel utilisateur.
Pour cela, vous devez améliorer la documentation, mettre à disposition un bac à sable automatiquement connecté avec les clés d’API du compte pour pouvoir tester rapidement.
Permettre de s’inscrire sans carte bleue sur un free tier permet d’améliorer considérablement l’onboarding.
Les développeurs intègrent des APIs pour éviter de devoir recréer la roue ou bien de profiter de l’expertise d’une autre société dans un domaine qu’ils ne maitrisent pas correctement.
Par conséquent, les fonctionnalités accessibles via API doivent être stables et prévisibles. L’API doit fonctionner comme elle a été documentée car les incohérences entre la documentation et la production peuvent être très dissuasives.
Les messages d’erreur lisibles par un développeur sont également essentiels pour diagnostiquer rapidement les demandes ayant échoué.
Vos APIs doivent être fournis avec un accord de niveau de service (SLA) et s’efforcer de les respecter.
Pour information, la plupart des fournisseurs d’API proposent des SLA avec au minimum trois neufs (99.9%) voir plus et des temps de réponse moyen entre 200 ms et 500 ms.
Il est également essentiel de surveiller vos services, de donner la possibilité aux développeurs d’en faire de même et d’avoir des rapports d’état transparents. Lorsque des erreurs se produisent, prévenez vos utilisateurs au lieu de les laisser dans le noir.
Personne n’a envi de se retrouver à utiliser une API SOAP servant du XML. Cela semble dépassé. Les développeurs veulent être a minima à l’état de l’art et dans l’idéal être poussés à découvrir de nouvelles technologies.
En ce sens, des technologies d’API comme REST, GraphQL ou gRPC paraissent plus attractives.
Une API seule n’est pas suffisante. Vous devez proposer en plus de la documentation, un portail développeur complet permettant de gérer facilement la création de clé d’API, de suivre la consommation, de gérer la facturation ou de configurer les features.
Un dashboard doit également permettre de suivre les logs d’appels API, d’aider au débuggage et de suivre les modifications apportées par les autres membres de l’équipe.
Vous devez assurer à vos utilisateurs que vous allez protéger leurs données comme si c’étaient les vôtres. Montrez-leur que vous êtes en accord avec des régulations comme la RGPD en Europe.
Lorsqu’il s’agit de créer des communautés de développeurs, AWS est sans égal. D’une part, le programme AWS Heroes mets en avant des ingénieurs AWS spécifiques, transformant des clients en stars dans un format de blog et de podcast. D’autre part, il existe énormément de ressources dans tous les langages, un subreddit dédié, des forums et une formation vidéo en direct.
Square est une solution de paiement très populaire. Il offre une manière innovante d’explorer son API. En plus de la typique documentation trois-colonnes, Square a aussi créé un explorateur d’API réactif. Grâce à des menus déroulants, les développeurs peuvent sélectionner l’API, la méthode et la langue préférée. Les utilisateurs peuvent insérer une clé d’API pour exécuter les requêtes en sandbox ou production.
Bit est une plateforme facilitant l’implémentation du principe de micro-frontend. Dès l’arrivée sur leur site web, ils présentent au survol de la souris les différents composants qui constituent la page. Ces composants sont accessibles à tout le monde et chaque développeur peut ainsi voir comment ils ont été codés. Cela permet aux développeurs de se faire une vraie idée sur un cas réel de se propose le service. La lecture de la documentation et des articles de blogs font plus facilement écho ensuite.
Créer une expérience développeur interne et externe de qualité peut être une tâche difficile dans laquelle vous pouvez facilement vous perdre.
N’hésitez pas à me contacter pour que l’on mette ensemble un plan d’amélioration continue.