Comment gérer la gestion en poussant les systèmes hérités?

14

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.

La direction souhaite désormais prolonger le projet d'une année supplémentaire et, ce faisant, tripler presque la base d'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?

  • 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 et aucun document sur les exigences. Le développement est très ponctuel.
James
la source
6
Je comprends votre problème. Malheureusement, il n'y a pas de solution simple et je suis sûr que votre question a déjà été posée de différentes manières. Une chose que je recommanderais est d'éviter de rédiger un rapport avec des préoccupations "ouvertes". Les gestionnaires (en particulier ceux qui ne sont pas techniques) DÉTESTE cela, qu'ils le disent ou non. Si vous vous plaignez de quelque chose, vous devez faire des recommandations concrètes et pratiques pour l'améliorer.
Angelo
3
@James, le format du document, dans votre contexte, est totalement hors de propos. L'important est que vous 1) identifiez les changements que vous devez apporter, 2) décrivez un plan concret pour les mettre en œuvre et 3) persuadez les personnes impliquées d'accepter le plan. Dans un environnement où les choses sont "ad-hoc", la structure de document formelle ne veut rien dire.
Angelo
7
À moins qu'il n'y ait un système de remplacement en cours de développement actif, je dirais que le système actuel n'est pas «de survie». Surtout si l'entreprise l'inclut dans ses plans futurs.
TMN
7
Depuis quand un système vieux de 5 ans est-il "hérité"?
Marjan Venema
1
@James - Ce n'est pas la définition d'un système hérité. L'héritage est défini par l'existence d'une technologie (clairement) plus récente ou plus efficace, et non par l'échec des processus internes ou la rétention du personnel.
Jon Hopkins

Réponses:

23

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.

Thomas Owens
la source
9
I've worked with code that was 10 years old before Que diriez-vous de 25 ans :) Répondait toujours aux besoins de l'entreprise et a fait un travail formidable dans ce qu'elle était conçue pour faire, malgré le fait que toucher le code était à peu près aussi agréable qu'une baignade dans l'Arctique.
maple_shaft
@maple_shaft Rien de 25 ans. Je pense que le code le plus ancien que j'ai jamais vu avait environ 10-15 ans. Ce n'est pas agréable, mais l'utilisateur ne se soucie pas du code propre. Ils se soucient d'utiliser des logiciels qui font ce dont ils ont besoin de manière à aider leur entreprise.
Thomas Owens
1
@James Pas vraiment. S'il s'agit d'une amélioration logicielle ou d'un défaut qui nécessite des modifications du système existant, il est suivi dans un outil de suivi des défauts, où il est priorisé et attribué. S'il s'agit d'un processus, d'une méthodologie ou d'un avis pour un futur projet, celui-ci est capturé via un projet de faisabilité qui prototype la solution ou une note d'ingénierie.
Thomas Owens
1
Je travaille sur un système vieux de 15 ans et c'est une joie. Oui, certaines parties pourraient être améliorées, mais il peut s'agir de parties anciennes ou de parties écrites il y a à peine six mois. Comme avec les gens: l'âge est insignifiant. C'est le soin apporté au développement du logiciel et le montant de la dette technique qui a été contracté au cours de ce développement, qui dictent combien ou peu de joie vous pouvez en retirer.
Marjan Venema
1
@James Le SRS est technique. Si vous traitez directement avec la gestion et que le développement de logiciels n'est pas leur activité principale, alors vous allez devoir l'exprimer en termes commerciaux. Puisqu'il n'y a pas de documentation de projet existante et ainsi de suite, je commencerais par une analyse de rentabilisation ou un plan de projet ou une analyse des options pour la réingénierie avant tout SRS. Les gestionnaires et les entreprises comprennent bien le coût. Une réécriture complète peut être difficile, alors méfiez-vous.
Jason S
7

J'ai déjà rédigé un rapport exprimant mes préoccupations

Bien. C'est à peu près l'étendue de ce que vous pouvez faire en tant que stagiaire. Pour référence future lors de la rédaction de tels rapports, j'insiste sur la présentation de faits concrets d'une manière impartiale et professionnelle, sans préjugés émotionnels. Vous ne savez pas qui lira le rapport, peut-être quelqu'un qui peut ou non avoir causé certains des problèmes que vous décrivez ou qui a pris des décisions qui ont conduit à ces problèmes. Tout autre chose que des faits froids pourrait être considéré par ces personnes comme un affront ou une infraction et les amènera à ne pas vous aimer et à ne pas prendre tout cela au sérieux.

La direction veut maintenant prolonger le projet pour une autre année et, ce faisant, presque tripler la base d'utilisateurs

Gardez à l'esprit que des décisions commerciales comme celle-ci sont prises parce qu'elles essaient de prendre leurs décisions avec les ressources dont elles disposent. Je suis certain que la direction est probablement au courant des problèmes avec les logiciels hérités et est probablement au courant des plaintes des utilisateurs, mais a-t-elle les ressources de développement logiciel disponibles pour gérer la refactorisation ou une réécriture?

La plupart du temps, ce n'est pas le cas, surtout si le logiciel n'est pas le pain de la société et que la qualité et la satisfaction des utilisateurs avec le logiciel n'affecteront pas directement le résultat net. Prendre ce genre de décisions est parfois la raison pour laquelle être un manager est nul parce que vous êtes souvent dans une situation perdante, peu importe ce que vous faites.

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

Des erreurs ont été commises tout au long du projet qui l'ont conduit à ce point. Le manque d'entrées ou d'exigences solides des utilisateurs, le manque de bonne gestion des produits et de contrôle des changements pour gérer les exigences et les besoins changeants et le manque de ressources techniques adéquates à mettre en œuvre ont causé les problèmes tels qu'ils existent aujourd'hui. Je ne sais pas si obsolète est le bon mot. La technologie sous-jacente repose-t-elle sur des cadres et des technologies non pris en charge, ou n'est-ce tout simplement pas la technologie de pointe ou idéale?

En tant que stagiaire (ou n'importe quel poste de niveau d'entrée), comment "repousser"?

Vous êtes dans une position de moindre puissance et vous êtes temporaire. Ce n'est pas grave si vous avez raison, je ne m'attendrais pas à ce qu'un stagiaire me "repousse" jamais. Je m'attends à ce qu'ils apprennent, discutent des problèmes tels qu'ils les voient et suivent les ordres. C'est à peu près ça. Une fois qu'un ordre est donné, je m'attends à ce qu'il soit exécuté au mieux de leurs capacités, car le temps de la discussion est terminé à ce stade.

maple_shaft
la source
Peut-être que l'utilisation du terme «héritage» était incorrecte. Actuellement, la technologie qui pilote le système est VBA et ASP classique. La base de code a été créée par plusieurs stagiaires en rotation dans le passé. Wikipédia identifie un système hérité comme un système qui n'est plus compris et que de telles situations se produisent lorsque le système n'est pas documenté et / ou que les développeurs d'origine sont partis. De plus, "repousser" est entre guillemets, car j'ai une devise personnelle de "ne jamais être satisfait de la médiocrité", et en tant que tel, je ne peux pas rester assis et ne pas exprimer de préoccupations. J'ai l'impression de ne pas être utile
James
@James Il est bon d'exprimer ses préoccupations, mais faites-le une fois, faites-le complètement, présentez une alternative viable et restez-en là. Si vous exprimez le même problème plus d'une fois, vous serez perçu comme un pleurnichard, et les pleurnichards ne sont pas utiles. Si vous ne le comprenez pas, et que personne en interne ne le comprend vraiment techniquement, c'est bien l'héritage que vous avez raison.
maple_shaft
7
James, il se peut que vous ne soyez jamais satisfait de la médiocrité, mais à partir de cet échange, vous donnez l'impression que vous n'êtes pas bon dans la vision plus large de la façon dont les logiciels soutiennent l'entreprise et comment les priorités commerciales diffèrent des vôtres.
temptar
2
"Wikipedia identifie un système hérité comme un système qui n'est plus compris". Eh bien, si vous le comprenez et le documentez, afin qu'il soit compris, ce ne sera plus un système hérité.
DJClayworth
2
"ne jamais être satisfait de la médiocrité" est une bonne devise, mais elle ne s'applique qu'aux choses que vous pouvez contrôler vous-même. Si vous prenez une base de code médiocre et la transformez en une base de code bien documentée et facile à entretenir, c'est un excellent travail dont vous devriez être fier.
DJClayworth
5

Tu es stagiaire. Je doute beaucoup que vous soyez même à distance des impératifs commerciaux quotidiens dans leur ensemble et comme d'autres personnes l'ont remarqué, une base de code vieille de 5 ans n'est pas vraiment aussi ancienne.

Les décisions concernant le remplacement des anciens systèmes ne sont pas toujours motivées par des considérations techniques; ils sont motivés par l'évolution des besoins de l'entreprise. La contribution à ceux-ci peut être difficile à maintenir; mais à la fin de la journée, vous devez reconnaître que votre position ne signifie pas nécessairement que vous avez toutes les connaissances disponibles et requises. J'irais jusqu'à dire que vous avez en fait très peu de connaissances nécessaires pour faire le choix de la meilleure décision à l'heure actuelle.

Mon conseil est le suivant: apprenez de l'expérience et arrêtez de supposer que vos connaissances l'emportent sur celles des personnes qui doivent gérer l'entreprise au jour le jour.

Votre travail consiste à maintenir le système en marche et non à suggérer un nouveau remplacement brillant.

Il me semble que beaucoup de jeunes programmeurs ne réalisent pas que la maintenance des anciens systèmes est une partie plus importante du travail de programmation que la conception de nouveaux systèmes brillants /

temptar
la source
Je pense que vous avez raison de dire que je ne comprends pas la situation dans son ensemble, car je ne connais pas les frais généraux associés au développement de logiciels internes. L'éducation à laquelle j'ai été exposé dans la mesure où il s'agissait principalement de processus formels, ou du moins où le développement de logiciels est l'activité principale
James
4

Ne repoussez pas. La seule chose que vous devez faire est d'exprimer vos préoccupations de manière claire et concise. Le fait est que la plupart des entreprises dans lesquelles vous travaillerez à l'avenir auront des systèmes hérités. Ces anciens systèmes doivent être maintenus car, dans de nombreux cas, ils sont trop chers à remplacer.

Dans de nombreux cas, vous pouvez même avoir les meilleures intentions de remplacer le système actuel par un meilleur système, cependant, vous pouvez simplement introduire de nouveaux et différents bugs ... lorsque vous quittez le système, il se transformera rapidement en un système hérité et la société être au même endroit qu'avant. Rien n'est obsolète jusqu'à ce qu'il ne serve plus son objectif ou qu'il soit complètement incompatible avec les systèmes modernes. Mon entreprise possède un système vieux de plus de 20 ans que nous sommes en train de convertir en ASP.NET. Le système fonctionne toujours mais la prise en charge de l'ancienne technologie diminue et le faire fonctionner avec les navigateurs Web modernes prend de plus en plus de temps.

Ce que tu peux faire:

Laisser les choses plus propres

Lorsque vous entretenez quelque chose, laissez-le plus propre qu'au début. faites votre correction, mais nettoyez aussi les choses afin que la prochaine fois que quelqu'un doit apporter une modification, il soit plus facile à comprendre.

Créer de la documentation

Si le manque de documentation est un problème, créez de la documentation. Lorsque vous travaillez sur une partie particulière du système, documentez-la.

Rendez-le moins douloureux

Comme je l'ai dit, vous pouvez exprimer vos préoccupations, mais votre mieux est de travailler avec diligence sur le système et de mieux travailler pour ceux qui vous suivent. Corrigez correctement les bogues. Document. Le code dispersé sent. Fais le mieux. Et quand vous faites ces choses, informez vos supérieurs. Dites-leur que vous faites X, Y et Z pour améliorer le processus de développement. Cela renforce la crédibilité et à long terme, cela vous aidera, vous et votre entreprise, plus que toute autre chose.

Mike Cellini
la source
1
L'une des choses les plus importantes qui peuvent être faites en tant que X, Y ou Z est d'écrire des tests unitaires. Avoir des tests rend le travail avec le code hérité, qui peut se casser à tout moment et de toute façon, beaucoup moins stressant.
Kevin Vermeer
3

VOUS NE FAITES PAS !!! Ceci est une grande opportunité!

Vous êtes un stage à apprendre! Ce projet est un monde réel tel qu'il se présente.

Vous êtes très chanceux de l'avoir. Le fait que vous ne soyez pas qualifié n'est pas votre préoccupation. (Si \ lorsque la direction l'a réalisé, vous aurez beaucoup gagné)

VOUS serez qualifié une fois que vous aurez terminé ce stage, et c'est une excellente nouvelle.

PS: Faites des sauvegardes religieusement, assurez-vous que TOUT ce que vous faites peut être annulé. Commencez par les problèmes qui sont des "solutions faciles" mais qui posent de gros problèmes aux utilisateurs. Faites de petits pas.

Crétins
la source
L'autre chose pour laquelle les stages sont excellents est de déterminer si vous voulez ou non travailler pour une entreprise et (pour eux) s'ils veulent ou non que vous travailliez pour eux. Il s'agit d'une situation bien meilleure que si le PO avait été embauché comme employé à temps plein et était soucieux de conserver le premier emploi ou de quitter rapidement.
Kevin Vermeer
3

Je suppose, dans un sens très théorique - il n'y a rien de tel que le système Legacy . J'ai un très vieux téléphone (un système hérité), et de nos jours il y a de bons téléphones Android (plates-formes modernes), mais mon téléphone fonctionne et fait ce dont j'ai besoin. Pourquoi devrais-je jeter ça?

Tous les systèmes que vous appelez aujourd'hui «hérités» étaient un jour à la pointe de la technologie. Ce n'est que le temps dont nous avons besoin. De plus, quand il y a un travail important en place, ce n'est pas que refaire tout le reste dans les plates-formes modernes, cela signifie qu'il sera automatiquement sans bug (ou sans douleur).

Voici ce que je vous recommande de faire:

  1. Oubliez d'abord votre aversion pour le "système hérité". Cela vous rendra très contre-productif.

  2. Commencez à documenter ce que vous faites maintenant et ce que vous pensez. Quoique pas à pas. Il n'y a tout simplement pas de meilleur moment pour faire de la documentation que celui où vous réalisez que vous en avez besoin.

  3. Au lieu d'essayer de repousser la poursuite du «système hérité» - essayez de définir le chemin pour sa sortie en douceur. Essayez de voir que vous pouvez convaincre la direction qu'un développement plus récent, qui peut être isolé, peut se faire pas à pas dans les nouvelles plates-formes sans interrompre l'interopérabilité avec les anciens systèmes. Lentement (et ce sera très lentement) à mesure que les choses évoluent, la nécessité de conserver l'ancien système disparaîtrait. C'est la seule façon de dire au revoir à n'importe quel ancien système.

Dipan.

Dipan Mehta
la source
2

La vérité, c'est que personne ne donne aux stagiaires le travail qu'ils veulent faire. Lorsque vous êtes la personne la plus jeune, vous obtenez le travail le moins excitant. La façon dont vous gérez personnellement cela en dit long sur l'organisation quant à savoir si elle peut vous faire confiance pour faire plus de travail passionnant.

Voici donc une occasion inestimable de montrer que vous pouvez livrer en faisant les corrections de bugs, que vous pouvez refactoriser en faisant un peu mieux chaque partie du code que vous touchez, que vous pouvez créer des tests unitaires, en commençant à les créer pour ce système et que vous pouvez documenter en créant de la documentation pour la prochaine pauvre âme qui est coincée avec ce système. Cela vous donne également l'opportunité de montrer que vous pouvez traiter efficacement avec les utilisateurs (pour obtenir plus de détails sur les bogues signalés) et répondre à leurs besoins. Si le projet n'est pas maintenant dans le contrôle de code source, placez-le là et si les bogues ne sont pas suivis dans un traqueur de bogues, alors démarrez-en un. Ces types d'actions vous montreront comment travailler professionnellement.

Ou vous pouvez prendre le chemin opposé et vous contenter de dire à quel point le projet est mauvais et à quel point il serait cool de le remplacer. Dans ce cas, vous ne serez presque certainement pas offert un emploi dans cette entreprise après votre stage.

HLGEM
la source
1

Vous n'avez probablement pas suffisamment d'informations pour déterminer s'il est rentable de partir une autre année ou non. Il serait intéressant de comprendre l'entreprise et pourquoi elle ajoute des utilisateurs. Il semble qu'il y ait une certaine croissance et ils ne peuvent tout simplement pas se permettre de prendre du recul financièrement ou sous certaines contraintes de temps pour créer une autre application. La construction d'une nouvelle application est rarement le meilleur choix de toute façon. 5 ans n'est pas si vieux à moins qu'ils ne l'aient construit sur une ancienne technologie.

JeffO
la source