Entrevue pour le Canal Argent

J’ai eu l’opportunité de donner une entrevue à Georges Pothier du Canal Argent jeudi passé.  Ils voulait l’avis d’un expert sur les raisons du dépassement d’un projet comme le dossier de santé du Québec (DSQ). C’est un sujet qui m’intéresse beaucoup, j’ai écrit quelques fois là-dessus sur mon blogue (1, 2, 3, 4). J’ai été malheureusement incapable de trouver l’entrevue intégrale sur le web, je ne l’ai pas vu moi-même. J’ai vu un extrait au bulletin réseau de 22 heures du 13 janvier. Malgré tout, voici un extrait d’un article qui se retrouve sur leur site :

Questionné par Argent, Nicolas Roberge, président d’Ovologic, une compagnie spécialisée intégration de systèmes informatiques, indique pourtant que d’autres pays du monde ont déjà informatisé leurs dossiers.

«Le système de santé québécois est assez décentralisé, les hôpitaux ont beaucoup de contrôle sur leur manière de fonctionner, explique-t-il. Le dossier de santé informatique nécessite une certaine collaboration de tous les joueurs.»

«Chaque personne a une façon de faire qui est à elle, précise M. Roberge. Certains hôpitaux importants sont capables de décider du déroulement du projet et d’orienter des décisions. Il y a un peu une guerre de clochers et la conciliation prend du temps.»

Nicolas Roberge apporte un éclairage sur les méthodes du gouvernement. «On favorise les très gros appels d’offres. Il y a un problème avec l’entretien des systèmes informatiques. On attend l’état de désuétude et on est obligés de remplacer tout. Cela exclut les plus petits joueurs, qui ne sont pas en mesure de soumissionner.»

L’encadrement et les ressources fournies aux entreprises qui exécutent les contrats sont parfois insuffisants, ce qui n’aide pas la cause. «Le gouvernement n’est jamais blanc comme neige dans ces situations-là et c’est pour cela qu’il assume des dépassements de coûts.»

À l’opposé, les demandes techniques sont souvent trop pointues, ajoute-t-il. «Une chose qui est spéciale au gouvernement du Québec est que nous avons tendance à préciser beaucoup trop ce que l’on veut. C’est facile, lorsqu’un projet est amorcé, que des imprévus ouvrent des brèches au niveau du contrat.»

via 300 M$ pour brancher 8 pharmacies.

C’était ma deuxième expérience dans un studio de télévision. J’avais déjà donné une entrevue il y a longtemps pour l’émission Micro.info avec François Taddei diffusé à VOX.

Le cercle vicieux des projets éléphants

crédit photo Brian Snelson

Les projets gigantesques ont récemment eu très mauvaise presse dans les médias québécois. Comment en arrive-t-on là? Pourquoi de si gros projets? Pourquoi dépassent-ils les budgets prévus? Pourquoi certains échouent-ils? Je vais tenter de démystifier tout ça pour vous. Voici ma perception et mon opinion sur la chose, ayant moi-même participé à l’un d’eux, soit le projet RISE de la Commission administrative des régimes de retraite et d’assurances (CARRA)

La dette technique

Dans les grandes organisations, les systèmes informatiques ont souvent été gérés en mode projets. Une fois le projet terminé, il se retrouve en mode maintenance, et celle-ci répond à trois critères bien précis :

  • La maintenance d’un projet consiste à affecter une équipe dont le rôle est uniquement d’apporter des correctifs en cas de problème (« break & fix »).
  • Le programmeur assigné au soutien de l’application n’a pas pour mandat d’améliorer l’application. Il doit uniquement la remettre sur le droit chemin si elle déraille.
  • Le programmeur est également contraint à des délais d’intervention déterminés par la gestion et qu’il doit respecter. Il doit alors réaliser la correction avec empressement, ce qui la rend par le fait même quelque peu boiteuse.

Par exemple, alors que j’étais affecté à la maintenance d’un projet, j’ai déjà reçu la consigne de cesser d’éplucher les journaux d’erreurs (« logs ») des applications en production pour corriger les anomalies des utilisateurs. Sans un appel de soutien technique formel, on ne devait pas bouger. On fermait les yeux sur des anomalies techniques importantes.

Ce genre de décision d’affaires crée inévitablement une dette technique. L’application est conçue pour un besoin « X » et une certaine charge d’utilisation « Y » au moment de sa création. Toutefois, les temps changent. Puisque le programmeur ne fait que des corrections très succinctes (mieux connues sous le vocable de « patchs »), le projet devient alors de plus en plus complexe et difficile à maintenir.

À force de repousser nos problèmes, on frappe un mur

Le retard devient si important qu’on ne peut plus améliorer l’application. C’est moins coûteux et moins risqué de la refaire à neuf. Le projet deviendra alors éléphantesque et on commencera à utiliser abondamment le terme « refonte ». Dès que vous entendez ce mot, « refonte », vous savez d’hors et déjà que vous entrez dans un processus qui implique beaucoup de heures-personnes. Dans le monde de la construction, une refonte, un événement très rare, consiste à raser un immeuble et ses fondations pour le rebâtir à zéro. Malheureusement, c’est une approche trop fréquemment utilisée en technologies de l’information. De plus, on doit la refaire de toute urgence. La continuité des affaires de l’organisation en dépend. On risque de ne plus être en mesure de fonctionner si une panne survient. La cloche d’alarme sonne ! D’ailleurs un signal d’alarme similaire a retenti d’un rapport récent de la vérificatrice générale du Canada récemment.

Finalité de cette démarche ? Un énorme projet avec un délai très court. En somme, tous les ingrédients réunis pour un échec. Et par la suite et on se surprend de la chose.

Une tâche colossale pour peu de compétiteurs

Le système est si gros qu’il exige une équipe considérable. Bien évidemment, l’organisme ne peut pas mobiliser des ressources humaines normalement affectées aux opérations courantes. Il faut alors se tourner vers l’externe. La question qu’il faut maintenant se poser est celle-ci : « Qui peut bien mobiliser autant de travailleurs temporaires en si peu de temps ? » Et selon vous, quelle est la réponse ? La voici : Des firmes de consultants en informatique gigantesques.

Vous comprendrez qu’il y a peu très d’élus qui peuvent répondre à cette demande. Un aspect qui empêche bien entendu une véritable concurrence, à ce niveau, dans le domaine des TIC. Conséquemment, les petites entreprises ne pourront répondre aux critères du futur appel d’offre.

Le système des appels d’offres et le plus bas soumissionnaire

Les soumissions sont bien évidemment examinées selon différents critères, mais le coût est le principal critère de sélection. Immanquablement, les candidatures se ressembleront beaucoup. Les critères de l’appel d’offres exigent des paragraphes au contenu spécifique, et les documents obtenus auront tous les mêmes sections avec des arguments de vente très convenus.

Sachant que la soumission ayant le prix le plus bas est souvent gagnante, cela ne peut que favoriser des manoeuvres discutables de fixation des prix comme le rapporte un reportage de Radio-Canada.

Le piège de la surprécision

Le porteur du dossier n’est pas dupe : il se protège en ajoutant encore plus d’exigences dans les futurs appels d’offres. Il ne veut pas se faire dire qu’une fonctionnalité n’était pas demandée au départ et se faire facturer une demande de changement (DDC).

Toutefois, le piège d’être trop précis a un effet pervers : le client met l’emphase sur la validation du produit final, et il doit alors vérifier si tout fonctionne comme demandé à la virgule près.

De plus, cette survalidation va forcément empêcher le fournisseur d’être créatif en simplifiant ou en améliorant intelligemment le produit livrable, car il créerait alors un écart trop important au regard de l’exigence initiale. On se retrouve donc avec un processus et une contrainte qui met le gros bon sens et l’imagination de côté. Des idées qui auraient pu rattraper des retards et ainsi faire sauver de l’argent au projet sans modifier les exigences deviennent alors impossibles.

Sortir de ce vicieux cercle sans fin

L’agilité, vous connaissez?

La nature même de l’agilité en entreprise est justement d’être à l’écoute des utilisateurs. On répond à leurs besoins en leur livrant une solution rapidement, laquelle sera à préciser et à bonifier à travers un échange continu avec les utilisateurs. On doit alors financer le développement des applications informatiques pour assurer leur évolution vis-à-vis les besoins changeants des utilisateurs.

Poursuivre l’évolution des systèmes

Concrètement, l’évolution d’un système consiste en une équipe permanente de programmeurs qui fait des déploiements réguliers vers les utilisateurs. Les programmeurs ont ainsi la possibilité de réusiner (« refactor ») l’application en réécrivant des portions de code entièrement pour améliorer sa lisibilité, sa rapidité et sa robustesse. L’évolution comprend aussi la conversion de certaines portions de l’application vers des plateformes et des langages plus modernes.

En procédant ainsi, l’application sera toujours au goût du jour et n’accumulera pas de dette technique. Elle se modernisera alors d’année en année et n’aura pas tendance à devenir désuète.

Toutefois, dans la fonction publique et dans les grandes entreprises, on ne maintient que les systèmes informatiques. Ce sont des postes budgétaires très faciles à réduire voir même couper. La terre n’arrêtera pas de tourner si on ne fait plus évoluer les applications. La conséquence est dans le futur, et peu d’organisations planifient longtemps à l’avance.

Tout le monde pourrait être gagnant

En évitant des projets de refonte de grande envergure, on peut confier l’évolution à sa propre équipe. Cette équipe interne devient alors maître d’oeuvre de la solution. Elle peut donc s’en remettre à des équipes externes pour des conseils ponctuels, mais elle doit essentiellement conserver le contrôle sur le développement de l’application. Nos employés demeurent motivés, car ils travaillent sur quelque chose d’utile qui se modernise constamment. Une réelle relation de complicité se développe alors entre les artisans du code et leurs utilisateurs.

Le bailleur de fonds y trouve forcément son compte, car il n’a qu’à procéder à des investissements réguliers tous les ans, ce qui est beaucoup plus facile à budgéter. Il ne se lance donc pas dans des projets trop importants souvent impossibles à contrôler adéquatement et qui comportent, bien entendu, de très grands risques.

La dette technique

par kawanet

par kawanet

Je viens de prendre connaissance d’un superbe billet sur le blogue de Coding Horror qui s’intitule « Paying Down Your Technical Debt« . La dette technique (Technical Debt) est un concept qui a été lancé par Ward Cunningham. Lorsqu’on développe ou maintient une application sur une longue période de temps, ça arrive souvent qu’on prenne des chemins discutables pour arriver à nos fins. Cela se justifie par des échéances trop serrées, une ignorance de la technologie ou un manque de familiarisation avec le patrimoine bâti (ce qui a été fait avant nous).

Lorsqu’on décide de ne pas revisiter ces erreurs et de constamment les éviter, c’est qu’on produit un déficit qu’on rajoutera à la dette technique. Éventuellement, l’application deviendra un gros spaghetti incompréhensible composé d’innombrables passes passes de cowboy. On vient alors à la conclusion qu’elle doit être refaite et mise au rancart. On fait faillite en sorte!

Le billet nous conseille de prendre une pause du développement de nouvelles fonctionnalités et dédier un peu de temps à réécrire des portions de l’application (refactorisation). Il existe des techniques pour faire de la refactorisation sans déstabiliser l’application.

Aussi la refactorisation devrait être encouragée pendant le projet et devrait être une priorité pour une application en maintenance. L’amélioration d’une application qui compte déjà ses adeptes fera du programmeur une mégavedette sans trop d’efforts de sa part. C’est une parfaite application de la loi de Pareto (loi du 80/20).

Avez-vous des exemples où vous avez réduit ou accumulé une dette dans un projet?

Évoluer un logiciel, une question de respect

J’ai fait plusieurs projets informatiques. Ils en avaient des très courts et des très longs. Dernièrement, les médias faisaient mention de quelques projets majeurs au Québec qui était en péril et dépassement largement leur budget initial. J’ai cru bon y ajouter mon grain de sel pour amener un regard différent sur ces situations.

Le gouvernement, les sociétés d’État et les grosses entreprises ont l’habitude de faire de gros appels d’offres pour renouveler leurs systèmes. Ces projets ont souvent cette ampleur due à des années de négligence quant à l’évolution de leurs systèmes actuels. Les détracteurs diront qu’on n’investit pas dans un système qu’on va éventuellement remplacer. Ils ont raison si l’on se limite seulement à l’argumentaire du contrôle des dépenses. Toutefois, on doit considérer un ensemble de couts et bénéfices avant d’opter pour le remplacement complet d’un système informatique.

Les demandes de changement des utilisateurs d’un système en production concernent principalement l’efficacité du travail. Par exemple, ils peuvent se plaindre qu’un traitement du logiciel est trop lent ou qu’ils doivent contourner le système pour obtenir ce qu’ils veulent. Par exemple, ils pourraient y extraire des données et les traiter dans un tableur comme Excel. Le temps qu’ils prennent à manoeuvrer ainsi, coute cher en salaire et frustrations.

Les méthodologies évoluent constamment dans les milieux de travail. Ça se fait naturellement. La main-d’oeuvre se renouvèle et les humains ont naturellement le désir de mieux faire et d’améliorer leur travail. Les outils qu’ils utilisent doivent suivre.

Lorsque la direction des TI de leur entreprise leur répond qu’ils devront attendre le renouvèlement complet du système, on peut conclure qu’ils peuvent frustrer les utilisateurs. Il colmaterait les problèmes rapidement et facilement en soulageant les frustrations des utilisateurs en adaptant les outils qu’ils ont actuellement entre les mains.

Il ne faut pas oublier pour qui on travaille en TI. Il faut respecter aussi le confort et la familiarité des utilisateurs avec les outils qui font partie prenante de leur quotidien. Faire évoluer leurs outils c’est aussi donner de la valeur à leurs opinions.