Pourquoi la maintenance des applications Web devrait être plus importante
Publié: 2022-03-10Les développeurs de logiciels traditionnels nous ont caché un secret à la vue de tous. Ce n'est même pas un fait contesté. Cela fait partie de leur modèle économique.
Peu importe qu'il s'agisse de fournisseurs de logiciels d'entreprise haut de gamme ou de petits éditeurs de logiciels qui écrivent les outils que nous utilisons tous au quotidien dans notre travail ou nos entreprises, comme un gestionnaire syslog gratuit. C'est juste là devant et au centre. Des frais supplémentaires qu'ils ne cachent pas et que nous avons pris l'habitude de payer.
Quel est donc ce secret ?
Eh bien, de nombreux éditeurs de logiciels traditionnels gagnent plus d'argent grâce à la maintenance du logiciel qu'ils écrivent qu'à la vente initiale.
Pas convaincu?
Une recherche rapide sur le terme "coût total de possession" vous fournira de nombreuses définitions similaires comme celle de Gartner (c'est moi qui souligne):
[TCO est] le coût de mise en œuvre, d'exploitation, de support et de maintenance ou d'extension et de désaffectation d'une application.
De plus, cet article de l'université de Stanford affirme que la maintenance représente normalement 60 à 90 % du TCO d'un produit logiciel.
Cela vaut la peine de laisser cela couler pendant une minute . Ils gagnent bien plus que le prix d'achat initial en vendant des plans de support et de maintenance continus.
Nous ne poussons pas la maintenance
Le problème tel que je le vois est que dans l'industrie du développement Web, la maintenance des applications Web n'est pas quelque chose sur laquelle nous nous concentrons. Nous pourrions le mettre dans nos propositions parce que nous aimons l'idée d'un acompte mensuel, mais ils couvriront probablement de simples tâches d'entretien ou de nouvelles demandes de fonctionnalités.
Il n'est pas rare de cacher des mises à niveau et des optimisations essentielles dans nos devis pour des itérations ultérieures, car nous ne sommes pas convaincus que le client voudra payer pour les choses que nous considérons comme des améliorations essentielles. Nous essayons de les faire entrer par la porte de derrière. Ou en d'autres termes, nous ne sommes pas ouverts et transparents sur le fait que, tout comme les logiciels plus traditionnels, ces applications doivent être maintenues.
Quelles qu'en soient les raisons, il devient clair que nous accumulons des problèmes pour l'avenir. Les applications logicielles que nous construisons sont là pour le long terme . Nous devons penser comme les éditeurs de logiciels traditionnels. Notre logiciel fonctionnera encore pendant 10 ou 15 ans à partir de maintenant, et il devrait être bien entretenu.
Alors, comment pouvons-nous changer cela? Comment pouvons-nous tous, en tant qu'industrie, nous assurer que nos clients sont protégés afin que les choses restent sécurisées et à jour ? De même, comment pouvons-nous prendre une part du gâteau de l'entretien ?
Qu'est-ce que l'entretien ?
Dans leur article de 2012 Effective Application Maintenance, Heather Smith et James McKeen définissent la maintenance comme suit (c'est moi qui souligne) :
Le portage d'une application sur un nouveau serveur, l'interfaçage avec un système d'exploitation différent, la mise à niveau vers une version plus récente, la modification d'un tableau d'imposition ou la conformité à de nouvelles réglementations nécessitent tous une maintenance de l'application. Par conséquent, la maintenance se concentre sur la mise à niveau d'une application pour s'assurer qu'elle reste productive et/ou rentable . La définition de la maintenance applicative privilégiée par le focus group est — toute modification d'une application pour corriger des défauts ; pour améliorer les performances ; ou pour adapter l'application à un environnement modifié ou à des exigences modifiées. Ainsi, l'ajout d'une nouvelle fonctionnalité à une application existante (c'est-à-dire une amélioration) n'est pas, à proprement parler, considéré comme de la maintenance .
En d'autres termes, la maintenance est un travail essentiel qui doit être effectué sur une application logicielle afin qu'elle puisse continuer à fonctionner de manière fiable et sécurisée.
Il n'ajoute pas de nouvelles fonctionnalités. Il ne vérifie pas les fichiers journaux ni ne s'assure que les sauvegardes ont été exécutées (il s'agit de tâches de maintenance). Il travaille sur le code et la plate-forme sous-jacente pour s'assurer que les choses sont à jour, qu'elles fonctionnent comme les utilisateurs s'y attendent et que les lumières restent allumées.
Voici quelques exemples:
Changements de technologie et de plate-forme
Les bibliothèques tierces doivent être mises à jour. Le langage sous-jacent nécessite une mise à jour, par exemple PHP 5.6 vers PHP 7.1 Les systèmes d'exploitation modernes envoient régulièrement des mises à jour. Garder le contrôle de cela est de la maintenance et nécessitera parfois des modifications de la base de code à mesure que les anciennes façons de faire certaines choses deviennent obsolètes.Mise à l'échelle
Au fur et à mesure que l'application grandit, il y aura des problèmes de ressources. Les routines du code qui fonctionnaient bien avec 10 000 transactions par jour ont du mal avec 10 000 par heure. L'application doit être surveillée, mais aussi des mesures doivent être prises lorsque des alertes sont déclenchées.Correction de bogues
Évident mais mérite d'être précisé. Le logiciel a des bogues, et ils doivent être corrigés. Même si vous incluez une petite période de corrections de bogues gratuites après l'envoi d'un projet, à un moment donné, le client devra commencer à payer pour celles-ci.
Difficile à vendre ?
Fait intéressant, lorsque j'en discute avec mes pairs, ils estiment qu'il est difficile de convaincre les clients qu'ils ont besoin d'un entretien. Ils craignent que leurs clients n'aient pas le budget et ils ne veulent pas paraître trop chers.
Eh bien, voici le truc : c'est en fait une vente assez facile. On a affaire à des gens d'affaires, et on a simplement besoin de leur parler d'entretien en termes commerciaux. Les gens d'affaires comprennent que les actifs nécessitent un entretien ou qu'ils deviendront des passifs. C'est juste un autre frais généraux mensuels standard. Un coût pour faire des affaires. Nous devons simplement mettre cela dans nos propositions et nous assurer d'y donner suite .
Une méthode extrêmement efficace consiste à proposer un mandat qui intègre la maintenance à la base, mais qui offre également beaucoup de valeur supplémentaire pour le client, comme :
- Rapports sur les progrès par rapport aux KPI (par exemple, trafic, conversions, volumes de recherche)
- Temps "libre" limité chaque mois pour de petites modifications du site
- Rapports sur les temps d'arrêt, les mises à jour du serveur ou les travaux de développement terminés
- Accès à vous ou à des membres spécifiques de votre équipe par téléphone pour répondre aux questions
En effet, vous pouvez faire en sorte que l'acompte économise de l'argent au client et s'autofinance. Un bon exemple de cela serait l'exigence d'un client d'obtenir un rapport simple ou d'exporter de la base de données chaque mois pour un traitement hors ligne.
Vous pouvez citer un certain nombre de jours de développement pour créer une interface utilisateur de reporting (probablement plus complexe que prévu initialement) ou orienter le client vers votre mandat. Incluez-y une tâche chaque mois pour qu'un développeur exécute manuellement une requête SQL prédéfinie afin de fournir manuellement les mêmes données.
Une tâche triviale pour vous ou votre équipe ; beaucoup de valeur pour votre client.
Un exemple pratique
Vous aurez, bien sûr, votre propre façon de rédiger des propositions, mais voici quelques extraits d'un exemple de présentation.
Dans la section de votre proposition où vous pourriez peindre votre vision de l'avenir, vous pouvez ajouter quelque chose sur la maintenance. Profitez-en pour planter les graines d'une relation à long terme.
Vous cherchez à minimiser les risques à long terme.
Vous voulez vous assurer que votre application fonctionne bien, qu'elle reste sécurisée et qu'elle est facile à utiliser.
Vous comprenez également l'importance de la maintenance pour tout actif commercial.
Plus tard, dans la section des livrables, vous pouvez ajouter une partie sur la maintenance, soit en tant qu'option autonome, soit intégrée à un acompte continu.
Dans l'exemple suivant, nous le gardons simple et le regroupons avec un acompte de développement prépayé :
Nous préconisons fortement que tous les clients considèrent la maintenance comme une surcharge essentielle pour leur site Web. Les applications Web modernes nécessitent une maintenance et tout comme votre maison ou votre voiture ; vous gardez votre actif entretenu pour réduire le risque tangible qu'il devienne un passif plus tard .
En tant que client désireux de suivre la maintenance de l'application et d'ajouter de nouvelles fonctionnalités, nous suggérons N jours par mois (comme point de départ) pour la maintenance générale et le développement.
Nous répartirions les choses de manière à ce qu'un développeur travaille sur votre système au moins [une période par semaine/mois], ce qui vous donnerait l'avantage distinct d'avoir un développeur capable de passer à quelque chose de plus important si des problèmes survenaient pendant la [même période]. . En fonction de vos priorités, ce temps peut être entièrement consacré au travail sur de nouvelles fonctionnalités ou divisé avec la maintenance, c'est votre décision. Nous suggérons normalement une répartition de 75 %/25 % entre les nouvelles fonctionnalités et la maintenance importante.
Comme mentionné précédemment, il s'agit également d'une excellente occasion de regrouper la maintenance avec d'autres services continus à valeur ajoutée tels que les rapports de performance, la réalisation de tâches d'entretien telles que la vérification des sauvegardes et peut-être un appel mensuel pour discuter des progrès et des priorités.
Ce que vous constaterez probablement, c'est qu'après avoir décroché le travail, l'acompte n'est plus mentionné. Cela est compréhensible car il y a beaucoup de choses à considérer pour vous et votre client au début d'un projet, mais lorsque le projet se termine, c'est le moment idéal pour le réintroduire dans le cadre de votre processus de délocalisation de projet.
Qu'il s'agisse de la phase 2 ou simplement de l'introduction des factures finales et de la remise, rappelez-leur la maintenance. Rappelez-leur la formation continue, les rapports et la disponibilité pour du soutien . Faites pression pour obtenir un mandat, en vous rappelant de parler en ces mêmes termes commerciaux : leur nouvel atout doit être entretenu pour rester brillant .
La maintenance peut-elle être ennuyeuse ?
Une idée fausse courante est que les acomptes de maintenance peuvent devenir un fardeau supplémentaire. Le souci est que les clients vous appelleront constamment et vous demanderont de petites modifications dans le cadre de votre mandat. Ceci est particulièrement préoccupant pour les petites équipes ou les consultants individuels.
Ce n'est généralement pas le cas, cependant. Peut-être qu'au début, le client aura une liste d'accrocs qui doivent être résolus, mais c'est normal ; si vous avez de l'expérience, vous vous y attendez. Celles-ci sont facilement gérées en améliorant les canaux de communication (utilisez un outil de suivi des problèmes) et en regroupant toutes les demandes, c'est-à-dire en les traitant en un seul clic.
Au fur et à mesure que l'application mûrit, vous passerez en mode tick-over. C'est là que le mandat devient particulièrement précieux pour les deux parties. Cela dépend évidemment de la façon dont vous avez structuré le mandat, mais de votre point de vue, vous vous efforcez de rappeler chaque mois au client à quel point vous êtes précieux. Vous pouvez leur envoyer votre rapport mensuel, leur dire comment vous avez corrigé un ralentissement dans cette routine et que le serveur a été corrigé pour l'exploit global du système d'exploitation de cette semaine.
Vous étiez, bien sûr, également disponible pour travailler sur un certain nombre de nouvelles fonctionnalités demandées qui étaient en outre payantes . Du point de vue de votre client, il voit que vous êtes là, il voit des progrès et il peut retirer «l'inquiétude à propos du site Web» de sa liste. De toute évidence, "ces clients" existent, donc la chose la plus importante est de bien formuler votre mandat et de gérer les attentes en conséquence.
Si votre client attend la lune sur le bâton pour des frais mensuels peu élevés, repoussez ou renégociez. Vous payer pour faire - disons - deux heures d'entretien et de ménage par mois parmi la fourniture d'un rapport mensuel et d'autres tâches auxiliaires, c'est exactement cela ; ce n'est pas un chèque en blanc pour faire beaucoup de changements ad hoc. Rappelez-leur ce qui est inclus et ce qui ne l'est pas.
Comment simplifions-nous la maintenance ?
Enfin, pour garantir le meilleur rapport qualité-prix à vos clients et vous faciliter la vie, utilisez certaines de ces tactiques lors de la création de vos applications.
Assistance à long terme (LTS)
- Utilisez des plates-formes technologiques avec des versions LTS et des chemins de mise à niveau bien documentés.
- Des mises à niveau continues du système d'exploitation, du langage, du framework et du CMS doivent être attendues et prises en compte pour tous les projets, de sorte que le suivi d'une version LTS est une évidence.
- Tout devrait fonctionner sur une version prise en charge. Les grandes sonnettes d'alarme devraient sonner si ce n'est pas le cas.
Bonne hygiène du projet
- Ayez des tâches de maintenance publiques dans votre carnet de fonctionnalités ou votre système de suivi des problèmes et convenez des priorités avec votre client. Ne cachez pas les tâches de maintenance.
- Le niveau de code et les tests fonctionnels vous permettent de garder un œil sur le code particulièrement problématique et vous aideront lors de l'extraction des modules pour la refactorisation.
- Surveillez l'application et comprenez où se trouvent les goulots d'étranglement et les erreurs. Tous les problèmes peuvent être ajoutés au backlog de développement et hiérarchisés en conséquence.
- Surveiller les demandes d'assistance. Les utilisateurs finaux vous fournissent-ils des commentaires utiles qui pourraient indiquer des besoins de maintenance ?
L'application doit être portable
- N'importe quel développeur devrait être en mesure de mettre le système en place et de le faire fonctionner facilement localement - pas seulement vous ! Utilisez des serveurs virtuels ou des conteneurs pour vous assurer que les versions de développement des applications sont identiques à la production.
- La demande doit être bien documentée. Au minimum, les flux de travail de provisionnement et de déploiement et toutes les incantations spéciales requises pour déployer en direct doivent être écrits.
La maintenance est un véritable gagnant-gagnant
La maintenance est le travail que nous devons effectuer sur une application pour qu'elle puisse rester immobile en toute sécurité. Il s'agit d'un coût d'entreprise standard. En moyenne 75 % du coût total de possession sur la durée de vie d'une application logicielle.
En tant que professionnels, nous avons le devoir de sensibiliser nos clients à la maintenance dès le départ. Il existe ici une énorme opportunité de revenus supplémentaires tout en offrant une valeur tangible à vos clients. Vous maintiendrez une relation commerciale continue et serez la première personne vers laquelle ils se tourneront lorsqu'ils auront de nouvelles exigences.
Continuer à fournir de la valeur grâce à votre mandat renforcera la confiance avec le client. Vous obtiendrez une plate-forme pour suggérer des améliorations ou de nouvelles fonctionnalités. Travail que vous avez de grandes chances de gagner. Votre client réduit ses coûts sur la durée de vie, il réduit ses risques et il ne se soucie plus des performances ou de la sécurité.
Rendez service à vous-même, à votre client et à l'ensemble de notre industrie : aidez à faire de la maintenance des applications Web une réalité.