Je suis actuellement en stage rémunéré et j'ai été chargé de maintenir un système obsolète qui a été développé par plusieurs développeurs (à des moments différents) au cours des 5 dernières années. La direction convient que le "système est sous assistance vitale" et je reçois régulièrement des rapports de bogues des utilisateurs finaux qui utilisent actuellement le système.
Le système n'est pas obsolète si les gens l'utilisent toujours et qu'il soutient les activités commerciales. Puisqu'il est toujours utilisé, l'entreprise ne peut pas simplement le jeter - il doit être pris en charge jusqu'à ce que le besoin du système n'existe plus. Cela pourrait être un changement dans les objectifs commerciaux ou un nouveau système a été développé, testé et déployé avec succès auprès des utilisateurs finaux.
Vraiment, 5 ans, ce n'est pas si long. J'ai travaillé avec du code qui avait 10 ans auparavant. S'il répond toujours aux besoins de l'utilisateur, pourquoi le jeter? Cela jette beaucoup d'argent dépensé pour le développer. Jusqu'à ce qu'il devienne impossible à maintenir en raison de l'augmentation des coûts ou que les exigences changent radicalement, il n'y a aucune raison commerciale de le jeter.
La direction souhaite désormais prolonger le projet d'une année supplémentaire et, ce faisant, tripler presque la base d'utilisateurs.
Si la direction dit que ce système est «de survie», pourquoi essaient-ils de le déployer davantage? Il est courant que les activités de maintenance se poursuivent sur un système hérité jusqu'à ce qu'il soit remplacé, mais si un système est en fin de vie, il n'est généralement pas déployé auprès d'un plus grand nombre de personnes. L'extension de la maintenance est une chose, mais l'ajout d'utilisateurs qui dépendent du système est une situation tout à fait différente.
Pour moi, il semble que ce ne soit pas réellement une fin de vie, mais plutôt une phase de maintenance et qu'il continuera d'être là jusqu'à ce que le système ne réponde plus aux besoins des utilisateurs.
En tant que stagiaire (ou n'importe quel poste de niveau d'entrée), comment "repousser"? J'ai déjà rédigé un rapport exprimant mes préoccupations, mais dans un document ouvert. Existe-t-il un protocole ou un type de document pour suggérer des modifications? Suis-je en mesure de faire des suggestions ou dois-je simplement continuer à soutenir l'ancien système?
Vous devez continuer à prendre en charge l'ancien système. Plus tard, vous mentionnez que le logiciel n'est pas l'activité principale de votre entreprise. Dans un tel environnement, le travail des équipes logicielles est de soutenir l'activité principale de l'entreprise. Cependant, les équipes logicielles doivent également garder à l'esprit les objectifs de l'entreprise.
En attendant, capturez vos suggestions d'une manière qui n'est pas dominatrice. Indiquez d'autres technologies ou techniques qui pourraient être intégrées au système ou utilisées si / quand un nouveau système est créé et leurs avantages / inconvénients. La façon dont vous procédez dépend de l'entreprise, mais compte tenu de certains points ultérieurs, il serait peut-être utile d'établir un wiki ou un autre site collaboratif.
Dans une entreprise non logicielle, les logiciels sont un coût et les équipes logicielles (en particulier les gestionnaires de projets / programmes logiciels) devraient s'efforcer de minimiser autant que possible les coûts de construction et de maintenance des systèmes logiciels, tout en répondant aux besoins des utilisateurs finaux. . Jeter un logiciel qui (pour autant que je sache, de votre message, de toute façon) répond aux besoins des utilisateurs va à l'encontre de ce qui est dans le meilleur intérêt de l'équipe du logiciel.
* Pour clarifier, le développement de logiciels n'est pas l'activité principale de mon entreprise. En tant que tel, aucun protocole interne n'existe. De plus, le projet n'a aucune documentation officielle, aucun document sur les exigences. Le développement est très ponctuel.
Pour moi, c'est le problème. Ne pas produire de documentation, ne pas développer selon une spécification et un manque de cohérence a tendance à augmenter le coût de développement de logiciels. Travailler à résoudre ce problème serait ma plus haute priorité, et je le ferais en travaillant sur des choses comme une norme de codage, le contrôle de version, la production de code auto-documenté et de documents de conception, le suivi des défauts et les spécifications des exigences.