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?

dimanche 31 août 2008

Le défi du développeur: rester à jour

Le métier de développeur de logiciels n'est pas de tout repos! Une petite visite sur dzone.com, codeproject.com, devx.com et autres site du genre nous rapporte à toutes les heures les dernières nouveautés en fait de frameworks, librairies, méthodologies, patterns, logiciels et autres! Il y a toujours une nouvelle technologie qu'on suggère aux développeurs de maîtriser. Tout un défi!

Il est important pour les développeurs de prendre des moyens pour rester à jour. Avec la rapidité avec laquelle de nouvelles technologies arrivent, un développeur court le risque de devenir dépassé. Certains diront que tant qu'on est efficace dans son travail de tous les jours, on n'a pas à se soucier de rester à jour avec d'autres technologies. Je ne suis pas d'accord avec cette affirmation. C'est évident qu'un développeur doit se concentrer en premier lieu à maîtriser les technologies qu'il utilise régulièrement. Mais aller au-delà est important pour rester pertinent. En tant que développeur, on est souvent amené à donner notre avis d'expert sur les nouvelles technologies et comment elles pourraient être utiles pour l'entreprise qui nous emploie. Si un développeur n'est pas au fait des nouveautés, il risque fort de donner des conseils dépassés ou même de mauvais conseils.

Il est évident que je ne parle pas d'être un expert dans toutes les nouvelles technologies. C'est sûrement impossible. Mais un développeur doit être capable d'expliquer, dans ses mots, ce que la technologie ABC est et en quoi elle diffère de XYZ. Et dans certains cas, il doit être capable d'utiliser ces nouvelles technologies.

Par contre, plusieurs développeurs ont un temps limité à consacrer à se tenir à jour. Ils doivent donc être efficaces et méthodiques. Il faut aussi éviter de couvrir trop large lorsque vient le temps de choisir quelle technologie approfondir.

J'ai donc décidé de commencer une série de billets sur le thème Comment rester à jour. J'y aborderai les méthodes que j'utilise pour me tenir à jour ainsi que celles suggérées par d'autres développeurs expérimentés. Je discuterai des avantages et inconvénients de ces différentes méthodes. Comme je suis un développeur Java, plusieurs aspects vont toucher plus spécifiquement ce domaine, mais les principes s'appliqueront pour la grande majorité des développeurs.

La série:
  1. Faire de la veille technologique - comment je m'y prends en tant que développeur
  2. Lire de bons livres - mes recommandations de lecture
  3. Assister à des rencontres - l'intérêt d'assister aux rencontres organisées pour les développeurs
  4. Faire des expérimentations - rester à jour par la pratique
  5. Réviser les notions de base - l'importance de réviser
Vos commentaires et suggestions sont évidemment les bienvenues!

dimanche 24 août 2008

Zach & Wiki

Je viens de compléter le jeu Zach & Wiki de Capcom. Et je dois dire que j'ai adoré chaque minute passée à jouer ce jeu!

Voilà un jeu qui sort de l'ordinaire! Rappelant les vieux jeux point-and-click des années 90 (Zak McKracken, Maniac Mansion ou Grim Fandango), Zach & Wiki réussi le tour de force d'utiliser la télécommande de la Wii d'une façon tout à fait intuitive et originale.

Un jeune pirate nommé Zach part à la recherche du légendaire trésor du pirate Barbaros. Il est accompagné de son ami Wiki, une espèce de singe volant qui se transforme en cloche que Zach peut utiliser pour transformer animaux et personnages en des objets utiles pour sa quête. Leur aventure les transportera à travers la jungle, des volcans, des palais de glaces, des maisons hantées et même dans l'espace! Le jeu a beaucoup d'humour et les personnes sont plus cocasses les uns que les autres.

Le déroulement du jeu est simple: chaque niveau vous demande de réussir à atteindre le coffre. Pour y arriver, vous devrez résoudre différentes énigmes du genre déplacer un bloc pour atteindre un levier qui ouvre un chemin qui etc, etc! C'est souvent simple, mais toujours amusant. Par contre, pour certains niveaux où la solution ne vous sera pas évidente au premier coup d'oeil, vous aurez probablement à recommencer à quelques reprises du début le même niveau. Ça peut parfois être agaçant.

Côté graphisme, le jeu est excellent. Utilisant la technique du cel-shading, ce jeu m'a rappelé Zelda: Windwaker. Les décors aux couleurs vives sont très bien réussis.

La télécommande de la Wii sert à la base à pointer et cliquer dans l'environnement, comme dans tous bons jeux du genre (comme une souris). Mais en plus, et c'est là que ça devient intéressant, on s'en sert pour manipuler les objets. Que ce soit pour sonner de la cloche, tirer sur une corde, laisser tomber un bloc et même se battre à l'épée, la Wiimote est particulièrement bien utilisée dans le jeu. C'est vrai que dans certains cas, vous pourriez vous plaindre d'un manque de précision, mais dans l'ensemble, c'est excellent.

Voici un petit vidéo annoté qui vous permet de découvrir le premier niveau:


Malheureusement, comme pour plusieurs autres bons jeux (je pense à toi, Okami!), il a été largement ignoré, même s'il a reçu d'excellentes critiques. On peut encore le trouver facilement en magasin, souvent à rabais.

Toute une aubaine si vous voulez mon avis!

samedi 16 août 2008

San Juan

J'ai eu la chance d'essayer le jeu San Juan la semaine dernière.

Ce jeu est la version simplifiée du populaire Puerto Rico que je possède depuis quelque temps déjà.

Dans San Juan, vous bâtissez votre ville en installant des terrains de production de ressources (indigo, sucre, tabac, café et argent) et des bâtiments. Ces derniers vous donnent des bonus essentiels pour remporter la partie. Comme dans le jeu original, on doit choisir à son tour un rôle (bâtisseur, producteur, marchand, conseiller et chercheur d'or) qui permet différentes actions. Par exemple, le producteur sert à produire des ressources sur les terrains déjà construits et le chercheur d'or permet de choisir une ou plusieurs nouvelles cartes.

Les cartes servent autant d'éléments à construire (terrains de production et bâtiments) que de monnaie pour payer ces derniers. Les cartes servent aussi à représenter les ressources produites. Le défi consiste donc à choisir habilement comment ses cartes seront utilisées.



Ce que j'ai aimé:
  • Conserve l'essence du jeu original. Les habitués n'auront aucune difficulté à s'y retrouver.
  • Version de voyage bien pensée. Les cartes servant à tout, l'espace requise pour jouer est minimale.
  • La mécanique du jeu est rapide et efficace.
Ce que j'ai moins aimé:
  • Le hasard est beaucoup plus important dans ce jeu que dans Puerto Rico (où le hasard y est quasi inexistant). Cela est dû au fait que l'on progresse au gré des cartes piochées.
Je me suis procuré ce jeu chez Franc Jeu à Rosemère. Je l'ai également vu au Maître des jeux à Deux-Montagnes.

vendredi 15 août 2008

The 4-Hour Workweek


Wow! J'ai vraiment trouvé épatant le livre The 4-Hour Workweek de Timothy Ferris. Si vous en avez assez de la petite routine du travail de 9@5, ce livre est pour vous! N'avez-vous jamais rêvé d'être votre patron et de partir en voyage autour du monde? Ce livre vous donne la recette pour y parvenir!

Avec des conseils pratiques, l'auteur nous amène à réaliser qu'on a tous le potentiel d'avoir une vie extrêmement enrichissante maintenant sans attendre la retraite. Sa méthode se résume en 4 lettres, DEAL: D pour Definition, E pour Elimination, A pour Automation et L pour Liberation (en français: définition, élimination, automatisation et libération).

Ainsi, l'auteur nous incite à définir ce qui nous tient vraiment à coeur. Si on ne définit pas clairement nos objectifs, on ne peut y parvenir. Ensuite, il nous aide à simplifier notre vie en éliminant le superflu qui prend trop de notre temps, que ce soit au travail ou dans sa vie personnelle. Par la suite, et c'est la partie que j'ai trouvée la plus fascinante, Timothy élabore un plan pour lancer rapidement sa propre entreprise autosuffisante! Comment rouler une business profitable en seulement 4 heures de travail par semaine? Lisez ce livre! Finalement, quoi faire avec tout ce temps libre? C'est le moment de vivre sa vie!

Évidemment, à la fin du livre, on doit quand même se rendre à l'évidence, la magie n'existe pas! Tout ça ne peut s'accomplir sans une bonne dose de volonté et de travail déterminé. L'auteur en est conscient et il prend le temps de donner des exercices pratiques et simples pour avancer dans la démarche. Le livre tient compte aussi de ceux qui ne peuvent ou ne veulent pas, pour toutes sortes de raisons, devenir leur propre patron.

Le livre est disponible en version française. Vous pouvez aussi lire d'autres critiques plus étoffées du livre.

À lire absolument!

vendredi 1 août 2008

Nouvelle terre

À la suite de la lecture du livre Nouvelle Terre d'Eckhart Tolle, j'ai pris le temps de faire une liste d'idées pratiques que j'ai retenues.

1. Renoncer à l'ego. Dans son livre, l'ego est identifié à l'inconscience. L'ego est un thème que l'auteur élabore tout au long de son livre. C'est d'après l'auteur la raison de bien des problèmes dans nos sociétés. Voici des manifestations de l'ego citées dans le livre:

· Exiger de la reconnaissance pour quelque chose que vous avez fait et vous mettre en colère si vous ne l'obtenez pas
· Essayer d'attirer l'attention en parlant de vos problèmes, en racontant l'histoire de votre maladie ou en faisant une scène
· Donner votre opinion quand personne ne la demande, sans que cela change rien à la situation
· Être plus préoccupé par la façon dont l'autre vous voit que par elle, c'est-à-dire utiliser l'autre personne pour refléter ou intensifier votre ego
· Essayer d'impressionner les autres par vos possessions, vos connaissances, votre apparence, votre statut social, votre force physique, etc.
· Gonfler son ego par une crise de colère contre une situation ou une personne
· Prendre les choses personnellement
· Se sentir offensé
· Se donner raison et donner tort aux autres en se plaignant mentalement ou verbalement de façon futile
· Vouloir être vu ou sembler important

L'auteur donne le conseil suivant: quand vous détectez cette attitude en vous, arrêtez-vous et examinez la situation. Demandez qu'est-ce qui vous pousse à agir ainsi. Ensuite, choisissez simplement d'arrêter immédiatement d'agir ainsi. Répéter cet exercice aussi souvent que nécessaire permet de devenir plus conscient de l'ego en nous.

2. Se concentrer sur le moment présent. Un autre thème central du livre (et aussi le thème de son précédent livre). Trop de gens vivent soit dans le passé ou dans le futur. Pourtant, le seul moment sur lequel on peut influer est le présent. C'est dans le moment présent qu'on peut vraiment agir. Si on se fixe des objectifs pour le futur, on doit s'assurer que ça ne nous amène pas à vivre malheureux dans le présent sous prétexte que la fin justifie les moyens. D'après l'auteur, beaucoup passent leur vie à courir après le bonheur futur, alors que c'est maintenant que l'on peut vraiment le trouver.

3. Les grandes choses se font par de petites choses. On doit chercher à bien faire même les plus petites choses même si elles nous semblent banales ou sans importance. Le succès pourra venir par la suite. On doit toujours se concentrer sur la tâche en cours pour la faire du mieux possible. Une clé pour y parvenir: l'acceptation. Certaines tâches sont moins intéressantes que d'autres, c'est évident (comme changer un pneu crevé sous la pluie!), mais si on accepte ce que l'on doit faire sans chercher à s'en défiler, ça devient plus facile. Par contre, si on peut se permettre d'abandonner une tâche ou un travail que l'on déteste vraiment ou que l'on considère inutile ou nuisible, on doit le faire.

4. Ne pas résister. Quand on rencontre des problèmes ou des événements pénibles, on ne doit pas résister. Chercher à se venger, crier à l'injustice ou ressasser constamment le problème ne fera que nous rendre plus malheureux. Laisser aller est souvent une excellente chose à faire! Si on doit prendre des actions, il faut s'en tenir aux faits et ne pas laisser le filtre de nos émotions et de nos perceptions nous guider.

5. « Cela aussi passera ». Ces paroles, qu'un sage aurait dites à un antique roi du Moyen-Orient, nous rappellent que tout est éphémère. Si on réalise cela, on va apprécier davantage le moment présent quand tout va bien, et moins paniquer quand ça va mal.