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

En complément de mon billet sur les navigateurs, voici une petite sélection d’extensions à FireFox qui en font mon navigateur préféré. Je vous fais deux lots, correspondant à mes deux usages de FireFox : surf  pur 8-) et développement web :alien:

Pour le surf sur internet :

Adblock Plus

OK, c’est standard, tout le monde installe cette extension qui sert à filtrer les publicités (images, animations flash, applets…) par combinaison de listes blanches et listes noires. Simple, efficace. Pensez à autoriser définitivement les sites de confiance (via  le bouton ajouté par l’extension) pour y masquer les boutons proposant de bloquer les animations flash par exemple.

GMail Manager

Une sorte de xBiff (le truc qui clignote en bas de l’écran quand vous avez reçu un mail) pour un ou plusieurs comptes gmails. Pratique et efficace. Les mots de passes peuvent être stockés, je vous recommande dans ce cas-là d’activer le mot de passe global FireFox : un mot de passe unique à l’ouverture de FireFox qui débloque les mots de passe enregistrés et les cookies.

Speed Dial

Une page d’accueil montrant des vignettes des sites pour un accès rapide à ses sites favoris. Similaire à la page d’accueil de google chrome, sauf que chrome détermine tout seul les pages les plus fréquemment accédées, alors qu’ici on choisit soi-même.

Et enfin le duo de choc, la combo-qui-tue, mes deux amours :

Foxmarks Bookmark Synchronizer :wub:

Offre une synchronisation des marques-pages, bookmarks, favoris ou signets (appelez-ça comme vous voudrez) entre plusieurs navigateurs, donc par exemple entre PC-boulot et PC-maison. Franchement, j’ai essayé toutes les solutions depuis l’invention des bookmarks, et celle-ci est la première à me satisfaire pleinement. C’est gratuit, on peut accéder à la copie de bookmarks sur internet, qui fait office de backup avec historique, on peut créer plusieurs profils (boulot ; maison ; mobile) et ne partager que certains répertoires de favoris avec tel ou tel profil (donc les sites de l’intranet qui ne fonctionnent qu’au bureau ne polluent pas mes bookmarks à la maison). Permet également (depuis très récemment il est vrai) de synchroniser avec IE. Si on est parano on peut choisir son propre site FTP pour stocker sa copie de référence des bookmarks.

Read It Later :wub:

Un bouton qui permet de marquer Ă  tout moment une page « à lire plus tard ». Ensuite, quand un a un petit moment devant soi, le bouton permet de faire dĂ©filer ces pages marquĂ©es “plus tard” Ă  tĂŞte reposĂ©e. L’extension ajoute Ă©galement un petit bouton dans google reader, ce qui permet de marquer un billet dans un flux RSS pour lecture diffĂ©rĂ©e Ă©galement. Et comme cette extension sauve la liste des pages pour lecture ultĂ©rieure dans un dossier particulier de bookmarks, celui-ci est synchronisĂ© parfaitement entre tous mes navigateurs par Foxmarks. Ta-daaaa :-) troisième Loi de Clarke : «Toute technologie suffisamment avancĂ©e est indiscernable de la magie» :o

Pour le développement Web :

Web Developer

Ajoute une barre de boutons proposant une foule d’options pour mettre au point une page HTML récalcitrante : surligner les blocks, afficher les inputs, y compris cachés, éditer les cookies ou le CSS sur place. Bref, votre débuggeur d’HTML.

FireBug

Je l’utilise surtout pour débugger des échanges entre navigateur et serveur : FireBug permet d’inspecter les échanges GET/POST et réponses du serveur. Affiche également le source ou le DOM du HTML résultant.

FirePHP :ninja:

IdĂ©e brillante, cette extension permet d’afficher des logs (codĂ©es façon log4j) d’une application PHP. Le principe est de fournir une librairie PHP qui permet de mettre ces infos de log dans les entĂŞtes HTTP, qui restent invisibles de l’HTML, mais sont exploitĂ©es par l’extension FirePHP et affichĂ©es proprement en dessous de la page. J’adore ! Attention, nĂ©cessite l’installation de FireBug au prĂ©alable.

VoilĂ  pour aujourd’hui. Cerise sur le gâteau, c’est très simple pour vous d’essayer, dĂ©sactiver, rĂ©activer, dĂ©sinstaller toutes ces extensions. L’installeur d’extensions depuis FireFox est un rĂ©gal : recherche par le nom, installation en quelques clics, utilisation… que du bonheur :happy: Aaaaah si seulement l’installeur d’Eclipse (et ça vaut Ă©galement pour le prochain Eclipse 3.5 :cwy: ) Ă©tait aussi agrĂ©able Ă  utiliser…

Logo firefox 3

:wub: Firefox !

Ca reste mon navigateur de choix. C’est pas la vitesse du rendu HTML ni du moteur JavaScript qui m’attire (encore que…), mais tout simplement les plugins. C’est la grande force de Mozilla, cette extraordinaire variĂ©tĂ© d’extensions plus utiles les unes que les autres. Ainsi qu’un très bon gestionnaire des favoris, et mes favoris sont mon second outil de travail (après google, of course). En passant, tiens, ma configuration de Firefox pourrait faire l’objet d’un autre billet.

Second :

8) Google Chrome.

J’aime beaucoup ce navigateur, je l’ai beaucoup utilisĂ© Ă  sa sortie avant de revenir Ă  Firefox. L’idĂ©e derrière chrome est tout-Ă -fait valide : le web est de plus en plus utilisĂ© comme plateforme d’applications, et le surf sur des pages d’information statiques n’est plus du tout le seul usage du web. Chrome est une avancĂ©e significative en tant que plateforme pour faire tourner des applications web en plein Ă©cran sans les chichis du navigateur qui justement sont gĂŞnants quand je ne navigue pas, c’est-Ă -dire gmail, google reader voire facebook. Le lanceur chrome de gmail “en tant qu’application” a remplacĂ© avec bonheur mon client de messagerie dans mon menu dĂ©marrer. Mais, en tant que navigateur, chrome est en retard sur firefox.

“Bon” dernier :

:getlost: Internet Explorer…

Complètement dĂ©passĂ©. Je ne tirerai pas sur l’ambulance. Je garde quand mĂŞme un souvenir Ă©mu :cwy: des “XML data island” dans des iframe cachĂ©es qui permettaient de bien s’Ă©clater :ninja: longtemps avant qu’un quidam ne nous ponde le terme d’AJAX. Aaaaaah la gĂ©nĂ©ration de DHTML&javascript par une tĂ©trachiĂ©e de XSL inmaintenables… :eek:

Le seul intĂ©rĂŞt de garder IE sur sa machine c’est pour aller sur les sites qui n’ont Ă©tĂ© testĂ©s que sous IE et ne fonctionnent que sous IE. Bon, d’un autre cĂ´tĂ© c’est pas comme si on pouvait le dĂ©sinstaller de windows… :mad:

En conclusion, on dĂ©duit de tout ceci que j’ai vendu mon âme Ă  Google, mon coeur Ă  l’open-source et mes donnĂ©es personnelles Ă  facebook… :-D

PostĂ© le 12 fĂ©vrier 2009 dans GĂ©nie Logiciel, Sauf cross-post par GuillaumeSans Commentaire »

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:

Next Page »