NON AU « THROW NEW NOTIMPLEMENTEDEXCEPTION() » DANS LES VALEURS D’ENTREPRISE !

Les valeurs d’une entreprise, quand elles existent, constituent un contrat moral auxquels les employés adhèrent (enfin normalement) et sur lesquelles ils s’appuient dans leur travail, permettant ainsi à l’entreprise d’atteindre ses objectifs.


Bon, ça c’est la théorie. En pratique, chez Younited, les valeurs sont restées implicites pendant les premières années. Puis face à l’accroissement des effectifs et l’ouverture de nos bureaux en Italie et en Espagne, le besoin de les écrire est devenu plus pressant. Leur rédaction aura nécessité 9 mois de travail collectif, pour en arriver aux cinq valeurs suivantes :

  • No Limit
  • Innovate or Die
  • Act as an Entrepreneur
  • Faster is Better
  • Make It Simple

Ces valeurs sont affichées dans nos locaux et on s’y réfère régulièrement, par exemple, lorsqu’on prend une décision importante ou quand on commence un projet.

Vous avez bien dit contrat ?

Les valeurs sont un contrat moral, mais ça reste néanmoins très abstrait et nécessite d’être décliné au sein des différentes entités de l’entreprise. Donc on a un contrat abstrait avec des implémentations qui peuvent être différentes en fonction des contextes… Bon sang ! Mais c’est bien sûr ! Les valeurs sont en fait une bonne vieille interface de programmation objet. Allez, en deux coups de cuillère à pot, on va coder notre interface IYounitedCreditValues :

Ok, on a notre interface et maintenant on va la décliner dans le contexte du département Tech. En avant, on y va, on y croit, on donne tout ! On créé une classe YouniTechValues. On va lui faire implémenter notre interface, un clic droit, puis on clique sur « implement interface » … Shazâm :

Et là, certains se diront que le tour est joué, on peut s’arrêter, fier du travail accompli, et faire de grandes affiches avec de belles icônes, des cœurs et des images de chatons mignons. Ce qui nous permettra de marteler qu’on n’est pas des sauvages, nous, car on a des valeurs et qu’il ne peut plus rien nous arriver d’affreux maintenant.

Sauf qu’il y a encore un petit problème, qui n’aura pas échappé à ta sagacité légendaire. Si aujourd’hui, les IDE modernes sont capables d’implémenter une interface en deux clics, ils ne sont pas (encore) capables de coder à notre place. Donc ce qu’on a là, c’est juste une série de méthodes/valeurs avec des gros « throw new NotImplementedException() » qui tachent, ce qui les rend totalement inutiles. Et des méthodes/valeurs qui ne servent à rien, c’est comme croiser les effluves : c’est mal !

Comment on évite les « NotImplementedException » dans nos valeurs

Donc on ne va pas laisser nos méthodes vides et nos valeurs aussi tangibles que des ectoplasmes. Alors remonte tes manches et on y va !!

Valeur « No Limit »

BuildGreatTeams() : Pour nous, pas de grands succès sans grandes équipes. Donc on investit dans le recrutement, le développement de nos compétences et un environnement de travail épanouissant pour les Techies.

BecomeARefenceTechBrand() : On veut être reconnu comme une marque technologique, rayonner au-delà de nos murs et se faire une place parmi les grands noms de la Tech.

DeployAnAwesomeTechVisionTogether() : On a travaillé récemment sur notre vision à 3 ans et les aspects organsationnels, methodologiques ou encore technologiques. Pendant plusieurs semaines l’ensemble des Techies ont contribué à l’émergence de cette vision. Et maintenant… on travaille ensemble pour y arriver :)

Valeur « Innovate Or Die »

CoconstructInnovativeProductwithBusinessPeople() : On co-construit nos produits avec les gens qui vont les utiliser. Nos équipes intègrent au moins une personne du business. Et aussi des sessions de tests internes et externes sont régulièrement organisées pour s’assurer de la pertinence de nos développements.

BeDataDriven() : On a pas de boule de cristal pour savoir ce qui va marcher ou pas. Donc on s’appuie sur les données qu’on récolte pour continuer ou stopper un investissement.

TakeTenPercentTimeToWorkOnNonBusinessSubjects() : On croit que chaque Techie doit avoir du temps pour se développer en travaillant sur des sujets sans lien direct avec le business. Ecrire un article, participer à un projet technique ou faire ce gros refacto qui te trotte dans la tête depuis des semaines. On dédie 10% du temps de travail pour ça !

Valeur « Act As An Entrepreneur »

GiveFeatureTeamAutonomy() : On croit en l’autonomie des équipes. L’avis de chacun compte dans la définition du « How » : Comment répondre aux problématiques business ? Quelles méthodologies de travail ou technologies utiliser ? C’est l’équipe qui a la réponse !

ImplementServantLeadership() : Les équipes sont autonomes bien, mais alors à quoi sert le management ? C’est une excellente question, merci de l’avoir posée ! En fait, le management est là pour mettre en place l’environnement propice à cette autonomie notamment par le coaching et la facilitation.

ShareTechnicalAndMethodologicalExperimentations() : Expérimenter c’est bien, mais partager c’est mieux. Un article, un BBL ou 10 minutes pendant notre réunion mensuelle. Il y a 1000 façons de faire un retour d’expérience, on demande juste d’en choisir une… ou plusieurs ! On n’est pas là pour se brider, hein ! #NoLimit !

Valeur « Faster Is Better »

TakeDecisionsFastAndLocally() : On donne le maximum de responsabilités aux équipes pour que les faiseurs prennent leurs propres décisions. Rien de tel pour fluidifier le travail !

ThinkMinimumViableProductFirst() : Produits, technos ou même pratiques, on veut tester rapidement nos hypothèses. Donc on adopte l’approche Minimum Viable Product (MVP).

Valeur « Make It Simple »

DeploySlimFastAndFrequentPackages() : On travaille pour avoir un pipeline de mise en production le plus rapide possible (une douzaine de déploiements par jour à l’heure actuelle). Ça fiabilise les déploiements :)

TakeBabySteps() : On utilise l’approche itérative à tous les étages, pour les produits, les méthodologies de travail, et plein d’autres choses.

ImplementMicroServiceArchitecture() : On suit le conseil du vieux sage qui dit « Les services, il vaut mieux en avoir des petits qui frétillent qu’un gros qui roupille ». Pour cela, on a adopté une architecture microservices où chacun a un rôle bien délimité et fonctionnellement réduit. Et ils sont environ 180 aujourd’hui.

Et après ?

C’est quand même beaucoup mieux, non ? Les intentions portées par les valeurs sont maintenant déclinées. On est plus dans le concret ! Il ne nous reste plus qu’à passer à la dernière étape !

Une fois qu’on a une implem’ de valeurs toute belle et propre, qu’est ce qu’on en fait ? On la passe en production, pardi ! Puis on monitore, on améliore, on enrichit. Les valeurs c’est comme du code, on doit en prendre soin et s’assurer qu’elles continuent à aider les gens et que ces gens continuent à y adhérer.

Et toi, comment ça se passe dans ton entreprise ?

article d’origine : https://blog-tech.younited-credit.com/it/organisation/non-au-throw-new-notimplementedexception-dans-les-valeurs-dentreprise/