Citations

Loading Quotes...

Espérer le comportement ‘A’ tout en récompensant ‘B’

Du management…

Un collègue m’a récemment envoyé un papier de Steven Kerr  »On the folly of rewarding A, while hoping for B« . Il montre que très souvent le discours officiel d’une organisation est de vouloir un comportement, tout en mettant en place un système de récompense/punition qui dans les faits pousse les gens à un comportement tout autre, voire opposé. :roll: Par exemple on demande à un joueur de sport collectif d’avoir « l’esprit d’équipe » et pourtant on ne félicite que les actions individuelles. D’ailleurs, on ne résume un match de football que par les noms des buteurs. Ainsi, agacé qu’un joueur fasse trop de passes à l’adversaire, un entraineur sanctionne chaque passe ratée ; au match suivant personne ne fait plus aucune passe et le jeu est bloqué. :pinch:

Exemple parfait de contre-productivité : une clinique veut réduire le nombre de décès. On met donc en place une prime qui doit récompenser le chirurgien qui a moins de X décès dans le mois sur le billard. Que va-t-il se passer ? On peut parier que dans les mois suivants tous les chirurgiens vont toucher la prime… En effet, dès qu’ils s’approchent du quota fatidique, ils repoussent toutes leurs opérations délicates au mois suivant ! Du coup les gens décèdent dans leur lit en attendant l’opération, mais ça n’est pas le problème du médecin. Tout le monde touche sa prime, cependant le nombre de décès global de la clinique augmente…

Cette théorie semble être un grand classique du management (le papier remonte à 1975) mais je n’en avais jamais entendu parler. Et quand je l’ai lu j’ai eu une illumination. Tenez, imaginez que vous vous tenez sur une grande étendue de sable, une sorte de drap rouge à la main ; vous le secouez un peu en vous demandant pourquoi vous avez ça à la main :wassat: , quand vous entendez un bruit de sabots tagadam-tagadam dans votre dos :unsure: et *vlan* :pinch:

… au génie logiciel.

J’ai compris beaucoup de choses sur le projet de développement en lisant cela.  Finalement, qu’est-ce que l’on demande aux développeurs ? Comportement ‘A’ : « Produire du code de qualité, maintenable par autrui ». Qu’est-ce que l’on récompense ? Les délais de livraison : comportement ‘B’. Je n’ai jamais vu un développeur se faire sanctionner pour du code mal écrit, non commenté ou conçu de traviole. Par contre, prenez du retard sur le développement, vous allez vous faire enguirlander et vous devrez rester tard tous les soirs pour faire bonne figure. Donc, si vous avez envie d’une vie de famille ou de loisirs : bâclez votre code. :devil: Ne commentez surtout pas, et ne testez que si l’on vous le demande. De toute façon c’est votre successeur qui sera pénalisé par le code non-maintenable ; c’est lui qui ratera ses deadlines :D *niark niak niak niak* (<- rire façon méchant dans James Bond).

Rendre ‘A’ inévitable, récompenser  ‘B’

On va pas chasser le naturel, alors on va biaiser un peu. Continuez à récompenser les délais (‘B’), mais considérez ‘A’ comme acquis. Il faut intégrer le contrôle qualité continu et automatisé à tout environement de développement. Il doit être impossible de réussir un « build » (et donc de livrer) si l’artefact en question ne respecte pas tous les standards en vigueur. J’ajouterai même une revue obligatoire de tout code, du stagiaire au chef de projet, avant de pouvoir placer le post-it dans la colonne « fait » du tableau blanc. Passez par la colonne « en revue », ne touchez pas vingt-mille francs. Enfin pas tout de suite… Soyons fous, récompensons la qualité :alien: .

PS: merci à Majirus pour l’article

Dessine-moi un POJO…

Lu dans la doc d’un framework : « un CouteauDeTable est une classe Java standard (ou POJO) qui sert à couper viande ou légume. Il doit sous-classer AbstractCouteau, n’utiliser dans ses signatures que les types Lame et Manche, avoir un constructeur comme ceci et des attributs comme cela. Et son nom doit finir par CouteauImpl. » :eek: C’est-à-dire, tout SAUF un POJO :ermm: !

Ce terme est de plus en plus utilisé comme synonyme de « classe Java », ce qui est une erreur. Alors, qu’est-ce qu’un POJO au juste ? Et bien, ma définition en serait : une classe Java sans contraintes particulières.

En fait, il n’y a pas de POJO sans framework. Un framework peut vous demander de sous-classer telle ou telle classe, respecter telle convention de nommage, limiter ci, imposer cela. A l’opposé (et un peu en réaction aux EJB), on parle de POJO quand le framework justement n’impose rien sur vos classes Java : vous développez old-school, classes et interfaces sont conçues librement.

Exemple de framework pas-POJO-du-tout :

« Sous-classez com.framework.AbstractPrintableObject, avec un constructeur public à un paramètre de type com.framework.PrintEnvironment. Ne définissez que des méthodes publiques non synchronisées qui lèvent comme exceptions des sous-classes de com.framework.PrintException. etc… etc… »

Le même, façon j’aime-les-POJO :

« Passez-lui un POJO, le framework d’impression essaiera de découvrir ses getters publics et de construire une représentation textuelle imprimable. »

Je précise que j’écris ça dans un souci d’illustration, loin de moi l’idée de suggérer une quelconque supériorité d’une approche tout-POJO par rapport au framework de grand-papa qui offre un lot de superclasses abstraites. Par exemple, je trouve l’approche « pur-POJOs (ah oui, plus plein d’annotations) » un peu hypocrite… :whistle:

Dix-neuf pourcents de commentaires…

Si l’on regarde l’ensemble des projets open-source, on trouve en moyenne près d’une ligne sur cinq de commentaires, selon un papier de Dirk Riehle (voir également sur son blog).

On y lit que les projets étudiés restent tous très proches de ce taux. Un peu plus surprenant, on découvre que cette densité de très exactement 18,7% de commentaires est la même quelles que soient la taille du projet et la taille de l’équipe :shock: . L’article propose l’explication que c’est dû à une grande auto-discipline de développeurs, très probablement motivée par l’exposition publique du code source à conjointement au nom de son contributeur.

Autre information de cette étude : ce qui influe sur le taux de commentaires est l’âge du projet. Quand un projet avance en maturité son taux de commentaires baisse (enfin d’un chouïa, à 18%). Je suppose que lorsque l’on maintient un code depuis plusieurs années, certaines choses deviennent tellement comprises, partagées et habituelles qu’elles en deviennent implicites, du coup on aurait l’impression d’écrire des évidences dans les commentaires en détaillant trop…

Ces statistiques soulèvent quelques petites questions…    Par exemple, peut-on considérer ce taux comme idéal ? En effet, c’est le taux auquel des développeurs volontaires et auto-organisés aboutissent à moyen terme, quel que soit le projet. Moins de commentaires c’est pas assez, mais plus de commentaires c’est inutile, voire c’est introduire du bruit. Si l’on admet ce taux comme “idéal”, le taux de commentaires de mes développements s’éloigne-t-il significativement de ce chiffre ? Quelle conclusion en tirer ? Ainsi, vous est-il déjà arrivé comme à moi, de vous dire qu’avant de diffuser tel ou tel de vos composants en open-source, il faudrait faire un petit effort de packaging et de documentation ? :blush:

Question, en guise de conclusion : si vous imposez de préciser dans les commentaires le ou les auteur(s) de toute classe et méthode par exemple (c’est-à-dire en Java : @author partout), est-ce que vous obtiendrez un code globalement mieux commenté et/ou plus lisible ? :twisted:

The Fool on the Hill : prédictions 2009

Hello Goodbye

La tendance en ce début d’année me semble être à la frilosité, au gel de toute forme d’investissement. On fait le dos rond pour passer la crise, même quand ses propres indicateurs sont au vert. Par exemple, prenez google, pour changer ;-) , cette entreprise se porte plutôt bien, et pourtant ça commence à dégraisser : après lively, c’est au tour de Notebook et plusieurs autres projets de passer à la trappe.

J’en déduis :idea: crise :arrow: réduction des coûts, gel de tout investissement :arrow: retour aux mauvaises habitudes quick-and-dirty :arrow: mauvaise qualité de code.

Il va falloir, avec une réduction du budget, faire aussi bien… or, en informatique non plus il n’y a pas de magie. Les DSI vont devoir continuer à faire évoluer les systèmes, et ça se fera, comme d’habitude, en sacrifiant la qualité. On alimente ainsi une sorte de dette de maintenabilité, on vit d’une certaine manière au détriment des développement futurs. Par exemple je crois que Flex va continuer sa progression et que Flex augmente la productivité immédiate pour faire très vite des clients web sexy. Mon opinion est que Flex reste une solution qui n’encourage en rien le développement maintenable à  l’échelle du gros projet, ne serait-ce que le language actionscript. Malheureusement, la techno diamétralement opposée (non-sexytude, non-démo-immédiate, maintenabilité-nickel), soit GWT, me semble trouver peiner à trouver sa place en entreprise.

Pour résumer : les écrans sexy maintenant, et pour plus tard le développement durable (c-à-d. industrialisé et maintenable).

Lucy in the sky with diamonds

Comment réduire les coûts ? On pourrait penser qu’un élément de réponse est dans ce qu’on appelle le « cloud computing ». Pour résumer le « cloud computing » c’est de faire héberger des applications dans le nuage, vous savez, le reste du monde, le truc que l’on dessine pour figurer internet sur le diagramme qui représente votre réseau :

cloud

Rappelez-vous du slogan de Sun à une époque, « the network is the computer ». On est dans la continuité, on dirait maintenant « the internet is the computer ».

L’idée sous-jacente est que votre métier n’est (probablement) pas de faire tourner des serveurs. Alors, plutôt que de gérer des salles machines, confiez-les à ceux qui ont 1) le savoir-faire et 2) les économies d’échelle.
Citons le fondateur d’Amazon, Jeff Bezos : « We launched our Web services [...]; it’s the equivalent of creating an electric grid, but for computing. Recently, I went to Luxembourg and visited a 300-year-old brewery. It had this gigantic relic of a generator from when it had to make its own electricity. As soon as they could buy off-grid, they did. Making their own electricity didn’t make their beer taste better. It’s the same for running your own data center ». En passant, si vous pensez qu’Amazon est seulement une boutique de vente de livres en ligne, ce n’est plus du tout le cas. Entre autres innovations, Amazon se positionne à travers S3 et EC2 comme un acteur majeur du cloud computing. Disons, qu’au moins cette fois-ci il y a innovation, rappelez-vous de l’affaire du brevet « 1-click » ! :x

Vous voyez le topo. Tout ceci concerne en premier lieu la réduction de coûts, pas vraiment l’apport de fonctionnalités nouvelles. Autre conséquence d’un gel des investissements, on ne fera pas l’investissement de passer ses applications sur le cloud : c’est une lourde ré-ingénierie, pour l’instant non maîtrisée.

J’ajoute donc :idea: passer sur le cloud demande investissement initial :arrow: « le cloud, oui, mais pas cette année » :arrow: désenchantement généralisé et chute du « hype » autour cloud computing. Si j’osais, je dirais sale temps pour le cloud, ha ha ;-) .

Pour toute innovation, il existerait une courbe de ‘hype’ qui serait toujours peu ou prou la même : découverte, attentes déraisonables, désenchantement et finalement compréhension puis productivité. Si vous prenez la courbe publiée par le Gartner de cet été, le cloud computing serait encore avant le « pic d’attentes exagérées ». Et bien ma prédiction est que le cloud va amorcer très vite, dès cette année, la chute des espérances qui se trouve de l’autre côté de l’à-pic. L’avenir (proche) est sombre notamment pour Amazon EC2+S3 justement. En effet, ces technos sont un formidable tremplin à startups, en fournissant un réel service d’élimination de la barrière à l’entrée d’une infrastructure web scalable. Les success-stories d’Amazon sont pour beaucoup des startups qui offrent des SaaS sur le web. Malheureusement, en cette période de crise, les startups explosent au décollage. Et les grands comptes gèlent veille et investissement. Amazon risque d’avoir du mal à atteindre son public et se constituer une clientèle. Même constat pour Google Apps Engine.

Bref, y’en a qui vont un peu trop vite en besogne.

Back in the USSR

Retour aux fondamentaux de la première bulle internet. Hé oui, 1998~2000 : « détourner la page d’accueil vers mon portail pour y afficher de la pub ». C’est devenu en 2008~2010 : « détourner les recherches vers mon moteur pour y afficher de la pub ». Exemple qui m’a frappé récemment : afin d’effectuer un dépannage familial à distance j’installe le tout dernier MSN Messenger Live. A ma grande stupéfaction ça me change mon moteur de recherche dans mozilla ! 8O Sans me demander mon avis, alors que, franchement, ça n’a rien à voir, utiliser un pager et mes recherches internet. C’est un peu comme si je prenais une carte orange et qu’en vertu d’accord RATP-TF1 ma télé se mettait à remplacer mes chaines favorites par TF1 et TF6 ! J’étais furieux : mon ordinateur m’appartient ! :x Winamp : pareil, j’installe un logiciel pour écouter de la musique et ça me propose un moteur de recherche winamp.com dans mozilla. Bref, plus ça va plus j’ai l’impression en installant un logiciel d’avoir un invité indélicat qui mets les pieds sur la table, le bordel dans mes affaires bien rangées (par exemple « Mes Documents », vas-y, fais comme chez toi), et fouille dans mes affaires… Il faudra établir une déontologie ou un label indépendant de non-malware sinon bientôt votre navigateur internet ressemblera à ça :

moteurs

Non, quand une boite ayant pignon sur rue comme Microsoft fait du malware de façon aussi grossière, c’est que quelque chose va très mal quelque part.

Bref, :idea: retour aux fondamentaux.

En parlant de Microsoft, lot de consolation pour eux, en vertu de tout ce qui précède, pas besoin de se presser pour sortir son office-en-ligne-concurrent-de-google-docs… c’est pas encore le moment de tuer la poule aux œufs d’or Office…

Et pour finir, :D je vous souhaite une bonne année 2009 !