Agile Tour Québec 2013

ATKiosk

Le 6 novembre dernier, a eu lieu la 5e édition du Agile Tour Québec. Étant bénévole, j’ai eu la chance d’assister à de belles conférences et aussi y faire de bons échanges avec les participants et présentateurs. Cette année, nous avons franchi le cap des 500 participants, ce qui est très bien pour la ville de Québec. Et encore une fois, de bons présentateurs sont venus donner leur temps pour nous parler de développement Agile.

Et voici le récapitulatif de ce que j’ai vu et entendu:

Rapid and Lasting Agile Adoption (conférenc principale)

J’ai été plus ou moins attentif à cette présentation étant donné l’effervescence du début de la journée et de l’inscription. Mais j’ai retenu quand même plusieurs points intéressants:

  • Passer d’une méthode de travail à une autre est comme un genre de deuil.
  • Un rite de passage est utile pour favoriser l’adoption « Agile » dans la culture d’entreprise.
  • Les gens doivent s’engager, idéalement, au lieu de se faire imposer une nouvelle manière de travailler.

Le conférencier a formalisé le tout autour du principe de « Open Agile Adoption ». Je trouve très intéressant tout cela et cela a plein de bon sens de faire des rencontres ouvertes ponctuelles pour discuter de l’adoption agile. On retrouve ici dans le schéma suivant l’essentiel de ce principe:

OAnA-fig1large1

Pour plus de détails, consulter les sites suivants:

À vos marques, prêts, codez!

Format un peu inusité pour cette présentation:

  • 2 développeurs programment avec sur un écran distinct.
  • Ils utilisent deux langages de programmation différents: le C# et le Python.
  • Un 3e présentateur est à l’arrière de la salle et fait l’animation.

Bien qu’inventif comme format, j’ai plus ou moins aimé. Malgré certains commentaires pertinents de l’animateur, il avait plutôt l’air de quelqu’un qui commente une game de hockey par moment.

Quand on présente un « Code Kata » dans une présentation, j’aime bien quand le développeur pense à haute voix et on peut ainsi comprendre son raisonnement et ses choix. Ce ne fut pas le cas ici. Seulement des interventions occasionnelles de l’animateur en questionnant les développeurs.

Aussi, l’introduction était un peu absente. Mettre le schéma du TDD au début aurait été utile pour certains.

Quelques points intéressants que j’ai notés:

  • Il y a de multiples chemins pour résoudre un Kata
  • Il est parfois utile de se mettre un minuteur pour nous rappeler à l’ordre afin de faire passer un test au « vert ».
  • Lors d’un refactoring ou perfectionnement du code, bien-être certain de l’intention.
  • Lors de l’étape « Rouge » ou faire un test qui échoue, au début il s’agit surtout d’améliorer le message d’erreur.
  • On est rarement assez agressif avec le refactoring.

Bref, un peu déçu, mais quand même bravo aux présentateurs, car ce n’est pas toujours facile de programmer « live » devant plusieurs personnes et d’essayer un nouveau genre de présentation.

Esclave de votre dette technique?

Présentation très dynamique de Pascal Roy et de Félix-Antoine Bourbonnais. Les deux gars sont des passionnés !

Les faits saillants:

  • Quadrant de la dette technique de Martin Fowler pour savoir quelle genre de dette technique on a affaire.
  • Des outils existent pour aider à identifier notre dette technique, comme la duplication par exemple.
  • Ne pas négocier votre dette
  • Faire du refactoring dans des endroits gagnants.
  • Prendre la responsabilité de cette dette.
  • Faire son bilan.
  • Chérissez votre code !

Voici la présentation intégrale sur Slideshare:

Javascript : Tester le code oublié

Bien que loin d’être un expert Javascript, j’ai fait à l’occasion, mais vraiment pas souvent, j’ai quand même aimé cette présentation.

L’interaction entre les deux présentateurs, Vincent Crépin (l’architecte) et Jean-Nicolas (le développeur) était intéressante. On voyait ainsi la réflexion de quelqu’un qui commence s’intéresser au Javascript avec l’aide d’un autre qui en mange tous les jours.

Les faits saillants:

  • Tester les fonctions qui sont au coeur du langage
  • Jasmine est le framework recommandé pour faire des tests style TDD/BDD. Il est assez simple de l’installer et de commencer à s’en servir.
  • Le concept de « closure » peut paraître complexe au premier abord, mais est très important à maîtriser.
  • Knockout.js est un framework Javascript intéressant pour faire une interface web avec le patron Model-View-ViewModel (MVVM).

Plus qu’une équipe : bâtir une entreprise Lean

George Saad a toujours des choses intéressantes à raconter. Cette fois-ci, c’est un peu plus personnel, car il nous explique le fonctionnement de sa boîte de développement web: Spektrum Media.

Avec une équipe réduite d’une dizaine de personnes où pratiquement tout le monde fait du code, il est possible d’être efficace outre les budgets.

En appliquant les principes Lean de bout en bout de son entreprise, il se permet de brasser la cage et de compléter des projets bien en deçà des budgets préliminaires. Comment fait-il exactement ?

  • Évite le gaspillage au maximum.
  • Se permettre de choisir les projets, car la demande est plus grande que l’offre de service de son entreprise.
  • Trouve le juste milieu entre le prix et la qualité
  • 1 seul développeur est nécessaire pour l’évaluation de la proposition. Par la suite, un analyste/chargé de projet y met son grain de sel.
  • Procède toujours en commençant petit, morceau par morceau, afin d’obtenir le feedback ou rétroaction le plus rapide du client. De cette manière, on valide régulièrement si on est sur la bonne voix et si cela vaut la peine de continuer.
  • Côté recrutement, cherche les meilleurs développeurs, le genre qui se foutent un peu du langage et de la technologie.

J’aime particulièrement le concept du « vendredi innovation ». À cette journée, les employés travaillent sur des projets personnels à moins qu’il y ait du retard dans un des projets pour des clients. Quand cela arrive, c’est une forme d’indicateur de gestion indiquant qu’il y’a peut-être des problèmes à l’horizon.

Référence:

Publicité

Agile Tour 2012: Les sessions Partie 2

Voici mon compte rendu des sessions de l’après-midi lors de l’Agile Tour Québec 2012. La partie 1 est ici.

Le Programmeur Lean Startup par Olivier Gourment

Olivier Gourment nous a offert une bonne présentation avec quelques touches d’humour. Parfait pour ne pas s’endormir après le repas du midi. Trois thèmes principaux étaient présentés. Les voici donc avec mes commentaires:

  • Lean Startup : Une introduction au Lean Startup est faite ici en expliquant le cycle « Construire – Mesurer – Apprendre ».  Le but dans un Lean Startup est d’apprendre le plus rapidement possible afin de construire le produit minimal viable. Très intéressante approche, que ce soit pour une entreprise en démarrage ou un projet interne dans une compagnie bien établie.
  • Code: Le code est souvent trop « gras » et nous ralentit. Il faut alors l’amincir avec du « Refactoring ». On fait la revue de quelques autres bonnes pratiques de programmation. Classique, mais toujours bon d’en faire le rappel.
  • Programmeur: On parle ici qu’il faut un peu du rôle de programmeur dans la vie de tous les jours. Olivier recommande d’adopter les pratiques d’ingénierie agile, prévoir la formation continue. Il a mentionné aussi un fait avec lequel je ne suis pas totalement d’accord: avoir des juniors dans notre équipe pour permettre l’innovation. Je crois davantage que l’on peut innover à tout âge. Pour favoriser l’innovation, j’irais en ayant simplement une équipe diversifiée et variée avec des gens différents, peu importe l’âge.

En conclusion, plusieurs sujets très intéressants ont été survolés. Mais je trouve que les sujets manquaient un peu de profondeur par moment. Aussi, les liens entre les trois thèmes principaux sont plus ou moins directs, mais bon ce n’est pas trop grave. Bonne prestation d’Olivier Gourment somme toute.

Références :

Le rôle de l’Architecte Agile par Jean-René Rousseau et Mathieu Boisvert

Sujet fort intéressant pour moi. Je ne pouvais me résoudre à aller voir toute autre présentation.

Question intéressante posée d’amblée: peut-on faire de l’architecture en amont en Agile ? Bien sûr que oui, on peut en faire un peu. L’architecture est quand même nécessaire afin d’avoir un aperçu des risques et complexités des problèmes à résoudre. Les approches Agiles occasionnent plusieurs impacts sur le rôle de l’architecte. Deux ont été ciblés et discutés lors de cette présentation:

  • Émergence et Incrémentalité: Il s’agit ici de bien balancer Anticipation et Adaptation afin de, sans trop tout détailler, avoir une architecture souple et ouverte aux changements.  On parle aussi d’établir des patrons de démarrage de projet. Aspect intéressant qui a été mentionné aussi: prévoir une stratégie pour gérer et planifier les considérations d’architecture.
  • Collaborer avec les équipes: L’architecte a son lot de responsabilité au sein d’une équipe. Il se doit de prévoir une stratégie de communication et accompagner son équipe. Il arrive souvent qu’il doive s’occuper de plusieurs projets en même temps. Mais, si la disponibilité le permet, la meilleure place pour lui est d’être équipier. Et je suis très en accord avec ce point. Ainsi, en étant équipier, il pourra davantage transmettre son savoir, guider l’équipe et aussi programmer à l’occasion. Ou mieux, faire de la programmation en paire histoire de se mettre à jour et faire un transfert de connaissance. Car un architecte qui ne code jamais risque de devenir un architecte dans sa tour d’ivoire.

Un problème que je remarque parfois dans les organisations, c’est que l’architecte logiciel est davantage un titre qu’un rôle.  Au lieu d’être un titre attribué, l’architecte logiciel ne devrait-il pas être un rôle, comme le ScrumMaster, qui est attribué selon le projet et peut changer à l’occasion ? J’imagine bien une équipe de programmeurs qui fait la rotation de ce rôle ou encore mieux, que ce rôle soit partagé par tous les membres de l’équipe. Cela ferait de très bons échanges de connaissances tout en permettant à tous de faire du code régulièrement. Bon, c’est peut-être une idée utopique, mais bon, cela fait du bien d’en parler.

Bref, malgré le fait qu’on dirait par moment que nous avons davantage le point de vue d’un architecte fonctionnel que d’un architecte logiciel, plusieurs points intéressants ont été amenés dans cette présentation. J’espère que d’autres présentations de ce genre suivront, car je crois que le sujet mérite d’être encore débattu, discuté et approfondi.

Références :

C’est quoi un Lean Startup ?

En gros, c’est un mélange de développement Lean et Agile avec une bonne dose d’entrepreneurship. Le but est d’éviter le plus possible de faire du gaspillage  et de livrer un produit innovateur avec succès. On y dénote les principes suivants:

  • Les entrepreneurs sont partout (Entrepreneurs are Everywhere)
  • L’entrepreneurship c’est aussi de la gestion (Entrepeneurship is Management)
  • L’Apprentissage est validé (Validated Learning)
  • L’innovation doit être comptabilisée (Innovation Accounting)
  • Construire-Mesurer-Apprendre (Build-Mesure-Learn)

Eric Ries est à l’origine de ce terme et il en parle depuis quelque temps. Je trouve sa démarche forte intéressante et cela m’a incité à me tenir informer sur ce sujet. En passant, le concept de Lean Startup peut aussi bien être appliqué à l’intérieur d’une compagnie existante que pour une entreprise en démarrage. Pour en savoir davantage sur Eric Ries, je vous recommande le vidéo suivant d’une de ses conférences qu’il a données récemment :

 

D’ailleurs, son livre sur le Lean Startup sera publié en septembre. J’aime beaucoup le graphique suivant qui montre le cycle de développement dans un Lean Startup:

25255_387440405880_387431575880_4176788_6681867_n (1)

On peut aussi se poser la question suivante, en quoi le Lean Startup est différent du développement Agile ? Le tableau suivant  de Joshua Kerievsky résume fort bien les différences et les similitudes entre le développement Agile et le Lean Startup:

Agile Lean Startup
Product Roadmap Business Model Canvas
Product Vision Product Market Fit
Release Plan Minimal Viable Product
Sprint Kanban
Sprint Review Pivot or Persevere Decision
On-Site Customer « Get Out Of The Building »
User Story Hypothesis
Backlog « To Learn » List
Definition of Done Validated Learning
Red-Green-Refactor Learn-Measure-Build
Customer Feedback Customer Validation
Acceptance Test Split Test
Velocity AARRR
Mock Object Feature Fake
Continuous Integration Continuous Deployment
Certified Scrum Master Customer Success Manager

 

Est-ce que vous pensez que ce genre de modèle peut réussir ici au Québec ?

Est-ce qu’il y a vraiment des entrepreneurs un peu partout ici ou c’est seulement réservé à nos voisins du sud ?

Est-ce que vous connaissez des exemples de compagnies d’ici qui ont appliqué ce modèle ?

 

Références: