Les Patterns des Grands du Web - Les artisans codeurs
Description
Aujourd’hui, les grands du web nous rappellent qu’être un développeur est une carrière aussi prestigieuse que celle de manager ou de consultant. Pourquoi ? Ces entreprises ont dès le début orienté leur métier sur la satisfaction des utilisateurs afin de maintenir un cercle vertueux dans le développement de leurs produits.
Les grands du web mettent tout en œuvre pour garder une forte satisfaction de leurs utilisateurs. Cette situation les conduit généralement à créer un cadre pour que leurs équipes techniques restent focalisées sur les besoins de leurs utilisateurs finaux. On y retrouve généralement des développeurs heureux de leurs travaux, qui voient leur motivation augmenter de paire avec leur efficacité à livrer un produit et leur capacité d’apprendre en continue de nouvelles techniques et compétences. On y voit souvent une culture forte s’installer, permettant à l’équipe de perdurer, et cela même après le départ de personnes clés.
Inutile de préciser que la situation décrite ici est encouragée par le management afin de maintenir la satisfaction des utilisateurs finaux tout en créant un système convivial permettant à leurs développeurs de réaliser des logiciels extraordinaires.
Il est important de signaler aussi que pour les grands du web, la qualité n’est plus négociable et ceci pour une raison simple : le nombre d’utilisateur est tellement énorme que l’on ne peut plus leur livrer des applications buggées sans que cela ne se voit. Il faut aussi délivrer plus rapidement, la vie du logiciel commence dès sa première livraison en production et il faut être en capacité de pouvoir changer rapidement son business. Et tout cela n’est pas possible sans de bons développeurs.
Mise en oeuvre
Alors comment font les grands du web ? Tout d’abord ils savent recruter un développeur, une pratique bien plus complexe qu’elle n’y paraît. Si vous cherchez un développeur, vous pouvez éplucher de nombreux CV, mais vous pouvez aussi les faire coder. C’est ce que fait Facebook par exemple en utilisant par exemple le test du FizzBuzz pour filtrer ces candidatures. Cet exercice de programmation – il consiste à afficher les 100 premiers nombres entiers, sauf que pour les multiples de trois, il faut afficher « Fizz », « Buzz » pour les multiples de 5, et « FizzBuzz » pour les multiples de 3 et 5 – permet de filtrer 99,5 % des personnes qui ne savent pas développer.
Une fois le recrutement effectué, encourager l’autonomie. Le développeur n’est pas un ouvrier du code surveillé par son manager mais bien quelqu’un d’autonome qui s’engage sur de nombreux projets, en particulier sur la contribution à des projets open-source. Netflix cite ses nombreuses contributions au framework Cassandra, et étant un des premiers grands acteurs du web à l’utiliser, l’effet est doublement bénéfique, que ce soit pour y faire reconnaître ses développeurs comme pour y faire avancer son produit.
Enfin, pour garder ses développeurs, quoi de mieux que de leur proposer un cadre de travail convivial ? Un tour sur internet vous donnera un aperçu des locaux qui peuvent changer de certains lieux de travail, mais cela ne suffit pas. Netflix, encore, partage quelques éléments de sa culture qui mise beaucoup sur l’autonomie de ses employés, de même pour Valve, et 37 Signals publie aussi, avec Getting Real, un ensemble de principes, souvent à l’opposés dont fonctionnent certaines organisations.
Enfin, les développeurs Grands Du Web sont des artisans du code, et le récent manifeste du Software Craftmanship a permis d'ancrer une culture très forte de la qualité logicielle. Google et Github n’hésitent par exemple pas à communiquer sur leurs guidelines de programmation (cf. http://code.google.com/p/google-styleguide/ et https://github.com/styleguide.) Pour finir sur ce panorama, on peut noter le Testing Blog de Google, qui n’est certes plus mis à jour, mais qui contient encore de nombreuses ressource pour les amateurs de tests unitaires.
En résumé, comment faire chez moi ?
Le recrutement :
- Faites coder les développeurs que vous souhaitez recruter
- Demander leur de vous fournir du code, en ont-ils mis sur GitHub ?
- Par quoi sont-ils intéressés au delà de la programmation ?
Qualité non-négociable :
- Software Craftmanship
- Tests fonctionnels et unitaires
- Continuous Delivery
- Devops
- Code review
Laisser leur l’occasion de participer à des projets sur 20% de leur temps :
- Des projets de R&D
- De la formation (par exemple sous la forme d’un Dojo de programmation)
- Des projets en Open Source
- Faire confiance
- Créer le cadre pour que les gens se sentent bien
- Ouverture et transparence
- Célébrer les erreurs
- Rythme soutenable
Chez qui ça fonctionne ?
On peut donc citer Facebook et Google qui semblent être the places to be et tant développeurs. Mais aussi Netflix, 37 Signals ou encore Github.
En France, la culture du développeur n’est pas encore aussi ancrée que chez les Grands Du Web, mais on peut noter dans une moindre mesure, quelques changements, des premiers pas qui nous permettent de citer certains acteurs du web comme eTF1.
Autres patterns en relation
Pizza Team, DevOps, Continuous Delivery.
Retrouver toutes les pratiques des Géants du Web sur le site dédié (www.geantsduweb.com) : pdf de l'ouvrage à télécharger, vidéo et compte-rendu de la présentation "Décrypter les secrets des Géants du Web"
Sources
- Culture d’entreprise chez Netflix : http://www.slideshare.net/reed2001/culture-1798664
- Quel doit être l’apprentissage d’un bon développeur : http://www.slideshare.net/petegoodliffe/becoming-a-better-programmer
- La liste de tous les postes de développeurs que recherche actuellement Facebook : http://www.facebook.com/careers/teams/engineering
- Le plus gros salaire chez Facebook ? Senior Software Engineer : http://www.businessinsider.com/the-highest-paying-jobs-at-facebook-ranked-2012-5?op=1
- Les guides de programmation chez Github : https://github.com/styleguide
- Comment Github croît : http://zachholman.com/talk/scaling-github
- En photo, les locaux de Google à Zurich