Est-ce que votre architecture est organique ?

greek-house-1428553-m

Bon, il fallait que j’en parle, cela me tracasse depuis longtemps. Est-ce que vous savez que le terme « organique »  est inapproprié lorsque l’on parle d’une architecture en informatique ou du rôle architecte organique ? C’est un de mes anciens collègues, Guy Larochelle, qui m’avait déjà expliqué cela il y a quelque années.

En passant, noter que cette opinion, comme dans tous mes billets, est la mienne et ne représente pas nécessairement celle de mon employeur actuel.

Pour répondre à la question qui fait le titre de ce billet, Est-ce que votre architecture est organique, je répondrai : j’espère bien que non !  Votre architecture (logicielle) ne devrait pas idéalement être organique.  Je m’explique :

Au Québec et en particulier dans la région de la ville de Québec, chez les organismes gouvernementaux et certaines grandes compagnies, ce terme est associé régulièrement aux noms suivants:

  • Architecture organique
  • Architecte organique
  • Analyste organique
  • Concepteur d’architectures organiques

Pourtant, si on regarde la définition « officielle »  sur Wikipédia (français) de l’architecture logicielle, qui est le vrai terme ici en passant, on retrouve une mention de ce qu’est une architecture organique:

Bien des logiciels ont été créés sans architecture par plusieurs générations de développeurs ayant chacune usé d’une imagination débordante pour réussir à maintenir l’intégrité du système. Une telle absence d’architecture peut être qualifiée d’architecture organique. En effet, un développeur confronté à une telle architecture a plus l’impression de travailler avec un organisme vivant qu’avec un produit industriel. Il en résulte que la complexité du logiciel fait en sorte que celui-ci est extrêmement difficile à comprendre et à modifier. À la limite, modifier une partie du système est plus proche, en complexité, de la transplantation cardiaque que du changement de carburateur.

Rien de bien élogieux ici. Je ne crois pas qu’au Québec, nous sommes les champions de ce genre d’architecture, aussi parfois appelé « big ball of mud architecture ». Je pense que nous ne sommes pas mieux, pas pire qu’ailleurs.

Bien que les origines de cette erreur remontent à plusieurs années et je crois qu’il est inutile de déterrer tout cela et de blâmer quiconque.  Vaut mieux se concentrer à corriger cette expression erronée. Mais comment faire ? Bonne question. Pour commencer, pourquoi ne pas y aller avec simplement ainsi:

  • Expliquer à notre entourage que le terme « architecture organique » est erroné et qu’il vaut mieux utiliser « Architecture logicielle ».
  • Dans nos titres, rôles, affichage de poste ou dans nos CV, remplacer « architecte organique » par « architecte logiciel » lorsque c’est le cas.

Vous avez d’autres idées ?

Références :

Publicités

Top 5 – Lectures 2012

J’ai fait plusieurs lectures en 2012 et sur des sujets diverses. Je vous propose ici une compilation Top 5 des meilleurs ouvrages liés au domaine de l’informatique que j’ai lu dans le courant de l’année 2012:

1. Software Architecture for Developers par Simon Brown

Excellent résumé de ce que fait (et devrait faire) un architecte logiciel et comment partager sa structure et sa vision à l’équipe. L’auteur, Simon Brown, nous montre son côté pragmatique dans cette vue d’ensemble. J’ai apprécié particulièrement les parties sur le rôle d’architecte et la façon de concevoir et de communiquer le logiciel.

On y parle aussi de l’agilité et de son impact sur l’architecture ainsi que la notion qu’un diagramme UML n’est pas toujours nécessaire. Noter que ce livre est publié de manière indépendante sur « Leanpub » et est toujours en évolution. Un « Must » à lire pour tout développeur ou un architecte logiciel!

Lien du livre sur LeanPub

 

2. Specification By Example par Gojko Adzic

Gojko Adzic nous a écrit un 2e livre sur les spécifications.  Son premier, Bridging the communication gap, était surtout de nature théorique. Cette fois-ci, on nous présente les expériences de personnes et organismes différents avec l’utilisation de la spécification par l’exemple. En plus de cela, nous voyons comment Gojko a fait évoluer sa pensée sur la spécification et après quelques chapitres, nous allons au-delà des notions de base.

Soit dit en passant, ce livre ne parle pas de code ou d’outils. Seulement des principes et des pratiques utilisées pour communiquer les spécifications dès le début d’un projet logiciel jusqu’à sa fin.
Un des beaux résultats de cette approche est que tout le monde dans une équipe de développement logiciel travaille à avoir une « Documentation vivante » au lieu d’un tas de papiers classés quelque part dans un classeur.

Je recommande cette lecture à toute personne impliquée dans la création de logiciels. En particulier si utilisez les approches suivantes:  Behaviour Drive Development (BDD), Acceptance Test-Driven Development (ATDD), Test-Driven Development (TDD) et le Domain Driven Design (DDD).

Liens commandités du livre sur Amazon : France | Canada | USA

 

3. Techical Blogging par Antonio Cangiano

Si vous êtes sérieux à propos des blogues, ce livre est pour vous. L’auteur, Antonio Cangiano, couvre de nombreux aspects liés à l’écriture de blogue tels que la planification, la création de contenu, la promotion, le référencement, les avantages et les médias sociaux. Certains aspects sont directement liés à l’outil de blogage WordPress, mais la plus grande partie du contenu de ce livre peut être appliqué à n’importe quel type de blogue.

Liens commandités du livre sur Amazon : France | Canada | USA

 

4. Steal like an Artist par Austin Kleon

L’auteur, Austin Kleon, nous donne 10 règles pour développer notre créativité. Ces règles peuvent être utiles à toute personne, artiste ou non. En fait, pourquoi voler comme un artiste ? Parce que rien n’est original finalement… Le livre est aussi magnifiquement illustré et le papier utilisé pour imprimer le livre est de grande qualité. Le résultat: un excellent livre sur la créativité et la productivité qui se lit très bien. Inspirant !

Liens commandités du livre sur Amazon : France | Canada | USA

 

5. Impact Mapping par Gojko Adzic

Un 2e livre de Gojko Adzic dans mon Top 5 (eh oui !). Celui-ci est un peu différent toutefois. En fait, il s’agit plutôt d’un guide qu’un d’un livre en soit. L’auteur nous présente une technique pour mieux comprendre, mesurer et aligner les objectifs de l’entreprise avec la planification de la livraison d’un produit logiciel. Voici le « Impact Mapping » qui est une sorte de schéma heuristique (ou « Mind Map ») pour représenter les aspects suivants: But (pourquoi), Acteur (qui), Impacts (comment) et  le Livrable (quoi). Aussi, le livre est magnifiquement illustré. Je recommande vivement d’obtenir la version papier.

Liens commandités du livre sur Amazon : France | Canada | USA

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 :

Coder son architecture

Est-ce que vous connaissez le blogue suivant :

image

Si oui, tant mieux 🙂

Sinon, je vous le conseille fortement, surtout si l’architecture logicielle vous intéresse. D’ailleurs on le retrouve parmi ma liste de blogue que je lis disponible dans la colonne droite de ce blogue.

L’auteur du blogue, Simon Brown, a les mêmes opinions que moi par rapport au rôle de l’architecte et des programmeurs. Soit  :

  • Un architecte logiciel ne devrait jamais arrêter de coder afin d’être toujours conscient de ce qui se passe à ce niveau et ainsi éviter de se retrouver avec le syndrome de la tour d’ivoire.
  • De la même manière, les programmeurs devraient avoir la vision globale de l’architecture et ne pas seulement se concentrer sur leur bout de code.

Les grandes lignes de ce blogue se retrouvent dans la liste suivante (Je vous recommande fortement de les consulter !!!) :

Aussi, d’autres articles intéressants:

question con 2Et vous, que pensez-vous du rôle d’un architecte logiciel ?

Êtes-vous d’accord avec les propos de Simon Brown ?

Quels rôles en général l’architecte logiciel occupent dans vos projets informatiques ?

Est-ce qu’il y a des améliorations à faire à ce niveau ?

 

Comme d’habitude, les commentaires sont les bienvenues !