Thursday, September 17, 2009

Ruby snippets pour Emacs

Je viens de découvrir une excellente bibliothèque de gestion de snippets pour Emacs: yasnippet. Rapide à mettre en oeuvre, une bonne documentation et plein de snippets disponibles !!

Saturday, September 12, 2009

Les lectures de l'été

Je me suis fait une nouvelle petite cure pragmatique cet été. Les ouvrages du Pragmatic Bookshelf me plaisent toujours autant: bien construits, écriture fluide. Le soucis c'est que le livre finit on s'aperçoit qu'on a encore bien plus à apprendre qu'avant de commencer...


The Passionate Programmer: Creating a Remakable Career in Software Development de Chad Fowler adopte une structure similaire à Pragmatic Programmers: From Journeyman To Master. Chacune des 53 sections détaille une pratique, une attitude, une réflexion pour améliorer la prise en main de notre carrière de développeur et être reconnu par les différentes "tribus" (programmeurs, managers, clients, ...) avec lesquelles on se doit de communiquer. Le livre est très intéressant, convaincant, avec quelques bonnes anecdotes.
J'ai surtout aimé les parallèles avec l'apprentissage d'un instrument de musique et les habitudes, aspirations des musiciens. En musique on se doit de pratiquer régulièrement notre instrument et de travailler aux limites de ses possibilités pour progresser. L'amélioration de ses compétences de programmeur nécessite aussi d'adopter un rythme d'entraînement pour pratiquer sa technique.
Apprendre un instrument de musique différent de celui qu'on joue constitue un bon moyen de s'améliorer. Par exemple, un saxophoniste gagnera beaucoup à apprendre la basse ou la batterie, un bassiste le piano, ... Il est en effet plus rapide d'acquérir un jeu rythmique avec la basse ou la batterie, un jeu polyphonique avec le piano ou la guitare, ... De même, un développeur C peut apprendre Python, un développeur Java le Lisp, Erlang, ... pour découvrir des techniques plus facilement qu'avec le langage qu'il connaît. Si vous voulez comprendre la méta-programmation, utilisez Ruby. Pour l'objet prenez Smalltalk....


Pragmatic Version Control Using Git de Travis Swicegood fait partie du Pragmatic Starter Kit (contrôle de version, test unitaires, automatisation) qui constitue la boîte à outil de base du développeur pragmatique ;). Travis Swicegood présente les différents types de VCS puis détaille l'utilisation de Git jusqu'à des concepts avancés. Le livre est bien structuré, les exemples manquent parfois un peu de profondeur à mon goût. J'ai bien aimé la présentation de l'interface Subversion de Git (git svn) qui permet de synchroniser son dépôt Git local avec un dépôt Git central. Cela permet de profiter des apports de Git même si l'équipe utilise Subversion, ou bien faire une migration en douceur. Les fonctionnalités de séparer un commit en plusieurs et vice-versa constituent un bon complément aux lacunes de Subversion sur ce point (par exemple en période de mise au point où on corrige plusieurs bugs en même temps et qu'on veut faire un commit par correction de retour au bureau).


Enfin, Andy Hunt et Dave Thomas décrivent différentes techniques de test unitaires dans Pragmatic Unit Testing in C# with NUnit. Le livre détaille les cas auxquels nous sommes couramment confrontés dans l'écriture de tests unitaires (mocks, travailler avec des bases de codes non testées, le test d'interfaces graphiques) et liste exhaustivement les points à vérifier pour avoir des tests complets. Ceci dit, pour apprendre le développement piloté par les tests, je conseillerais plutôt l'ouvrage de Dave Astels "Test Driven Development: A Practical Guide". Le livre de Hunt et Thomas, certes de qualité, me paraît moins accessibles par les développeurs qui n'ont jamais écrit de tests.