Note de lecture : Planning Extreme Programming, par Kent Beck & Martin Fowler

Note : 6 ; Quand planifier rime plus avec visibilité qu’avec « estimer ».

L’extrême programming se focalise sur des cycles de développement fortement itératifs, au sein desquels l’interaction avec le client et permanente et le formalisme réduit au minimum. Dans ce cadre, écrire un livre sur la planification d’un tel processus peut sembler une gageure. En fait, ce livre ne traite guère de métrique d’évaluation ou de consommation du développement, mais se focalise sur les aspects humains. Planifier en Extreme Programming, c’est avant tout s’assurer que l’on travaille sur les choses les plus importantes et pouvoir se coordonner avec les autres (le sujet du 1er chapitre). Pour faire cela, il faudra aussi estimer, mais différemment.

Cet ouvrage, co-écrit par deux grands noms de la communauté, n’est guère long : 130 pages ! A l’instar de nombreux volumes de l’XP series, il compte beaucoup de chapitres, il y en a 27. Les passer tous en revue serait fastidieux, je vais me contenter de relever quelques éléments qui m’ont marqué ou que j’ai aimé.

Lire la suite

When you feel the need to write a comment, first try to refactor the code so that any comment becomes superfluous.

Martin Fowler in Refactoring

Note de lecture : NoSQL Distilled, par Pramod J. Sadalage & Martin Fowler

Note : 4 ; Plus qu’une distillation, une introduction légèrement frustrante.

Dans la même veine que le « UML distilled », Martin Fowler accompagné d’un de ses collègues de Thoughtwork nous produit un ouvrage très court (moins de 160 pages !) destiné à nous faire découvrir et à nous donner les clés du monde NoSQL ou plutôt de cet écosystème. Pour donner un bon rythme au texte, cet opuscule est découpé en 15 chapitres, ce qui fait une moyenne de 10 pages par chapitre.

On commence par un petit historique sur l’avènement du mouvement NoSQL. Pas indispensable, mais sympathique et bien écrit. Les chapitres 2 et 3 abordent la problématique du modèle de données, de l’intérêt de considérer des agrégats de données, mais aussi la souplesse qu’apporte des bases de données sans schéma … avec le corollaire d’avoir une base de données propriétaire de l’application sachant l’interpréter.

Trois chapitres sont consacrés aux principes sous-jacents de ces bases de données. Le chapitre 4 passe rapidement sur le modèle de distribution. Le chapitre 5 passe moins rapidement sur la gestion de la consistance (vous savez, le fameux « eventually consistent »). En fait, il est même passablement ennuyeux. Enfin le chapitre 6 évoque en quelques pages la question de l’estampillage des versions dans un environnement clusterisé actif / actif.

Difficile, impossible même, d’évoquer les bases NoSQL sans parler du « map reduce ». C’est ce que fait le chapitre 7, bien mais pas aussi brillamment que je me serais attendu de la part de Martin Fowler.

Le cœur du livre est sans contestations possible occupé par les quatre chapitres suivants qui forment le début de la troisième partie. Chacun d’entre eux traite d’un type de base NoSQL.

Le chapitre 8 aborde les bases de données clé-valeur, en prenant comme exemple Riak. Les auteurs ont pensé que 6 pages suffisaient pour s’occuper de cela. Moi j’ai trouvé cela franchement léger.

Les bases de données « orienté document » ont à peine droit à un meilleur traitement au chapitre 9. C’est MongoDB qui fort logiquement a été choisi, le sujet étant traité en 9 pages. Malgré tout, cela me laisse un meilleur goût tout en étant un poil superficiel.

10 pages à peine pour évoquer les bases de données orientées colonnes, c’est un peu un challenge car le sujet n’est pas simple, ou plutôt le paradigme est tellement différent de ce que nous connaissons qu’il aurait mérité plus d’attention que ce que lui accorde ce chapitre 10. J’en sors un peu confus et convaincu que j’ai besoin d’un complément d’information sur la question.

Si différentes des autres types, les bases de données orientées graphe telles que Neo4J qui sert ici d’exemple m’apparaissent clairement abordées dans ce chapitre 11, même si c’est seulement sur 10 pages. En fait ce livre m’incite à me pencher plus avant sur cette base de données et ce que je fais en ce moment ! Ne serait-ce que pour cela : merci !

Le chapitre 12 sur la migration de schéma de données est une blague. Il n’était pas franchement utile, loin de là. On reconnaît l’insertion au chausse-pied du sujet favori de Pramod Sadalage. De ce sujet et de quelques autres, je me serais bien passé au profit d’un développement plus conséquent des 4 chapitres les plus importants du livre !

La persistance polyglotte est un sujet déjà abordé en début de livre. Sans être ennuyeux, les 7 pages de ce chapitre 13 semblent passer une seconde couche.

J’aime bien l’idée d’un chapitre « beyond NoSQL » mais les auteurs n’ont pas tant à dire dans ce chapitre 14. Dommage. Finir par un chapitre sur le choix du type de base NoSQL est une bonne idée. Mai ce n’est visiblement pas si facile à faire, car cela sonne un peu creux.

Qui aime bien châtie bien. Et Martin Fowler d’habitude très brillant dans l’exercice ne convainc pas dans celui-ci. Il prends un « 4 » là où j’aurais certainement noté 5 pour quelqu’un d’autre. Le livre reste fidèle à l’idée de brièveté, mais le contenu est fort mal réparti : trop de place est accordée à des sujets peu importants ou qui pourraient être mieux synthétisés, alors que la partie importante de l’ouvrage aurait dû bénéficier d’un meilleur traitement sur deux ou trois fois plus d’espace !

C’est un livre qui pourra être utile au manager, car il traite, ou plutôt balaye le sujet dans un volume qui peut être absorbé en un week-end et permet de savoir de quoi on parle. Pour ma part, je me sens quelque peu frustré, et je pense que je vais me tourner vers le « seven databases in seven weeks » paru chez Pargamatic Bookshelf !

nosql-distilled

Référence complète : NoSQL Distilled, a brief guide to the emerging world of polyglot persistence – Pramod J. Sadalage & Martin Fowler – Addison Wesley 2012 – ISBN : 978 0 321 82662 6

NoSQL Distilled: A Brief Guide to the Emerging World of Polyglot Persistence

http://www.goodreads.com/book/add_to_books_widget_frame/0321826620?atmb_widget%5Bbutton%5D=atmb_widget_1.png&atmb_widget%5Bhide_friends%5D=on

Note de lecture : UML Distilled 3rd edition, par Martin Fowler

Note : 9 ; Une édition encore meilleure (si c’est possible) d’un ouvrage qui ne cesse de me surprendre par sa qualité et se concision.

On est toujours en droit de se demander si une nouvelle édition n’est pas un simple lifting, surtout quand il s’agit comme ici d’un best seller. J’en veux pour témoin l’habillage résolument clinquant de la jaquette, on croirait Elvis Presley à sa grande époque !

Ce livre présente UML2, et ce fut l’un des premiers. Outre la présentation précise et efficace d’UML2, les points de différence avec UML1 sont soulignés. Le livre reste toujours aussi agréable à lire. Il est intéressant de noter, tout comme la seconde édition mettait un coup de projecteur sur Unified Process, ce sont ici les méthodes Agiles qui sont mises en lumière. Cela induit un petit travers dans la présentation de la notation dont je me serais bien passé. Il est préférable dans ce type d’ouvrage, de présenter la notation pour elle-même, mais c’est résolument le point de vue adopté par l’auteur : filtrer de la norme UML ce qui est utile et important à utiliser dans le cadre d’un projet. N’attendez donc pas une description exhaustive d’UML 2.0 !

J’ai souvent remarqué que les très bon livres utilisent les pages internes des couvertures comme « cartes de référence ». C’est encore le cas ici : Les éléments constitutifs de la notation sont présentés sous forme graphique, regroupés par type de diagramme, avec le renvoi vers la page descriptive. Vraiment très pratique !

J’ai souvent fait remarqué la concision et la clarté de la prose de Martin Fowler. Il est ici au sommet de son art. On a même peine à croire, la dernière page refermée que tout tient en moins de 200 pages, annexes comprise, le texte étant par ailleurs largement aéré par les nombreux diagrammes illustrant le texte. C’est un tour de force, d’autant qu’au grée des éditions et des normes successives d’UML ajoutant de nouveaux éléments, le volume du livre n’a pas augmenté d’une seule page.

Je ne vais pas détailler le contenu du livre. De manière globale, Martin Fowler a vétillé le volume consacré à chaque sujet en fonction de l’importance relative dans un usage réel au sein d’un projet. Ainsi le diagramme de classe se taille la part du lion. Le diagramme de séquence et le diagramme d’objet (et le diagramme de communication qui est son complément naturel) sont aussi très correctement traités. A l’autre extrémité, le diagramme de déploiement, d’interaction, de temps ou les collaboration sont abordés très succinctement en seulement 2 pages. Pourtant en 2 pages seulement l’auteur concentre l’essence de l’information sur ces digrammes et le lecteur intéressé y trouvera déjà de quoi les utiliser concrètement. De toute manière d’autres livre plus massifs existent pour traiter cette matière plus en profondeur, ce n’est pas le créneau de ce livre.

UML est un bon outil. Pas seulement pour le spécificateur, mais aussi pour le développeur ou toute personne au sein des projets pour simplement communiquer de manière efficace. Mais tout le monde ne peut ou ne veux investir beaucoup de temps à comprendre cet outil. UML distilled est sans contestation possible le livre idéal pour cela. Mon conseil ? Faites figurer ce livre de force dans toute bibliothèque d’un projet. Il contient le substantifique moelle de la notation UML qui peut être acquise avec un investissement de temps complètement optimisé. Ce serait dommage de passer à côté.

UML-distiled-3edt

Référence complète : UML Distilled, a brief Guide to the standard Modeling Language, Third edition – Martin Fowler – Addison Wesley / O.T. series 2003 –ISBN: 0-321-19368-7

UML Distilled: A Brief Guide to the Standard Object Modeling Language


http://www.goodreads.com/book/add_to_books_widget_frame/0321193687?atmb_widget%5Bbutton%5D=atmb_widget_1.png&atmb_widget%5Bhide_friends%5D=on

Note de lecture : Patterns of Enterprise Application Architecture, par Martin Fowler & al.

Note: 8 ; J’ai des scrupules à le juger excellent …

Franchement, rien que la première partie justifie l’achat du livre. En une centaine de pages, l’auteur parvient à faire le tour des aspects sur lesquels il faut opérer des choix d’architecture et les contraintes qui peuvent nous guider vers telle ou telle solution. Le tout est exposé clairement et simplement, avec limpidité devrai-je même dire, par comparaison aux autres ouvrages dédiés à l’architecture logicielle. Voilà qui devrait être une saine source d’inspiration pour les auteurs des pavés de 1000 pages !

L’auteur prend des positions nettes par rapport à ces choix, et c’est tant mieux. Cette première partie, par sa qualité et son narratif me rappelle “UML distilled” du même auteur.

En revanche c’est à “Refactoring” que me fait penser la seconde partie du livre, car Martin Fowler a utilisé ici la même présentation pour ses patterns. C’est plutôt une qualité, car j’avais déjà trouvé cette présentation claire et intéressante, même si elle tend à mettre beaucoup d’emphase sur le code (nous avons le droit à du Java – essentiellement – et aussi du C#) et parfois pas assez l’accent sur l’essence de la solution. Ces patterns (il y en a tout de même 51) sont regroupés en “thèmes” qui font le pendant aux chapitres de la première partie :

  • Organisation de la logique métier.
  • Architecture des sources de données
  • Mapping comportemental objet-relationnel
  • Mapping structural objet-relationnel
  • Mapping objet-relationnel des métadonnées
  • Présentation Web
  • Distribution des traitements
  • Gestion transactionnelle
  • Gestion des états
  • Patterns de base

Ce qui m’a certainement le plus troublé (et même choqué, devrais-je dire), c’est l’absence de référence aux autres ouvrages ! Et pourtant il devrait y en avoir. Pire : nombre de patterns présentés ici ne sont guère que des reprises de patterns déjà publiés. Les indécrottables de la galaxie Patterns (j’en fais partie) s’en offusqueront. C’est ce dernier point qui m’incite à ne pas attribuer un 10 à cet excellent livre. Il y a toutefois un aspect pratique : nous avons un livre complet et auto-suffisant de patterns applicatifs dans lesquels faire notre marché pour les applications d’entreprise. Et cet ouvrage est de haute qualité, cela mérite certainement quelques concession… Martin Fowler nous a plus ou moins suggéré qu’il pourrait y avoir un second volume: nous l’attendons toujours…

patterns-enterprise-architecture

Référence complète : Patterns of Enterprise Application Architecture – Martin Fowler with David Rice, Matthew Foemmel, Edward Hieatt, Robert Mee and Randy Stafford – Addison Wesley / Signature series 2002 – ISBN: 0-321-12742-0

Patterns of Enterprise Application Architecture


http://www.goodreads.com/book/add_to_books_widget_frame/0321127420?atmb_widget%5Bbutton%5D=atmb_widget_1.png&atmb_widget%5Bhide_friends%5D=on