Le buzz marketing, aussi appelé à tort buzz (terme anglicisme renvoyant au bourdonnement d’abeille) est une technique marketing dont le but est de déclencher un bouche à oreille positif autour d’une marque ou d’un produit. La viralité, c’est-à-dire le bouche à oreille, étant la base de sa propagation, on parle souvent de marketing viral. Concrètement, lorsque une idée est créative et originale, elle est vouée à être massivement relayée par les médias sociaux. L’individu est … Lire la suite
Cet article original est publié sur Websourcing.fr.
Toute reproduction, même partielle, est interdite sans l’accord explicite de son auteur sauf citation de quelques lignes accompagnées d’un lien (permalien : http://blog.websourcing.fr/ontheweb/bad-buzz-pourquoi-comment-repondre-2/) vers ce billet.
Le bad buzz, pourquoi et comment y répondre
Avec l’évolution des technologies, j’ai complètement abandonné l’idée d’avoir une chaine HIFI autonome. J’utilise mon iPhone qui me sert à la fois de radio (avec LiveRadio) et de lecteur MP3, voire même de chaine de salon grâce à une colonne-enceinte de qualité. J’ai également des enceintes qui servent également de chargeurs dans d’autres pièces. C’est pratique et le son est meilleur qu’avec l’iPhone seul. Avec le concours de GSM55, j’ai été amené à tester un … Lire la suite
Cet article original est publié sur Websourcing.fr.
Toute reproduction, même partielle, est interdite sans l’accord explicite de son auteur sauf citation de quelques lignes accompagnées d’un lien (permalien : http://blog.websourcing.fr/test-mini-haut-parleur-stereo-portable-bluetooth-gagner/) vers ce billet.
[Test] Mini Haut-parleur Stéréo Portable Bluetooth à gagner
Votre nom (obligatoire) Votre email (obligatoire) [email* your-email] Url de votre partage social (obligatoire) [textarea* your-message] Votre message [textarea your-message] [submit "Envoyer"] Concours Haut parleur BT [your-name] De : [your-name] Sujet : [your-subject] Corps du message : [your-message] – Ce email a été envoyé via formulaire de contact le Websourcing.fr http://blog.websourcing.fr lionel@websourcing.fr [your-subject] [your-name] Corps du message : [your-message] – Ce email a été envoyé via formulaire de contact le Websourcing.fr http://blog.websourcing.fr [your-email] Votre message … Lire la suite
Cet article original est publié sur Websourcing.fr.
Toute reproduction, même partielle, est interdite sans l’accord explicite de son auteur sauf citation de quelques lignes accompagnées d’un lien (permalien : http://blog.websourcing.fr/?post_type=wpcf7_contact_form&p=36630) vers ce billet.
concours_haut_parleur_BT_GSM55
Une vague d’émotion sans précédente s’est emparée du Web (que j’ai l’habitude de lire) après la récente tragique disparition d’Aaron Swartz à l’âge de 26 ans. Il faut dire qu’il en avait fait des choses en une pourtant si courte période !
Nous avons décidé de lui rendre hommage en traduisant collectivement l’un des articles de son blog où il évoque son parcours et ses nombreux projets.
Cet article a été initialement écrit en 2007. Aaron avait alors à peine 20 ans…
Aaron Swartz - 18 août 2008 - Blog personnel
(Traduction : ga3lig, clementd, Amic, tth, bld, KoS, Havok Novak, a_r_n_a_u_d_b, jpcw + anonymous)
L’écrivain américain Kurt Vonnegut avait l’habitude de toujours nommer ses interventions « Comment obtenir un travail comme le mien » pour parler ensuite de ce que bon lui semblait. Je suis plutôt dans la situation inverse. On m’a informé que je pouvais parler de n’importe quel sujet qui m’intéressait et j’ai donc décidé, plutôt que de pontifier sur l’avenir d’Internet ou de la puissance de la collaboration massive, que la discussion la plus intéressante était probablement celle-ci : « Comment bénéficier d’un travail comme le mien » (NdT : ce texte a été rédigé en préparation d’une conférence donnée au congrès informatique Tathva à NIT Calicut en 2007).
Comment ai-je réussi à dégotter ce job ? Sans aucun doute, la première étape a été de faire le bon choix, c’est-à-dire les bons gènes : à la naissance, j’étais un garçon, blanc, et américain. Ma famille était relativement aisée et mon père travaillait dans l’industrie informatique. Hélas, il n’existe à ce jour aucun moyen d’influer sur ce genre de choses donc je ne vous serai probablement d’aucune utilité sur ce point.
En revanche, quand j’ai débuté, j’étais un très jeune gamin coincé dans une petite ville au milieu de la campagne. J’ai donc dû trouver quelques astuces pour m’en sortir. En espérant rendre la vie un peu moins injuste, je me suis dit que je pourrais les partager avec vous.
La première chose que j’ai faite, et qu’a priori vous avez tous déjà faite, c’était d’apprendre des choses à propos des ordinateurs, d’Internet et de la culture Internet. J’ai lu un paquet de livres, j’ai lu une quantité énorme de pages Web et j’ai essayé des trucs. J’ai commencé par rejoindre des listes de diffusion et j’ai essayé de comprendre les discussions jusqu’à ce que je me sente assez à l’aise pour me lancer et y participer à mon tour. Ensuite, j’ai regardé des sites Web et j’ai essayé de construire le mien. À la fin, j’ai appris à construire des applications Web et j’ai commencé à le faire. J’avais treize ans.
Le premier site que j’ai réalisé s’appelait get.info. L’idée était d’avoir une encyclopédie en ligne gratuite, que chacun pourrait éditer, ou compléter, ou réorganiser à travers son navigateur. J’ai tout développé, ajouté un tas d’options sympas, testé ça sur tous les types de navigateurs et j’en étais très fier. J’ai même remporté un prix pour la meilleure application Web de cette année-là. Malheureusement, les seules personnes que je connaissais à cette époque étaient d’autres jeunes de mon école, donc je n’avais pas grand monde pour écrire des articles d’encyclopédie. (Heureusement, quelques années plus tard, ma mère m’a montré ce nouveau site appelé « Wikipédia » qui faisait la même chose.)
Le second site s’appellait my.info. L’idée était qu’au lieu d’aller à la recherche d’informations sur toutes sortes de pages Web différentes, il suffisait d’avoir un programme qui allait chercher les nouveautés dans toutes ces pages Web et qui les regrouperait à un seul endroit. Je l’ai construit et je l’ai fait marcher, mais il se trouve qu’à l’époque, je n’étais pas le seul à avoir eu ce genre d’idée. Beaucoup de gens travaillaient sur cette nouvelle technique, appelée alors « syndication ». Un groupe d’entre eux s’est mis à part et a décidé de travailler sur une spécification appelée RSS 1.0, et je les ai rejoints.
C’était l’été, je n’étais pas à l’école et je n’avais pas de boulot, j’avais donc beaucoup de temps libre à disposition. Et je l’ai entièrement consacré à lire la liste de diffusion de RSS 1.0 et à faire toutes sortes de travaux bizarres et tout ce qu’il y avait d’autre à faire. Assez rapidement, on m’a demandé si je voulais devenir membre du groupe, et je me suis retrouvé être co-auteur, puis co-éditeur de la spécification RSS 1.0.
RSS 1.0 était construit au-dessus d’une technologie appelée RDF, source de débats agités sur les listes de diffusion de RSS. J’ai donc commencé à m’intéresser à RDF, j’ai rejoint les listes de diffusion autour de RDF, lu des choses, posé des questions idiotes pour lentement commencer à comprendre comment ça marchait. Assez rapidement, je devenais connu dans le petit monde du RDF et quand ils ont annoncé la création d’un nouveau groupe de travail destiné à créer la prochaine spécification RDF, j’ai décidé de m’y glisser.
Premièrement, j’ai demandé aux membres du groupe de travail si je pouvais m’y joindre. Ils m’ont répondu négativement. Mais je voulais vraiment faire partie de ce groupe de travail, alors j’ai décidé de trouver un autre moyen. J’ai lu le règlement du W3C, qui expliquait le fonctionnement d’un groupe de travail. Les règles indiquaient que, bien que se réservant le droit de rejeter toute demande d’adhésion individuelle, il suffisait que l’une des organisations faisant partie des membres officiels du W3C sollicite la participation d’un candidat pour qu’elle soit acceptée d’emblée. Ainsi, j’ai examiné en détail la liste des organisations membres du W3C, découvert celle qui me paraissait la plus accessible et lui ai demandé de m’inclure dans ce groupe de travail. Et c’est ce qu’ils ont fait !
Faire partie d’un groupe de travail impliquait des communications téléphoniques hebdomadaires avec les autres membres, un tas de discussions sur des listes de diffusion et sur IRC, de temps à autre de voyager vers d’étranges villes pour des rencontres réelles et une quantité de prises de contact avec des personnes à connaître partout.
J’étais aussi un chaud partisan de RDF, j’ai ainsi œuvré ardemment à convaincre d’autres de l’adopter. Quand j’ai découvert que le professeur Lawrence Lessig lançait une nouvelle organisation appelée Creative Commons, je lui ai transmis un courriel lui conseillant d’adopter RDF pour son projet et lui ai expliqué pourquoi. Quelques jours après, il me répondit : « Bonne idée. Pourquoi ne le ferais-tu pas pour nous ? »
Donc, j’ai fini par rejoindre les Creative Commons, qui m’ont fait m’envoler vers toutes sortes de conférences et de réunions, et je me suis retrouvé en train de rencontrer encore plus de gens. Parmi tous ces gens qui commençaient à savoir qui j’étais, j’en suis arrivé à me faire des amis dans un paquet d’endroits et de domaines différents.
Puis j’ai laissé tout ça de côté et je suis allé à l’université pour un an. Je suis allé a l’université de Standford, une petite école idyllique en Californie où le soleil brille toujours, où l’herbe est toujours verte et où les jeunes sont toujours dehors à se faire bronzer. Il y a des enseignants excellents et j’ai sans aucun doute beaucoup appris, mais je n’y ai pas trouvé une atmosphère très intellectuelle étant donné que la plupart des autres jeunes se fichaient apparemment profondément de leurs études.
Mais vers la fin de l’année, j’ai reçu un courriel d’un écrivain nommé Paul Graham qui disait démarrer un nouveau projet, Y Combinator. L’idée derrière Y Combinator était de trouver un groupe de développeurs vraiment talentueux, les faire venir à Boston pour l’été, leur donner un peu d’argent et la base administrative pour lancer une société. Ils travaillent alors très, très dur pour apprendre tout ce dont ils ont besoin de savoir sur le monde des affaires, en les mettant en contact avec des investisseurs, des clients, etc. Et Paul suggéra que je m’inscrive.
Donc je l’ai fait, et après beaucoup de peine et d’efforts, je me suis retrouvé à travailler sur un petit site appelé Reddit.com. La première chose à savoir à propos de Reddit était que nous n’avions aucune idée de ce que nous étions en train de faire. Nous n’avions pas d’expérience dans les affaires, nous n’avions pratiquement pas d’expérience en création de logiciels au niveau qualité d’un produit fini. Et nous n’avions aucune idée si, ou pourquoi, ce que nous faisions fonctionnait. Chaque matin, nous nous levions et nous vérifiions que le serveur n’était pas tombé en panne et que le site ne croulait pas sous les messages indésirables, et que nos utilisateurs étaient toujours présents.
Lorsque j’ai commencé à Reddit, la croissance était lente. Le site avait été mis en ligne très tôt, quelques semaines après avoir commencé à travailler dessus, mais pendant les trois premiers mois, il a difficilement atteint trois mille visiteurs par jour, ce qui représente un minimum pour un flux RSS utilisable. Nous avons ensuite, lors d’une session marathon de codage de quelques semaines, transféré le site de Lisp à Python et j’ai écrit un article sur mon blog au sujet de cet exploit. Il a beaucoup attiré l’attention (même l’enfer ne peut déclencher autant de colère que celle d’un fan de Lisp mécontent) et encore aujourd’hui les gens que je rencontre en soirée, lorsque que je mentionne que j’ai travaillé à Reddit, disent : « Oh, le site qui a migré depuis Lisp. »
C’est à ce moment-là que le trafic à vraiment commencé à décoller. Dans les trois mois qui ont suivi, le trafic a doublé à deux reprises. Chaque matin, nous nous levions pour vérifier les statistiques et voir comment nous nous en sortions, vérifier si une nouvelle fonctionnalité que nous avions lancée nous avait attiré plus de monde, ou si le bouche à oreille continuait de faire parler de notre site, ou encore si tous nos utilisateurs nous avaient abandonnés. Et, chaque jour, le nombre de visiteurs progressait. Mais nous ne pouvions nous empêcher d’avoir l’impression que la croissance du trafic était encore plus rapide lorsque nous arrêtions de travailler sur le site.
Nous n’avions toujours pas d’idée sur la façon de gagner de l’argent. Nous avons vendu des t-shirts sur le site, mais, chaque fois, l’argent récupéré sur la vente servait à racheter encore plus de t-shirts. Nous avons signé avec un acteur majeur de la publicité en ligne pour vendre de la publicité sur notre site, mais cela n’a guère fonctionné, en tout cas pas pour nous, et il était rare que nous touchions, en réalité, plus de deux dollars par mois. Une autre idée était de commercialiser, sous licence, le savoir-faire « Reddit » pour permettre à d’autres de monter des sites sur le modèle Reddit. Mais nous n’avons trouvé personne d’intéressé pour acquérir notre licence.
Rapidement, Reddit a acquis des millions d’utilisateurs chaque mois, un chiffre qui dépasse de loin le magazine américain moyen. Je le sais, car j’ai discuté, à cette période, avec de nombreuses maisons d’édition. Ils se sont tous demandés comment le charme de Reddit pourrait opérer pour eux.
De plus, les sites d’actualités en ligne ont commencé à voir que Reddit pourrait leur envoyer un énorme trafic. Ils ont pensé, d’une certaine manière, encourager cela en ajoutant un lien « reddit this » à tous leurs articles. Pour autant que je sache, ajouter ces liens n’améliore pas vraiment votre chance de devenir populaire sur Reddit (bien que cela rende votre site plus moche), mais cela nous a offert beaucoup de publicité gratuite.
Assez rapidement, la discussion avec nos partenaires se dirigeait vers une négociation d’acquisition. L’acquisition : la chose dont nous avions toujours rêvé ! Il n’y aurait plus à s’inquiéter de faire du profit. Des entreprises externes se chargeaient de cette responsabilité en contrepartie de faire notre fortune. Nous avons tout laissé tomber pour négocier avec nos acheteurs. Et ensuite, cela est resté à l’abandon.
Nous avons négocié pendant des mois. Au début, nous débattions sur le prix. Nous préparions des « business plans » et des feuilles de calcul, puis allions au siège social pour faire des présentations et affronter des réunions et des appels téléphoniques sans fin. Finalement, ils refusèrent notre prix et nous sommes donc repartis. Plus tard, ils changèrent d’attitude, nous nous sommes serrés la main et nous étions d’accord sur la transaction pour finalement commencer à renégocier sur certains autres points cruciaux, et nous éloigner à nouveau. Nous avons dû nous retirer trois ou quatre fois avant d’obtenir un contrat acceptable. Au final, nous avons dû arrêter de travailler efficacement pendant six mois.
Je commençais à devenir malade d’avoir à consacrer autant de temps à l’argent. Nous commencions tous à être affectés par le stress et le manque de travail productif. Nous avons commencé à nous disputer et ensuite à ne plus nous parler, avant de redoubler d’efforts pour retravailler ensemble, pour retomber finalement dans nos errements. L’entreprise a failli se désintégrer avant que la transaction ne se concrétise.
Mais finalement, nous sommes allés chez nos avocats pour signer tous les documents et le lendemain matin, l’argent était sur nos comptes. C’était terminé.
Nous nous sommes tous envolés pour San Francisco et avons commencé à travailler dans les bureaux de Wired News (nous avions été rachetés par Condé Nast, une grande entreprise de publication qui possède Wired et de nombreux autres magazines).
J’étais malheureux. Je ne pouvais pas supporter San Francisco. Je ne pouvais pas supporter une vie de bureau. Je ne pouvais pas supporter Wired. J’ai pris de longues vacances de Noël. Je suis tombé malade. J’ai pensé à me suicider. J’ai fui la police. Et quand je suis revenu le lundi matin, on m’a demandé de démissionner.
Les quelques premiers jours sans travail ont été bizarres. Je tournais en rond chez moi. Je profitais du soleil de San Francisco. Je lisais quelques livres. Mais rapidement, j’ai senti que j’avais besoin, à nouveau, d’un projet. J’ai commencé à écrire un livre. Je désirais collecter toutes les bonnes études dans le domaine de la psychologie pour les raconter, non pas comme des analyses, mais comme des histoires. Chaque jour, je descendais à la bibliothèque de Stanford pour y faire des recherches. (Stanford est une école réputée en psychologie.)
Mais un jour, Brewster Kahle m’a appelé. Brewter est le fondateur de The Internet Archive, une organisation formidable qui essaye de numériser tout ce qu’elle trouve pour le publier sur le Web. Il m’a dit qu’il voulait démarrer un projet dont nous avions parlé à l’époque. L’idée serait de rassembler l’information de tous les livres du monde dans un lieu unique, un wiki libre. Je me suis mis immédiatement au travail, et dans les quelques mois qui ont suivi, j’ai commencé à contacter les bibliothèques, mettre à contribution des programmeurs, cogiter avec un designer et faire plein d’autres trucs pour mettre ce site en ligne. Ce projet a fini par devenir Open Library. Il a été développé en grande partie par un talentueux programmeur indien : Anand Chitipothu.
Un autre ami, Seth Roberts, a suggéré que nous devrions trouver le moyen de réformer le système des études supérieures. Nous n’arrivions pas à nous mettre d’accord sur une solution satisfaisante, mais nous avons eu une autre bonne idée : un wiki qui explique aux étudiants à quoi ressemblent les différents métiers. Ce site va être bientôt lancé…
Ensuite, un autre ancien ami, Simon Carstensen, m’a envoyé un e-mail disant qu’il avait obtenu son diplôme universitaire et qu’il cherchait à monter une entreprise avec moi. En fait, j’avais gardé une liste d’entreprises qui pourraient être d’excellentes idées et j’ai pris la première de la liste. L’idée était de créer un site Web aussi simple à remplir qu’un champ texte. Pendant les mois suivants, nous avons travaillé d’arrache-pied à rendre les choses de plus en plus simples (et un peu plus complexes aussi). Le résultat, avec le lancement il y a quelques semaines, est le site : Jottit.com.
Je me suis aussi engagé en tant que conseiller pour deux projets du Summer of Code, les deux étant étonnamment ambitieux et avec un peu de chances, ils devraient être lancés bientôt.
J’ai décidé également alors de m’impliquer dans le journalisme. Mon premier article papier vient d’être publié.
J’ai aussi lancé quelques blogs sur la science et j’ai commencé à travailler à rédiger un article académique moi-même. Il se base sur une étude que j’avais conduite il y a quelques temps sur les rédacteurs effectifs de Wikipédia. Quelques personnes, y compris Jimmy Wales, qui est en quelque sorte le porte-parole de Wikipédia, affirmait que Wikipédia n’était pas, tout compte fait, un projet massivement collaboratif, mais était plutôt rédigé par une équipe d’à peu près 500 auteurs, qu’il connaissait pour la plupart. Il avait fait quelques analyses simples pour le mettre en évidence, mais j’ai vérifié attentivement les chiffres et j’arrive à la conclusion inverse : la grande majorité de Wikipédia a été écrite par de nouveaux rédacteurs, la plupart ne s’étant pas donné la peine de créer un compte, ajoutant quelques phrases de ci de là. Comment Wales a-t-il pu commettre une telle erreur ? Il a analysé le nombre de modifications effectuées par chaque auteur sans vérifier la nature de ces modifications. Or la grande majorité de leurs modifications sont tout à fait mineures : ils font des choses comme des corrections orthographiques ou des remises en forme. Il semble plus raisonnable de croire que ces 500 personnes se comportent plus comme des inspecteurs que comme des producteurs de contenu.
Quel est le secret ? Comment pourrais-je condenser les choses que je fais dans des phrases concises qui me correspondent le plus ? Allons-y :
J’ai suivi cette ligne de conduite. Et voilà où j’en suis aujourd’hui, avec une douzaine de projets en tête et mon niveau de stress toujours au plus haut.
Chaque matin, je me lève et vérifie mes courriels pour savoir lequel de mes projets a implosé aujourd’hui, quelle date limite a été dépassée, quels discours je dois préparer et quels articles doivent être rédigés.
Un jour, peut-être, vous aussi serez dans la même situation. Si tel est le cas, j’espère que j’y aurai modestement contribué.
Crédit photo : Sage Ross (Creative Commons By-Sa)
Dropzone.js is a light weight JavaScript library for jQuery that turns an HTML element into a dropzone. It supports multiple file uploads and also supports image previews (with nice progress bars). Homepage: http://www.dropzonejs.com/ GutHub: https://github.com/enyo/dropzone
Every week we tweet a lot of interesting stuff highlighting great content that we find on the web that can be of interest to web designers. The best way to keep track of our tweets is simply to follow us on Twitter, however, in case you missed some here’s a quick and useful compilation of [...]
Chercher son nom sur Google peut parfois être inquiétant : certains résultats ne permettent pas d’améliorer son identité numérique. On pense aux profils sur les médias sociaux, qui peuvent parfois nuire à votre e-réputation. Bien-sûr, l’indexation de ces profils peut aussi devenir un avantage. S’ils attestent de vos compétences et de votre sérieux, cela peut influencer un recruteur. Mais si vous souhaitez opter pour un usage plus personnel de certains réseaux, vous pouvez faire disparaître … Lire la suite
Cet article original est publié sur Websourcing.fr.
Toute reproduction, même partielle, est interdite sans l’accord explicite de son auteur sauf citation de quelques lignes accompagnées d’un lien (permalien : http://blog.websourcing.fr/ontheweb/faire-disparaitre-profils-sociaux-moteurs-recherche/) vers ce billet.
Faire disparaître ses profils sociaux des moteurs de recherche
Chaque jeudi à 21h, rendez-vous sur le framapad de traduction, le travail collaboratif sera ensuite publié ici même.
Traduction Framalang :
, , , , , , , , , , , , ,Thiago Madeira
Thiago Macieira est doublement diplômé. Il a une maîtrise en administration des affaires (MBA) et un diplôme d’ingénieur. Mais son implication dans le mouvement open source, depuis près de 15 ans maintenant, est antérieur à ses diplômes. Participant actif des communautés KDE, Qt et MeeGo, il a été ingénieur logiciel et responsable produit pour Qt, il a fait des conférences et il a écouté les gens. À présent, Thiago vit à Oslo en Norvège et quand il ne travaille pas sur Qt, il essaye — sans grande réussite — d’améliorer son skill à StarCraft 2.
Les problèmes forment une routine à laquelle nous sommes confrontés presque tous les jours ; nous les résolvons et c’est tellement habituel que bien souvent nous n’en avons même pas conscience. Cela peut être des situations aussi simples que chercher le meilleur chemin pour arriver à destination ou trouver la meilleure façon de tout faire tenir dans le réfrigérateur. Ce n’est que lorsque nous ne parvenons pas à les résoudre immédiatement que nous remarquons les problèmes car nous devons alors nous arrêter et y réfléchir. Notre vie professionnelle n’échappe pas à cette règle et la résolution de problèmes commence à faire partie de la description du poste à pourvoir.
La résolution de problèmes était le sujet de mon premier cours quand j’ai commencé ma formation d’ingénieur. Dans cet amphithéâtre bondé du siècle dernier, notre professeur expliquait à environ 700 étudiants de première année en quoi les ingénieurs étaient des solutionneurs de problèmes et comment nos vies professionnelles consisteraient à enchaîner les problèmes à résoudre. Certains seraient des problèmes faciles résolus en deux temps trois mouvements ; d’autres seraient tellement difficiles que nous aurions besoin d’une structure de projet et d’une équipe pour les résoudre — mais la plupart se situeraient entre ces deux extrêmes. Puis il commença à donner des exemples sur la façon dont sa propre mentalité de « solutionneur de problèmes » l’avait aidé dans sa vie professionnelle et personnelle, et nous offrit même un exemple en direct quand tout à coup le projecteur nous tomba dessus.
La faculté de résoudre des problèmes est un talent que nous pouvons affiner par la pratique et un travail de fond. La pratique est quelque chose que l’on ne peut acquérir que par l’expérience, par succession d’essais et d’erreurs (1) ; ce n’est donc pas quelque chose qu’on peut apprendre dans un livre. Se mettre en situation de résoudre des problèmes, en revanche, est quelque chose que l’on peut apprendre. Face au problème, l’expérience est comme notre boîte à outils, et les techniques de résolution le mode d’emploi des outils.
La question à laquelle nous essayons de répondre fournit la direction que nous allons prendre en essayant de résoudre le problème. Posez la mauvaise question et les réponses seront peu pertinentes, invalides ou juste complètement fausses. Par conséquent, poser la bonne question est essentiel. De plus, poser correctement la bonne question est important, car cela apporte des indices quant à ce que nous recherchons. La manière la plus inutile d’énoncer un problème qu’on puisse rencontrer est : « ça marche pas », c’est pourtant un grand classique. Certes, l’énoncé est juste, puisque manifestement quelque chose a planté. Néanmoins, cette façon de présenter le problème n’apporte aucun indice sur le point de départ pour rechercher des solutions.
Les systèmes de gestion de bogues imposent souvent au rapporteur du bogue de préciser les actions effectuées qui ont conduit à ce problème, la description de ce qui s’est passé (c’est-à-dire le symptôme) et une description du comportement attendu. La comparaison entre le symptôme et le comportement attendu est un bon point de départ pour poser la question fondamentale : « pourquoi cela s’est-il produit, pourquoi cet autre comportement ne s’est-il pas produit ? ». Même si ce n’est pas la seule manière d’y arriver, appliquer cette technique à des problèmes peut certainement aider à formuler la question.
Formuler correctement le problème et la question, dans ses moindres détails, est aussi une manière de décrire davantage le problème tel qu’il s’est manifesté. En premier lieu, nous devons avoir conscience que le problème ne se trouve probablement pas où nous nous attendons à le trouver — si c’était le cas, nous l’aurions probablement déjà résolu. Présenter tous les détails du problème permet à l’assistance technique d’avoir plus d’informations pour travailler. De plus, même si c’est contre-intuitif, le fait de décrire le problème dans sa totalité conduit souvent à trouver la solution, si bien que de nombreux groupes de développement ont besoin que des développeurs se concentrent sur cette tâche, soit en discutant avec un collègue soit en s’adressant à un être innocent, tel qu’un canard en caoutchouc ou M. Patate.
De plus, il faut revenir régulièrement à la question afin de garder l’objectif dans le viseur. Lors de la résolution du problème, il convient de faire attention à ne pas se concentrer exclusivement sur l’une de ses parties en perdant de vue l’objectif global. Pour la même raison, il est nécessaire de reprendre la question de départ lorsqu’on a trouvé une solution éventuelle, pour pouvoir s’assurer qu’elle couvre bien l’intégralité du problème. Là encore, cela prouve bien la nécessité de poser la bonne question, qui décrira le problème dans son intégralité : sans la question complète, la solution pourrait être également incomplète.
L’expérience que j’ai acquise en aidant des utilisateurs en ligne à résoudre leurs problèmes m’a appris que la plupart des personnes considérent leurs difficultés comme des blocs d’achoppement, monolithiques et indivisibles, qu’il faut traiter comme un tout. Vu sous cet angle, un vaste problème pose une question à laquelle il est très difficile de répondre entièrement.
À vrai dire, la grande majorité de ces problèmes peut se décomposer en plusieurs petits problèmes qu’il est donc plus facile de traiter séparément afin de déterminer s’ils sont la cause originelle du problème, sans parler de la possibilité qu’il y ait plusieurs origines au symptôme rapporté. Répéter cette opération, ne serait-ce qu’un petit nombre de fois, revient à s’attaquer à des problèmes mieux circonscrits, et amène par conséquent à des solutions plus rapides.
Cependant, plus nous sommes obligés de décomposer, plus nous devons connaître le fonctionnement interne du système que nous avons sous la main. De fait, celui qui doit résoudre un problème ne pourra le décomposer qu’aussi loin que sa connaissance du sujet le lui permettra, et c’est depuis ce point qu’il pourra ensuite traiter la question.
Pour ce qui concerne le développement logiciel, les sous-systèmes utilisés sont souvent de bons indices pour trouver comment décomposer le problème. Par exemple, si le problème implique une transmission de données par TCP/IP, deux subdivisions possibles sont l’expéditeur et le destinataire : il ne sert à rien de chercher le problème du côté du destinataire si l’expéditeur ne transmet pas les données correctement. De même, une application graphique qui n’affiche pas les données appelées dans une base de données a une division claire : ce serait une bonne idée de vérifier d’abord que l’accès à la base de données fonctionne avant d’enquêter sur la cause du mauvais affichage. Par ailleurs, on pourrait également envoyer des informations quelconques aux fonctions d’affichage et vérifier que ces données s’affichent correctement.
Même quand les regroupements ne sont pas faciles à faire, diviser le problème peut tout de même contribuer à éclairer la question. En fait, les divisions sont presque toujours utiles, car elles réduisent la quantité de code à inspecter et le niveau de complexité à gérer. Au pire, le simple fait de diviser le code en deux parties et de chercher le problème dans l’une des deux peut être utile. Cette technique, nommée bissection, est recommandée si les divisions créées à partir des sous-systèmes et des interfaces n’ont pas encore apporté de solution.
Une succession de divisions appropriées aura pour résultat final un petit exemple autonome qui expose le problème. À ce stade, l’une des trois options suivantes est habituellement la bonne : le problème peut être identifié et localisé ; le code est en fait correct et c’était ce que l’on en attendait qui était faux ; ou bien un bogue a été trouvé dans la couche de code de plus bas niveau. Un des avantages de ce procédé, c’est qu’il génère un scénario de test à joindre à un rapport de bogue, pour peu que qu’un bogue soit en cause.
Une question similaire à la division du problème est celle des conditions aux limites. En mathématiques et en physique, les conditions aux limites sont l’ensemble des valeurs qui déterminent la région de validité des équations résolues. Pour le logiciel, les conditions aux limites sont l’ensemble des conditions qui doivent être satisfaites pour que le code s’exécute correctement. Habituellement, les conditions aux limites sont loin d’être simples : à la différence des mathématiques ou de la physique, les variables des systèmes logiciels sont beaucoup trop nombreuses, ce qui signifie que leurs conditions aux limites sont également légion.
Dans les systèmes logiciels, les conditions aux limites sont souvent nommées « conditions préalables », c’est-à-dire des conditions qui doivent être satisfaites avant qu’une certaine action ne soit autorisée. Vérifier que ces conditions prélalables ont été satisfaites est un bon exercice dans la recherche d’une réponse, car leur violation est clairement un problème qui doit être résolu — quand bien même ce n’est pas la cause première du problème initial. Des conditions préalables peuvent tout simplement prendre la forme d’un pointeur qui doit être valide avant qu’on puisse le déréférencer, ou d’un objet qui ne doit pas être éliminé avant de pouvoir être utilisé. Les conditions préalables complexes seront très probablement documentées en vue de l’utilisation du logiciel.
Un autre groupe intéressant de conditions aux limites se caractérise, curieusement, par ce qui n’est pas autorisé : le comportement indéfini. Ce type de conditions aux limites est très commun lorsque l’on traite des spécifications qui essaient d’être très explicites sur la manière dont le logiciel est censé se comporter. Les compilateurs et les définitions de langage en sont un bon exemple. À strictement parler, déréférencer un pointeur null est un comportement indéfini : la conséquence la plus commune en est l’enregistrement d’une exception du processeur et l’arrêt du programme, mais d’autres comportements sont aussi autorisés, y compris le fonctionnement sans faille.
Si les ingénieurs sont des solutionneurs de problèmes, la devise de l’ingénieur est « Utilise le bon outil pour le bon usage ». Cela peut sembler évident, étant donné qu’on ne s’attend pas à ce que quelqu’un utilise un marteau pour résoudre un problème électronique. Cependant, les cas d’utilisation du mauvais outil sont plutôt fréquents, souvent parce qu’on ignore qu’il existe un meilleur outil.
Certains de ces outils sont la base du développement logiciel, comme le compilateur et le débogueur. L’incapacité à se servir de ces outils est impardonnable : le professionnel qui se retrouve dans un environnement d’outils nouveaux ou inconnus, si par exemple il change de poste ou d’emploi, doit consacrer du temps à apprendre à les utiliser, à se familiariser avec leurs fonctionnalités et limitations. Par exemple, si un programme plante, être capable de déterminer l’endroit du plantage ainsi que les variables appelées dans cette portion du code peut aider à trouver la cause du problème et donc la solution.
D’autres outils peu connus sont plus évolués, prévus pour des emplois spécifiques, ou encore ne sont disponibles qu’à un prix ou sous des conditions que l’ingénieur ne peut réunir. Ils peuvent toutefois être incroyablement utiles pour contribuer à la résolution de problèmes. Il peut s’agir de vérificateurs de code statique ou de processus, de débogueurs de mémoire, d’enregistreurs d’événements matériels, etc. Par exemple, le matériel de développement inclut souvent un système permettant de le contrôler à l’aide d’une interface spéficique comme JTAG ou de lister toutes les instructions exécutées et l’état des processeurs. Mais cela nécessite d’avoir du matériel et des outils spécifiques, qui ne sont pas facilement accessibles et coûtent plus cher que les machines et périphériques grand public. Un autre exemple est la suite d’outils Valgrind (4), qui comprend un vérificateur de processus et des débogueurs de mémoire. L’ensemble est gratuit, facilement disponible, mais fait partie de ces outils spécifiques de haut niveau dont l’usage n’est pas enseigné à l’école.
Connaître le contenu de sa boîte à outils est un savoir précieux. L’utilisation d’un outil spécialisé pour chercher un problème va probablement donner un résultat plus rapide, qu’il soit positif — et confirme le problème — ou négatif, et oriente la recherche dans une autre direction. Par ailleurs, il est important de savoir comment utiliser ces outils, ce qui justifie le temps passé à lire la documentation, à s’entraîner ou simplement à expérimenter ces outils avec des problèmes connus pour comprendre comment ils fonctionnent.
Résoudre les problèmes est un art accessible à tous. Comme pour tous les arts, certaines personnes semblent avoir une telle facilité qu’ils semblent être nés avec cette compétence. Mais en réalité, avec assez d’expérience et de pratique, la résolution des problèmes devient une activité insconsciente.
Quand on est confronté à un problème qui n’est pas évident à résoudre, il faut s’asseoir et le considérer dans son intégralité. Quel problème avons-nous ? Pouvons-nous formuler la question à laquelle nous devons répondre ? Une fois que nous savons ce que nous cherchons, nous pouvons commencer à examiner où peut être situé le problème. Peut-on le décomposer en parties plus petites et plus maniables ? Quels sont les meilleurs outils à utiliser pour chaque partie ? Avons-nous vérifié que nous utilisions correctement les fonctionnalités et services disponibles ?
Après avoir résolu de nombreux problèmes, on commence à repérer des schémas. Il devient plus facile de détecter des indices subtils à partir des symptômes et de diriger les recherches vers le problème réel. Un correcteur de problèmes expérimenté peut même ne pas se rendre compte que cette action a lieu. C’est un signe que l’expérience et les automatismes se sont si bien mis en place qu’il n’y a plus besoin d’effort conscient pour accéder à ces compétences.
Bien sûr il, y aura toujours des problèmes qui seront difficiles à résoudre dans la vie : problèmes professionnels, existentiels, philosophiques ou même ceux qui sont causés par la pure curiosité. Là encore, c’est le défi qui nous stimule, le besoin de comprendre toujours plus et mieux. Sans cela, la vie serait trop triste.
(1) http://fr.wikipedia.org/wiki/Apprentissage#Apprentissage_par_essais_et_erreurs
(2) http://fr.wikipedia.org/wiki/Diviser_pour_régner_(informatique)
(3) http://fr.wikipedia.org/wiki/Condition_aux_limites
(4) http://fr.wikipedia.org/wiki/Valgrind
Crédit photo Luxuryluke (CC BY-NC-ND 2.0)
Si vous suivez régulièrement le blog, vous avez forcément entendu parlé du tutoriel webdesign e-commerce Fine Cookies. Les 14 heures complètes de formation sont désormais entièrement disponible sur le site Living Tuts. Quoi de mieux que de suivre des tutoriels … Continuer la lecture
Megafolio Pro is a fully responsive media grid plugin that allows you to display content in almost every way possible using preset or randomly generated layouts. Dive right into the ...
sBubble is a jQuery plugin which is totally based on CSS3 for shapes and animations. Yes no images used and no jQuery code used for animation. Plus some color themes ...