jeudi 30 octobre 2008

La Révolution Wikipédia


Comme beaucoup, je consulte Wikipédia régulièrement. Je suis fasciné par ce que des personnes d'un peu partout dans le monde et de façon tout à fait bénévole ont pu accomplir! Par contre, certaines personnes soulèvent la question à savoir si on peut vraiment considérer Wikipédia comme une source fiable d'information. Comment peut-on se fier à une encyclopédie où tout un chacun peut à volonté changer n'importe quoi? C'est la question que se sont posées 5 étudiants français dans le cadre de leur dernière année d'études en journalisme. Ils ont publié les résultats de leur recherche dans le livre La Révolution Wikipédia.

Le livre débute par la préface d'un de leur professeur à L'École de journalisme de Sciences-Po à Paris, Pierre Assouline. Le moins que l'on puisse dire, c'est que ce professeur ne porte pas Wikipédia dans son coeur! Ce dernier explique comment toute une nouvelle génération d'étudiants consulte et cite Wikipédia sans prendre la peine de valider à d'autres sources l'information qu'ils y puisent. Ce professeur reproche aussi à Wikipédia d'être un outil de désinformation, car plusieurs groupes de personnes avec des intentions douteuses peuvent utiliser l'encyclopédie en ligne pour y diffuser leur message.

Les 5 étudiants portent un jugement plus équilibré sur Wikipédia. Ils commencent par nous rappeler la fameuse étude de la revue Nature où, en 2005, cette dernière publiait que Wikipédia est aussi fiable que la vénérable encyclopédie Britannica! Plusieurs personnes ont utilisé (et encore beaucoup aujourd'hui) cette étude pour affirmer que Wikipédia a passé le test de la fiabilité et qu'on peut maintenant s'attendre à la mort prochaine des encyclopédies classiques! Ces étudiants nous montrent que c'est une conclusion tout à fait erronée. Ils prennent le temps de décortiquer la méthodologie de Nature pour cette fameuse étude pour nous faire voir qu'en réalité, l'étude prouve plutôt que Wikipédia est moins fiable que Britannica!

On nous explique ensuite les mécanismes que Wikipédia utilise pour s'assurer de la qualité des articles qu'elle contient. Tout en reconnaissant que ces mécanismes ont bien fonctionné jusqu'à maintenant, les auteurs expliquent que ceux-ci sont beaucoup plus efficaces sur des sujets où il y a peu de controverses, comme les mathématiques, la physique ou l'informatique. Par contre, avec des sujets historiques, politiques ou religieux, c'est beaucoup moins efficace. Les consensus sont souvent difficiles à établir, ce qui oblige souvent les administrateurs de l'encyclopédie à intervenir.

À la fin, ces étudiants nous amènent à réaliser ceci: de toute façon, Wikipédia est là pour rester. Ce qu'il faut, c'est apprendre à s'en servir de façon intelligente. L'esprit critique reste encore et toujours une qualité indispensable pour utiliser cette nouvelle source d'information. Les étudiants (et les autres aussi) doivent absolument prendre le temps d'aller à d'autres sources pour comparer. Ils conseillent également de prendre le temps d'apprendre à contribuer à Wikipédia pour mieux comprendre son fonctionnement et l'enrichir!

Je considère donc ce livre comme un bon rappel. Loin de nous décourager à consulter la célèbre encyclopédie, il nous incite simplement à la prudence, ce qui est toujours un bon conseil!

samedi 18 octobre 2008

Wikinomics

Le livre Wikinomics: How Mass Collaboration Changes Everything explique en quoi les nouvelles technologies de l'information bouleversent la façon de gérer une entreprise. Selon les auteurs, nous vivons une époque charnière. Internet a complètement changé la façon dont les gens communiquent entre eux. L'information circule plus rapidement que jamais. Mais la tendance la plus révolutionnaire, c'est le pouvoir que ces nouvelles technologies de l'information donnent aux gens ordinaires. Aujourd'hui, les gens peuvent produire eux-mêmes l'information. Plusieurs de ces personnes créatrices d'information se réunissent en communauté. Et ces communautés font trembler mêmes les plus grandes et puissantes entreprises. Car là où ses compagnies régnaient autrefois en maître absolu, ces nouvelles communautés y prennent de plus en plus d'espace. De plus, la nouvelle génération, qui maîtrise ces nouvelles technologies comme les précédentes ont maîtrisé la télévision, va faire accélérer ces tendances.

Ce livre est donc une sorte de mise en garde pour les entreprises: coopérer ou périr. Selon les auteurs, les entreprises qui auront le plus de succès dans l'avenir seront celles qui sauront coopérer avec diverses communautés et exploiter leur potentiel. Le livre s'ouvre sur l'exemple de Goldcorp, une petite compagnie minière de l'Ontario. Cette dernière était dans une impasse: elle n'était plus en mesure de trouver de l'or dans sa mine de Red Lake dans le nord de l'Ontario. Pourtant ses géologues avaient plusieurs indices leur indiquant que d'importante quantité d'or devait encore s'y trouver. Mais voilà, après plusieurs millions investis, aucun résultat probant. La compagnie était au bord de la crise. Le nouveau CEO de l'entreprise prit alors une décision tout à fait inusitée: il demanda aux géologues de l'entreprises de mettre toutes les données à propos de la mine disponible sur Internet en offrant à ceux qui pourraient les aider à trouver l'or une récompense de 575 000$. Ils reçurent des idées de divers groupes de personnes: géologues bien sûr, mais aussi mathématiciens, physiciens, militaires, étudiants et informaticiens. Plusieurs de ces idées étaient tout à fait novatrices. Résulat: l'or fut trouvé. Et Goldcorp est passé d'une entreprise valant environ 100 millions à une valant aujourd'hui 9 milliards de dollars. Et la mine de Red Lake produit toujours.

Le coeur du livre contient sept façons dont les entreprises peuvent tirer profit de ces nouveaux outils de communication et ces nouvelles communautés d'utilisateurs. Les entreprises qui sauront exploiter ces nouvelles réalités seront les mieux placées pour réussir dans les années à venir.

D'après les auteurs, même les travailleurs vont être touchés par ces changements. Ces derniers devront être polyvalents, prêts à collaborer avec des ressources à l'extérieur de l'entreprise et surtout, savoir utiliser les nouveaux outils de collaboration.

Donc, un livre très intéressant détaillé avec beaucoup de faits vécus et de statistiques révélatrices. Je le recommande à ceux qui s'intéressent au mariage de l'économie et des nouvelles technologies.

samedi 4 octobre 2008

Apprendre en s'amusant!

La meilleure façon d'apprendre un nouveau langage de programmation ou pour se perfectionner est de se pratiquer. Mais voilà, souvent (dans mon cas), ce n'est pas toujours évident de trouver des idées de bout de code à écrire assez diversifiées pour être vraiment efficace pour apprendre. J'ai remarqué que de se tourner vers des problèmes à résoudre est souvent une bonne façon de s'y prendre.

Au cours des dernières années, je me suis amusé à résoudre des problèmes provenant principalement de deux sites: Ruby Quiz et Project Euler. Le premier, comme son nom l'indique, est constitué de problèmes surtout de programmation avec des solutions en Ruby. Mais rien n'empêche de les résoudre en utilisant un autre langage! L'auteur du site a même fait un livre avec certains des meilleurs problèmes. Le deuxième contient surtout des problèmes de maths. Un problème est soumis et pour prouver qu'on l'a résolu, on doit fournir la réponse (souvent numérique) au problème. Une fois résolu, on a accès à un forum dédié au problème où d'autres soumettent et discutent les différentes solutions. On peut utiliser le langage de son choix. Voici quelques problèmes que j'ai trouvé intéressants à résoudre:
Je vous invite à parcourir la liste des problèmes de ces deux sites. Vous y trouverez sûrement des problèmes intéressants.

Connaissez-vous d'autres sites intéressants où des problèmes semblables sont soumis?

samedi 27 septembre 2008

The Productive Programmer

Comme je vous en avais parlé dans un précédent billet, j'ai lu le livre The Productive Programmer de Neal Ford.

Ce livre est le fruit de l'expérience pratique de l'auteur. Il nous révèle ses trucs et astuces pour devenir un programmeur productif.

Son livre est divisé en deux parties. La première traite des différents outils à la disposition des programmeurs pour effectuer leur travail. Pour l'auteur, un programmeur productif utilise toujours le meilleur outil possible pour la tâche à accomplir. Il rappelle l'importance de trouver des outils nous permettant d'automatiser les tâches répétitives car ces dernières sont souvent, à la longue, celles qui font perdre le plus de temps et qui sont la cause de beaucoup d'erreurs d'inattention. Vous devez interagir avec votre système d'exploitation? Développez des scripts Bash ou Power Shell. Vous devez manipuler des fichiers? Utilisez un langage dynamique comme Ruby ou Groovy. Vous devez rechercher du texte dans des fichiers de log? Apprenez à maîtriser les expressions régulières. Avec de nombreux exemples, Ford nous démontre les avantages à utiliser ces outils.

Il prend le temps de partager certains des outils qu'il utilise pour lui permettre de travailler plus rapidement: presse-papiers multiple, éditeurs textes, engins de recherche, bureaux virtuels et autres.

Dans la deuxième partie du livre, l'auteur s'attarde aux bonnes pratiques de développement logiciel qu'un programmeur productif doit maîtriser. Cette section couvre assez sommairement une grande quantité de pratiques: les tests unitaires, l'analyse statique du code, la méta-programmation et j'en passe! Chaque chapitre de cette deuxième partie est un condensé des avantages de chacune de ces bonnes pratiques. C'est évident que, comme chacune de ses pratiques ont des livres entiers qui leur sont consacrées, vous devrez voir ailleurs pour des approfondissements. Mais ces chapitres constituent tout de même une bonne introduction (ou un bon rappel). J'ai beaucoup aimé le chapitre consacré aux programmeurs polyglottes.

L'auteur nous encourage à visiter le site du livre, où il compte continuer d'ajouter d'autres façons d'être des programmeurs productifs!

samedi 20 septembre 2008

La pratique pour rester à jour

Les expérimentations avec certaines technologies permettent d'aller chercher une connaissance pratique. Évidemment, ça ne peut remplacer dans votre cv une véritable expérience de travail. Mais ces connaissances vont vous permettre d'être compétitifs par rapport à d'autres développeurs qui n'ont pas pris le temps d'expérimenter avec ces technologies. Dans d'autres cas, elles vous permettent de découvrir de nouveaux outils ou de nouvelles méthodes qui servent à vous rendre plus efficaces dans vos tâches quotidiennes.


Tutoriels

Les tutoriels sont intéressants car ils permettent rapidement d'aborder une technologie sans investir (habituellement) beaucoup de temps. Beaucoup peuvent se compléter en une heure ou deux. Et ce qui est bien, c'est que la plupart sautent rapidement de la théorie à la pratique. En suivant les instructions, on est amené à jouer avec la technologie, ce qui est souvent plus motivant que de lire un long exposé théorique. Un autre avantage non négligeable: la très grande majorité des tutoriels sont gratuits!

En voici quelques uns que j'ai récemment lus:


Livres d'introduction

Comme mentionné dans un précédent billet de cette série, beaucoup de livres sont des introductions à une technologie. Bien que je trouve que ce genre de livre est rapidement désuet, ils sont souvent plus détaillés et vont plus loin qu'un simple tutoriel. Comme les tutoriels, ces livres vont rapidement à la pratique. La meilleure façon d'en profiter est de faire les exercices à mesure qu'on en fait la lecture. Certains vont apprécier pouvoir retourner plus tard feuilleter ces livres pour se replonger dans une technologie. Et si le livre aborde une technologie (ou une version d'une technologie) plus ancienne, on peut souvent avoir ces livres à rabais.

Quelques livres d'introduction intéressants:


Cours en ligne

Un nouveau phénomène intéressant pour apprendre de nouvelles technologies ou méthodologies est que plusieurs universités mettent en ligne le contenu de certains cours. On peut ainsi “suivre” le cours, comme si on y était inscrit! J'aime beaucoup l'approche d'un cours. Quelqu'un a fait l'effort d'approfondir un sujet, d'en dégager des points importants et de nous proposer un cheminement pour le comprendre. Si on réussit à se procurer le manuel du cours et si on prend le temps de faire les exercices on peut en retirer beaucoup.

Quelques cours que j'ai commencé à "suivre":


Langage de programmation

Le livre Pragmatic Programmer conseille d'apprendre un nouveau langage de programmation par année! Et ce n'est certainement pas le choix qui manque. Tous les ans, de nouveaux langages font leur apparition. Et c'est sans parler de tous ces vieux langages toujours utilisés par beaucoup de développeurs mais ignorés par la grande majorité. Au cours des dernières années, les langages dynamiques attirent beaucoup l'attention. Que ce soit Ruby, Groovy ou Python tous ces langages possèdent une quantité impressionnante de documentation pour vous permettre de devenir familier avec eux.

Pourquoi ce conseil d'apprendre un nouveau langage par année? Il est très probable que beaucoup de ces langages ne deviendront pas le prochain Java ou C#. Mais la raison est que de connaître de nouveaux langages vous exposent à de nouvelles façons de régler les problèmes que celles typiquement proposées par le langage que vous utilisez régulièrement. Découvrir ces nouvelles façons de faire vous rendent plus efficaces car vous aurez une vision plus large de ces problèmes. De plus, vous pourrez utiliser ces autres langages pour certaines de vos tâches secondaires. Par exemple, pourquoi ne pas utiliser Groovy pour écrire vos tests unitaires? Ruby pour manipuler ces gros fichiers de logs? PHP pour vous bâtir une application web de test? Beaucoup de ces langages excellent à ces tâches pour lesquelles ont perd souvent un temps fou en s'obstinant à utiliser le langage dans lequel on est familier mais souvent moins adapté. Selon beaucoup, comme Neal Ford et Ola Bini, l'avenir est aux programmeurs “polyglottes” qui seront capables d'utiliser simultanément plusieurs langages à la fois. L'avenir nous dira s'ils ont raison!

Faites-nous part de vos suggestions et expériences pour pratiquer avec les nouvelles technologies!

vendredi 12 septembre 2008

Rencontres de développeurs

Dans cet autre billet de ma série Comment rester à jour pour les développeurs, j'aborde la question des rencontres organisées pour les développeurs.

Les rencontres organisées pour la présentation de nouvelles technologies sont souvent bien intéressantes pour rester à jour. Elles permettent de rencontrer d'autres développeurs. En prenant le temps de leur parler, ou seulement en écoutant les conversations, on peut découvrir quelles technologies ou méthodologies les autres développeurs de notre région utilisent. Ça aide à savoir où on se situe dans nos connaissances et pratiques par rapport au marché.

On peut aussi avoir l'occasion de rencontrer des développeurs réputés. Lors d'une rencontre du GUJMTL, Neal Ford est venu faire une présentation sur comment améliorer son écriture de code. Ça avait été très intéressant!

Les présentations elles-mêmes permettent de découvrir rapidement de nouvelles technologies. Certains diront que souvent, un bon livre ou un tutoriel sur le web pour remplacer ce genre de présentation. Ce n'est pas faux. Mais le fait d'entendre comment d'autres utilisent une technologie peut être utile. On peut aussi poser des questions de vive voix.

Également, si vous avez envie de faire découvrir des technologies aux autres, ces groupes sont très ouverts à laisser de nouveaux présentateurs se lancer. Ça peut être une excellente façon de parfaire vos talents d'orateurs!

Dans la région de Montréal, pour un développeur Java, il y a le GUJMTL. Il y a aussi, pour ceux qui s'intéressent aux développement web avec Ruby On Rails, le groupe Montreal On Rails, qui se réunit régulièrement depuis 1 an. Leur prochaine rencontre aura lieu mardi prochain et portera sur les outils ruby autres que Rails.

MISE À JOUR: j'ai trouvé un groupe pour les développeurs Python.

Connaissez-vous d'autres groupes de développeurs dans la grande région de Montréal?

dimanche 7 septembre 2008

Lectures de développeurs


Il existe plusieurs sortes de livres disponibles pour les développeurs. Il y a les livres de référence très proche d'une version en particulier d'un logiciel ou d'un api. Il y a les livres tutoriels qui prennent la peine de vous expliquer étape par étape comment utiliser une technologie. Il y a les livres d'introduction qui brossent un portrait global d'une technologie.

On peut lire ces types de livres assez rapidement. Il faut se rappeler que ce ne sont pas des romans. Il n'y a rien de mal à sauter des chapitres qui nous semblent moins pertients.

Enfin, il y a les livres que j'appelle les livres de "principes". Ils ont pour but d'expliquer les bonnes pratiques à l'utilisation d'une technologie ou de certains aspects du métier de développeur. Cette catégorie de livre est ma préférée et celle parmi lequel je crois que vous devriez vous attardez davantage. Contrairement aux autres livres où après une lecture on n'a plus vraiment intérêt à y revenir (à part bien sûr les livres de référence), ces livres peuvent être relus sans problème. De plus, ils demeurent pertinents beaucoup plus longtemps. Quelques exemples classiques: Design Patterns, The Pragmatic Programmer (un de mes préférés), Code Complete, Effective Java, Expert One-On-One J2EE Development Without Ejb (le livre qui a fait découvrir Spring), Refactoring et plusieurs autres. Vous êtez invités à me rapporter vos classiques favoris dans les commentaires de ce billet.

Ces livres sont ceux qui vont le plus influencer votre pratique du métier! Ce sont eux qui vont vous permettre de vous tenir à jour au niveau des bonnes pratiques.

Où trouver les livres?

Il est évident que la façon la plus simple de se procurer les livres est d'aller en librarie, soit avec pignon sur rue ou en ligne. Mais le prix pour se procurer plusieurs ouvrages grimpe très rapidement. Il existe quelques façons de trouver de bons livres sans débourser autant. Les librairies en ligne comme Amazon et Chapters offrent la possibilité d'acheter des livres usagés, ce qui permet d'économiser beaucoup. De plus, Amazon ne fait pas payer la taxe dans le cas des livres usagés. J'aime bien aussi le site Lulu, qui permet aux auteurs de vous offrir leurs livres pour souvent bien moins chers.

La bonne vieille bibliothèque est aussi un bon endroit. Les bibliothèques de petites municipalités n'ont souvent pas un choix intéressant. Par contre, si vous habitez à Montréal ou y allez souvent, la Grande Bibliothèque est tout indiquée. J'y vais régulièrement et je suis toujours surpris de voir la grande quantité de livre d'informatique disponible. C'est vrai que vous n'y trouverez probablement pas les livres du mois, mais on y retrouve plusieurs livres qui ont de six mois à un an.

Déterminer si ce livre est un bon achat

Il est frustrant de se retrouver avec un navet, surtout quand on a payé le gros prix. La façon que je préfère pour déterminer si un livre en vaut la peine est d'aller lire les critiques d'autres lecteurs sur Amazon. Il est mieux d'aller lire les critiques sur amazon.com même si vous achetez du site amazon.ca car il y a beaucoup plus de gens qui écrivent des critiques sur le site américain. Pour les livres en français, faites un tour sur amazon.fr. Ne regardez pas seulement le nombre d'étoiles. Prenez le temps de lire les critiques pour vous donner une idée du contenu et des forces et faiblesses rapportés par les lecteurs.

Une autre façon de déterminer si un livre est intéressant est de faire le tour des blogs d'autres développeurs qui prennent le temps de faire des recommandations de livres. Par exemple, cette semaine j'ai lu un billet favorable à propos du livre Behind Closed Doors: Secrets of Great Management qui a piqué mon intérêt.

Aussi, n'oubliez-pas que la plupart des grands éditeurs offrent des chapitres gratuits sur le web. Ça donne une bonne idée du ton du livre. On peut retrouver facilement ces chapitres gratuits à l'aide du site PDFoo.

Il est important pour les développeurs de prendre le temps de lire quelques livres reliés aux technologies. Peu importe le domaine d'expertise, il y a sûrement une bonne quantité de livre disponible pour se perfectionner. Ça peut être aussi une façon de se familiariser avec des technologies un peu à l'écart de son domaine d'expertise. Les livres permettent souvent d'aller plus loin que la lecture d'articles pour la compréhension d'une technologie.

Cette semaine je débute la lecture de The Productive Programmer de Neal Ford. Je vous en donne des nouvelles une fois achevée.

Bonne lecture!