Archives de catégorie : Random Stuff

image_thumb.png

L’incompétence des développeurs

Il y a un peu plus d’un mois je m’étais décidé à répondre au post “On a besoin de stars pas de managers”.

Romain David, co-fondateur de la startup Balloon y explique son désarroi face au grand nombres de développeurs qui ont comme objectif de :

ne pas rester éternellement développeur, mais devenir chef de projet

 

Ce qui dans le cas d’une startup est pénalisant puisque la société recherche des profils techniques pointus, autonomes, capables d’apporter une vraie valeur ajoutée par rapport à des “pisseurs de code” classiques.

La raison de ce désamour du métier de développeur qui incite à devenir chef de projet est selon moi identique à la raison pour laquelle les développeurs ont une mauvaise image.

Et cette raison est simple :

une très grande majorité des développeurs est incompétente

 

Je vous parlais il y a peu des 3 stades de maturité d’une équipe de développement, le problème est que selon mon expérience environ 75% des équipes (et donc des développeurs et chefs de projets) sont dans la phase du chaos, 20% dans la phase intermédiaire, et 5% sont autonomes. (N’hésitez pas à confirmer ou infirmer cette estimation dans les commentaires).

Et pour illustrer cette incompétence je vais m’attarder sur le profil des développeurs .net. Une majorité n’a pas des connaissances de bases telles que :

  • Connaissances de bases sur la POO (expliquer clairement la différence entre une classe et un objet, les différences entre une classe abstraite et une interface, notions de base sur l’héritage, donner un exemple de design pattern, etc.)
  • Comment gérer les erreurs (définir les différentes stratégies de gestion des exceptions)
  • Savoir définir avec une phrase claire ce qu’est le framework .net et quels sont les services fournis par le CLR.
  • Maitriser ce qui n’a pas attrait à l’écriture de code et que Microsoft regroupe sur le terme d’ALM (gestion des sources, gestion des tâches/bugs, builds, tests, etc.)
  • etc., etc., etc.

Quand je parle d’incompétence je ne parle donc de non-maitrise de concepts et notions mais de non-maitrise des fondamentaux essentiels au bon déroulement d’un projet de développement.

Durant les entretiens techniques que je fais passer, j’en suis “réduit” à poser des questions ouvertes afin de juger du recul du candidat sur différentes technologies (compréhension des principes et de la philosophie d’une techno, description des avantages et des inconvénients de la techno), et de juger de sa compréhension du métier de développeur (recul par rapport au métier, description des difficultés du métier, et comment y pallier). Ceci pour estimer de sa capacité à rapidement arriver au 2eme stade de compétence décrit rapidement ci-dessus.

Le fabuleux destin du développeur

Fort de cette incompétence, le développeur tel un forçat va devoir s’efforcer d’essayer de rattraper (souvent en vain) ses propres erreurs, les erreurs de ses collèges développeurs, du chef de projet, et des commerciaux. Oublier la notion d’horaires de travail et prendre un soin particulier à bien entretenir sa nouvelle petite amie : la machine à café.

Le tout en devant :

  • expliquer pourquoi une fonctionnalité qui marchait correctement auparavant ne fonctionne plus à cause d’une modification qui n’a (en apparence) aucun rapport avec celle-ci
  • parvenir à justifier pourquoi il serait plus simple de refaire depuis zéro

qui pourrait être traduit par :

  • “ah bravo tu es tellement mauvais que quand tu touches une partie de l’application, tu en casses une autre“
  • “tu es tellement mauvais que pour faire une tâche tu dois t’y reprendre à plusieurs fois en recommençant à zéro“

image

Ainsi après avoir passé plusieurs mois à travailler sur des projets en sachant pertinemment que le développement réalisé était de très mauvaise qualité, et en se demandant pourquoi on lui avait explique que les frameworks et outils actuels rendaient la vie du développeur très simple (on m’aurait menti ?) il est compréhensible que celui-ci veuille prendre la responsabilité de chef de projet.

Une partie des développeurs voudront assumer cette responsabilité afin d’essayer d’améliorer les choses.
Bien évidemment, n’ayant pas reçu de formation de chef de projets, la probabilité d’arriver à réellement améliorer les choses est assez faible. Et ceux qui font l’investissement de faire une pause dans leur cursus professionnel afin de retourner à l’école et suivre une vraie formation de chef de projet suite à de mauvaises expériences vécues en tant que développeur, se font recaler pour leur manque d’expérience (cas d’un récent candidat qui recherche donc à présent de nouveau un poste de développeur…)

Une seconde partie de développeurs voudra devenir chef de projet non pas pour améliorer les choses mais pour ne pas à avoir subir toutes les erreurs du projet tout en ayant un meilleur salaire. Comme dans beaucoup de secteurs, c’est le salarié tout en bas de l’échelle qui subit le plus les conséquences des erreurs qui ont pu être commises. Il est donc plus confortable de monter d’un niveau, on ne sera pas plus compétent mais au moins on se tuera moins à la tâche. Et oui, dans le domaine du développement le développeur est considéré comme l’ouvrier préposé aux tâches répétitives. Après tout, du code ça reste du code non ?

Pour les développeurs qui ne souhaitent pas ou ne peuvent pas devenir chef de projet, plusieurs attitudes sont possibles. La plus courante est la résignation. Quand on a pleinement conscience de faire un travail de mauvaise qualité, soit on se rend malade en s’apitoyant sur son sort soit on prend du recul, de la distance, et on se détache petit à petit de son travail, en ne cherchant pas à s’impliquer et en renonçant totalement à essayer de faire changer les choses.

Je vous recommande la lecture de le post de Romain Verdier “Dégage sale programmeur ! ” qui décrit le problème avec infiniment plus de talent que moi.

Le métier de développeur est très complexe

Ce tableau assez noir n’est pas dû à la stupidité des personnes qui endossent le rôle de développeur (je pense que la majorité des développeurs est incompétente, je ne pense pas qu’ils sont stupides…) mais à la complexité du métier de développeur.

Un développeur doit posséder les compétences suivantes :

  • Etre avant tout un très bon “informaticien”. J’entends par là qu’il doit maitriser les notions fondamentales indispensables à la bonne utilisation et à la bonne exploitation de l’outil informatique. Maitrise d’un grand nombre de connaissances qui ne sont pas directement lié au développement (exemples : maitrise du fonctionnement d’un OS, de sa conception, de son architecture, sa gestion de la mémoire, maitriser la sécurité, savoir ce qu’est un process, un thread, maitriser la différence entre le 32 bits et le 64 bits, savoir ce qu’est une partition, savoir ce qu’est la virtualisation, connaitre les fondamentaux liés aux réseaux (ARP, DNS, IPV4, IPV6, MAC, etc.) etc., etc.)
  • Et après avoir acquis toutes ces connaissances “de base” sur l’informatique, le développeur pourra commencer à apprivoiser l’écriture de code et ceci via plusieurs langages puisqu’un seul ne suffira pas pour faire son métier (C#, VB, T-SQL, PL-SQL, XPath, Javascript, etc.). Il devra pour cela maitriser tous les fondamentaux de la programmation orientée objets, et découvrir par lui-même quelques bonnes pratiques qu’il n’a pas forcément ou pas correctement acquises durant sa formation. Puis au fil de son expérience devra comprendre en quoi consiste vraiment l’écriture de code (un code n’est pas figé et doit évoluer dans le temps = être maintenable, refactorisé et donc être testé, il doit de plus être géré via un source control (avec maitrise des concepts associés, checkin/checkout/label/shelve/merge, etc.).
  • Il devra également réellement comprendre en quoi consiste un projet de développement, le rôle et l’impact de chacun, et bien comprendre que développer ce n’est pas uniquement écrire du code.
  • Et bien évidemment comme l’informatique évolue très vite, une fois l’ensemble de ces connaissances acquises, le développeur doit être capable de les tenir à jour semaines après semaines en effectuant une veille technologique appropriée.

Bref, à mon avis un bon développeur se fait seul et n’apprends pas l’ensemble des concepts et notions qui feront de lui un développeur correct durant ses études (même après une école d’ingénieur). Cela nécessite un auto-apprentissage important (et donc un investissement personnel important) ce qui explique l’incompétence généralisée décrite au travers de ce post.

L’essentiel de la compétence d’un développeur s’acquiert via son expérience, il est nécessaire de réaliser que malgré toutes les compétences techniques qui ont pu (ou pas) être acquises durant les études, le métier de développeur nécessite de ne pas laisser tomber et de vraiment débuter à apprendre son métier lorsque l’on débute son expérience professionnelle le tout dans un contexte professionnel souvent très mauvais (mauvaise équipe de dév, mauvais chefs de projets, etc.)

Bon et bien évidemment, si vous pensez être dans les 5% évoqué ci-dessus ou même dans les autres 20%, je vous rappelle que je recherche du monde ! Clignement d'œil
(et maintenant vous connaissez certaines des questions que je pose durant les entretiens techniques…)

image

Les 3 stades de maturité d’une équipe de développement

Avec mon changement de métier en début d’année, j’ai naturellement enrichi ma liste de lectures avec des sites/blogs non techniques traitant du leadership d’équipes de développement.

Un des mes sites préférés dans ce domaine est le blog Five Whys de Roy Osherove et celui-ci identifie 3 stades de maturité d’une équipe de développement :

  • Le chaos : l’équipe ne possède pas les connaissances techniques fondamentales/de base/minimales nécessaires pour débuter à faire correctement les choses.
  • L’apprentissage : l’équipe possède certaines connaissances techniques ET non-techniques qui lui permettent de voir son niveau régulièrement s’améliorer
  • L’autonomie : l’équipe est quasiment autonome, et possède les connaissances nécessaires au bon déroulement d’un projet.

Vous pouvez vous référer à ce post ou encore à ces slides pour plus de détails sur ces stades de maturité.

image

Je n’avais jamais formalisé mon point de vue sur le niveau des équipes de dév. de cette manière avant d’avoir lu le blog de Roy Osherove, mais je suis entièrement d’accord avec ce découpage.

Et je trouve de plus qu’il permet d’expliquer énormément de choses concernant le monde du développement, et je vais m’attacher cette semaine à rédiger différents posts à ce sujet.

Stay tuned !

sub_servers_hyper_v

Microsoft et la virtualisation

C’est avec un regard assez moqueur que je me suis lancé dans le visionnage de la session des TechEd US intitulée “Understanding How Microsoft Virtualization compares to VMWare”.

Regard moqueur puisque convaincu que l’offre de  Microsoft a des années de retard par rapport à celle proposée par VMWare.

J’ai d’ailleurs déjà posté à ce sujet en rappelant l’incroyable non-support du 64 bits sur les OS invités pour les produits de virtualisation suivants : Microsoft Virtual PC, Windows Virtual PC et Virtual Server. Seul Hyper-V supporte ce type  d’architecture pour les OS guest alors même que tous les PC actuels et ceci depuis plusieurs années sont en 64 bits. Il s’agit pour moi d’une limitation inexcusable et totalement anormale qui décribilise totalement l’offre de virtualisation de Microsoft (à l’exception d’Hyper-V).

Je me suis donc lancé dans le visionnage de cette session des teched US en m’attendant à regarder pas mal de bullshit marketing (un peu comme durant le premier keynote du Mix de cette année), et à ma surprise j’ai appris plusieurs points intéressants que je vais partager avec vous via ce post :

  • Premier point (non intéressant mais qui permet de situer le sujet), la session aurait du être nommée “Understanding how Hyper-V and System Center compares to VSphere”. Les autres outils de virtualisation destinés aux postes de travail tels que MS VPC, Win VPC, ou encore VMWare Workstation ou Player n’ont pas du tout été abordés.
  • Lorsque l’on passe d’une infrastructure physique à une infrastructure virtuelle, une des premières questions que l’on se pose est de savoir quelle est la perte de performance à laquelle on peut s’attendre si l’on fait du 1-1. Cette perte semble être d’environ 15%.
  • La notion d’OS guest supporté par Microsoft sur Hyper-V est complètement différente des autres éditeurs. Quand Microsoft indique qu’il supporte tel OS en guest cela signifie qu’il fournit un support complet de l’OS virtualisé. Ainsi quand ils annoncent le support de certaines versions de Red Hat Entreprise Linux, cela signifie qu’ils fournissent le support sur cet OS même si l’incident n’a absolument rien à avoir avec le fait qu’il soit virtualisé. L’éditeur travaille pour cela en collaboration avec les équipes support des OS dédiés.
    Ainsi quand VMWare annonce la plus large gamme d’OS guest supportés, ils ne parlent pas de la même chose puisque par exemple Microsoft ne supporte plus depuis longtemps MS DOS 6.22 que cela soit sur des machines physiques ou virtuelles (alros que VMWare annonce qu’ils supportent cet OS).
  • Les présentateurs ont ensuite proposé le bullshit marketing que j’attendais en expliquant qu’en fait il faut comparer VSphere à Hyper-V ET System Center, que System Center propose beaucoup plus de chose que VSphere mais qu’en fait VMWare propose la gamme VCenter qui est toute jeune et moins mature que System Center blabla, un discours orienté IT pro et non développeurs et qui donc ne m’a pas intéressé Sourire
  • Une session en partie intéressante donc même pour des profils développeurs, en attendant une session qui serait intitulée “How Windows Virtual PC and Microsoft Virtual PC compete with VMWare Workstation and Player”…

    image

    Le V de Coller

    De nature plutôt curieuse, je me pose souvent (bon, ok très souvent) pas mal de questions qui peuvent être dénuées d’intérêt et dont les réponses ne changeront pas ma vie. Je m’attache néanmoins assez souvent à trouver la réponse à ces interrogations telles comme par exemple “quelle est la différence entre du calcaire et du tartre”. – Et pour ceux qui se posent la question, oui je me suis vraiment posé cette question au boulot, ce qui m’a permis accompagné de mes collègues de bureau de prendre 10 min pour rechercher la réponse :)  – Rassurez-vous, je ne vais pas vous parler dans ce blog de carbonate de calcium mais de sujets plus ou moins liés à l’informatique.

    J’inaugure mon nouveau tag “question à la con” avec une question que je me suis posé il y a quelques jours à savoir :

    Pourquoi le raccourci clavier de Coller est Ctrl+V alors qu’il n’y a pas de V ni dans “Coller” ni dans “Paste” ?

    Nous faisons en effet régulièrement un groupe d’actions bien connues formées par :

    Ctrl+Z pour l’annulation, Ctrl+X pour le Couper, Ctrl+C pour le Copier, et enfin Ctrl+V pour le Coller.

    La réponse à la question se trouve justement dans l’ensemble de ces actions sur un clavier QWERTY :

    image

    [Update] En plus de la position des touches sur un clavier Qwerty, un certain Jacques Lamarche (je vous laisse deviner de qui il s’agit ;)) a une explication complémentaire concernant l’utilisation de la lettre V :

    le symbole V est celui que que l’on place dans un texte manuscrit pour désigner l’emplacement d’un texte ommis qui doit être inséré à cet endroit là

    Bonne remarque. Voir la suite dans son commentaire ci-dessous.

    image

    Offre Emploi Developpeur .net

    Vous souhaitez travailler sur les dernières technologies (.net 4.0, WPF, TFS 2010) et le tout dans la belle ville de Pau située à 1h des pistes de ski, et 1h de de l’océan ?

    Présentation de la société Log’in Space

    image La société Log’in Space est l’un des premiers acteurs dans le secteur de l’édition logicielle dans le domaine de l’immobilier. Fournisseur agrée par les plus grands réseaux pour ses logiciels d’Administration de biens, nous accompagnons nos clients dans leurs activités de Gestion Locative, Syndic et Locations de Vacances.

    De lourds investissements engagés depuis plusieurs années nous permettent aujourd’hui de bénéficier d’une offre très complète, éprouvée et technologiquement en avance. LOG’IN SPACE se développe fortement et maintient en permanence un budget recherche et développement important, grâce au réinvestissement de son résultat financier tous les ans.

    x   LOG’IN SPACE compte plus de 15.000 utilisateurs de ses produits GPI ou LOG’IN dans des agences de 1 à plus de 100 postes de travail.

    x   Près de 50 collaborateurs à votre service.

    x   LOG’IN SPACE est le seul éditeur de logiciels de comptabilité immobilière a être engagé dans une démarche qualité ISO 9001-Version 2000, pour l’ensemble des activités de la société : développement, intégration, formation et maintenance de logiciels de gestion immobilière.

     

    Description du poste

    Nous recherchons un (ou une) développeur(se) .net pour renforcer nos équipes. Le (la) titulaire du poste sera en charge du développement de modules complets sur la base de cahier des charges fonctionnels transmis par le bureau d’étude.

    Connaissances techniques requises : Fondamentaux Framework .net, Windows Presentation Foundation, et développement avec SQL Server (fondamentaux T-SQL).

    Des connaissances dans le domaine de l’immobilier et/ou de la comptabilité seraient un plus.

     

    Si ce poste est susceptible de vous intéresser et/ou si vous souhaitez plus d’informations n’hésitez pas à me contacter par mail : prenom.nom@loginspace.fr , via Twitter, ou Facebook !

    image

    L’impact psychologique du nommage

    Ceux qui me suivent sur Twitter le savent, je suis en train de mettre en place TFS 2010 au sein de ma nouvelle société et à cet effet nous avons mis en place une toute nouvelle infrastructure matérielle afin d’utiliser un ensemble de machines virtuelles.

    Lors de la création de la machine virtuelle destinée à l’installation de TFS 2010, un de mes collègues m’a demandé le nom de machine que je souhaitais pour cette machine virtuelle en me demandant si le nom “VM-TFS” me convenait.

    image Je me suis alors empressé de lui dire que je ne souhaitais pas que VM apparaisse dans le nom de la machine afin que les utilisateurs ne puissent pas râler sur l’installation à cause du fait que cela soit une VM. Mon collègue l’a pris sur le ton de l’humour mais j’étais en réalité très sérieux.

    Une VM doit réagir comme une machine physique et je ne souhaite pas que les utilisateurs puissent avoir une image négative de TFS à cause du fait qu’il soit installé dans une machine virtuelle. La société n’a pas l’habitude d’utiliser les technologies de virtualisation, il est donc plus simple de ne pas leur mettre sous les yeux un panneau “Attention c’est une VM” à chaque fois qu’ils vont y accéder. L’idée n’est pas de masquer les choses (la nouvelle infrastructure a été présentée après que la migration de TFS 2005 vers TFS 2010 ait été effectué) mais de faciliter l’adoption d’une nouvelle technologie en supprimant des freins liés à des idées préconçues.

    Dans le domaine du développement, j’ai également conseillé à plusieurs clients de nommer “intelligemment” certaines classes afin d’inciter une réelle maintenance/refactorisation de celles-ci. Durant des revues de code, ou tests de migration, ou autre type d’intervention, j’ai régulièrement trouvé des classes helpers destinées à faciliter l’utilisation d’une fonctionnalité. Ces classes utilisent souvent un nommage du genre “EasyQqueChose” (EasyDB pour l’accès aux bases de données, EasyXml pour la manipulation XML, etc.) pour bien signifier aux développeurs qu’avec cette classe il sera très simple d’effectuer la tâche qu’ils doivent accomplir.

    Seulement avec le temps, la classe destinée à faciliter les choses est devenue un vrai capharnaüm, et est devenue complexe à utiliser. Bien évidemment cette classe doit être refactorée depuis 97879 siècles mais au final elle ne l’est jamais.

    Quand je rencontrais ce genre de cas, je proposais souvent la même idée : prendre quelques minutes pour renommer la classe “EasyQqueChose” en “FuckingComplexAndUnusableQqueChose”. Je ne suis parvenu à faire appliquer cette idée qu’une seule fois  (et oui il y a encore beaucoup de développeurs qui ont peur de renommer une classe…) et étrangement quand je suis revenu quelques semaines plus tard chez ce client la classe avait été refactorée (et donc de nouveau renommée).

    image

    Ce qu’il ne faut pas faire pour vendre un produit…

    C’est le week-end je vous propose donc une petite note légère afin de vous relater une expérience récente.

    Nous sommes en train d’étudier une nouvelle solution afin de réaliser le programme d’installation de notre solution et après discussion avec des collègues, je me mets donc à télécharger la version d’essai d’u très célèbre InstallShield bien que je ne l’avais même pas évoqué dans l’étude que j’avais réalisé et dans le rapport que j’avais rédigé à cet effet.

    Pourquoi ne pas avoir abordé InstallShield ? La raison est très simple, je considère qu’InstallShield fait parti des produits que beaucoup de personnes achètent mais qui au final restent dans la boite. Je l’ai constaté chez mes précédents employeurs mais également chez mes anciens clients, InstallShield parait très bien au début, mais dès qu’on souhaite qu’il réponde à des besoins précis, c’est le début de la fin, c’est le début des galères.

    Durant mon étude j’avais quand même bien évidemment fait quelques recherches sur internet afin d’avoir un ressenti global des dernières versions du produit et ce ressenti était négatif. On trouve en effet assez facilement des retours d’expériences très négatifs de personnes qui déconseille fortement d’utiliser ce produit.

    Un petit tour sur Twitter confirme d’ailleurs cette impression :

    image
    (cliquer pour agrandir)

    Après discussion avec des collègues ayant lu mon rapport, je décide donc quand même de télécharger une version d’essai de cet outil sur le site officiel. Et en garçon bien élevé je remplis donc le formulaire de téléchargement avec mes coordonnées.

    Quelle ne fut pas ma surprise de voir le chef de produit de Flexera Software m’appeler au téléphone alors que je venais à peine de finir de télécharger l’outil (oui nous avons une connexion internet qui aime bien faire le tour du monde avant de nous renvoyer les paquets direction Pau…).

    Suite à ce (court, je vous l’avoue) échange téléphonique, je vous propose donc une petite liste d’éléments à éviter de faire si vous souhaitez me vendre un produit :

    • Règle n°1 : Ne pas me téléphoner alors que je viens à peine de finir de télécharger une version d’essai ! Cela laisse un sentiment d’agression très désagréable. Si je viens de télécharger une version d’essai c’est que… euh… je veux juste essayer le produit. Pour une enquête de satisfaction, un mail ou un appel à la fin de la période d’évaluation est plus pertinent qu’un appel alors que l’on a rien essayé du tout.
    • Règle n°2 : Se présenter correctement afin d’être facilement indentifiable. Hint : La marque InstallShield est immensément plus forte que Flexera Software. Se présenter avec le nom de cette société, c’est être certain de ne pas être identifié par l’aimable personne qui répond au téléphone.
    • Règle n°3 : Si l’on tombe sur quelqu’un de patient qui se dit prêt à prendre 5min pour répondre à des questions, poser des questions PERTINENTES ou à QCM. Le QCM est une excellente forme de questionnaire pour donner l’illusion au sondé de ne pas avoir à réfléchir et de rester passif. Plus le sondé aura l’impression d’avoir à faire avec des questions stupides où les réponses sont évidentes et/ou à des questions qui demandent de réfléchir, plus il y a de chances qu’il se dise “rah il me fait c**** avec ces questions à la ***”. Le QCM permet d’avoir des réponses simplement et rapidement, pas besoin de réfléchir à la formulation de la réponse = peu de rejet.

    Sur ce, vous l’aurez deviné, attendez-vous à avoir un feedback sur InstallShield dans les prochains jours sur ce blog…

    image_312

    Et oh il y a quelqu’un ?

    C’est un peu le sens de la question que l’on m’a posé il y a quelques instants jours où mon interlocuteur me demandait si je connaissais des flux RSS à propos de .net intéressants et en français.

    imageJ’ai en effet un “catalogue” de flux assez important que je m’efforce de maintenir régulièrement (autant en ajoutant des abonnements qu’en en supprimant) et il s’agit d’une des rares choses que j’ai toujours refusé de partager intégralement.

    Mettre en place une veille technologie via RSS demande du temps, et de l’expérience pour arriver à ce qu’une veille journalière soit simple et rapide à faire, bref, pour qu’elle soit efficace. Je ne souhaite donc pas partager l’intégralité de ce travail de fourmi mais j’en partage à l’occasion un extrait par thème pour indiquer par exemple, quels sont les meilleurs flux sur WPF, sur TFS, etc. Je partage néanmoins certains résultats de ma veille via les News de la semaine.

    Revenons donc à nos flux français, et sans avoir besoin de trop réfléchir, je sais déjà que la majorité des flux FR auxquels je suis abonné ne sont pas des flux RSS techniques (alors que la très grande majorité de l’ensemble des flux auxquels je suis abonné l’est…)

    Afin d’avoir une idée plus précise je me suis donc lancé dans un parcours manuel, et je vais partager cette liste avec vous :

    Lionel Limozin http://www.paslatek.net/ [14/03/11]
    Romain Verdier http://codingly.com/ [18/04/10]
    Mitsu Furuta http://mitsufu.wordpress.com/ [21/12/10]
    Guillaume Belmas http://blogs.codes-sources.com/kangoo/default.aspx [28/10/10]
    Michel Perfetti http://blogs.codes-sources.com/miiitch/default.aspx [14/03/11]
    Guillaume Andre http://www.guillaumeandre.com/ [07/11/10]
    David Catuhe http://www.catuhe.com/ [14/03/11]
    Benoit Laut http://benoitlaut.net/ [11/03/11]
    Simon Ferquel http://www.simonferquel.net//blog/Default.aspx [14/06/10]
    Sebastien Pertus http://www.dotmim.com/ [02/03/11]
    Guillaume Lacasa http://blog.adhess.net/ [01/03/11]
    Etienne Margraff http://blogs.codes-sources.com/etienne/ [08/03/11]

    Quelques remarques à propos de cette liste :

    • Je connais personnellement toutes ces personnes. Je pourrais m’auto congratuler en me disant que c’est le résultat d’un excellent networking mais je pencherais plutôt vers une interrogation plus primaire “Euh… Mais ils sont les où les autres, on est les seuls à faire du .net ?”
    • L’exacte moitié d’entre eux sont des anciens collègues
    • Et une moitié seulement ont blogué quelque chose… depuis le  début de l’année
    • En plus de ces flux, je consulte assez régulièrement les blogs de CodeS-SourceS, je m’abonnerais volontiers à certains d’entre eux mais je DETESTE m’abonner à des flux qui n’exposent pas leur contenu en entier. Je considère que l’objectif du RSS est de syndiquer du contenu et non des résumés, il faut donc que je considère que la valeur ajoutée du blog soit assez importante pour que je transige à cette prise de position.
    • En volume, cette liste représente … moins de 5% de mes flux.

    Bloguer (et qui plus est régulièrement) est compliqué et nécessite d’y investir BEAUCOUP de temps. Même si l’on trouve au tout début la motivation pour arriver à consacrer le temps nécessaire à cette activité, il n’en reste pas moins que faire vivre un blog tout au long de l’année est une tâche hardue. Il n’est donc pas très étonnant de voir ce faible nombre de flux et de constater que l’activité de ces flux est en moyenne assez faible.

    De plus, une bonne partie de ces blogs fournissent un contenu qui (et ce n’est que mon avis personnel) ne devrait pas être dans un blog. Le contenu est souvent assez structuré pour ne pas être présenté sous la forme d’un post qui sera lu uniquement par les lecteurs du blog mais devrait faire l’objet d’un article posté sur un des sites communautaires disponibles en France. (ASP-PHP.net, TechHeadBrothers, pour ne citer qu’eux)

    Ces sites permettent d’avoir une visibilité bien supérieure que sur les blogs et permettent de syndiquer du contenu de bonne qualité puisque relu et validé par ses administrateurs / modérateurs. Je pense que le premier réflexe des auteurs est de se dire que le temps investi dans la rédaction d’un article doit leur revenir directement et intégralement. Ce sentiment est légitime mais je reste convaincu qu’il s’agit d’une démarche contre productive pour les raisons évoquées ci-dessus.

    Bon maintenant que je me suis permis d’indiquer que je pensais qu’il y avait moyen de bien mieux faire pour animer et faire vivre la « communauté », je me dois de partager quelques idées/pistes :

    • Mettre en place des blogs multi-auteurs. Parvenir à publier des posts (intéressants et intelligents qui plus est) tous les jours de l’année à 07:00 du matin, et avoir plus d’une année de posts d’avance est réservée à une élite unique, il est inutile de songer à atteindre un tel niveau. La solution si l’on souhaite publier régulièrement des posts de qualité autant sur le fond que la forme (pour le fond et la forme  Codingly est une bonne référence) est de s’y mettre à plusieurs. Si Jean Marc Morandini l’a compris depuis des années, je suis persuadé que des développeurs peuvent faire de même !
    • « Laisser tomber les blogs » et écrire des articles !

    Pour conclure, je tiens à préciser que l’intégralité de ce post ne reflète que mon avis personnel (même si je sais que les idées décrites sont partagées par les quelques personnes qui l’ont lu avant publication) et c’est d’ailleurs bien pour cette raison que cela fut l’objet d’un post de blog et non d’un article 😉

    Et vous qu’en pensez-vous ?

    Wordpress

    A y est !

    image

    Afin de célébrer l’arrivée du printemps, et mon 2000ème tweet (oui je tweete plus que je ne bloggue…), j’ai enfin quitté la plate-forme désuète que j’utilisais depuis bien longtemps afin de me mettre sur la plate-forme avec l’ecosystème le plus riche : WordPress.

    Les objectifs que je souhaitais atteindre en migrant étaient simples :

     

     

    • Ne plus devoir coder pour personnaliser mon blog, mais me reposer sur les différents plugin existants
    • Avoir la possibilité d’avoir assez simplement un blog un peu plus agréable graphiquement (oui, je sais ce n’était pas compliqué de faire mieux…)
    • et enfin avoir un meilleur référencement grâce aux capacités “naturelles” d’un moteur de blog robuste et optimisé.

    Et comme la ‘”tradition” le veut, je vous propose donc un petit post mortem du déroulement de la migration.

    Mais avant de commencer cette description, je tiens à remercier Guillaume André pour avoir réalisé l’image du bandeau du blog !

    Il a en effet réussi à transformer mon magnifique dessin de développeur :

    Sans titre

    en un résultat bien plus agréable pour vos yeux (et pour les miens Sourire ) :

    Sourire

    L’installation de WordPress fut très simple grâce à l’utilisation de Web Platform Installer. Toutes les dépendances nécessaires s’installent toutes seules comme des grandes, et on se retrouve ainsi en 5min avec un WordPress fonctionnel.

    Premier défi : l’import des posts existants. Je ne partais pas en effet de zero puisque je souhaitais récupérer un peu plus de 200 posts. La majorité des bloggeurs qui ont réalisé ce type de migration ont utilisé le langage BlogML. Après avoir fait quelques tests, j’ai constaté que je perdais pas mal de formatage et de mise en page en utilisant cette technique j’en ai donc utilisé une différente : le RSS !

    J’ai donc configuré DasBlog pour exposer l’intégralité de mes posts dans mon flux RSS et importer ce flux dans WordPress qui propose un importer “in the box”.

    Mission réussie, il a ensuite été nécessaire de recatégoriser l’ensemble de ces posts.

    DasBlog ne supporte que les tags et ne supporte pas les catégories contrairement à WordPress. Après avoir utiliser le converter de Catégories/Tags, j’ai donc créé un ensemble de catégories et j’ai ensuite donc classés manuellement les posts selon ces catégories… Il s’agit de la première opération couteuse en temps. J’ai mis un peu moins d’1h30 pour effectuer le classement des 218 posts.

    Comme de plus en plus de thèmes, celui que j’utilise à présent propose des miniatures d’images. Ces miniatures d’images sont à définir manuellement dans l’interface d’administration de wordpress lorsque l’on poste un nouveau contenu. N’allant pas faire manuellement chaque post afin de définir ces miniatures je me suis donc tourné vers le plugin nommé “Auto Post Thumbnail”.

    Ce plugin permet d’automatiquement générer une miniature en fonction du contenu du post que l’on insère. Et il propose même de parcourir l’intégralité du contenu d’un blog afin de regénérer l’ensemble des miniatures. Et la bonne nouvelle est qu’il remplit parfaitement son job.

    image

    Et j’ai ensuite terminé cette migration par la tâche la plus complexe : la mise en place de redirections 301 afin d’éviter que cette migration ne génère beaucoup de liens mort.

    Et cette opération a été bien plus douloureuse que ce que j’avais anticipé malgré les différentes recherches que j’avais effectué afin de préparer cette migration.

    Premier constat, les redirections sont souvent négligées dans la plupart des articles décrivant la migration de DasBlog vers WordPress. Quand elles ne sont pas complètement oubliées, elles sont réalisées d’une manière assez approximative.

    La technique la plus utilisée consiste à créer des regex pour transformer automatiquement d’anciennes url vers le nouveau modèle d’urls. Un système qui peut convenir pour une majorité de posts mais en aucun cas pour l’intégralité.

    Je me suis donc tourné vers le plugin le plus utilisé dans ce cadre : “Redirection”.

    Afin de créer l’intégralité des redirections, j’ai donc souhaité créer un fichier csv qui permettent d’effectuer le matching de toutes les urls.

    Et pour cela j’ai utilisé une technique très simple bien qu’apparemment personne ne l’utilise, j’ai utilisé tout simplement les fichiers sitemaps de l’ancien blog et du nouveau ! Les fichiers sitemaps sont un catalogue de l’ensemble des contenus d’un blog, il s’agit donc de l’élément idéal pour effectuer le matching.

    Ce matching a de plus été effectué très simplement puisque je n’ai appliqué qu’un simple tri alphabétique sur les urls regroupées pour avoir un matching exact à 100%.

    image

    Je me suis arracher les cheveux pour arriver à faire comprendre mon beau csv au plugin Redirection… Pour finalement laisser tomber en concluant que ce plugin ne fonctionne pas avec IIS…

    Je me suis donc tourné vers une solution de plus bas niveau, le module d’url rewriting de IIS7 qui permet d’effectuer des redirections d’url.

    Ce module stocke dans le web.config les urlmaps que l’on définit, j’ai donc écrit une moulinette afin de transformer mon csv en éléments xml que j’ai inséré dans le fichier de config pour parvenir à mes fins.

    Et me voilà donc enfin sur wordpress, avec un blog fonctionnel et personnalisable que je vais pouvoir m’empresser de remplir de contenu !

    Blog en Travaux

    Ce blog est en travaux pendant (j’espère) quelques heures. Je quitte en effet la plate-forme DasBlog (qui ne vit plus) pour rejoindre la communautés des utilisateurs de la plate-forme la plus populaire au monde : WordPress !

    Je vais donc m’attacher à migrer les anciens posts sur ce nouveau blog, bien évidemment l’adresse du blog de change pas, tout comme le feed RSS qui reste le même !

    Oui, j’effectue cette migration en live (en ayant préparé un minimum quand même…), ce blog n’est pas une application en production mais un simple blog, cela n’est donc pas grave s’il est offline pendant quelques heures !

    Log de migration :

    [13:21] Installation WordPress OK

    [13:27] Installation Rewriting OK

    [13:40] Installation Thème OK

    [13:50] Posts importés OK !

    [14:35] Re-Catégorisation des 219 posts OK

    [15:55] Victoire ! Problème des thumbnails résolu !

    [18:40] Redirections 301 dans url dans anciens posts vers les nouvelles URL OK !

    [18:45] Migration terminée !