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!

mercredi 3 septembre 2008

Les éclaireurs

Mon premier billet de la série Comment rester à jour va porter sur mes méthodes pour faire de la veille technologique. Qui sont mes éclaireurs?

Dzone

Le site dzone me permet rapidement de prendre le poul de l'actualité et des dernières tendances dans le monde du développement. Je peux constater l'arrivée de nouveaux frameworks, de nouvelles librairies et des derniers acronymes! Je prends le temps de lire certains articles soumis, mais généralement, je fais seulement passer par dessus les titres. Si je constate qu'un sujet revient régulièrement et que j'ignore en grande partie de quoi il s'agit, je m'efforce de l'approfondir un peu. Je commence généralement par faire un tour sur Wikipedia voir de quoi il retourne, puis je vais sur les sites principaux en rapport avec le sujet. Je retourne ensuite sur dzone lire un ou deux articles sur le sujet. Il se peut que je lise certains articles en diagonale, mon objectif à ce stade est de construire une connaissance générale du sujet, pas de devenir un expert.

La blogosphère

Je surveille les blogs de quelques développeurs réputés. J'aime bien suivre ce genre de blogs car l'aspect plus personnel qui s'en dégage m'aide à faire des rapprochements avec mon quotidien de développeur.

Voici quelques-uns des développeurs que je lis fréquemment:

  • Charles Nutter: développeur principal de JRuby chez Sun

  • Ola Bini: consultant chez ThoughtWorks , très technique, mais bien expliqué et varié

  • Neal Ford: autre consultant ThoughtWorks , un touche-à-tout et excellent communicateur

  • Jeff Atwood: développeur .NET, très sharp

  • Neal Gafter: un gourou Java, anciennement de Sun mais maintenant chez Google. Il est derrière BGGA, une des spécifications proposées pour intégrer les closures dans java 7

Votre sélection variera selon vos domaines d'expertises. Dans mon cas, comme vous le remarquez, la mienne contient principalement des blogs de développeurs Java.

Je considère ces développeurs parmi les meilleurs dans mon domaine: leur avis et opinions sont souvent de bons indicateurs des bonnes pratiques et technologies que les développeurs devraient au minimum connaître. Ces développeurs m'ont particulièrement aidé à non seulement rester à jour en apprenant à connaître les nouveautés, mais aussi en m'assurant que je maîtrise toujours bien les connaissances de base que tout bon développeur doit bien comprendre (cet aspect fera l'objet d'un futur billet dans cette série). Cela dit, il m'est très fréquent de lire certains de leurs billets en diagonale si je les juge moins pertinents pour moi. L'important est de dégager ce que je peux apprendre d'eux pour rester à jour, pas de lire religieusement tous leurs billets.

Fils RSS

Un outil particulièrement utile pour faire de la veille sans perdre un temps fou à visiter chaque site individuellement est un bon lecteur rss. Tous les sites et blogs que je surveille offrent un fils rss qui permet à ces logiciels d'aller récupérer automatiquement les derniers billets de chacun d'eux et de les afficher dans l'interface du logiciel. Ça permet de sauver un temps fou. Il existe plusieurs logiciels qui font ce travail. Celui que j'utilise est Google Reader. Pourquoi? Il est accessible en ligne. Donc pas de perte de temps à chaque fois que je change d'ordinateur à reconfigurer tous les nouveaux fils ajoutés sur une autre machine. Google Reader permet d'organiser chaque fils en groupe par un système de tags. Il permet de mettre une étoile à certains billets pour permettre de les retrouver facilement.

Derniers conseils

Un conseil à l'utilisation d'un lecteur rss: faites régulièrement le ménage parmi les fils que vous suivez. S'il y en a que vous ne trouvez plus pertinents, soyez prompts à les supprimer. Essayer de suivre trop de fils à la fois devient nuisible car vous risquez de vous décourager.

Un autre conseil plus général au sujet de la lecture d'articles et de billets en ligne: n'hésitez-pas à interrompre la lecture de l'un d'entre eux si vous n'y voyez pas d'intérêt. Combattez la tendance à vouloir lire jusqu'au bout pour rien. Vous épargnerez ainsi temps et énergie.

Finalement, il faut essayer de se fixer un moment précis et un temps limité pour faire de la veille. Par exemple, une heure le mercredi soir et une autre le samedi matin. N'en faites pas trop à la fois, vous n'en retirerez pas grand-chose.

Et vous, quelles méthodes utilisez-vous pour faire votre veille?