Note de lecture : Software Configuration Management Patterns: Effective Teamwork, Practical Integration par Stephen Berczuk & Brad Appleton

Note: 8 ; Un “langage de patterns” bien construit, mais aussi une excellente référence sur la gestion de configuration.

On trouve deux types d’ouvrages sur la gestion de configuration : ceux développant des processus de gestion de configuration, souvent compliqués et éloignés des préoccupation quotidiennes des développeurs, et ceux traitant des outils, les détaillant en profondeur mais sans réellement expliquer comment les utiliser intelligemment. Cet ouvrage se démarque résolument de ces deux tendances en exposant les principes de la gestion de version et de configuration sous forme de « process patterns » qui sont autant de cas d’utilisation. Des cas d’utilisation résolument tournés vers le développeur, afin de l’aider dans ses tâches quotidiennes.

Une courte première partie introductive recadre la place de l’outil de gestion de versions et de configuration dans l’environnement de développement. Il présente également la structure des patterns et l’image globale de ce langage de patterns. On y distingue deux sous-ensembles : les patterns orientés « codeline » c’est-à-dire purement gestion de version, et les patterns liés à la gestion de l’espace de travail.

La seconde partie, forte de 120 pages, forme 16 chapitre, chacun présentant un pattern (donc, une moyenne de 7 pages par patterns). Je ne saurais tous les présenter, mais en voici quelques uns :

Active development line : Comment gérer une branche de développement suffisamment utilisable et stable à tout moment, afin de satisfaire les besoins de développement

Private build : Pensez de façon globale, et construisez localement. Ou comment, avant de soumettre des changements, construire et tester de manière identique au build d’intégration, mais sur l’espace privé de développement

Intégration build : Pour s’assurer que toutes les changements injectés dans le repository central sont construits et testés par un processus centralisé.

Task level commit : Pousser dans le gestionnaire de versions à chaque changement de faible granularité mais indissociable (résolution d’un problème, mise en conformité avec une évolution d’interface, etc.).

Comme c’est le cas avec les bons patterns, un bon nombre nous donne un goût de déjà-vu. D’autres moins. L’approche « patterns » est réellement utilisée à bon escient : le problème est évoqué, souvent étayé par une expérience vécue, pour déboucher ensuite sur le développement de la solution, soutenus par des références extérieures. On appréciera aussi, mine de rien, de voir relevé en vis-à-vis des patterns, les points non résolus ! Que vous soyez expérimentés ou débutant, vous devriez vous régaler à la lecture de ces patterns : on bénéficie réellement de l’expérience et de la qualité de synthèse et d’expression des auteurs. Connaître les commandes de votre outil de gestion de version n’est pas tout (bien que cela soit nécessaire), il faut savoir utiliser et organiser son travail au quotidien afin de travailler de façon efficace, coopérative et rigoureuse afin d’éviter les problèmes inhérents au travail en équipe. Ce langage de pattern est sans nul doute la réponse pragmatique, efficace et opérationnelle. Le tout en moins de 200 pages. Last but non least, les appendices si succincts soient-ils fournissent d’excellents liens Web et une ébauche d’évaluation des outils existants. Vous aurez compris : j’ai aimé.

Les DVCS ont certainement ajouté leur lot de patterns également, même si ceux évoqués ci-dessus restent d’actualité. J’adorerais voir une seconde édition de l’ouvrage intégrant cela. Une autre avancé possible est la prise en compte de la déliverie en continue (le devops) dans le cycle logiciel abordé.

Les auteurs travaillent à une seconde version de l’ouvrage, toutefois celle-ci est encore à l’état de projet. Il n’est d’ailleurs pas dit qu’elle sorte un jour.

soft-conf-mgt-patterns

Référence complète : Software Configuration Management Patterns: Effective Teamwork, Practical Integration – Stephen P. Berczuk & Brad Appleton – Addison Wesley / SP series 2002 – ISBN : 0-201-74117-2

Software Configuration Management Patterns: Effective Teamwork, Practical Integration

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

Note de lecture : Manage Your Project Portfolio, Increase your capacity and finish more projects, par Johanna Rothman

Note:6 ; Pas aussi bien qu’espéré

Voilà un sujet qui m’intéresse au premier chef : comment gérer, non pas un projet, mais un ensemble de projets organisés en un « portefeuille ». La grande qualité de cet ouvrage est certainement de ne pas chercher midi à quatorze heures, et de rester simple et pragmatique. D’ailleurs le format du livre reflète cette concision : 11 chapitres couvrant 160 pages.

Les deux premiers chapitres nous font découvrir ce qu’est un portefeuille de projets, comment le structurer et comprendre le cycle de vie de ses projets.

Dans les chapitres 3 et 4, on apprend tout d’abord à organiser ses projets : quel doit être leur granularité ? Les projets doivent-ils être structurés en programmes ? On y voit finalement quoi envisager de l’avenir d’un projet commit, kill, transform) en fonction de sa nature.

Prioriser et travailler en groupe pour décider du devenir du portefeuille sont l’objet des chapitres 5 et 6. L’auteur y propose plusieurs techniques à cet égard.

Les chapitres 7 à 9 s’avèrent moins originaux : ils traitent de la vie et de l’évolution itérative du portefeuille. Ce qu’on y lit, bien qu’intéressant, ne diffère guère de ce que l’auteur a pu dire de la gestion de projets dans « Manage It ». Même si le propos sur l’approche agile en général, et le Lean en particulier sont clairement intéressants, ils n sont pas spécialement originaux dans le contexte de ce sujet en particulier.

Le chapitre 10 sur les mesures peut également aussi bien s’appliquer au niveau d’un portefeuille que d’un projet. Je pense quand même qu’appliquer ces métriques au niveau de l’itération relève d’une granularité trop fine. Simple question d’appréciation personnelle.

Fort heureusement, on termine avec une note plus originale : définir sa mission, en tant qu’équipe ou en tant que manager. C’est un exercice à la fois simple et dans le principe et difficile dans la mise en œuvre. Mais il éclaire beaucoup dans la ligne de conduite et la façon d’évaluer son portefeuille de projets.

En bref, voici un livre qui donnera un certain nombre de clés pour réussir à gérer son portefeuille de projets. En fait, j’ai déjà utilisé une partie de ce que l’auteur propose pour travailler mon propre portefeuille de projets, avec succès. Je suis toutefois un peu déçu par ce que j’y ai trouvé, mais certainement parce que mes attentes se situaient assez haut, eu égard à ce que l’auteur nous a livré jusqu’ici.

Ma note reflète surtout mon niveau d’exigence par rapport aux textes écrits par Johanna Rothman : il est bien plus élevé que pour le commun des auteurs. Malgré une notation qui peut paraître modérée, c’est un livre que je recommande sans réserves.

manage-project-portfolio-pragprog

Référence complète : Manage Your Project Portfolio, Increase your capacity and finish more projects – Johanna Rothman – The Pragmatic Bookshelf 2009 – ISBN: 978 1 93435 629 6

Manage Your Project Portfolio: Increase Your Capacity and Finish More Projects


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

Note de lecture : Software Estimation, Demystifying the Black Art, par Steve McConnell

Note : 8 ; Steve McConnell frappe encore!

Les ouvrages de Steve McConnell sont parmi les seuls que j’achète sans les ouvrir : quand je vois un nouveau titre, je ne cherche même pas à savoir ce qu’il y a à l’intérieur, j’en fais juste l’acquisition ! Celui-ci, colle à l’accoutumée (ou presque) et ne m’a pas déçu.

McConnell différencie l’art de l’estimation et la science de l’estimation. La « science », ce sont les méthodes d’estimation permettant, à l’aide de formules, d’euristiques et de facteurs d’ajustement d’obtenir des chiffrages de projet ; les approches telles que FPA et Cocomo II se rangent dans cette catégorie. Ce livre traite de l’autre partie : l’art de l’estimation.

La première partie est consacrée aux concepts de l’estimation. Cette partie est particulièrement précieuse pour comprendre et justifier les facteurs d’incertitude, les facteurs influençant les estimations et les sources d’erreur.

La seconde partie constitue le cœur du livre, puisque l’auteur y livre son approche des estimations. Celle-ci est basée sur un simple processus : compter, calculer et juger. Autour de cette approche, Steve McConnell développe plusieurs techniques, telles que l’utilisation de données historiques, le jugement d’experts, l’estimation par analogie ou en groupe.

La dernière partie se focalise sur les challenges particuliers de l’estimation : estimer la taille, évaluer l’effort associé et estimer une planification. Au-delà des estimations elle-mêmes, le problème le plus souvent rencontré est la présentation des résultats et le traitement des problèmes politiques entourant les estimations.

Les estimations sont un problème épineux, peu d’ouvrages traitent ce problème. Ceci fait de ce livre un ouvrage particulièrement précieux sans être inutilement compliqué. C’est pour cela que je conseille ce livre sans réserves aucune.

mcconnell-software-est

Référence complète : Software Estimation, Demystifying the Black Art – Steve McConnell – Microsoft press 2006 – ISBN: 0-7356-0535-1

Software Estimation: Demystifying the Black Art


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

Note de lecture : Peopleware: Productive projects and teams (2nd edition), par Tom DeMarco & Timothy Lister

Note : 10 ; De la gestion de projets à la création de communauté : une aventure humaine. Book of the year 2001 !

J’aurais pu ranger ce livre dans la catégorie “méthodes agiles”, tant le propos développé dans cet ouvrage est proche de l’extrême programming. Ce livre concerne le management, ou plutôt la gestion de projets mais dans le sens où la gestion d’un projet est d’avantage une question de faciliter la synergie de groupe que de méthodologies formelles. Qu’ont donc en commun les projets ayant abouti à des succès remarqués ? Une gestion du projet et des ressources particulièrement méticuleuse ? Parfois. La formation d’un groupe d’experts hautement qualifiés ? Pas toujours. L’utilisation d’un processus élaboré distribuant tâches rôles et responsabilités de façon rigoureuse et détaillée ? Rarement. Peopleware expose les traits communs de ces projets : la formation d’une équipe soudée, volontaire, complémentaire. Mais aussi la fierté d’appartenir à un groupe d’excellence, d’évoluer dans un environnement où la contribution individuelle et collective est reconnue.

Parler de la dynamique humaine dans les organisations ou les projets est presque devenu un lieu commun, que peu de personnes nient. Toutefois, cet aspect essentiel est presque immédiatement mis de coté au démarrage des projets, car « cela n’est pas applicable aux réalités du terrain ». Ce texte n’est pas une théorie sur les relations humaines, mais une suite d’essais adressant des aspects particuliers du sujet et s’appuyant sur des exemples concrets issus de la longue expérience de consulting des deux auteurs. Même si ils n’en ont pas la forme, ces essais sont pratiquement des patterns, ce qui en fait un ouvrage en avance sur son temps, car publié en 1987 pour la première édition. D’avant-garde, ce livre l’est encore d’avantage car il pose tout les fondements des méthodes agiles tels que l’extreme programming ou le lean development, par exemple.

Le livre est découpé en 6 parties totalisant 34 chapitres (ou essais). Le total n’étant que de 226 pages vous comprendrez que chaque chapitre n’excède pas quelques pages, ce qui renforce encore leur analogie avec les patterns. Les thèmes abordés au long de ces 6 parties sont : gestion des ressources humaines, l’environnement du bureau, le choix des bonnes personnes, la croissance des équipes productives, l’épanouissement dans le travail et quelques sujets connexes regroupés en dernière partie.

Il n’y a pas de recette miracle au succès des projets ou des organisations : la réussite passe par l’utilisation intelligente de la matière première principale : les hommes. Si vous souhaitez mieux appréhender cette dimension, ce grand classique est pour vous. Attention toutefois, le style un peu littéraire rend la lecture en anglais légèrement plus ardue que celle des autres ouvrages américains à finalité technique que nous avons d’avantage l’habitude de croiser.

peopleware

Référence complète : Peopleware: Productive projects and teams, 2nd edition – Tom DeMarco & Timothy Lister – Dorset House 1999 – ISBN: 0-932633-43-9

Peopleware: Productive Projects and Teams


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

Note de lecture : Professional Software Development, par Steve McConnell

Note: 8; Comment faire du développement logiciel une profession… et une carrière!

L’informatique constitue-t-elle une véritable profession d’ingénierie ? C’est à cette difficile question que tente de répondre Steve McConnell dans ce livre. Le constat initial est plutôt sévère, c’est l’objet de la première partie du livre. Les pratiques d’usage les plus répandues sont encore et toujours le « code and fix » et le noyau de connaissances universellement partagé par les professionnels reste considérablement plus faible que dans les disciplines d’ingénierie classiques établies de longue date. Ce constat amène l’auteur à considérer deux dimensions à la mesure de maturité de la profession :

  • Le corpus de connaissance : il se décline en un noyau stable (pour lequel la demi-vie des connaissances est de 50 ans) et un « body of knowledge », plus large, dont la demie-vie est de 10 ans.
  • Les éléments statutaires de la profession : certification, code d’éthique, sociétés professionnelles (telles que IEEE et ACM), développement professionnel, licences et accréditations.

Le second thème développé par l’auteur est le « professionnalisme individuel », où comment, à titre individuel, s’engager dans une voie de développement personnel. Là encore l’auteur présente ce développement en étapes, depuis le « mode héros », auquel succède la prise de conscience, le partage au sein de communautés, l’étape la plus haute étant le partage par la publication de textes.

Après le professionnalisme individuel, viennent les organisations professionnelles : comment structurer, favoriser la montée en compétence et la reconnaissance du professionnalisme des membres d’une organisation ? Plutôt que de passer en revue les chapitres de cette partie, intéressons-nous plutôt au « Construx Professional Development Program ». Dans ce programme de développement que l’auteur a mis en place dans sa propre société, les consultants sont évalués et évoluent sur des échelles de compétences par discipline d’ingénierie. Ces disciplines d’ingénieries sont définies au sein d’un organisme, le Swebok (Software Body Of Knowledge, émanation de l’IEEE). Il définit une échelle allant de 9 à 15, 10 “knowledge area” déclinés en 4 niveaux (introduction, compétence, leadership et maitrise). Chaque étage de l’échelle définit le nombre de KA pour lesquelles il faut avoir l’un des 4 niveaux. Cette échelle permet de définir des plans de progression professionnelle, définissant les actions à mener, les formations à suivre, etc..

Si cet ouvrage est surtout une source de réflexion plus profonde sur ce que veux dire ou devrait vouloir dire être un professionnel de l’informatique. Il établit les bases de ce que devrait être une véritable reconnaissance de l’informatique en tant que profession. Et c’est là une réflexion que devraient mener toute société de service informatique. Il est clair que nous en sommes loin.

prof-sofware-dev-mcconnell

Référence complète : Professional Software Development – Steve McConnell – Addison Wesley 2004 – ISBN: 0-321-19367-9

Professional Software Development: Shorter Schedules, Higher Quality Products, More Successful Projects, Enhanced Careers


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

Note de lecture : Collaboration Explained, facilitation skills for software project leaders, par Jean Tabaka

Note: 7; Tout pour devenir le facilitateur de compétition!

Cet étonnant ouvrage compte 360 pages, uniquement pour développer les techniques collaboratives au sein des équipes de développement. Le cœur du sujet est bien entendu le meeting. L’auteur développe les différents types de meetings, comment les organiser, établir un agenda et des objectifs. Il est très agréable de constater que l’auteur a le sens du détail: Jean nous proposes des listes de matériels à utiliser, des astuces comportementales et souligne les points importants.

Ce livre n’est pas une lecture légère: si le nombre de pages le classe dans une bonne moyenne, le texte est pratiquement dépourvu de toute illustration, et c’est dommage! La lecture aurait gagné en clarté avec quelques diagrammes bien pensés, mais surtout avec des photos illustrant l’organisation des meetings telle qu’elle est décrite. Ceci est d’autant plus dommage que Jean fait cela très bien Durant ses présentations. Pour nous autres, pauvres français, il y a aussi une autre difficulté: le texte est écrit dans un anglais assez élaboré, avec des phrases assez longues. Pour en finir avec les reproches, disons que le propos est parfois un peu abstrait et gagnerai en facilité d’abord avec des exemples concrets. Fort heureusement, les “anecdotes” de l’auteur compensent au moins en partie cette lacune, en plus d’être agréables à lire.

Collaboration Explained est une réelle somme de connaissance sur le sujet, sans nul doute la référence sur le sujet. C’est pour cela que je le conseille sans réserves. Soyez toutefois conscient qu’il ne s’agit pas là d’une lecture légère !

collaboration-explained

Référence complète : Collaboration Explained, facilitation skills for software project leaders – Jean Tabaka – Addison Wesley / ASD series 2006 – ISBN: 0-321-26877-6; EAN: 978-0-321-26877-8

Collaboration Explained: Facilitation Skills for Software Project Leaders


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

Note de lecture : 97 Things Every Project Manager Should Know, Barbee Davis edt.

Note : 4 ; Hétéroclite et peu convaincant

Ce livre qui fait partie de la collection « 97 things » n’est guère marquant. On y trouve des conseils de chefs de projets ou personnes apparentées, venus de tous horizons. C’est là que le bât blesse : il n’y a aucune cohérence entre les différentes interventions. Certaines viennent du monde « commande & contrôle » nous avisant de mieux définir les rôles les frontières et de rendre le processus plus définis, tandis que d’autres nous guident vers des processus agiles. Il en va de même pour les aspects évoqués : depuis la vision jusqu’au suivi d’avancement en passant par les estimations, la collaboration avec les utilisateurs. Tous ces sujets méritent d’être traités, mais ici on a plus un patchwork d’intervention avec des conseils parfois contradictoires que la couverture du sujet !

Certaines interventions sont toutefois très pertinentes. Si l’on prend cet opuscule pour ce qu’il est, une sorte de menu à la carte où l’on retient ce que l’on veut, on peut retirer disons 10% à 20% de matière donnant à réfléchir. Ce n’est pas sensationnel, mais on a vu pire.

97-things-PM-oreilly

Référence complète : 97 Things Every Programmer Should Know – Kevlin Henney edt. – O’Reilly 2010 – ISBN : 978 0 596 80948 5

97 Things Every Programmer Should Know: Collective Wisdom from the Experts


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

Note de lecture : Peer Reviews in Software, a practical guide, par Karl E. Wiegers

Note : 7 ; Une approche qualité “à la CMM”, toutefois claire et efficace. Mais le livre n’atteint pas la qualité des autres livres de l’auteur!

Que cela soit bien clair: Karl Wiegers est un auteur remarquable. C’est pour cela que je dirai que ce n’est pas le livre le plus remarquable de cet auteur, mais cet ouvrage assez court donne toutefois une bonne idée d’une approche “processus ” (mais alors vraiment processus !) De la revue de pairs. Le propos est un peu moins concret que ce que l’auteur a l’habitude de nous livrer, mais il faut bien dire qu’écrire un livre sur la revue de pairs est probablement un exercice difficile.

Du coté positif, l’auteur a une connaissance et une vision exceptionnellement large du sujet, et il est capable de synthétiser très efficacement cette vision. Coté négatif, je regrette que l’ouvrage se focalise exclusivement sur une approche “processus lourd”, à la CMM, ce qui ne conviens guère à toute les organisations, et surtout aux plus petites qui ont quand même des besoins de revue. J’ai aussi été un peu gêné tout le long de l’ouvrage par l’absence de cas d’étude concret. Cela dit, le livre est assez bien complété par des artéfacts disponibles sur le site Web.

Ce livre pourra vous convenir, si vous savez ce que vous allez lire, c’est à dire un livre très orienté processus. Vous apprécierez alors la capacité de l’auteur à s’exprimer efficacement en moins de 200 pages.

peer-reviews-software

Référence complète : Peer Reviews in Software, a practical guide – Karl E. Wiegers – Addison Wesley / I.T. series 2002 – ISBN: 0-201-73485-0

Peer Reviews in Software: A Practical Guide


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

3 décennies de « book of the decade »

J’ai posté il ya quelques jours une liste de mes “book of the year”. Voici une autre liste que j’entretiens: les “book of the decade”

Quels sont les livres qui ont vraiment fait changer votre façon de voir votre métier ? ceux qui ont réellement fait évoluer vos pratiques et peut-être même votre carrière ?

En découpant par tranche de 10 ans, j’ai relevé un livre qui fut chaque fois marquant. J’ai bien un peu triché dans mon découpage, mais que diantre: ce sont MES “books of the decade” ! On retrouve ces titres dans la liste des “book of the year”. C’est assez logique, mais en fait ce n’est pas un critère !

1981-1990 : Gödel, Escher, Bach: Les brins d’une guirlande éternelle – Douglas Hofstadter – InterEdition

1991-2000 : Design Patterns, Elements of reusable object oriented software – Erich Gamma, Richard Helm, Ralph Johnson & John Vlissides

2001-2010 : Extreme Programming Explained: Embrace Change – Kent Beck – Addison Wesley

La quatrième décennie a déjà commencé. Rien n’émerge, mais il me reste 9 ans pour trouver cette perle rare.

Note de lecture : Balancing Agility and Discipline, A guide for the perplexed par Barry Boehm & Richard Turner

Note : 6 ; Une vue pragmatique et construite du processus combinant les les avantages des approches agiles et planifiées.

Il était temps qu’un auteur dépasse le cantonnement des approches prescritives et agiles, chacune prétendant sauver le monde avec sa propre vision intégriste du processus. Boehm et Turner analysent avec beaucoup d’acuité les avantages et faiblesses de chacune des approches (dont ils ont une bonne connaissance), et font une analyse assez correcte des bénéfices que l’on peut tirer de leur combinaison, comment le faire et en quelles circonstances. Cela est illustré par 2 cas d’études « avant et après » sur des projets destinés à être soit plutôt agile, soit conduit par un plan.

Il reste à espérer que cette première pierre soit le début d’une tendance où l’ouverture d’esprit dominera sur l’esprit partisan. En ce qui me concerne, j’avoue y porter un réel intérêt. Néanmoins, l’ouvrage en lui-même est un peu frustrant, car les 160 pages du texte principal ne font guère office que d’introduction à cette approche convergente. Certains outils proposés comme le « home groud polar chart », ou le « sweet spot chart », sont assez intéressants, mais je suis plus perplexe face à la « risk based method », destinée à déterminer la combinaison d’agilité et planification à appliquer.

On notera également le volume particulièrement important des annexes (70 pages). Cela reste insuffisant pour conseiller sans réserve cet ouvrage qui renferme cependant un incontestable savoir-faire.

balancing-agility-discipline

Référence complète : Balancing Agility and Discipline, A guide for the perplexed – Barry Boehm & Richard Turner – Addison Wesley 2003 – ISBN: 0-321-18612-5

Balancing Agility and Discipline: A Guide for the Perplexed


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