Question:
Pourquoi les développeurs sont-ils opposés à la maintenance de logiciels? Ils quittent à la fin d'un projet ou partent s'ils constatent qu'ils font de la maintenance?
Hyrolent
2020-02-06 14:59:25 UTC
view on stackexchange narkive permalink

Je suis responsable d'un département avec une équipe technique qui a un taux de rotation élevé et je veux en creuser les raisons. Nous avons eu 40 développeurs au cours des trois dernières années (la taille de l'équipe financée est de 12) et ils restent en moyenne environ 4 à 9 mois.

L'une des choses que j'ai remarquées lors des départs est que la fin d'un projet conduit souvent à une démission massive et que les développeurs du groupe Maintenance ne durent pas aussi longtemps que les développeurs sur le Groupe de solutions (développement personnalisé).

Certains googleurs m'ont dit que la maintenance est considérée comme un travail de merde pour un développeur. Un gars a dit que c'était considéré comme un travail de conciergerie.

Pourquoi cela? Est-ce normal dans l'industrie technologique?

Bonjour Hyrolent et bienvenue sur StackExchange.En tant qu'ingénieur logiciel, je pourrais partager mon opinion sur le sujet, mais beaucoup de gens peuvent avoir des opinions divergentes et il n'y aurait pas de moyen de déterminer * une * meilleure réponse;SE ne convient pas aux questions basées sur l'opinion et la vôtre peut être fermée pour cela.La reformulation peut aider à le rendre impartial.
À partir du lien que vous fournissez, pouvez-vous nous dire quel est le point de la liste de votre entreprise?Parce que d'après ce que vous avez écrit, le seul applicable pourrait être "techniquement difficile".Alors peut-être que c'est autre chose, quelque chose avec votre entreprise?Une démission après un projet est courante.Une démission de masse pas tellement.
@Nyakouai comment pourriez-vous suggérer que je le reformule?
@SZCZERZOKŁY Je ne suis pas vraiment technique moi-même, donc je ne suis pas vraiment sûr.
Cela dépend de ce que vous voulez, mais «quelles sont les raisons les plus souvent invoquées pour arrêter de fumer» ne semble pas arbitraire (cela peut être mesuré) et vous tireriez également les réponses des RH.
Parce que c'est ennuyeux par rapport aux nouveaux projets ... (Voter pour fermé car c'est entièrement basé sur l'opinion et chaque développeur aura ses raisons)
Vous disposez donc d'un groupe Maintenance dédié et d'un groupe Développement dédié.Quelqu'un du groupe Maintenance a-t-il déjà demandé à être transféré / promu Développeur (au lieu de quitter)?Si aucun d'entre eux n'a jamais essayé de devenir développeur, alors ce n'est pas un problème de "développement contre maintenance";quelque chose ne va pas avec l'entreprise dans son ensemble.
@bee Ce n'est pas basé sur l'opinion.Il s'agit de trouver la cause profonde d'un phénomène observable.Aussi social et psychologique que ce soit, il existe une science pour approfondir le problème et en trouver les causes.Par conséquent, il n'est pas basé sur une opinion, encore moins * entièrement *.Le fait que cette recherche soit difficile à trouver ou inexistante n'enlève rien à la valeur de la question.
Avez-vous des rencontres individuelles avec les développeurs et cherchez-vous ce qu'ils n'aiment pas dans leur travail?
Cela a été fermé avant que je puisse répondre, mais si 4 à 9 mois est vraiment la moyenne, vous avez de plus gros problèmes que de simples nouveaux vs maintenance.C'est un mandat très court, même dans ce secteur.Débarrassez-vous également de l'idée de groupes distincts de «nouveau développement» et de «maintenance».Demandez à chacun de faire du nouveau développement ET de maintenir son travail précédent.La gestion de leur propre travail fournit des commentaires et permet au développeur d'apprendre et de s'améliorer.
Je ne sais pas pourquoi cela a été fermé.Je veux dire, si la question posée, "Pourquoi * mes * développeurs détestent la maintenance?"ce serait une chose.Mais il s'agit de poser une question générale sur les développeurs en général et de poser des questions sur les pratiques générales de l'industrie technologique dans son ensemble.En d'autres termes: une question sur "Pourquoi les responsables du recrutement des RH ne voudraient-ils pas entendre parler des expériences négatives de mes emplois passés?"n'est pas une mauvaise question.
La question @GrandmasterB est de nouveau ouverte au cas où vous auriez déjà écrit une réponse.
La maintenance peut être ennuyeuse, mais c'est une désabonnement énorme.Tout ce qui a un taux de désabonnement aussi élevé a des problèmes de rémunération faible ou de gestion.
Je suis généralement chargé de gérer le code de quelqu'un d'autre.Je pense que c'est juste ennuyeux de comprendre les codes des autres, surtout quand il n'y a aucune documentation (on m'a récemment demandé de mettre également des commentaires pour la base de code. Cela signifie que je dois m'asseoir et comprendre chaque ligne de code et le but de chaquefonction).Si les travaux d'entretien confiés par votre entreprise sont comme les miens, alors oui, ce sont des travaux d'entretien ménager.Oh, ai-je mentionné à quel point c'est amusant lorsque le développeur d'origine (et senior) décide que son module est parfait et que les modifications ne doivent être effectuées que sur les modules des autres?
Parce que c'est ennuyeux.Aussi simple que cela.Nous aimons faire des choses.Souvent, lorsque nous sommes bloqués à la maintenance, ce sont d'anciens bogues hérités que nous n'avons pas mis là, et c'est incroyablement frustrant.Vous pourriez aussi bien demander pourquoi les architectes ne veulent pas rester coincés dans les réparations de bâtiments.
Vous évoquez un "groupe de maintenance".J'en déduis que certains développeurs font UNIQUEMENT la maintenance.Je soupçonne qu'il y a votre problème.Étant donné que la maintenance est une tâche ardue que personne ne veut faire, tout le monde devrait en faire une part égale.
Cette question, et les réponses, pourraient vous donner un aperçu. https://softwareengineering.stackexchange.com/questions/43409/dealing-with-engineers-that-frequency-leave-their-jobs/43413#43413
faire principalement de la maintenance est un suicide de carrière, car cela signifie que vous êtes coincé avec une technologie obsolète qui deviendra simplement démodée un jour, tandis que le développement réel a beaucoup plus de chances de vous donner une expérience de travail précieuse avec des technologies en demande pour des postes de développeur.pourquoi quelqu'un voudrait-il écraser sa valeur marchande?
Quatorze réponses:
Matthew Gaiser
2020-02-06 15:30:21 UTC
view on stackexchange narkive permalink

Je serais très réticent à faire un travail qui était principalement de maintenance. Voici pourquoi:

  1. C'est mauvais pour sa carrière (en interne). Les efforts héroïques pour maintenir le logiciel en état de marche ne sont presque jamais reconnus car les gens ne voient que le statut quo. Quelqu'un qui est resté éveillé toute la nuit pour terminer une nouvelle fonctionnalité recevra beaucoup d'éloges. Quelqu'un qui l'a fait pour empêcher le logiciel de tomber en panne? Personne ne sait même qu'ils l'ont fait. Au cours de ma courte carrière certes, je n'ai jamais vu d'éloges pour un bon travail d'entretien. J'ai entendu beaucoup de personnel de maintenance / informatique se plaindre d'être sous-estimé et pour la plupart, ils le sont. Demandez-vous ce que votre haute direction pense des développeurs de support? En savent-ils beaucoup sur les développeurs de support? Qui a été félicité?

  2. C'est mauvais pour sa carrière (en externe). Un de mes amis est un développeur très expérimenté et pendant deux ans, il a principalement maintenu ce grand application. On lui a constamment demandé dans les entretiens futurs pourquoi il ne faisait que peaufiner, pas construire. La maintenance n'est pas considérée par beaucoup comme une ingénierie. Vous le voyez également dans de nombreux domaines en dehors de l'ingénierie. Lorsque je postulais à l'université, la chose à la mode était de fonder une association caritative et de construire une école. Pourquoi ne pas rejoindre et construire un existant? Vous n’en auriez pas le mérite, comme même s’ils obtenaient le même résultat, car cela n’impliquait ni «leadership» ni «initiative». Les gens qui construisent quelque chose sont beaucoup plus respectés que ceux qui font fonctionner quelque chose, même si ce dernier est plus difficile.

  3. C’est mauvais pour sa carrière (technologie). Les projets de maintenance sont plus souvent construits avec des technologies plus anciennes. Le problème est que la technologie a une courte durée de vie dans le développement de logiciels. Si vous travaillez sur un projet avec JQuery au lieu de React ou un projet qui utilise Ant au lieu de Maven, Ruby au lieu de JS, votre valeur marchande diminue. Si vous utilisez AngularJS, Bootstrap 3, les versions Java inférieures à 8, Objective C, etc., vos options deviennent chaque jour plus limitées car peu de nouveaux développements sont effectués dans ces langages.

  4. C'est plus difficile. Aujourd'hui, j'ai résolu un bug en ajoutant une vérification et en supprimant la table dans la base de données. Mon projet est un greenfield qui n'a pas encore été mis en production, nous n'avons donc pas besoin de maintenir la compatibilité ascendante ou de conserver les données existantes. La correction de ce bogue tout en conservant les données nécessiterait d'exécuter un script pour supprimer certaines lignes ou de modifier l'API pour sélectionner la bonne.

  5. Vous êtes à jamais un centre de coûts. L'un des avantages d'un projet greenfield est qu'il permet aux dirigeants de s'impliquer et de valoriser davantage le projet . J'ai rencontré ces deux développeurs mobiles lors d'une conférence qui ont développé et mis à jour une application dans Xamarin pour la compatibilité croisée. Ensuite, il a été question de réduire les coûts et d'externaliser la maintenance de l'application en Inde (je vis au Canada, donc le coût est sensiblement différent) et d'économiser deux salaires de développement. Vous savez comment ils se sont sauvés? Parler de «problèmes de compatibilité» et convaincre la direction de leur demander de réécrire l'application à partir de zéro dans React Native. Cela a sauvé leurs emplois et leur a valu des augmentations. S'ils sont intelligents, il y aura plus de «problèmes de compatibilité» et un besoin de réécrire dans Flutter.

+1.La solution est de ne pas diviser le travail en "nouveau projet" et "maintenance" et de faire en sorte qu'une équipe possède un portefeuille de projets (vraiment "produits" ou "services"), à la fois nouveaux et anciens.Cela rend non seulement les développeurs plus heureux, mais élimine également une partie de l'impact sur votre organisation des nouvelles applications non fiables qui sont «déversées» sur une autre équipe.C'est ce qu'on appelle «la propriété du service», ou plus familièrement, «mangez votre propre nourriture pour chien».
Tous ces points sont corrects, mais le point n ° 1 est essentiel - en particulier lorsque vous considérez les bonus / augmentations / promotions.Un nouveau projet: les managers / cadres sont toujours là ou du moins de temps en temps et apprennent votre nom.Au jour le jour, quand vous rencontrez des problèmes, ils ne sont pas là mais sur le succès: récompense!Lors de la maintenance, vous ne voyez jamais d'exécutif jusqu'à ce que votre système soit foutu, puis ils ne sont là que pour vous blâmer, donc au moment de la révision de la rémunération: punition.Ou de toute façon, leur attention est ailleurs, tout comme les $$.
Je ne suis pas d'accord avec le point 3. La technologie n'a pas une courte vie dans le développement de logiciels.Si je possédais une société Java, je serais très heureux d'embaucher quelqu'un qui a une expérience avec la version Java inférieure à 8. Je serais très heureux aussi d'embaucher quelqu'un qui a de l'expérience avec "make" malgré le fait qu'il s'agit d'un outil vieux de 40 ans.Les serveurs fonctionnent sous Unix, un système d'exploitation vieux de 50 ans.J'ai entendu dire que de nombreux programmeurs Cobol gagnent un salaire assez décent.De plus, SQL a trop près de 50 ans.De plus, C a presque 50 ans et C ++ 35 ans.Je gagne bien ma vie grâce (entre autres) aux scripts C / C ++ / Unix / make / shell.
@juhist Oui, il y a certainement un besoin de programmeurs hérités de niche, mais je doute que pendant les premiers jours de Facebook ou les premières étapes de tout nouveau logiciel, quelqu'un ait dit avec enthousiasme "Je sais, construisons-le en Cobol!"
@juhist J'ai été développeur C ++ pendant la majeure partie de ma carrière.Mais maintenant, je fais d'autres choses depuis 3-4 ans et tout à coup il y a tout ce truc `constexpr` et d'autres nouveautés que je ne sais pas utiliser
Pour moi, le premier point est le véritable tueur de motivation - Si vous faites votre travail parfaitement à tout moment, personne ne se rend compte que vous existez.Si quelque chose ne va pas avec votre application, ou si un bug obscur de cas d'angle caché depuis la sortie de l'application est soudainement déclenché, quelqu'un se présentera instantanément pour vous en vouloir.
@mxyzplk-SEstopbeingevil ouais, il faut vraiment le mélanger.Bien que les développeurs quittent assez souvent pour ne pas vraiment manger leur propre nourriture pour chiens.
Les travaux COBOL existants d'@juhist et les anciens SQL / C ++ sont probablement parfaitement adaptés.Mais que faire si votre entreprise déménage enfin et vous licencie?Vos perspectives d'emploi ne sont pas excellentes.Vos compétences fondamentales en CS sont probablement parfaitement bonnes (c'est pourquoi vous seriez très bien en train d'embaucher un programmeur Java 6), mais avec vos compétences linguistiques existantes, vos options sont limitées.
@MatthewGaiser Je ne suis pas d'accord.C, C ++ et SQL ne meurent pas.COBOL peut mourir lentement.Vous choisissez simplement un autre travail C, C ++ et / ou SQL.En fait, je préfère de beaucoup embaucher quelqu'un qui connaît une vieille technologie qui a fait ses preuves (Unix, C, C ++, SQL, make) plutôt que quelqu'un qui connaît une technologie apparue soudainement qui est devenue à la mode en un rien de temps puis est morte (comme jQuery).Astuce: React et Maven appartiennent probablement aux technologies apparues soudainement comme mortes en un rien de temps.JS pourrait peut-être avoir une valeur durable, si l'on s'en tient aux fondamentaux plutôt qu'au framework le plus chaud.
Le développement de logiciels @juhist se divise en domaines fondamentalement différents.À proprement parler, NoSQL ne fait vraiment rien que le SGBDR ne fasse, mais dans certaines situations, cela fait vraiment une grande différence pour les développeurs et leur santé mentale.Le type C que vous avez mentionné sera totalement inutile en tant que développeur UX.
De plus, en utilisant le langage de la dette technique, les responsables sont les responsables de rembourser le principal mois par mois tout en combattant les intérêts, tandis que les créateurs obtiennent une carte de crédit et peuvent s'amuser à dépenser au-dessus de leurs moyens
Je ne suis pas vraiment d'accord avec cela.La plupart des entreprises ne divisent pas leurs développeurs en équipes nouvelles / de maintenance et à la place, les projets sont développés * et * maintenus par les mêmes développeurs tout au long de leur cycle de vie.En outre, les développeurs expérimentés n'ont aucun problème à apprendre de nouvelles technologies et les intervieweurs qui refuseraient à un vétéran / développeur senior de travailler avec jQuery vs React ne sont pas des personnes pour lesquelles vous voulez travailler car ils ont peu ou pas de compréhension du développement.En outre, c'est une compétence précieuse de pouvoir mettre à jour des applications héritées vers de nouvelles technologies car les choses sont obsolètes et cessent de fonctionner.
Peut-être que l'ennui est également un facteur.C'est nouveau et amusant de travailler avec de nouvelles technologies et de relever de nouveaux défis.C'est ennuyeux de maintenir ou de faire quelque chose qui ne cesse de s'effondrer sans raison.Je suppose qu'il y a des gens qui pensent comme ça et des gens qui ne le font pas.J'ai personnellement eu du mal avec un de mes projets privés parce que je me suis ennuyé à un moment donné et que je n'ai donc pas pu le terminer.Cela a causé une stagnation mentale totale, et l'abandonner a été une libération majeure pour moi.
+1.réponse ponctuelle.juste une pensée que vous voudrez peut-être ajouter: le sentiment personnel d'accomplissement.développer quelque chose de nouveau sur quelques mois et le voir fonctionner à la fin apporte un énorme sentiment d'accomplissement (du moins pour moi et tous les développeurs que je connais).maintenir quelque chose pendant des années est une lente et douloureuse guerre d'usure.
@d_hippo Je suis tout à fait d'accord là-dessus.Je suis très axé sur les réalisations, ce qui est une autre raison pour laquelle je ne pourrais jamais être un développeur de maintenance.
JazzmanJim
2020-02-06 22:23:50 UTC
view on stackexchange narkive permalink

Un travail de développeur doit être une combinaison de travaux de maintenance et de nouveau projet. Je fais ça depuis plus de 35 ans. C'est courant et très malavisé.

Ce type de rotation est un problème d'organisation. Tous les développeurs devraient avoir une combinaison de travail de projet amusant et passionnant (les nouveautés) et de travail de maintenance (garder les lumières allumées).

Dans ma position actuelle, nous recherchons une répartition 60/40 entre le travail de projet et le travail de support. Cela peut (bien sûr) varier en fonction du projet et du montant de l'assistance.

Les entreprises qui ne récompensent pas le travail d'assistance dans la même mesure que les nouveautés ont tendance à rencontrer des problèmes. Lorsque les personnes expérimentées laissent une mine de connaissances métier et la connaissance système est perdue (le facteur bus).

Évalué car il s'agit d'une solution réelle aux problèmes bien notés par d'autres.Le fait qu'un développeur ne s'occupe que de la maintenance est la source de ces problèmes.Leur permettre de mélanger l'ancien et le nouveau les résout partiellement.
J'irai plus loin.Tout développeur fraîchement sorti de l'école peut créer un nouveau projet, mais il faut un ingénieur logiciel qualifié et expérimenté pour maintenir un système qui rapporte réellement de l'argent et satisfait les besoins des utilisateurs.La maintenance est un travail plus dur et plus laborieux que les projets greenfield.Cela mérite beaucoup de respect.
Kevin
2020-02-07 00:10:49 UTC
view on stackexchange narkive permalink

Il est temps de relever le défi du cadre: ce problème n'est pas que les développeurs détestent la maintenance; le problème, c'est qu'ils détestent travailler pour votre entreprise.

Je ne pense pas que vous vous rendiez compte à quel point insensé votre taux de rotation est. Le taux de rotation informatique moyen est de 13,2% par an - et cette statistique est présentée comme une "vache sacrée, 13,2% est élevé!" J'ai travaillé pour une entreprise PoS pendant un certain temps, et elle avait un taux de rotation d'un peu plus de 20% - et je la considère personnellement comme une usine de désabonnement. Quel est donc le taux de rotation informatique de votre entreprise? Environ 80%! C'est six fois le taux de «vache sacrée, le taux de rotation informatique est élevé», et presque quatre fois le taux de «churn factory». (J'ai presque envie de copier-coller tout ce paragraphe dans un deuxième temps, juste pour souligner à quel point ce taux de rotation est dysfonctionnel.)

Donc, je veux que vous vous mettiez dans la peau d'un développeur qui a a rejoint votre entreprise - et déteste probablement leur nouvel emploi. Ils veulent déjà sortir ... mais ils ont un dilemme: quittent-ils le navire après seulement 2 mois de travail? Bien que compréhensible, ce serait quand même un peu un drapeau rouge sur leur CV qu'ils préféreraient éviter. Mais ils travaillent actuellement sur un projet. Peut-être que la bonne solution est de simplement tenir le coup quelques mois de plus jusqu'à ce que le projet soit terminé, puis de réclamer la réalisation sur leur CV? De plus, terminer le projet constitue un excellent `` serre-livre '' - une pièce de clôture qui marque mentalement leur temps dans l'entreprise. Il y a de très bonnes chances que vous obteniez des exodes massifs après la sortie du projet, ce n'est pas parce qu'ils voulaient tous quitter spontanément en même temps - c'est qu'ils voulaient quitter avant ce moment et attendaient simplement de terminer le projet. .

En examinant votre question, je pense que vous avez fait un saut que vous n’auriez pas dû faire: qu’ils partent spécifiquement pour des raisons de maintenance. Avez-vous demandé aux gens qui sont partis? Avez-vous demandé aux agents de maintenance actuels des commentaires anonymes? Avez-vous parcouru les avis sur Glassdoor?

Ne vous méprenez pas: ils pourraient en effet fuir parce qu'ils détestent l'entretien. Mais il peut y avoir d'autres raisons - des raisons pour lesquelles vous passez à côté à cause d'une hypothèse hâtive.

Alors que les autres réponses répondent directement à la question d'OP, je pense que c'est la cause profonde du problème d'OP.
Les informaticiens en moyenne 7,5 ans dans les entreprises?Cela semble être une éternité.
@MatthewGaiser Dépend probablement du secteur.Ici, dans la sphère fédérale des contrats, les personnes travaillant pour la même entreprise depuis plus d'une décennie ne sont pas rares.La différence est qu'ils restent rarement avec le même projet / client aussi longtemps.Donc beaucoup de mouvement intra-entreprise à la place.
@MatthewGaiser - avec ce que pboss a dit, c'est probablement un nombre aussi un peu élevé à cause de la `` queue '' - un plus petit nombre de personnes qui restent pendant 20 à 30 ans peut faire grimper cette moyenne.De plus ... vous êtes plus susceptible de travailler dans un endroit qui a un roulement plus élevé ... parce qu'ils embauchent beaucoup plus de personnes que les endroits à faible roulement.Quoi qu'il en soit, 80% du chiffre d'affaires avec OP est insensé.:-)
C'est la vraie réponse ici.CHAQUE entreprise demande à ses développeurs de faire la maintenance.Très peu, voire aucun, ont un taux de roulement aussi élevé.Ce n'est pas la maintenance, je parie mon 401k dessus.
Alors que 7,5 ans semblent élevés à première vue, je considérerais cela plausible.Tout le monde ne travaille pas dans une autre boutique en ligne arbitraire dans une grande ville.Si vous êtes un peu spécialisé et travaillez dans une petite ville, il n'y a pas beaucoup d'entreprises à choisir.Et tant que tout va bien, pourquoi changer?Le taux de roulement dépend probablement aussi de l'âge.Avec 25 et single, les expériences peuvent être faciles.Avance rapide de 15 ans, obtenir une famille et une maison pour payer, le changement est plus compliqué
Merci d'avoir apporté cette réponse.Il est manifestement évident que l'entreprise a des problèmes majeurs qui poussent les employés à démissionner.*** Et la raison même pour laquelle OP ne semble même pas l'envisager, pourrait en être un facteur important. ***
StackOverthrow
2020-02-06 23:59:45 UTC
view on stackexchange narkive permalink

Je ne peux parler que pour moi-même, mais les raisons pour lesquelles je suis parfois un contre-exemple peuvent être éclairantes.

Maintenir un projet massivement chargé par une dette technique peut être difficile, mais cela peut aussi être extrêmement gratifiant. L'héritage de projets Android et ASP.NET désastreusement bâclés m'a appris plus de choses que je ne peux compter sur ce que ne pas faire dans ces frameworks. J'ai appliqué ces leçons dans mes propres projets greenfield. Je suis également devenu habile dans le refactoring, ce qui est très précieux dans ce secteur car il y a tellement de projets qui s'effondrent sous la dette technique. Et c'est émotionnellement gratifiant dans la mesure où la correction des bugs fait de vous un héros pour les utilisateurs.

Tout cela a été possible parce que la direction, ou du moins mes supérieurs immédiats, a reconnu que je faisais face à une dette technique et m'a donné une lettre de marque pour le rembourser. Se sentir comme un héros devient une incitation lorsque les développeurs connaissent ou ont une sorte d'engagement avec les utilisateurs. J'ai bâti une carrière très réussie en nettoyant les dégâts des autres, et je peux honnêtement dire que j'aime ça. Mais je peux facilement voir le chiffre d'affaires devenir un problème si ces conditions n'étaient pas remplies.

voté.c'est un bon point, un problème plus important ici est la confiance de la direction.Les gestionnaires averses au risque qui ne font pas confiance à leurs développeurs créent et prolongent cette situation.
En effet.La correction de bogues de longue date que personne d'autre ne peut résoudre en utilisant obtient la reconnaissance (du moins des utilisateurs).
Justin
2020-02-06 15:15:26 UTC
view on stackexchange narkive permalink

Je ne sais pas en général, mais je peux répondre par moi-même.

(sans ordre particulier)

  1. Les projets sont considérés comme plus "excitants ", dans le sens où ils offrent plus de défis. Greenfield (i) projets en particulier, car la technologie est invariablement nouvelle (heu) et offre plus d'opportunités d'apprentissage. La maintenance est la même vieille, la même vieille.

  2. Les projets ont généralement une fin fixe ou sont réalisés par étapes. La maintenance est considérée comme une liste interminable. Dans un mois, ce ne sera plus rien.

  3. Le travail de base du projet peut souvent mieux apparaître sur le CV. "Pourquoi es-tu parti?" - "Fin de projet", sonne mieux que "Je m'ennuyais après 2 ans du même truc". Le locataire notera «s'ennuie facilement».

  4. Coût / Temps. Vos «solutions personnalisées» auront des contraintes de coût ou de temps qui obligeront les développeurs à «faire juste», plutôt qu'à concevoir une solution élégante. Il en va de même pour les projets, mais comme ils sont beaucoup plus gros, c'est un problème moins évident (c'est aussi un risque de projet, mais c'est pour une réponse différente).

  5. Argent - Travail d'assistance paie beaucoup moins.

  6. C'est très spécifique à l'entreprise


(i) Un nouveau projet est un projet qui completement nouveau. Le terme vient de l'industrie du bâtiment; avant d'avoir un bâtiment, il n'y a qu'un champ vide. Brownfield est l'endroit où il y avait peut-être déjà eu un bâtiment et que l'ancien est réutilisé.

Clause de non-responsabilité: je suis un entrepreneur et j'ai fait beaucoup des deux types de travail. Je fais actuellement de la maintenance.

+1 pour «l'argent».Dans ce cas, je pense que c'est la raison principale.D'après mon expérience, les développeurs restent habituellement quelques mois pour jouer avec le nouveau jouet et faire les choses qu'ils voulaient.Mais si le salaire est très différent, ils abandonneront le navire.
Le travail de soutien paie moins?Si quoi que ce soit, il devrait payer plus car il devrait y avoir une plus grande valeur dans l'apprentissage de la base de code à long terme.
@MatthewGaiser "devrait" vs "fait".J'ai fait des contrats et des permanentes pendant plus de 3,5 décennies, et comme pour un travail de soutien similaire, je paie toujours moins.De toute évidence, le travail de soutien dans une banque dans une ville paiera plus que le travail de projet dans toute autre industrie dans une ville de province.
De plus, avec la maintenance, vous devez gérer toutes les "conneries" que vous avez faites et vous apprenez chaque jour à quel point vous étiez incompétent, etc. Souvent, les grands changements sont découragés.
GrandmasterB
2020-02-07 04:08:01 UTC
view on stackexchange narkive permalink

Changez la question. Au lieu de cela, demandez-vous pourquoi les auteurs préfèrent-ils écrire de nouveaux livres plutôt que d'éditer les livres d'autres personnes? Si vous regardez les choses de cette façon, la raison pour laquelle les programmeurs préfèrent les nouveaux projets devrait être évidente. Les programmeurs sont des créateurs par nature.

Mais je veux aborder ici un défi de frame mineur parce que je vois un assez gros drapeau rouge. Si vos développeurs ne restent avec vous que 4 à 9 mois, vous avez un problème important qui va au-delà du simple nouveau code par rapport à la maintenance. Êtes-vous sûr qu'il n'y a pas d'élément toxique dans l'environnement? Ou peut-être que le code est si insouciant que les responsables ne veulent pas en assumer la responsabilité? Votre gestion de projet est-elle désagréable et repousse-t-elle des délais déraisonnables? Une durée moyenne de 4 à 9 mois est inhabituellement courte, même dans cette profession.

Une chose que vous voudrez peut-être regarder est de vous débarrasser de l'idée d'avoir un «nouveau développement» et un groupe de «maintenance». Les développeurs qui créent le «nouveau» logiciel devraient être ceux qui le maintiennent. C'est ainsi que les développeurs grandissent - ils reçoivent des commentaires sur le travail qu'ils ont effectué, et ont la possibilité de l'améliorer et d'apprendre de l'expérience. Tous les développeurs doivent être impliqués à la fois dans le nouveau développement et dans la maintenance de leurs travaux précédents.

Je soupçonne que "quitter à la fin du projet" est la raison pour laquelle ils ont un groupe de maintenance.À 4-9 mois chacun, il n'y a personne là-bas qui a écrit le logiciel original.
Manziel
2020-02-06 22:48:39 UTC
view on stackexchange narkive permalink

La réponse de Matthew a déjà couvert la plupart des problèmes liés aux travaux de maintenance, même si j'appellerais certaines choses un peu à courte vue par les futurs employeurs. Un bon développeur Java 7 peut facilement apprendre les nouvelles normes. Il y a cependant un aspect qui m'empêcherait de me consacrer uniquement à la maintenance: Cela peut être incroyablement frustrant et vous avez l'impression de ne rien faire

Nous ne sommes qu'une petite équipe et donc tout le monde s'occupe à la fois de la maintenance et du nouveau développement. Cependant, chaque logiciel a les parties qui "fonctionnent juste" pour l'éternité écrites par des gens qui sont partis il y a des années. Certaines de ces pièces sont antérieures à beaucoup de nos améliorations de qualité. Il n'y a pas de documentation appropriée (ou aucune que vous puissiez trouver). Il n'y a pas de couverture de test. Le code de ces parties peut être désordonné et "optimisé" de manière étrange, ce qui entraîne le dépassement de nombreuses limites invisibles lorsque vous essayez de changer quelque chose.

Chaque fois qu'une de ces parties s'arrête pour "juste fonctionner", Je me sens comme un archéologue analysant tous les détails probablement sans importance qui pourraient être pertinents. Réduire un problème peut être difficile dans ces systèmes car ils sont difficiles à isoler de leurs dépendances. En fin de compte, vous avez peut-être passé 2 jours et pour un correctif composé d'une seule ligne de code.

Et le pire, c'est que vous ne pouvez pas résoudre ce problème pour de vrai car une fois qu'un projet ou une version de produit est en maintenance mode, vous n'obtiendrez pas les ressources pour une réécriture majeure. S'il est possible de changer la situation dans son ensemble

De plus, même maintenir son propre code peut être une vraie douleur. Une fois qu'il est dans la nature, il devient beaucoup plus difficile à déboguer. Au lieu de joindre un débogueur, vous lisez les journaux et espérez avoir choisi le bon niveau d'instrumentation. De nombreux problèmes dans la nature dépendent de l'action de l'utilisateur ou, pire encore, ils dépendent des données. La reproduction de ces problèmes nécessite beaucoup de coopération avec les clients, ce qui n'est pas vraiment amusant.

fraxinus
2020-02-06 23:50:29 UTC
view on stackexchange narkive permalink

Ajouter à @Matthew Gaiser

Créer un produit maintenable est difficile. Faire un produit qui nécessite peu de maintenance est encore plus difficile.

Étant donné le choix, les développeurs ne font ni l'un ni l'autre (et la plupart d'entre eux sont de toute façon incapables). Ils sont payés, promus et félicités pour l'ajout de fonctionnalités et ils continuent d'ajouter des fonctionnalités et continuent de s'améliorer dans l'ajout de fonctionnalités. Les cas d'angle, la gestion des erreurs ou mieux, les choix de conception qui demandent beaucoup de réflexion sont laissés pour compte.

Soit ils savent assez bien ce qu'ils ont fait (s'ils sont honnêtes avec eux-mêmes), soit ils font face à la vérité d'une manière plutôt désagréable lorsque le projet est déployé.

Bienvenue dans l'enfer de la maintenance.

--- edit:

La maintenance est assez similaire au développement. Vous faites fonctionner les choses. Sauf ...

  1. Pression des personnes qui utilisent le produit et qui en ont besoin pour fonctionner maintenant. La façon dont ils sont formés ou habitués.

  2. Responsabilité. C'est vous qui serez viré pour une perte de données royale, pas le développeur "rock star" qui ne voit jamais les données des utilisateurs.

  3. Contrainte des mauvais choix de conception de ceux-ci " rock stars "qui l'a écrit (c'est encore pire si ces rock stars sont vous).

  4. Des métriques de succès complexes: ... eh bien, c'est compliqué. Vous prenez beaucoup de blâme. Voir d'autres réponses.

  5. Généralement des personnes moins compétentes et moins motivées qui font de la maintenance (ou doivent travailler avec ces personnes si vous restez dans la maintenance).

Cela aussi.La direction encourage toutes les mauvaises choses pendant le développement.
C'est le marché et la vie elle-même qui mènent à ces mauvaises choses (la plupart des gens sont stupides, souvenez-vous).Il faut beaucoup de maîtrise de soi et de motivation hors du marché à tous les niveaux pour produire quelque chose de bien.
Karl Bielefeldt
2020-02-07 01:35:29 UTC
view on stackexchange narkive permalink

Les autres réponses ont parlé du plaisir de travailler sur un nouveau projet, mais il existe également de bonnes et de mauvaises façons de gérer les projets de maintenance. Le bon moyen offre de nombreuses opportunités d'améliorations initiées par les développeurs, et je pense que la plupart des développeurs trouvent cela presque aussi gratifiant. La mauvaise façon est un slog constant de passer un temps excessif sur ce qui devrait être de simples correctifs, puis d'être abattu chaque fois que vous suggérez des améliorations qui pourraient vous accélérer, comme des refactors ou l'automatisation des tests et des déploiements.

flexi
2020-02-06 23:27:30 UTC
view on stackexchange narkive permalink

Ceci est basé sur des opinions, mais créer un désordre est plus amusant que d'en nettoyer un.

Maintenance

En général vous corrigez des choses qui n'ont pas été faites correctement au départ. Souvent, ce n'est pas votre faute. Cela pourrait être une véritable erreur, un oubli, d'autres développeurs étant paresseux ou inexpérimentés, fluage de la portée, technologie obsolète, etc.

Vous prenez le blâme pour que les choses ne fonctionnent pas, même si ce n'est pas votre faute . C'est stressant et humiliant.

(certains développeurs adorent trouver et résoudre les problèmes, d'autres le détestent)

Développer

Vous ' re le créateur. Vous obtenez tous les éloges pour que les choses se passent bien. Lorsque des problèmes sont découverts plus tard, c'est un problème de maintenance.

Solutions possibles

Peut-être que le problème que vous rencontrez concerne davantage la culture et les processus. Assurez-vous que les développeurs construisent les choses selon des normes élevées, avec des spécifications et des processus clairement définis.

Avant la fin d'un projet, organisez une réunion pour les planifier sur un autre projet, en leur donnant quelque chose à espérer , partageant leur temps entre la maintenance et un nouveau projet.

Les développeurs veulent développer (créer), ne coller personne dans un groupe purement de maintenance (bouc émissaire).

Je ne suis vraiment pas d'accord avec l'affirmation selon laquelle créer des logiciels de merde est plus amusant que de retravailler un logiciel pour être propre et clairement correct.Le meilleur sentiment que j'ai eu ces dernières années a été de remplacer un code de communication horrible par un code d'un tiers de la taille qui était simple et propre.Très satisfaisant.
Bien sûr, étant donné le bon environnement, retravailler un logiciel pourrait être amusant.Mais lorsque vous corrigez / améliorez quelque chose que quelqu'un d'autre a mal fait et que vous n'obtenez que de mauvaises critiques du client parce qu'il est ennuyé, c'était un problème en premier lieu ... ce n'est pas amusant. J'ai dit que c'était basé sur l'opinion (sur la base de mon expérience et de ce que j'ai perçu comme étant commun dans ma région).Je n'ai jamais dit que c'était la même chose pour tout le monde.
Ertai87
2020-02-07 21:38:58 UTC
view on stackexchange narkive permalink

Je vais faire écho au sentiment de GrandmasterB en disant que si vos développeurs ne restent que 4 à 9 mois, le problème n'est pas le fait que ces développeurs sont mis en maintenance. Vous avez un problème plus grave, et les gens qui quittent votre entreprise et vous disent que c'est à cause de la maintenance essaient simplement de calmer le vrai problème. Bien que je ne puisse pas parler pour les autres, une des raisons pour lesquelles je pourrais faire quelque chose comme ça serait parce que j'ai l'impression que si je soulevais le vrai problème, je ne serais pas écouté. Quelque chose, peut-être, comme un manager toxique qui est dans l'entreprise depuis des années et que la direction l'aime, mais tous ses subordonnés directs se plaignent de lui, mais les RH ne font jamais rien parce qu'ils pensent qu'il est génial et qu'il produit des résultats. Connaissez-vous quelqu'un qui pourrait correspondre à cette description au sein de votre organisation? (indice: sinon, ce pourrait être vous). Vous pouvez rechercher votre entreprise sur Glassdoor et voir ce que les gens disent de votre entreprise; les gens ont tendance à être plus honnêtes lorsqu'ils sont anonymes, et vous pourriez y trouver la vraie raison. Il est important que lorsque vous parcourez les avis de Glassdoor pour comprendre que la plupart des gens n'essaient pas de vous calomnier, ils donnent leurs vrais conseils en fonction de leurs expériences réelles, et de nombreuses entreprises se mettent sur la défensive lorsqu'elles ont un problème, alors que vous devriez être introspectif et essayez de résoudre le problème.

Voici une autre question qui pourrait vous éclairer sur la manière dont votre entreprise peut être gérée au niveau macro: disons que je rejoins votre entreprise. Vous m'avez mis sur un projet pendant les 6 premiers mois, puis je termine le projet et vous m'avez mis en maintenance pour le reste de mon mandat dans l'entreprise. Ensuite, vous voulez démarrer un nouveau projet, donc vous embauchez quelqu'un d'autre. Ensuite, ils passent à la maintenance. Ensuite, vous démarrez un nouveau projet et embauchez quelqu'un d'autre, et ainsi de suite. Pendant ce temps, moi et l'autre gars sommes toujours dans l'entreprise, nous sommes des développeurs capables qui pourraient faire le projet, et vous ne nous utilisez pas pour répondre aux besoins de votre projet. Outre le fait que cela nous fait nous sentir inutiles parce que nous n'obtenons pas le travail de projet «intéressant», cela signifie également que votre base de code est un gâchis, car chaque fois que vous faites un nouveau projet, vous embauchez de nouvelles personnes qui entrent dans l'entreprise avec leurs propres normes, expériences et styles. Cela augmente le coût de maintenance de votre service dans son ensemble, car en plus des tâches de maintenance régulières telles que la qualité des données et le triage des bogues, nous (les responsables de la maintenance) devons également comprendre potentiellement des dizaines ou des centaines de styles de codage différents de toutes les personnes différentes, certains d'entre eux. qui ont peut-être quitté l'entreprise après avoir soumis leur code.

En réalité, vous ne devriez pas avoir une "équipe de projet" et une "équipe de maintenance". Vous devez diviser votre équipe par responsabilités ou domaines, puis chaque développeur de chaque équipe est responsable à la fois du nouveau développement et de la maintenance de tout ce qui relève de son domaine. Ensuite, vous avez des chefs d'équipe ou des responsables de l'ingénierie qui répartissent ces tâches entre les membres de leur équipe afin que chacun ait une part décente des nouvelles tâches de développement et de maintenance.

Un autre signal d'alarme à propos de votre entreprise est que vous ressentez le besoin d'avoir une "équipe de maintenance", c'est-à-dire un ensemble de développeurs qui sont en service de maintenance à plein temps. Cela en dit long sur la qualité de votre code d'application. Des bogues se produisent, c'est sûr, mais si vous avez tellement de bogues que vous avez une équipe dont la responsabilité principale est de passer d'un bogue à l'autre pour éteindre les incendies, cela pourrait valoir la peine d'envisager une réécriture de votre application, car ce n'est pas censé se passer. Cela vient de l'embauche de mauvais développeurs, et les mauvais développeurs sont aussi des personnes qui pourraient partir d'ici 4 à 9 mois, comme "voici mon code de merde, maintenant c'est votre problème, à bientôt" (pas que les bons développeurs n'aient pas de raisons de partir rapidement , mais les mauvais développeurs ont plus de raisons de partir rapidement). Vous devriez probablement également jeter un coup d'œil à la rémunération de vos employés et la comparer aux taux du marché pour voir si vous n'attirez peut-être pas les talents. Le talent attire plus de talent; J'adorerais travailler avec des gens qui sont plus intelligents que moi, mais si tout le monde est moins qualifié que moi, je n'ai aucune raison de rester car je n'apprends pas ou ne fais rien d'intéressant, et je dois constamment réparer les autres le mauvais code des gens parce que personne n'écrit de code aussi bon que le mien.

En bref:

1) Vous avez probablement un problème au sein de votre organisation sous la forme d'une personne toxique dans la gestion. Découvrez de qui il s'agit et débarrassez-vous d'eux.

2) Vous devriez probablement diviser vos équipes en domaines de projet plutôt que maintenance par rapport à projet, et avoir des chefs d'équipe qui répartissent les tâches de projet et de maintenance pour garder votre les développeurs sont satisfaits.

3) Vous devriez probablement augmenter vos taux de rémunération pour attirer les talents qui peuvent créer un meilleur code afin que vous ayez à faire moins de maintenance. Vous pouvez également supprimer votre application actuelle et la reconstruire complètement une fois que vous avez de bons talents à bord pour réduire les coûts de maintenance.

Dan
2020-02-07 00:01:41 UTC
view on stackexchange narkive permalink

J'aime la réponse de Matt mais je souhaite ajouter un exemple s'il n'est pas déjà partagé. Supposons que quelqu'un a construit une maison et que cette même personne se promène maintenant pour entretenir la maison. Ce serait assez ennuyeux de le faire principalement parce que vous trouverez les éléments communs qui se cassent, et il est probable que tout le reste est principalement un malentendu sur la façon dont quelque chose fonctionne. Vous passerez plus de temps à ne rien faire qu'à faire quelque chose. Bien sûr, il y a de nouveaux projets qui peuvent apparaître ici et là et peut-être qu'à certains moments, des extensions de la maison peuvent se produire, mais dans l'ensemble, vous passez du temps à faire la maintenance et les pannes courantes.

kaidan094
2020-02-06 15:10:28 UTC
view on stackexchange narkive permalink

Je pense que la plupart des développeurs veulent quelque chose de plus difficile que de faire une simple maintenance, surtout si la technologie est ancienne, sans à peine rien de nouveau à apprendre, pas de nouveau langage / framework / etc. Vous êtes donc coincé avec quelque chose qui ne mènera à rien, que vous ne pourrez pas utiliser plus tard dans votre carrière si vous changez d'emploi. Aussi je trouve ça ennuyeux, sans trop de travail, sans intérêt

Boh Boh
2020-02-07 23:50:35 UTC
view on stackexchange narkive permalink

Je suis développeur et je n'aime pas non plus la maintenance, en effet cela peut être comparé au travail de conciergerie. La meilleure chose à propos de mon travail est d'être créatif et de construire des choses à partir de zéro. Mais quand vous faites de la maintenance:

  1. Vous perdez beaucoup de temps à comprendre le code de quelqu'un d'autre, qui est souvent compliqué
  2. Vous n'utilisez pas votre créativité, mais vous modifiez simplement quelque chose qui existe déjà, et vous devez vous conformer à une structure déjà existante
  3. Plus important encore: le code déjà existant peut agir comme une couche opaque entre la technologie que vous essayez d'apprendre et vous . Le code appartenant à l'entreprise est souvent sans valeur en dehors de l'entreprise, tandis que les technologies et les frameworks généraux (par exemple apprendre Django) peuvent être très utiles et appréciés en dehors de l'entreprise, et aussi très intéressants
  4. Au fur et à mesure que la base de code se développe, le la complexité augmente et faire de petits changements devient très complexe, ce qui peut être démotivant

Les raisons 2 et 3 peuvent être des tueurs de motivation pour moi. La dernière chose que je veux entendre en tant que développeur junior, c'est que quelqu'un avec plus d'expérience que moi a créé quelque chose que je devrais utiliser parce que je ne suis pas assez habile pour créer quelque chose. Cette dernière raison peut être vraie ou fausse, mais ce que je veux faire, c'est apprendre. S'appuyer sur le code de quelqu'un d'autre, c'est comme si au lieu d'apprendre à conduire une voiture, quelqu'un crée une interface pour vous, ce qui à la fin (1) vous empêche d'apprendre à conduire la voiture, ce qui est intéressant et précieux, et (2) vous empêche de contrôler la voiture. Pour combien cela peut être difficile, la dernière chose que vous voulez entendre, c'est qu'on ne vous apprend pas à le faire vous-même.

J'ai peur qu'en tant que junior, je n'ai pas assez d'expérience pour vous donner une liste concrète de points d'action qui ont fait leurs preuves. Mais tout ce que je peux dire, c'est qu'un développeur (s'il est passionné) voit une entreprise comme une opportunité d'apprentissage, pas seulement comme une source d'argent. Ce que vous pouvez faire pour encourager un développeur qui travaille sur la maintenance, c'est lui permettre d'être créatif, par exemple en lui permettant de réécrire des parties de l'application en utilisant les nouvelles technologies et en y mettant sa créativité.



Ce Q&R a été automatiquement traduit de la langue anglaise.Le contenu original est disponible sur stackexchange, que nous remercions pour la licence cc by-sa 4.0 sous laquelle il est distribué.
Loading...