Vous souciez vous réellement de la sécurité et de la cohérence technico-fonctionnel de vos applications ?
Lorsque vous commandez une application, différents choix techniques sont à la charge de votre chef de projet/DSI mais aussi de votre prestataire.
Votre application va donc rentrer dans différentes phases :
- I. Architecture / Conception
- II. Développement
- III. Production (Maintenance et évolutions)
- IV. La fin de vie
I. Lors de la phase décisionnelle et d’architecture, le socle technique doit être challengé sur différents aspects et non seulement le coût à court terme :
- La maintenabilité et l’évolutivité du socle à long terme
- La capacité des équipes internes à appréhender la solution techniquement
- La prédisposition du socle à répondre au besoin fonctionnel et technique
- L’expertise des équipes du prestataire sur la solution retenue
- La cohérence technique de la solution présentée
II. Lors de la phase de développement, si votre objectif de coût a été prédominant, alors le prestataire de développement devra économiser sur différents postes pouvant mettre à mal la conception et la sécurité de votre application :
- Profil de coût optimisé (développeur junior, sous-traitance à l’étranger, Expert à mi-temps)
- Temps de conception/développement restreint (Déséquilibre temps/qualité)
- Phases de tests et de recettes minimisées
- Audits de codes/sécurité outrepassés
- Sacrifice de la documentation technique
III. Lorsque votre application est en production, les compétences sont elles toujours mobilisées et en poste, le budget suit-il ?
- Les équipes internes ou chez le prestataire ont-elles changés ?
- Les bugs et évolutions sont ils suivis ?
- Un budget de mis à jour de sécurité est-il estimé et prévu trimestriellement/annuellement ?
- L’application est-elle suivie ? De manière générale l’application est-elle passée au second plan voire oubliée ?
IV. Lors de la commande de votre application, avez vous estimé sa durée de vie et planifié des actions de refonte ou :
- Vous attendez l’aveu d’in-maintenabilité de votre application par le prestataire ?
- Vous attendez une faille de sécurité majeure voire une fuite de données ?
- Vous pensiez pas avoir besoin de planifier/estimer sa refonte
Commanditaire du projet, quelles erreurs sont à éviter ?
Reprenons nos phases lors de la mise en oeuvre de votre projet :
- I. Architecture / Conception
- II. Développement
- III. Production (Maintenance et évolutions)
- IV. La fin de vie
I. Lors de cette phase décisionnelle et d’architecture ne vous limitez pas au coût :
- Préparez-vous : Montez une équipe interne réellement apte techniquement à comprendre et à challenger le prestataire
- Préparez-vous : Menez votre propre analyse sur les socles techniques pouvant répondre à votre besoin sans le communiquer aux prestataires
- Préparez-vous : N’hésitez pas à organiser des soutenances pour sélectionner votre prestataire
- Demandez un droit de regard sur l’équipe technique qui interviendra sur le développement de votre application
- Demandez le scope projet compris et interprété par le prestataire
- Demandez les risques identifiés sur le projet et les actions prévus
- Si vous avez des doutes faite vous accompagner par un expert de votre côté
- Identifiez la durée de vie de l’application commandée
I bis. Si le projet est dépendant d’une autre application assurez-vous :
- De fournir la documentation technique
- D’identifier des référents techniques
- L’application est-elle vieillissante ou est elle optimisée et maintenue ? Quelle est sa durée de vie ?
- Peut-elle impacter négativement la nouvelle application (architecture, performance et sécurité) ?
II. Lors de la phase de développement engagez-vous :
- Réalisez un suivi de projet en interne
- Ecrivez et validez les spécifications
- Demandez ou réalisez des audits de code
- Rédigez un cahier de tests priorisé fonctionnel et comprenant les règles de sécurité
- Participez aux tests et demandez/réalisez un rapport par lots
- Demandez l’accès à la documentation technique du projet et suivez son évolution
III. Lorsque l’application est en production ne pensez pas que c’est fini, tout ne fait que commencer :
- Maintenez votre équipe
- Récoltez les bugs utilisateurs
- Prévoyez un budget de maintenance et d’évolution
- Prévoyez un budget pour les mises à jour de sécurité
- Demandez un suivi régulier au prestataire et une mise à disposition de ses équipes
- Testez les corrections et les évolutions, prenez en compte les tests de non-régressions et de sécurités
- Analysez le comportement de votre prestataire, fait il son devoir de conseil ? Est-il pro-actif ? Où est il passé à un autre client ne ce souciant plus de vous ?
IV. A vous l’application immortelle, attendez, c’est faux :
- Comme vu au point « I. » anticipé la fin de vie de l’application, économisez, dé-priorisez les dernières évolutions, … Pensez refonte !
- Faite le point en interne sur le travail de votre prestataire et le coût à long terme de la relation
- Faite le bilan ! Ce que vous souhaitez ajouter, améliorer et supprimer autant techniquement que fonctionnellement
- Vous éviterez ainsi l’in-maintenabilité et des failles de sécurités supplémentaires.
Prestataire de développement êtes vous réellement dans l’accompagnement ?
Reprenons nos phases lors de la mise en oeuvre de votre projet :
- I. Architecture / Conception
- II. Développement
- III. Production (Maintenance et évolutions)
- IV. La fin de vie
I. Ne sous estimez pas cette phase d’architecture :
- Investissez sur un chef de projet expérimenté et impliqué
- Investissez sur vos meilleurs profils afin d’identifier les opportunités techniques
- Investissez sur vos meilleurs profils et capitalisez sur votre expérience pour identifier et limiter les risques
- Soyez transparent sur l’équipe prévue sur le projet, n’ayez pas peur de justifier les différents profils
- Justifiez vos choix techniques et mettez en lumière les risques pour le commanditaire
- Impliquez autant que possible le commanditaire dans la conception, investissez dans la co-construction
- Identifiez un référent technique sur le projet qui de pair avec le chef de projet accompagnera votre client
II. Tenez la barre, la théorie passe à la pratique :
- Réalisez une documentation technique du projet
- Suivez scrupuleusement les spécifications techniques et faites les évoluer et valider
- Formez et accompagnez votre équipe si besoin
- Maintenez l’équipe de développement en place
- Réalisez des audits de code en interne
- Réalisez différents niveaux de tests (croisés entre les développeurs, automatisés et fonctionnel par le chef de projet)
- Partagez au plus tôt les risques identifier, les oublies ou les points de blocage
III. L’application est en production, on passe du sprint à l’endurance :
- Maintenez au moins une partie de l’équipe en place ainsi que le référent pour la TMA
- Testez vos corrections et évolutions, celles-ci ne doivent pas créer des régressions
- Continuez d’accompagner votre client, soyez pro-actif sur la remontée de bug, les possibilités d’évolution, …
- Faite votre devoir de conseil sur les risques de sécurités et les nécessités de mises à jour (même si le client a un budget faible)
- Même si votre client n’a pas de budget continuez à faire vivre la connaissance projet (gardez la à disposition à minima)
- Faite un suivi régulier avec votre client, budgétaire, fonctionnel, taux bugs, …
IV. Laisser la responsabilité au client ? Grave erreur
- Une application en fin de vie rime avec failles de sécurité grandissante
- Ne pas faire votre devoir de conseil sur les risques de sécurité vous expose, si des failles sont exposées et si des données fuites
- Partagez les risques argumentés avec votre client, il sera décisionnaire sur les actions à mener, proposer lui des solutions
- Vous avez accompagné votre client activement, proposez lui de renouveler sa confiance et accompagnez le à nouveau pour une refonte
En conclusion que retenir de ces 3 précédentes parties :
- Le commanditaire et le prestataire de services sont tous les deux acteurs lors du développement d’un projet.
- Il n’y a pas d’incompétents juste une organisation ambiguë basée sur des non dits budgétaires, orientant le projet
- Tout le monde n’a pas le même niveau de responsabilité, mais tout le monde est responsable de la réussite ou pas d’un projet
Commanditaire du projet :
- Avant de vous lancer ayez connaissance de tous les tenants et aboutissants d’un projet (développé précédemment)
- Restreindre les coûts n’est pas bénéfique pour un projet que l’on souhaite conçu honnêtement et sur lequel on souhaite être exigeant
- Restreindre les coûts ne rassure pas le prestataire sur l’implication du client
- Restreindre les coûts n’est pas incompatible avec « optimiser les coûts », soyez co-constructif
- Construisez une équipe interne apte; et non suffisante avec des profils sélectionnés par défaut
- Estimez la durée de vie, évaluez les coûts, limitez les risques, ciblez de nouveaux objectifs
- Ne sous estimez la sécurité de votre application et les risques légaux à supporter
- Remettez en question vos outils déjà en place
Prestataire de services :
- Soyez transparent sur le cycle de vie de l’application dès le départ afin d’éviter tout malentendu ou mauvaises surprises
- Assurez vous de la maturité du commanditaire afin de cadrer au mieux le projet et la relation, vous êtes le professionnel !
- Ne pas faire son devoir de conseil volontairement pour X raisons n’est pas bénéfique et peut vous être fatal
- Un projet est votre projet, même si le budget de maintenance est faible ne le laissez pas fuir ou vous prendrez des risques
- Soyez rentable mais pas simplement vénal, accompagnez votre client ce ne sera que bénéfique sur le long terme
- Assurez vous de contrôler la qualité de chaque livrables
- Impliquez vos équipes, présentez leurs les objectifs projets et la valorisation d’une réussite
Soyez honnête, soyez loyal.
📩 Vous souhaitez un vif accompagnement ? Contactez-moi.