Quand est-il OK de sacrifier la «netteté» de la conception pour réaliser un projet?

15

Lorsque vous travaillez sur un produit qui doit être fait rapidement et qui fonctionne bien, quand est-il acceptable de sacrifier la maintenabilité et la «propreté» du design afin de faire avancer les choses et de sortir rapidement? Et dans quelle mesure est-ce OK, surtout quand les techniques utilisées pour le rendre "soigné" sont nouvelles pour moi?

M. Jefferson
la source
3
Seulement quand c'est absolument nécessaire.
FrustratedWithFormsDesigner
1
C'est à peu près la norme où je travaille. "Vous pouvez payer mai maintenant, ou vous pouvez me payer plus tard" n'a jamais été aussi vrai.
MetalMikester
Sonne comme une échéance imminente ...
1
Je vais prendre le point de vue contraire et dire toujours . Si un projet n'est pas terminé, personne ne se soucie s'il est soigné.
drxzcl
1
@MrJ, je pensais en fait aux utilisateurs.
drxzcl

Réponses:

18

N'oubliez pas que vous êtes employé pour soutenir une entreprise. D'une certaine manière, votre logiciel affecte le résultat net de l'entreprise. Vous devez trouver un équilibre entre une solution techniquement parfaite, le temps de mise sur le marché de votre produit et les avantages que l'entreprise en retirera.

D'après mon expérience, les développeurs ont souvent tendance à se soucier de la perfection technique. Mais il y a des raisons très valables de sacrifier des attributs de qualité tels que la maintenabilité ou les performances afin de sortir un produit plus rapidement. Cela dépend de l'entreprise et du produit. Mais "toujours rechercher un design parfait" est une approche trop simpliste.

Au bout du compte, la seule chose qui compte, c'est la valeur pour l'entreprise. Découvrez comment l'optimiser à court et à long terme et visez cet objectif.

RationalGeek
la source
3
Je suis d'accord avec l'esprit de votre réponse, mais vous manquez quelques détails. You need to strike a balance between a technically perfect solution, and the time to market of your productJe ne suis pas d'accord, cela dépasse la responsabilité d'un développeur. Ils doivent absolument en être conscients, mais ils doivent communiquer les informations à une personne responsable pour prendre une décision commerciale.
StuperUser
2
Regardez Blizzard par exemple. Ils ont un énorme succès avec leurs jeux et ne se soucient pas vraiment du délai de commercialisation, car ils pensent qu'une qualité supérieure finira par porter ses fruits. Et c'est le cas, mais probablement pas pour toutes sortes de logiciels.
Falcon
1
Je suis absolument d'accord avec @StuperUser et @Peter Rowell. Souvent, il est de la responsabilité du développeur de communiquer les risques techniques, les problèmes de coupe, etc. aux personnes plus haut dans la chaîne alimentaire qui prennent la décision. Si tel est votre rôle, vous devez vous concentrer sur une communication aussi précise que possible. Cependant, plus vous comprenez ce qui motive la chaîne de valeur de l'entreprise, mieux vous obtiendrez cette communication.
RationalGeek
1
@Falcon Blizzard peut en effet sacrifier un gain à court terme en version anticipée pour un jeu à long terme dans un jeu solide, stable et agréable. C'est peut-être l'équilibre approprié pour eux. Mais ce n'est pas l'équilibre approprié dans tous les cas.
RationalGeek
4
La réalité est que la plupart des nouveaux logiciels vont échouer sur le marché, non pas en raison de problèmes de qualité, mais parce que les clients n'en veulent tout simplement pas. Ainsi, consacrer beaucoup de temps / d'efforts à la création d'une architecture solide et maniable dans la version 1 du produit peut ne pas être la meilleure utilisation des ressources. Les gens d'affaires qui poussent pour sortir quelque chose ne sont pas les idiots que beaucoup d'entre vous pensent être; mettre un produit entre les mains des clients pour déterminer la viabilité est une chose très intelligente à faire.
Kristopher Johnson
12

Le terme «dette technique» est très pratique pour éclairer de telles décisions commerciales. Tout travail que vous ne faites pas maintenant entraînera une certaine quantité de travail plus tard. Tout comme pour les finances, l'endettement est risqué mais peut valoir la peine d'être utilisé si vous allez pouvoir rembourser la dette plus tard.

Cela dit, la dette technique n'est pas un ratio de 1: 1 au moment du remboursement. Les bogues sont plus chers à corriger après la publication, et l'impact sur la productivité future lors du développement à partir d'un système hérité en désordre peut être scandaleux. Vous pourriez envisager de passer le double du temps à corriger vos erreurs, ou peut-être 1 000 fois plus d'heures de travail et de ressources.

Votre travail dans cette décision est de comprendre les ramifications des morceaux particuliers de coupe de coin que vous envisagez, puis de communiquer ces ramifications aux personnes qui prennent la décision commerciale. Cette compétence d'estimation particulière peut nécessiter beaucoup de recherches et de travail de votre part pour bien se développer en ce moment, mais elle sera précieuse au cours de votre carrière.

Ethel Evans
la source
1
+1. La dette technique est vraiment la façon la plus claire de décrire cela.
crazy2be
8

Quand il est accepté et que les conséquences sont comprises par le propriétaire / client / utilisateur.

Un plombier doit sortir une poubelle pour réparation. Je veux utiliser l'évier dans l'intervalle, mais il devrait me facturer le temps et les matériaux pour installer des tuyaux temporaires avec du ruban adhésif qui pourrait se casser. Cela va également retarder le retour à l'atelier de réparation. Si j'accepte la facturation supplémentaire en sachant que je risque un colmatage. Il faudra un jour de plus pour faire réparer les déchets et un délai encore plus long avant qu'il ne puisse les remettre, c'est acceptable.

Vous pouvez être à l'heure et au budget maintenant, mais sacrifier / risquer une charge encore plus élevée à long terme. Il peut être difficile de faire comprendre aux personnes non techniques, mais c'est à cela que servent les vendeurs.

JeffO
la source
5

Beaucoup de gens abandonnent rapidement pour apprendre quelque chose de nouveau et le font comme ils l'ont toujours fait. S'il s'agit d'un modèle, non seulement votre code souffrira, mais vos propres compétences en tant que programmeur resteront limitées.

Pourtant, à la fin de la journée, le seul logiciel réussi est celui qui est livré.

Jeremy
la source
"Pourtant, à la fin de la journée, le seul logiciel réussi est celui qui est livré." Jusqu'à ce qu'il tombe en panne et brûle quelques années plus tard, car il n'a pas été correctement architecturé. Myopie en action.
Wayne Molina
1
Si vous ne livrez jamais, vous ne le ferez jamais plusieurs années ...
Jeremy
Si vous ne pouvez pas expédier quelque chose qui ne vous gênera pas à long terme en raison d'une gestion à courte vue, vous ne méritez pas d'être en affaires en premier lieu!
Wayne Molina
3

Après le délai doux passé. Et même alors, c'est un très faible degré de "OK". Une fois la dure échéance dépassée, il est bien entendu inutile. Parce que c'est la nature des délais durs.

De plus, cela engendre une dette technique. Pour chaque heure / jour que vous passez dans la mentalité simplifiée, cela vous coûtera environ deux fois plus de temps lorsque vous devrez ensuite toucher à ce projet. Si vous le devez, il est préférable de vous précipiter, d'expédier et de commencer immédiatement à réparer toute votre bande de canard. Revenir à un projet hacked des années plus tard est un cauchemar. Si vous ne le toucherez plus jamais, qu'il en soit ainsi, personne ne s'en souciera. Mais la seule fois où j'ai laissé un projet pour toujours, c'est quand j'ai changé d'emploi.

Rappelez-vous cependant que le timing de ces choses est le travail du chef de projet. Si vous êtes pressé de respecter un délai, c'est la faute du PM. Faites-le bien, faites-le une fois et faites-le calmement et correctement. La vie est trop courte pour autre chose.

Philippe
la source
2

Toutes les autres réponses publiées ici sont bonnes. Je voudrais cependant ajouter qu'en tant que développeur du projet, vous êtes l'intendant (protecteur) de la conception.

Si vous ne défendez pas la bonne solution technique, personne d'autre ne vous le promettra. Vous devriez toujours plaider pour faire les choses de la bonne façon auprès de votre patron et le PM devrait toujours plaider en faveur de la date limite.

Si tout va bien si vous êtes dans une organisation raisonnable, un compromis sera atteint qui aidera à respecter les délais et à ne pas trop s'éloigner du design en même temps.

Cela étant dit, ne présumez pas que si la date limite du PM n'est pas atteinte, le monde se terminera et le projet échouera. Ce n'est généralement pas si noir et blanc et la plupart du temps le délai du PM est doux et peut être modifié.

Presque toutes les échéances auxquelles j'étais confronté sur un horaire PM étaient principalement artificielles. Ils vont le défendre bec et ongles et prétendre le contraire cependant parce que si le PM repousse la date limite alors le PM LOOKS BAD!

Ce n'est pas parce que le PM semble mauvais que le projet a échoué. Si vous comprenez cela, vous serez surpris de voir combien vous pouvez faire plier un PM.

maple_shaft
la source
1

Citez le client pour la conception soignée. Si cette citation leur est inacceptable, entrez dans la ventilation de ce que chaque composant coûtera (généralement == temps de développement). Laissez-les retirer les articles "à la carte" s'ils le souhaitent. Beaucoup sauteront au rasage pour des choses "inutiles" comme les tests et la conception. Expliquez les risques de cette approche, mais s'ils acceptent le risque, procédez comme indiqué. Si je n'ai que suffisamment d'argent pour une voiture clunker, alors je vais acheter une voiture clunker, même si je sais qu'elle va probablement tomber en panne dans 8 mois. Votre client a la responsabilité d'évaluer ces risques et d'en accepter les conséquences.

La seule chose que vous ne voulez pas faire est de dire au client de penser qu'il a un logiciel magnifiquement conçu, alors qu'il n'a payé (et reçu) qu'un morceau indésirable non testé. Si quelque chose ne va pas (ce qui arrivera probablement), dans le premier scénario, ils auront l'air mauvais, mais dans le second scénario, vous aurez l'air mauvais.

Morgan Herlocker
la source
1

Ce n'est jamais correct, mais il faut parfois faire des compromis pour terminer un projet. La triste réalité est que la plupart des hommes d'affaires sont complètement ignorants et sont plus que disposés à sacrifier la maintenabilité plus tard pour quelque chose en ce moment. L'astuce consiste à savoir comment trouver un équilibre; peut-être que le projet ne sera pas aussi soigné qu'il pourrait l'être, mais tant qu'il ne s'agit pas d'un porcherie, c'est un compromis valable.

Wayne Molina
la source
0

Cela dépend entièrement de la question "Est-ce que vous ou quelqu'un d'autre voudrez éventuellement le modifier plus tard?" Si oui, vous devriez essayer d'avoir un design "soigné", sinon vous risquez de devoir tout jeter et recommencer 6 mois plus tard.

Bien sûr, vous pouvez aller trop loin, mais généralement un peu de netteté vous fera économiser du travail plus tard.

Jo-Herman Haugholt
la source
4
Il n'y a pas de produit qui ne nécessite pas de maintenance, quoi que vous dise le client.
Edward Strange
@ crazy-eddie À peu près non. C'était censé être une question chargée; Je ne peux pas vraiment penser à de nombreux cas où vous répondriez «non» à cette question. Même un script quick'n'dirty destiné à une seule chose et à ne plus jamais être utilisé, pourrait éventuellement être édité et remis à neuf plus tard.
Jo-Herman Haugholt