G-Pragmatisme

16/12/2008



Certains d’entre vous le savent déjà, je suis à bien des égards admiratif de Google et de son développement exponentiel. Je suis un très grand utilisateur de leurs produits : Search, GMail, Reader, Maps, Google Site, AdPlanner, GWT, Google Desktop, GTalk…

Leur capacité à proposer des nouveaux services d’une part, et en conséquence à révolutionner des marchés d’autre part est impressionnante.

Lire la suite…

,

WordPress plugin – Login By Email

28/10/2008

J’ai créé un petit plugin pour pouvoir s’authentifier sur wordpress avec son identifiant ou son email. Ceci permet aux utilisateurs de n’avoir plus à retenir leur identi>fiant.

Pour l’activer, il vous suffit de dezipper le fichier zip dans le répertoire plugins

Télécharger le plugin

Methodes Agiles

16/10/2008
Pragmatisme & Réactivité au royaume du développement informatique

Les méthodes agiles apportent une nouvelle conduite de projet dans le domaine du développement de logiciels. L’objectif est d’obtenir une meilleure réactivité et une beaucoup plus grande souplesse dans un cadre hautement qualitatif. De manière générale, elle sont beaucoup plus pragmatiques que les méthodes traditionnelles et sont customer centric : leur seul objectif est d’assurer la satisfaction continue du client.

Enseignements

La baseline des méthodes agile est « We value individuals and interactions over processes and tools ». Globalement, les principaux enseignements que je tire de ces méthodes sont les suivantes :

  • Le client doit être au coeur du projet. Il doit manipuler les livrables régulièrement et doit vraiment être au coeur de la conception continue de l’objectif. Ceci est très engageant et certains experts de l’agilité imposent qu’une ressource client soit complément intégrée à l’équipe projet (à défaut, il faut un contact très privilégié entre un membre de l’équipe de développement et un membre du fonctionnel). Ainsi, le développeur doit être au contact direct des utilisateurs et observer leurs comportements. Ces contacts peuvent éviter des eccueils évidents en confrontant directement ces deux mondes. Les communications verticales et hiérarchiques doivent être ainsi modifiées pour bénéficier d’échanges très précis et réactifs.
  • Etre MonoTâche : la plupart de nos entreprises et systèmes sont multi-tâches, mais le développeur doit demeurer mono-tâche en ordonnancant de manière concertée ces actions. Ceci permet un meilleur versionning du code source de l’application et de manière générale une meilleure efficacité et gestion du développement.
  • Le pragmatisme est de rigueur : aucun outil ou méthodologie ne peut être uniquement théorique, ils doivent coller de manière très étroite à un opérationnel étudié. Les outils peuvent apporter une réelle aide mais un simple jeu de Post-it peut parfois jouer exactement le même rôle. Le réflexe de l’ingénieur est bien souvent de trouver la solution avant de cerner le besoin : la démarche inverse est bien souvent plus efficace.
  • La simplicité doit demeurer le maître mot. Les concepts de KISS (Keep It Short and Simple) et de DRY (Don’t Repeat Yourself) doivent être en permanence appliqués : toujours aller à l’essentiel sans complexifier pour la beauté de l’art et réutiliser les maximum d’éléments existants.
  • La collaboration est omniprésente dans les méthodes agiles, que ce soit entre le client et l’équipe de développement mais également au sein de l’équipe. Il est important que l’ensemble des acteurs aient intégrés ces valeurs pour permettre un échange efficace et non bridé.
  • Le changement perpétuel est un élément omniprésent dans les équipes travaillant en agilité. Il faut donc que les collaborateurs soient capables de suivre ce changement. Il s’agit d’insufler une dynamique d’équipe qui permettent de suivre ce rythme.
  • Le test est la pierre angulaire des méthodes agiles dans le développement informatique. Les développements doivent inclure en permanence et en priorité cette dimension. On parle donc de Test Driven Development. Une bonne couverture de test permet
    • de pouvoir opérer des changements radicaux dans le développement (les tests permettant une analyse d’impact fiable)
    • d’avoir confiance dans la fiabilité du code en mettant en place des indicateurs et des procédures précis sur la qualité de la réalisation
    • de ne plus craindre les mises en production (qui, au demeurant, sont d’ailleurs très régulières dans ce contexte)

Les différentes méthodologies préconisent l’utilisation de cycles d’itération très courts (15 jours maximum).




Pour ou Contre ?

Pourquoi utiliser les méthodologies agiles et les développement en cycles incrémentaux (itérations courtes) ? En voici quelques avantages :
  • Livrer à temps et atteindre rapidement des quick wins: le schéma ci-dessus montre bien qu’après quelques itérations permettant de réaliser un socle de base, les retours sur investissement sont rapides et observables.
  • Relever les défis du renouvellement fréquent, très courants dans les projets web par exemple. Ainsi, on sera mieux à même
  • Fiabiliser les ressources en permettant une duplication de la connaissance (Collective Ownership)
  • Permet de gérer à la fois les demandes régulières et urgentes
  • Obtenir une meilleure visibilité continue sur l’objectif final
  • Atteindre une meilleure adaptabilité et une meilleure gestion du changement
  • La dette technique augmente au fil des projets. Le but de l’agilité est de garantir la qualité constante d’un projet.

Cependant, l’adoption de cette organisation rencontre en générale certaines réticences :

  • L’engagement du prestataire semble faible car il ne s’engage pas sur un objectif final. Cependant, les projets ont, en général, tous besoin d’une adaptabilité des objectifs. Même sur un projet simple et très périmétré, on ne maîtrise jamais tous les facteurs (intégration, dépendance extérieure). L’intérêt donc des méthodes agiles est qu’on pourra ajuster l’objectif au fur et à mesure. Ainsi, la règle des 80/20 peut être contrecarrée : peut être qu’avec 85% ou 90% des objectifs initiaux, la réalisation semblera suffisante et nous économiserons une bonne partie des investissements.
  • L’engagement du client semble très fort. Trop lié à son opérationnel, il lui semble parfois difficile de pouvoir s’impliquer autant. Cependant, si le projet est important, je pense que le jeu en vaut la chandelle. Cela fait d’ailleurs partie du pragmatisme de certaines déclinaisons des méthodes agiles : « si ta tâche n’est pas importante, elle n’est donc pas indispensable donc ne la fait pas »
  • La contractualisation est difficile car l’objectif est flou. En effet, aucun objectif précis n’est visé. Cependant, quand on voit que bon nombre de projets dépassent leur budget initial, ces méthodes permettent de mieux piloter l’évolution et d’anticiper les débordements et ainsi d’assurer une meilleure maitrise continue de l’équilibre budget/résultat
  • Les méthodes agiles font parfois peur car elles bousculent les protocoles et les voies hiérarchiques. Ainsi, elle imposent que la communication transversale soit facilitée. Cependant, ces nouvelles organisations permettent une meilleur compréhension du besoin de l’utilisateur et donc un produit final répondant mieux aux objectifs.
  • De la même manière, ces méthodologies révolutionnent certaines de nos habitudes et manières de travailler et elles provoquent souvent une réticence naturelle au changement. Une technique telle que la programmation en binôme (pair programming) est dérangeante à bien des égards (perte de contrôle, impression de perte de productivité, diffusion de la connaissance…) mais leurs pratiquants prouvent que sa pertinence est complète.
& Après ?
Souvent cantonnées au monde du développement informatique, les méthodologies Agile sont davantage une organisation de travail et peuvent donc être facilement appliquées à un domaine plus large. Il s’agit de méthodes impactantes au niveau des organisations et des hommes. Leurs mises en place doivent être sponsorisées par des poids lourds hiérarchiques pour obtenir leur adoption généralisée.
Enfin, ces méthodes sont selon moi plus des règles de conduites (comme le code des pirates :-) ) et il appartient à chaque organisation de fixer leur propre application, avec pragmatisme et objectivité. Il y a dans le monde de l’agilité (comme ailleurs) des puristes de méthodologies. Je suis d’un avis différent et j’irais même jusqu’à dire que la notion même d’agilité va contre cette rigidité où les équipes doivent s’adapter en permanence à des contextes particuliers.
Il y a plusieurs déclinaisons des méthodes agiles. Voici 4 d’entre elles que je trouve intéressantes (les branches sont cliquables) :

Il y a des sources d’inspiration dans chacune de ces méthodes, à vous de vous en faire une idée…

eXtrem Programming LEAN Get Things Done SCRUM

Chloé vs Michel – Virtuelle ou humaine, les hotlines sont toujours inhumaines

25/09/2008
où comment se sentir incompris
Travaillant dans le domaine de la vente à distance, je suis régulièrement sensibilisé par l’importance et l’universalité de la Relation Client. Le client est roi, les entreprises doivent se plier à toutes ses exigences. Le client devient le dictateur…
J’ai l’occasion d’assister à de nombreuses conférences, séminaires, retours d’expériences, peu importe le nom. J’ai notamment récemment assité à une intervention de la branche innovation de OBS (Orange Business Service) où on nous présentait les nouvelles technologies qui pouvaient aider les centres d’appels et permettre de baisser les coûts de ces derniers bastions de l’intervention humaine.

Les avis sont partagés et force est de constater que la plupart des avatars virtuels que j’ai pu tester jusque là sont relativement idiots : dès que nous sortons des sentiers standards et anticipés, le dialogue devient rapidement profondemment amusant (dans un premier temps), ennuyant puis fatalement énervant. Cependant, j’ai une grande confiance en la matière grise de nos centres de recherches et des pôles R&D de nos grandes entreprises pour s’améliorer sensiblement dans les années à venir. Un mix entre un avatar automatisé et un conseiller réel pourrait être un bon deal que certains semblent suivre. De nombreuses voies sont d’ailleurs explorées pour ré-humaniser cette relation virtuelle et robotisée :
  • reconnaissance vocale
  • clic2call (ou web call back)
  • visioconférence
  • clic2chat (ou push2chat)
sont autant de moyens pour faciliter le chemin difficile de nos clients.
Application concrète
J’ai eu, dans le mois qui vient de s’écouler, plusieurs aventures avec les services clients de plusieurs sociétés : Free, RueDuCommerce, Sergic, VPCBoost, OBS, etc… dans un contexte professionnel et personnel.
Vous l’avez peut être déjà compris (car il faut bien avoir quelque chose à raconter lorsqu’on écrit un billet), toutes ces relations ou presque se sont soldées par des frustrations, un sentiment de se faire duper, de perdre son temps et surtout et avant tout : un constat d’INCOMPETENCE gravissime.

Il demeure, selon moi, deux problèmes de fond dans la plupart de nos approches clients :
  • la sensibilisation et la formation des conseillers
  • la cohérence du service dans son ensemble
La relation client doit être au coeur d’une entreprise. Une entreprise commerciale, quelle soit en B2B ou en B2C a une seule et unique vocation : le client. Chaque salarié devrait connaître le parcours du conseiller et être régulièrement au contact direct du client final pour connaître la véritable identité de l’entreprise qu’il représente (ou tout au moins pour anticiper dans sa propre activité les réactions, perceptions du client et adapter ses choix, décisions, actions en fonction de ce point de vue).
Parcours Client
Pour prendre l’exemple de Orange, la verticalité de leurs différents services est impressionnante. Ils ne semblent avoir aucune trace globale de leurs contacts clients. Pour une entreprise et pour leurs conseillers clients, il me semble indispensable (et techniquement possible) de se doter d’un outil de CRM adapté et abouti, permettant de visualiser facilement l’ensemble du parcours de son interlocuteur (où a-t-il acheté, quels goûts a-t-il, quels produits a-t-il consulté, a-t-il déja appelé, puis-je le rappeler pour anticiper ses demandes, …?). Il semblerait toutefois que ces outils sont encore couteux à intégrer dans une organisation complexe.
Verticalité des services, verticalité des canaux… Ce que le petit commercant nous apprend est la connaissance de son client : il le reconnait, il connait sa famille, il connait ses hobbies, il connait ses achats réguliers, ses difficultés… Et ce que le client vienne le voir, le contacte par téléphone, par e-mail… Quelle enseigne sur le web peut se targuer d’en faire autant ?
Je rève qu’un jour (prochain ?), où lorsque j’appelle mon e-commercant, il sache prédire mes attentes et mes problèmes à partir des informations que lui ai fournies précédemment… Je rève que le conseiller s’implique dans mon problème et ne répéte pas des phrases qu’il relit machinalement (parfois en bégayant).
Free est un exemple en la matière pour cela : à chaque fois que j’appelle ou que je me connecte à leur chat, l’échange est toujours conclu par la même formule absurde et inhumaine « je me joins à toute l’équipe blablabla », ce qui a le don de m’énerver (même si l’échange s’est bien passé)… Du relationnel d’accord, mais avant tout de l’humanité que diantre !!!
Avec un système automatique, au moins nous ne sommes pas dupes et cette standardisation des échanges n’est selon moi pas un problème mais lorsqu’on a un conseiller au bout du fil, un peu de considération ne serait pas de trop…
Un métier difficile

Je jette la pierre à ces malheureux hotliners, mais je suis bien conscient de la difficulté de leur métier… Basiquement, s’ils font bien leur métier, ils seront invisibles car le client est roi et le roi ne s’occupe de ses sujets que s’ils n’obéïssent pas à ses attentes.
Il est donc nécessaire d’impliquer ces conseillers dans la vie de l’entreprise, dans la conception de l’offre commerciale car ils sont nos vrais ambassadeurs… Eux seuls sont au contact direct de nos clients, connaissent leurs attentes, leurs remarques…
A l’heure où bon nombre de systèmes de feedback fleurissent sur nos portails, ne serait-il pas intéressant de donner les mêmes moyens à nos centres téléphoniques ? Formés et sensibilisés, ils sauraient qualifier, catégoriser, filtrer, préciser les demandes…
Je ne pense pas que ces systèmes soient inadaptés, seulement je suis convaincu qu’on ne devrait pas oublier ces contacts directs, véritable coeur de métier du commerçant… Il faudra également que les organisations se dotent de process permettant de remonter ces retours clients et leur donner une vraie suite
Bien entendu de tels objectifs sont difficiles à atteindre et onéreux mais je pense qu’ils contribuent à une notoriété certaine et à une fidélisation directe…
Pourquoi la FNAC est-elle reconnue par exemple ? parce que leurs vendeurs connaissent leurs produits, se les accaparent, savent en parler, conseiller…
Conseiller, là est le coeur du sujet… Nos hotlines doivent apporter des conseils avant d’apporter des procédures…

Google Chrome

02/09/2008

Quelque chose me dit que ce sera l’annonce de cette rentrée : Google sort aujourd’hui en version bétâ un navigateur internet : Chrome.

La mise en ligne de la version bétâ de Chrome a été précédée d’un googlebook très bien fait se voulant accessible au commun des mortels, expliquant ce que compte apporter Chrome sur le marché des navigateurs internet. Je vous laisse aller le lire, il dresse un état des lieux très intéressant de l’état actuel du secteur.
Voici les principaux points annoncés par Google :
  • Chrome est multitâche : chaque onglet fonctionne séparément, et au sein d’un onglet les différents processus d’affichage (rendu HTML, exécution javascript, plugins) fonctionnent en parallèle. Conséquence : si une page cause des problèmes au navigateur, seul l’onglet concerné sera figé.
  • Chrome intègre V8, une machine virtuelle javascript (une JsVM ? ^^). C’est un projet interne Google, disponible sous licence BSD. Le code javascript n’est plus interprété, il est compilé. L’ambition affichée de Google est qu’il soit utilisé par les autres navigateurs. J’y vois ici un grand intérêt pour améliorer la propagation des applications Google et de Google Web Toolkit : les applications Google et les applications GWT seront plus performantes, donc plus plaisantes à utiliser. Cela pourrait redonner un nouvel élan aux RIAs basées sur javascript.
  • Chrome se veut, comme toutes les applications Google, un modèle d’ergonomie. Ce point ayant déjà été selon moi bien approfondi chez les concurrents, il semble qu’il n’y ait pas grand chose de nouveau comparé à ce qui se fait déjà, si ce n’est que les toutes bonnes idées de chaque navigateur (barre d’adresses façon Firefox 3, page d’accueil façon Opera) ont été reprises et poussées d’avantages.
  • Chrome permet un mode « navigation privée » : ce mode permet de surfer sans laisser aucune trace. Tout ce qui est stocké dans ce mode est détruit lorsqu’on le quitte.
  • Chrome est déjà massivement testé. Le premier métier de Google est de stocker des pages web, vous savez ? :) Ces pages sont utilisées pour tester Chrome à grande échelle à chaque étape de son développement.
  • Chrome intègre Gears en standard.
OK. Et qu’en est-il vraiment ?
Depuis 20h ce soir, Chrome est disponible en téléchargement. J’ai eu l’occasion de m’en servir succinctement (ce billet est rédigé sur Chrome !) et voici mes réactions à chaud.
Première impression : c’est simple, rapide, performant. C’est précisément là où Firefox 3 pourrait s’améliorer selon moi.
  • Chrome est bel et bien multi-tâches, équipé d’un gestionnaire de tâches, ce dernier permet même de comparer les performances avec vos autres navigateurs si ceux-ci sont ouverts en même temps que Chrome (cf. capture d’écran ci-dessous). Chrome semble avoir des problèmes avec certains sites de vidéos, chez moi Dailymotion ne se comporte pas correctement : les temps de réponses sont très mauvais et tout Chrome se fige (pas seulement l’onglet en question, comme annoncé). Cependant on peut reprendre assez vite la main (quelques secondes), afficher le gestionnaire des tâches (Maj+Echap) et tuer l’onglet génant sans pour autant perdre tout ses onglets.
Le gestionnaire des tâches selon Chrome
  • La JsVM tient ses promesses, gmail et des applications développées en GWT semblent s’utiliser réellement plus vite. Reste ensuite à chiffrer à quel point Chrome est plus rapide.
  • Chrome frappe par sa simplicité d’utilisation. Si l’on oublie les boutons précédent, suivant, rafraichir et go (ces fonctions sont utilisables aisément en raccourcis clavier), on se retrouve avec 3 boutons : une étoile pour mettre la page actuelle en favori, une page pour afficher les options de la page, et une clé pour afficher les options générales. Cela me rappelle le post de FredCavazza sur la simplexité.Il faut ajouter à cela une aide en ligne exemplaire qui permet de prendre en main le logiciel en très peu de temps.
  • La navigation privée semble parfaitement fonctionner.
  • Les pages que j’ai eu l’occasion de visiter s’affichent proprement.
  • J’ai essayé plusieurs fois de mettre en offline mes Google Docs : ça plante chez moi au moment de l’étape « updating software ». Je ne sais pas encore si l’erreur vient de Chrome, de Gears, ou de moi.
Je pense que le talon d’Achille peut se situer au niveau des tests. Toutes les personnes à qui j’ai eu l’occasion d’en parler m’ont dit « mais, il n’y a pas eu de beta avant ? Sortir un navigateur from scratch c’est extrêmement risqué ! ». Cette version reste une version beta, et Google semble faire confiance à son système de tests. En tout cas c’est ce point qu’il faudra surveiller dans les jours à venir, le succès technique de Chrome en dépend.
Cela semble être la stratégie de défense de Firefox, comme l’indique Tristan Nitot en interview sur le site du point. Chrome ne doit pas non plus être aux yeux des développeurs web un n-ième navigateur avec lequel il faut se battre pour avoir un rendu cohérent.
Enfin, Chrome n’a pas de lecteur de flux RSS intégré, et certaines personnes semblent le regretter. Personnellement je n’utilise pas les lecteurs de flux RSS intégrés aux navigateurs, mais je comprends que cette fonctionnalité puisse manquer. D’un autre côté c’est l’occasion de créer son premier plug-in Chrome !
Edit : la nouvelle ne laisse personne indifférent et on trouve beaucoup de réactions sur des sujets totalement différents. Je vais essayer de les lister ici :

Benchmark JsVM :
Deux benchmarks, deux résultats sensiblement différent. Le premier utilise le benchmark javascript fourni par Google, pas étonnant donc que Chrome écrase la concurrence. Le deuxième est fait-maison et offre des résultats plus nuancés.
Et bien sûr le test Acid3.

Failles de sécurité :
Il fallait s’y attendre, des premières failles de sécurité ont été exploitées :

Ce lien vous fera automatiquement télécharger un fichier. Il suffit de cliquer sur le bouton pointé par la flèche pour l’exécuter, sans aucun avertissement. Il s’agit d’une faille commune à Safari, corrigée en juillet dernier. Apple avait alors mis 2 mois pour corriger la faille.
Merci Damien pour le lien ;)
Eula :
Un incendie s’est déclaré concernant le Cluf de Chrome : ça s’affole mais je ne pense qu’il faut mieux attendre un peu avant.

Propagation :
La propagation de Chrome est assez impressionante, cf. ce post qui parle également des performances javascript. Chez les geeks, Chrome est arrivée en une journée à 10% de part de marché. J’aimerais pouvoir comparer le nombre de téléchargements d’IE8 béta et de Chrome béta …

, ,

  • Twitter
  • Buzz
  • Facebook
  • LinkedIn
  • Picasa