Les développeurs de logiciels qui ignorent la qualité / les normes sont-ils meilleurs pour l'entreprise? [fermé]


10

Les développeurs de logiciels qui choisissent de ne pas faire de l'optimisation du code, des normes et des meilleures pratiques une priorité absolue, créent-ils un code plus utile que les développeurs qui souhaitent se soucier de l'optimisation, de la mise en œuvre des normes et des pratiques de codage au-dessus de l'exécution des tâches à temps?

Comment ces différentes méthodologies se comparent-elles en ce qui concerne les évaluations de performances individuelles?

Comment ces styles se comparent-ils dans les évaluations par les pairs?

Quelle est la meilleure façon d'influencer votre équipe pour implémenter davantage de meilleures pratiques pendant le SDLC?


2
@Haylem - Je pense que la modification originale que j'ai faite était meilleure. Si le titre est le même que la première phrase, à quoi sert le titre?
BlackJack

1
@BlackJack J'ai ramené votre titre et affiné la question un peu plus. Je pense que nous avons tous les trois été rattrapés en écrasant le même message dans l'historique des modifications. Ça devrait être bon maintenant.
Thomas Owens

4
SE n'est pas un lieu de délire sur votre patron. Nous avons tous des patrons et la plupart d'entre nous ont quelqu'un dans la chaîne de commandement qui, à leur avis, n'appartient pas à eux (pas moi, je pense qu'ils sont géniaux / superbes). Déclamer à leur sujet ici ne sert à rien.
SoylentGray

1
@Chad: Bien que je sois d'accord avec tout ce que vous avez dit, je ne suis pas tout à fait sûr que l'OP voulait se plaindre de son patron (directement).
haylem

2
@Chad: J'ai lu cela, et bien que je puisse comprendre votre réaction, Jitendra ne dit pas que tout ce qu'il a fait était de corriger le code des gens. Mais je suis d'accord avec votre argumentation - et d'autres réponses - selon laquelle la fourniture de fonctionnalités en premier pourrait être plus importante qu'un produit inachevé avec une qualité parfaite. Personne n'aura à entretenir un produit qui ne verra jamais la lumière car il a été tué tôt ou a échoué mort-né.
haylem

Réponses:


32

Non, ils ne seront respectés que par le propriétaire du projet du moment.

Ils seront saccagés pendant des années par:

  • futurs mainteneurs,
  • futurs testeurs,
  • futurs maîtres d'ouvrage,
  • futurs managers,
  • et à peu près toute personne impliquée dans la base de code à l'avenir.

Ils pourraient même recevoir le même traitement de:

  • les testeurs actuels,
  • les rédacteurs actuels de la documentation technique.

@Ivan: Merci. La réflexion à long terme l'emporte toujours.
haylem

@haylem - Je suis d'accord avec vous parce que les gens changent rapidement de poste. donc un meilleur code sera utile pour les nouveaux membres pour comprendre le code rapidement
Jitendra Vyas

C'est vrai, mais à cause de leur performance, ils seront longtemps élevés loin de ces péons qui vivent la douleur qui leur reste. Triste mais vrai!
Anon

6

Fausse dichotomie: les qualités sont orthogonales.

                Haute qualité Basse qualité

Rentable IMPRESSIONNANT Sketchy

Iffy FIRE FIRST non rentable

5
Iffy est-il meilleur ou pire que Sketchy?
HLGEM

1
@HLGEM: rentable vaut toujours mieux que non rentable.
Donal Fellows

qui ignore les coûts futurs créés par la qualité sommaire
Rudolf Olah

1
Assigner la rentabilité uniquement au dos du développeur est une simplification excessive. Qu'en est-il de la gestion des produits, de l'infrastructure de déploiement? N'ont-ils pas aussi un rôle à jouer dans la rentabilité?
DavidS

5

Non. Les meilleures pratiques sont les meilleures parce que, par définition , elles aident à réaliser les projets plus correctement, en moins de temps, avec une modification plus rapide en cours de route, donc les ignorer est garanti pour diminuer les bénéfices. Bien sûr, vos gestionnaires peuvent prescrire des pratiques qu'ils pensent être les meilleures, mais qui ne le sont pas réellement, ou ils peuvent mal évaluer ce que les clients paieront et ce qui ne le sera pas - alors tous les paris sont annulés.

Les normes de codage sont plus délicates; il est possible de prescrire trop de détails à vos codeurs, ce qui entraîne une baisse d'efficacité. Mais avec l'expérience, il devient assez facile de dire des lignes directrices utiles de la microgestion anale-rétentive, donc la même chose s'applique: les meilleures pratiques réelles valent toujours la peine, les pseudo-meilleures pratiques généralement pas.

L'optimisation de code ne vaut généralement pas la peine d'être effectuée à moins que vous n'ayez mesuré vos goulots d'étranglement, confirmé que la réalisation d'une optimisation est nécessaire et mesuré que votre astuce astucieuse répond réellement à l'exigence de performance. Sinon (ce qui est le plus souvent), cela ne vaut pas la peine, et donc pas optimal.


6
Les meilleures pratiques ne permettent pas de réaliser correctement tous les projets en moins de temps. Ce sont simplement des choses qui ont été observées pour bien fonctionner sur la plupart des projets la plupart du temps.
Thomas Owens

2
L'adhésion aveugle aux «meilleures pratiques» ou à la meilleure façon déclarée de faire de quelqu'un d'autre est au processus de développement ce qu'est le codage culte du fret au processus de codage. Vous devez être capable de comprendre ce que signifie une pratique, si c'est vraiment la meilleure chose dans votre situation et sinon, ce qui devrait la remplacer.
Blrfl

5

Suis-je d'accord avec les développeurs qui ne se soucient pas de l'optimisation du code et des pratiques? Non.

Font-ils le travail dont ils ont besoin? Oui.

Une entreprise consiste à gagner de l'argent, et la seule façon de gagner de l'argent est de lancer des produits. Cela signifie généralement que les projets ont des calendriers stricts, ce qui signifie que ce qui peut être la meilleure façon de faire quelque chose n'est peut-être pas le moyen le plus rapide de faire quelque chose.

Bien que je ne sois pas d'accord avec ce style de développement, l'entreprise peut être considérée comme respectable si des produits sont lancés.


Je me souciais beaucoup de l'optimisation du code dans mon dernier travail, mais mes collègues développeurs ne s'en souciaient pas, mais ils ont fait plus de projets que moi et quand j'ai parlé au chef de projet, il a dit que le client voulait le projet à temps et qu'il ne voyait jamais comment le code était écrit
Jitendra Vyas

1
@Jitendra - Si vous passez toute la journée à optimiser des choses qui ont déjà été écrites et que vous ne retirez aucune nouvelle fonctionnalité, je ne serais pas content non plus. À moins que l'optimisation ne vous apporte quelque chose en plus d'être moins de lignes et de caractères dans le code source, vous n'accomplissez rien.
SoylentGray

3
@Jitendra - Je n'ai pas dit que ce n'était pas le cas. Et écrire votre code de manière lisible est super. Il ne s'agit pas de contourner le code des autres personnes lorsque vous avez vos propres tâches.
SoylentGray

1
@Chad - Il ne s'agit pas de réécrire mon propre code ou de corriger le code des autres, il est sur le point d'écrire le code dès la première fois avec une indentation appropriée pour une bonne lisibilité, des commentaires appropriés pour le futur développeur et l'utilisation des meilleures pratiques qui rendent le code réutilisable et tout cela prend du temps, puis d'écrire le code du mess que seul le développeur d'origine peut comprendre. Un bon code prend toujours du temps.
Jitendra Vyas

4
@Ivan: J'ai eu une expérience directe avec cette mentalité. Ça va comme ça. L'entreprise démarre un projet entièrement nouveau. Hotshot Developer X rassemble les éléments le plus rapidement possible, en utilisant de grandes quantités de ctrl + cet ctrl + v. Le produit se lance en très peu de temps. La société est ravie de Developer X. Les rapports de bogues et les demandes de fonctionnalités arrivent. Developer X ne peut pas suivre et est renvoyé / passe à la tâche suivante. Les 3 prochaines années de développement sont une porte tournante de nouvelles équipes d'ingénieurs qui ne peuvent faire aucun progrès, et la société X perd tous les avantages du marché qu'elle avait autrefois.
Greg Burghardt

4

Non, et je trouverais le chemin le plus rapide loin de cette entreprise qui apprécie ces vices.


2
+1 pour être court, précis et correct. Une entreprise qui ne se soucie pas des normes de qualité est soit stupide, ignorante ou une arnaque.
Wayne Molina

3

Oui et non, ce qui est un peu délicat mais c'est une meilleure pratique et pas une pratique parfaite. Idéalement, vous devez les suivre en permanence, mais il y aura toujours une situation où l'entreprise veut mettre ses besoins avant les besoins de vos produits.

Vous serez détesté par les responsables mais aimé par votre patron.


3

Les meilleures pratiques sont un peu comme le bon sens, tout le monde convient que tout le monde devrait le savoir jusqu'à ce que deux personnes commencent à en discuter en détail. Il n'y a pas deux personnes complètement d'accord sur la définition et il n'y a pas de source logique de vérité qui s'applique à toutes les situations.

Ecrivez-vous le système de guidage d'un satellite spatial (vous ne l'êtes probablement pas)? Alors l'enfer Aucun code de mauvaise qualité / performant n'est jamais acceptable dans ce genre de travail.

Êtes-vous en train d'écrire un site Web jetable pour une poussée marketing unique (vous ne le faites probablement pas non plus ou vous n'auriez pas posé la question, mais c'est plus probable que le satellite)? Alors enfer Oui, faites sortir ce morceau de papier par tous les moyens nécessaires pour respecter le délai, le prochain directeur marketing va probablement faire autre chose avec une autre entreprise de toute façon. CE QUE VOUS FAITES N'EST PAS DE L'ART OU DES SCIENCES - PAYEZ.

Tout le reste entre les deux: négociable, surtout tant que le développeur est accroché au support initial.

Jusqu'à ce que la seconde venue de l'être sacré que vous préférez se produise et qu'il / elle définisse les pratiques de développement de manière miraculeuse, il y aura une place importante pour le débat sur tout projet non directement responsable des décisions de vie ou de mort qui ne l'est pas. si insignifiant pour être jetable.

Tout ce qui est en dehors des meilleures pratiques labellisées vitales est généralement plus comme la politique de l'entreprise, les spécifications du client ou l'opinion personnelle. Beaucoup d'entre eux sont une opinion personnelle sur laquelle de nombreuses personnes s'entendent actuellement, mais cela ne fait pas d'elle un guide immuable pour toutes les situations.


2

Combien d'argent ils gagnent pour l'entreprise est discutable. S'il y a un niveau de révision du code en question, les coûts de maintenance augmenteront et quelqu'un ne sera pas content. Les coûts élevés de maintenance à long terme sont plus chers que de le faire correctement à l'avance.

Le degré de respect qu'ils obtiennent est probablement propre à chaque cas. À un certain moment, cependant, quelqu'un le remarquera.


2

Ne pas se soucier de ces choses peut faire gagner plus d'argent à court terme à l'entreprise, mais pourrait lui coûter plus d'argent à long terme pour plus de corrections de bogues et de codage de maintenance.

Parfois, un travail rapide et sale peut être nécessaire s'il y a une ruée vers des entreprises concurrentes pour obtenir des produits similaires sur le marché en même temps, mais les coûts futurs de telles actions doivent être soigneusement examinés.


2

Tout dépend du client.

Un client qui aime rapide et sale (et généralement moins cher) ne se soucie pas que cela posera des problèmes à l'avenir.

Pensez à la construction d'armoires.

Certains paieront et apprécieront des armoires construites sur mesure de bonne qualité. Ils ne se soucient pas des frais supplémentaires des tiroirs en bois dur et de la quincaillerie de premier ordre. Cela ne les dérange pas, cela prendra une semaine ou même un mois supplémentaire pour construire et installer les choses.

Beaucoup ne le feront pas. Beaucoup opteront pour les produits de masse en panneaux de particules bon marché que vous obtenez dans un magasin à grande surface. Ils veulent qu'ils soient installés en 2 jours. Un petit écart ici et là est parfaitement acceptable. Ils ne se soucient pas qu'ils s'effondreront dans 10 ans.

Donc, si vos gestionnaires font l'éloge du développeur qui le fait rapidement et sale, soit vos clients ne veulent pas de haute qualité, soit les gestionnaires mentent aux clients.

Seul le temps nous le dira. Faites ce que les managers veulent ou trouvez un autre emploi.


1
bien sûr, les logiciels peuvent être accompagnés, donc les deux peuvent être une option. c'est-à-dire que nous serons les premiers à commercialiser la v1 malgré un problème connu, mais l'argent que nous gagnons sous cette forme nous permettra de résoudre les problèmes à l'avenir, etc.
jk.

1

Non jamais. Optimisation du code de l' OMI, les meilleures pratiques, véritable savoir -faire sont la PLUPART chose importante à avoir dans une base de code; sans elle, le tout se transforme en boue et est maintenu avec du ruban adhésif. C'est une conception non durable. C'est comme ignorer une tumeur parce qu'elle est petite et que vous êtes en bonne santé maintenant; vous êtes en bonne santé maintenant mais quelques années plus tard, il devient terminal parce que vous l'avez ignoré pendant si longtemps.

Non seulement je ne suis pas d' accord avec les développeurs qui ne se soucient pas de ces choses, mais je n'ai aucun respect pour eux au démarrage. Un moyen infaillible de me faire envisager de quitter une organisation, peu importe la durée de mon séjour, est d'être entouré d'une équipe dans laquelle je suis la seule personne (sinon la seule personne dans toute l'entreprise) qui se soucie sur les concepts de génie logiciel appropriés.


1

Une bonne lecture: http://www.joelonsoftware.com/items/2009/09/23.html

Mais à mon humble avis, les meilleures pratiques d'un homme sont un autre cauchemar pour l'homme. Et chaque base de code non triviale sera un cauchemar pour un étranger.

Quoi que vous en pensiez, ne vous en faites pas.

EDIT: Je ne défends aucune des positions, selon la tâche que je pourrais me pencher de chaque côté.


Dépend de la «meilleure pratique» de l'OMI. Des choses comme avoir des tests (pas nécessairement TDD mais des tests automatisés en général), suivre les SOLIDprincipes, utiliser des modèles de conception, utiliser des abstractions / interfaces sont des bases que tout développeur compétent devrait faire.
Wayne Molina

Autant que j'aime les tests ... ils ne sont pas de base.
CaffGeek

1

Mieux pour l'entreprise? Ça dépend.

Pour une startup avec des fonds limités, faites-le et sortez-le - peu importe si c'est désordonné, cela peut être corrigé plus tard quand il y a plus de ressources.

Pour un produit mature où de nombreux utilisateurs comptent sur la qualité du logiciel, tout doit être fait "correctement".

Mieux pour le développeur individuel? En fait, ce n'est pas pertinent. Faites simplement la même chose que ce que font vos collègues et laissez la direction gérer les retombées - ce n'est pas votre travail. Si vous réparez la merde des autres tout le temps, vous serez considéré comme lent, et vous serez celui qui est toujours là tandis que les autres ont été promus au-dessus de vous. Obtenez avec le programme, ou sortez pendant que vous le pouvez si c'est si mauvais.


"peu importe si c'est désordonné, cela peut être corrigé plus tard quand il y a plus de ressources." En théorie, bien sûr. Dans la pratique, cela ne se produit jamais, car une fois que vous avez poussé quelque chose, vous êtes bloqué en le maintenant et en ajoutant de nouvelles choses, vous n'avez donc jamais les ressources pour revenir en arrière et le réparer.
Wayne Molina

Je ne suis pas d'accord. Cela s'est certainement produit sur de nombreux projets Web de petite et moyenne envergure dans lesquels j'ai participé, et il existe également de nombreux exemples plus connus de sociétés qui reviennent en arrière et refactorisent leur base de code de manière majeure - par exemple, Twitter passe de Ruby à Scala, Facebook et leur quête de optimiser le langage PHP, etc. En fait, je suis presque sûr que la plupart des applications matures réussies (Web et bureau) que nous utilisons tous les jours n'ont pas beaucoup de code en commun avec leurs ancêtres v1.
timh

Peut-être, mais en six ans de développement d'entreprise, j'ai trouvé exactement une entreprise qui a pu refactoriser le code au fil du temps; Everyplace else n'a jamais eu de ressources à consacrer à «réparer ce qui n'est pas cassé» même lorsque le code est ingérable.
Wayne Molina

0

Dépend du développeur et du projet / situation.

Des temps extraordinaires nécessitent des mesures extraordinaires.

Donc, si j'ai besoin de quelque chose maintenant, et que quelqu'un est en train de sur-concevoir une application java de niveau entreprise qui exploite pas moins de 14 des derniers cadres de mots à la mode tandis qu'un simple script python fera le travail est aussi pire que le développeur qui coupe les coins et pense le code buggy fera l'affaire en temps normal.

Être développeur est en partie flexible. Vous ne devez pas être esclave de vos outils et suivre aveuglément les pratiques - il y aura toujours un cas où ils vous feront défaut. Savoir quand briser et plier les règles est l'une des choses qui viennent avec beaucoup d'expérience et qui sont précieuses.

Dans votre cas - s'il fournit plus de valeur que vous parce que la vitesse est critique, même après avoir pris en compte l'augmentation des coûts de maintenance, il mérite la meilleure compensation. De l'autre côté - si vous êtes coincé avec le nettoyage de son gâchis - vous avez un problème de communication avec la direction.

C'est au cas par cas. Sauf le style de codage - il n'y a aucune excuse.


0

Je suis désolé, mais je serais en désaccord avec la plupart des réponses à cette question, à l'exception de la première.

La principale valeur d'un logiciel est qu'il est flexible.

Je ne pense pas que vous devriez réécrire le code des autres sans juste motif. Si vous devez changer un module pour une raison quelconque pour implémenter votre fonctionnalité, vous êtes maintenant, pour le meilleur ou pour le pire, le propriétaire de ce module. Changez-le, réécrivez une partie, réécrivez tout.

Ne produisez jamais une qualité médiocre en termes de flexibilité. Il n'y a rien de tel que de jeter quoi que ce soit dans un logiciel. Si le client dit que c'est temporaire et qu'il n'en aura plus besoin après une certaine date, et qu'il ne se soucie pas de la qualité, dites "mauvais" ou écrivez que le code ne sera pas modifié par vous ou par un autre programmeur une fois il est déployé en production, ou vous avez le droit de les poursuivre.

L'hypothèse la plus mauvaise que je vois dans certaines de ces réponses est qu'un code propre réduit en quelque sorte la vitesse de développement. Pour tout projet de n'importe quelle substance (plus de 6 heures de travail), un code propre accélère le développement à long terme (plus d'une semaine). Je l'ai vu maintes et maintes fois.

Un code de mauvaise qualité est tout simplement irrespectueux envers la profession et vos collègues. Désolé mais vrai.

Donc pas de mauvaise qualité, en termes de flexibilité, jamais!


1
Ne jamais dire jamais. Des applications entières sont jetées à la poubelle. Les conversions de données d'un système à un autre sont utilisées une fois et pourrissent.
JeffO

Garder le code propre réduit souvent la vitesse de développement un peu à court terme . La partie importante est que le code impur entraîne une réduction beaucoup plus importante à long terme. Je vois quelques autres réponses qui mentionnent cela.
Ixrec
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.