Un premier OpenCamp à Québec en février 2011

J’ai le plaisir de participer à un premier OpenCamp à Québec qui aura lieu le 16 février 2011 dans les locaux de l’ENAP sur le boulevard Charest. Organisé par Patrice CaronLuc VaillancourtYann Sadok, et François Belleau, ce camp vise à couvrir les concepts et la philosophie d’ouverture qui peut s’appliquer dans le milieu des affaires et dans les TI.

On n’a qu’à penser rapidement aux logiciels libres, à l’agilité dans la gestion de projet, le gouvernement ouvert, les données ouvertes et l’interopérabilité. Sachez que la philosophie qui alimente ces phénomènes est commune. On peut les englober ces derniers dans l’innovation ouverte (« open innovation »).

Les logiciels libres sont maintenus par des collaborateurs bénévoles à travers le monde. Ils évoluent grâce à l’esprit innovant de ses différents créateurs.

Les concepts agiles dans la gestion de projet demandent plus d’implication et de responsabilisation des membres d’une équipe et de la part du client. Aussi, l’innovation en cours de projet est fortement encouragée pour arriver à des résultats extraordinaires.

Le gouvernement ouvert est un concept qui m’est cher et rend davantage l’appareil gouvernemental au service des citoyens. La transparence devient le mot d’ordre et l’état devient un lever à l’innovation de la population.

Les données ouvertes sont la publication automatique des données non nominatives détenues par des services gouvernementaux, municipaux et parfois privés. Ces données rendues disponibles sans barrières sur le web permettent à des programmeurs de bâtir sur ces dernières des applications originales pour les revaloriser autrement.

Ces concepts me sont chers et j’ai décidé d’appuyer financièrement l’événement en le commanditant.

J’ai proposé un sujet assez philosophique lors de mon inscription. J’aimerais amener une discussion sur le concept de « Government as a platform » proposé par Tim O’Reilly dans son livre « Open Government ». J’ai effleuré le sujet dans deux billets récents critiquant les décisions prises par le RTC et Transport Québec (service 511). L’idée derrière ça est que le gouvernement n’a qu’un rôle de facilitateur à l’innovation en mettant ses services informatiques au service de l’industrie et des citoyens. C’est inspiré des autres services que l’état offre déjà pour favoriser l’économie telle que les routes, aéroports, subventions, infrastructures, etc. L’état devrait soutenir en arrière-plan l’économie numérique et éviter d’être un joueur d’avant-plan.

Le cloud computing au secours de l'agilité en entreprise

Saviez-vous que le développement agile ne peut s’implanter entièrement dans le mode actuel de livraison des services informatiques? Certes le développement agile a de plus en plus de traction dans l’industrie et sa simplification des méthodologies de développement d’application semble plaire autant aux clients qu’aux prestataires de ce genre de service. Toutefois, il reste que le « cloud » ou le nuage informatique permet de véritablement servir ses clients selon les principes d’agilité.

L’adoption de la philosophie agile se constate même dans les milieux les plus conservateurs en TI. Les coûteux échecs à répétition des grands projets informatiques en mode « waterfall » ont justifié ce changement de mentalité et ont ouvert les esprits qui étaient autrefois fermés. Mais, la gestion de leur infrastructure informatique n’a pas beaucoup changé depuis une trentaine d’années. Les délais de déploiement et leurs ressources limitées réduisent l’agilité des projets informatiques.

Le nuage informatique et ses ressources disponibles à la demande et payables à l’utilisation changent le dogme. L’infrastructure et les environnements de développement sont disponibles sur le web et ils sont livrables à l’équipe de projet à l’intérieur de quelques minutes. Voici d’ailleurs quelques avantages qui correspondent à des principes du manifeste agile.

Faciliter la rétroaction du client

Les courts cycles de développement exigent une rétroaction et une participation du client final au livrable. Il doit y avoir accès facilement et rapidement. Lorsqu’on choisit le cloud pour y installer son environnement de développement et d’essais, le client aura déjà accès à ces serveurs. Les développeurs n’ont pas à configurer un accès spécial dans le pare-feu de l’une ou autre entreprise. Les serveurs sont situés sur internet et tous y ont déjà accès.

Vous évitez aussi de déployer localement chez le client. Le déploiement sur les serveurs internes chez le client nécessite du temps à ajouter dans la planification du projet et peut aussi occasionner des obstacles imprévisibles de configuration. Ce sont des risques que peu de clients voudront assumer en cas de délais.

Démarrer rapidement un projet

La définition même de l’agilité implique une souplesse et un minimum de contraintes à faire ce qu’on a à faire. Divers services dans le segment du « Platform-as-a-Service (PaaS) » permettent d’avoir accès à un environnement de développement et de production très rapidement sans configuration à faire. Ce sont des contenants préconfigurés avec les options les plus courantes sur des environnements entièrement extensibles (« scalable »). L’environnement peut supporter une charge de trafic quasi illimitée.

Toutefois, le seul bémol est le manque de flexibilité. Si votre besoin est standard, vous serez aux anges. Si votre application nécessite beaucoup de prérequis hors du commun, cette option ne sera pas pour vous. Il faudrait regarder du côté de l’offre en infrastructure (IaaS) et la location de machines virtuelles. Vous êtes gagnants tout de même puisque ces machines vous seront livrées immédiatement.

Compiler et exécuter ses essais automatisés plus rapidement

La capacité de calcul d’un fournisseur cloud est en théorie illimitée ou du moins bien au-delà ce qu’une entreprise moyenne peut se permettre. Pour y arriver dans le mode de livraison traditionnel, il faudra dépenser des sommes astronomiques.

Lorsqu’une application informatique est très volumineuse, son temps de compilation se voit décupler. Les essais unitaires automatisés qui font souvent partie d’un bon développement agile subissent aussi le même accroissement et leur temps d’exécution suite à la compilation risque de s’allonger considérablement. Le nuage permet de louer des ressources informatiques à la demande pour réduire ce temps d’attente qui viendra au secours du projet.

Procéder à de vrais essais de charge

Si on peut louer plus de ressources pour exécuter nos essais unitaires plus rapidement, il va de soi qu’on peut utiliser toute cette puissance à notre disposition pour mettre au défi notre application. Nous pouvons simuler des charges équivalentes à celles en production.

Il était auparavant très coûteux d’effectuer ce genre d’essais. Cela nécessitait de l’équipement informatique dédié qui ne servira plus à la fin du projet. La location de ressources virtuelles propre au cloud rend la chose beaucoup plus attrayante et réalisable.

Garder son équipe restreinte

Les plus petites équipes ont souvent la réputation d’être plus efficaces et avoir un meilleur focus sur la tâche à réaliser. C’est alors souhaitable d’éviter d’avoir trop d’intervenants sur lesquels le projet pourrait dépendre.

Le déploiement des ressources informatiques dans le cloud se fait à l’aide de formulaires web automatisés. Il suffit de choisir les capacités des serveurs que l’on veut et ils nous seront livrés sur le champ. Il est donc possible d’éviter d’avoir recours à des ressources humaines dédiées à l’infrastructure pendant le cycle de développement. Cela peut réduire le nombre d’intermédiaires et les problèmes de communication qui pourrait s’en suivre.

Êtes-vous ouvert à ça?

Tout ça semble bien beau, mais est-ce que votre entreprise est prête à héberger ses projets de développement à l’externe? A-t-elle l’ouverture nécessaire? Fait-elle confiance qu’à elle-même pour ça?

C’est principalement le seul facteur qui pourrait nuire à votre appropriation la puissance et la souplesse du cloud dans vos projets agiles. Si l’agilité a réussi à faire sa place dans la gestion de projet, peut-on espérer qu’elle fera son bout de chemin dans la gestion de l’infrastructure informatique? Je le souhaite et j’en suis convaincu.

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.

Le choc des générations dans les technologies de l'information

par joebeone

par joebeone

Avez-vous remarqué un choc de générations ces dernières années dans l’industrie des TI? Il me semble que les jeunes dans ce domaine passent leur temps à affronter la génération qui les a précédées. Vous me direz que ce n’est pas limité aux TI, vous avez raison, mais puisque c’est mon domaine, pardonnez-moi cette étroitesse dans ce billet.

Depuis que l’informatique existe, de nouvelles technologies et de nouveaux concepts révolutionnent notre monde. À chaque fois, une confrontation s’en suit. Malgré que ce domaine est censé être accoutumé au changement, il est rare de voir un spécialiste se renouveler. Notre capacité d’assimiler des nouvelles notions diminue avec l’âge. Je le constate moi-même. Mon fils de 4 ans est en mesure d’acquérir des connaissances avec une seule explication. Quand je lis des textes explicatifs, je me perds parfois. J’ai alors besoin de visionner une présentation vidéo pour y saisir les nuances. Ça n’ira pas en s’améliorant à force de le constater.

Pour vous aider à vous aussi de comprendre, voici quelques phénomènes qui ont révolutionné les TI.

L’ordinateur personnel

La première division a été entre celles de l’informatique d’entreprise et personnelle. L’abréviation PC (Personal Computer) signifiait un ordinateur pour la maison. Ceci se differienciait aux ordinateurs centraux ou mini (ex: VAX ou AS400) qui dominaient les grandes corporations et les gouvernements. Cette division perdure à ce jour. Il n’est pas rare de voir des spécialistes d’ordinateur central lire leur courriel une fois par jour (et écrire en majuscules!). Toutefois, les adeptes des ordinateurs centraux sont de moins en moins nombreux. TECHNOcompétences a même produit un rapport assez éloquent à ce sujet.

Les logiciels libres

Sachant que les PC dominaient le marché, des futés ont pensé de créer un système d’exploitation qui utiliserait la même architecture matérielle. Linux est né en 1991 et n’a jamais cessé d’évoluer. On y attribue beaucoup l’essor du web, puisque son faible coût d’acquisition (0$) a permis de l’installer sur des millions de serveurs sur internet. L’idée que le développement d’une technologie est l’affaire de tout de le monde est difficile à comprendre pour un spécialiste d’une technologie propriétaire éprouvée. Ces derniers voient le phénomène avec beaucoup de méfiance. Ils s’imaginent que le logiciel a été développé anarchiquement et peut être abandonné à tout moment. Mais, si on se fie aux finissants des cégeps et universités, le logiciel libre a la cote. Il sera important de voir l’évolution dans les prochaines années à cet égard.

Agile

Le développement de systèmes depuis la nuit des temps a toujours été une affaire de gestion de processus serrés. Les grandes compagnies de consultation en TI, ont développé des méthodologies qui ont fait longtemps des jaloux. Ils étaient maîtres de la gestion du temps, des coûts et de la qualité, mais malheureusement pas toujours de la satisfaction des utilisateurs. Les grands chantiers informatiques perdent parfois leur dimension humaine. Les méthodologies agiles comme Scrum ont adressé ces problématiques à leur manière. La philosophie nombriliste des méthodologies waterfall perd du terrain vis-à-vis l’approche agile qui fait plus de place aux utilisateurs dans le processus de développement de systèmes.

Le web

Le web est probablement le plus grand diviseur. Le web n’a pas juste divisé les informaticiens en deux clans, une seconde industrie s’est créée parallèlement. Le phénomène était trop grand et les TI ont perdu le contrôle sur la destinée du web. Tous les succès du web sont attribuables à de nouveaux joueurs. Les grands joueurs d’autrefois se sont taillé une place malgré tout en achetant des petits startups (ex. : Hotmail par Microsoft). Les technologies les plus utilisées ne sont pas celles des grands joueurs non plus. Les technologies Java, PHP, Perl, Python et Ruby on rails domine le paysage.

La venue de la virtualisation par le nuage (cloud computing) risque d’élargir le fossé encore plus. L’industrie des TI est en mode réaction face à ce phénomène. Il invalide en quelque sorte leur modèle d’affaire qui a fait leur succès. Le cloud fera-t-il Microsoft, Oracle, Novell et IBM les GM et Chrysler de demain?

Que devrions-nous faire?

En conclusion, on peut constater que le changement n’est pas toujours facilement accepté. Mais, que l’on veuille ou non, il est là pour rester. Il est là parce que les gens en ont le besoin. L’adoption générale se fait par nécessité. Si on ne veut pas, en prendre part, c’est louable et c’est un choix personnel. Le changement fait peur et parfois il est difficile à assimiler.

Faut-il alors se ranger et laisser nos prochains prendre les règnes? Si on ne le fait pas, devient-on obligatoirement un empêcheur?

Avez-vous d’autres exemples où les générations s’affrontent en TI? Quelles sont vos solutions pour mieux intégrer les ressources seniors aux nouveautés?