Écrivez-vous un mauvais code sous pression? [fermé]

14

Lorsque vous êtes sous pression, la date limite approche et un responsable vous souffle dans le cou. Vous commencez-vous à écrire du mauvais code? Est-ce que le TDD et les meilleures pratiques passent à côté pour faire avancer les choses? Que faites-vous dans des situations comme ça? Quelles ont été vos expériences?

ysolik
la source
Permettez-moi de vous mettre au défi d'une manière importante: certaines des plus grandes et des meilleures innovations que j'ai imaginées sont le produit d'un besoin immédiat et urgent. Parfois, la chaleur de la bataille apporte une attention toute particulière que des jours et des jours de pontification et de savoir-faire n'inspirent pas.
user1172763

Réponses:

31

En un mot, oui. Quiconque vous dit le contraire se trompe probablement, au mieux.

Cependant, la clé est de s'appuyer sur votre expérience pour écrire du code moins mauvais. Résistez à la tentation de mettre quelque chose pour le faire "fonctionner" si possible, car ce ne sera pas le cas. Vous devez toujours suivre une sorte de processus (que ce soit le vôtre, celui de votre entreprise ou un mélange de ceux-ci).

L'expérience me dit qu'il vaut mieux ( haleter ) glisser le calendrier quelques jours pour éviter l'équivalent d'une semaine de corrections, surtout quand "sous pression" signifie une mise en production accélérée. Si vous vous dépêchez de publier du code, les testeurs seront probablement pressés de le tamponner également.

Wonko the Sane
la source
je donnerais plus 10 pour le poste, très bien dit
maz3tt
16

Si l'équipe est en crise, quelque chose a été mal fait.

Le non-respect des délais est un signe de mauvaise planification et d'estimation. Reconnaissez que la date limite ne sera pas respectée et résolvez le problème. Parfois, vous n'avez aucun contrôle sur la planification ou l' estimation. Identifiez qui le fait et assurez-vous qu'il sait que cela a été fait par erreur.

Dans une situation où le délai ne peut pas être déplacé, vous sortez les boissons hautement caféinées et vous vous précipitez dessus. Identifiez tout ce que vous pouvez sacrifier et découpez-le. Prenez ce qui reste et mettez-le en œuvre le plus rapidement possible. Cela entraînera des problèmes tels que l'instabilité, des erreurs impaires, des pratiques de codage inefficaces, des corrections de pansements et toutes sortes d'autres horreurs. Ce n'est pas nécessairement un mauvais code, mais ce n'est pas idéal .

Une bonne solution à 50% que les gens ont réellement résout plus de problèmes et survit plus longtemps qu'une solution à 99% que personne n'a parce que c'est dans votre laboratoire où vous polissez sans fin la fichue chose. L'expédition est une fonctionnalité .

De Joel sur le logiciel The Duct Tape Programmer .

Un code pas idéal peut être traité s'il est traité . Le code qui n'a pas été traité s'accumulera et rendra à son tour des modifications supplémentaires plus difficiles, voire impossibles. Il peut arriver au point où l'application est collée de manière si interdépendante que les ajouts ne peuvent être effectués que par les programmeurs les plus prudents à un coût exorbitant. Bien que l'expédition soit une fonctionnalité, elle est donc maintenable.

Josh K
la source
1
La seule chose que je changerais est le mot "vous" dans votre argument principal. Je dirais que pour chaque membre de votre équipe, il y a un facteur multiplicatif de choses qui pourraient mal tourner, et pour chaque dépendance extérieure, il y a un facteur exponentiel de choses qui pourraient mal tourner. Ou vice versa. ;)
Wonko the Sane
2
@ysolik: Voir la reformulation. Ce n'est peut-être pas de votre faute si la planification ou l'estimation a été FUBAR'ed.
Josh K
2
@ysolik: Vous écrivez moins que le code idéal pour respecter une date limite et priez pour avoir la chance de le corriger plus tard. Avec une bonne planification, cela n'arrivera jamais.
Josh K
2
Ne dites jamais jamais ... :)
Wonko the Sane
3
@Wonko: Correct, avec une bonne planification, cela se produit rarement .
Josh K
7

Je suis un grand fan de l'artisanat du logiciel - écrire du code propre du mieux que je peux, etc., mais parfois j'ai dû me précipiter dans des moments où le temps est court et où une échéance approche. J'essaie vraiment de ne pas faire ça du mieux que je peux, mais parfois on ne peut pas s'en éloigner.

Certaines personnes diront "Eh bien, c'est la vie, tu dois expédier" mais je suis vraiment en désaccord avec cette attitude.

Lorsque vous écrivez du code précipité, vous pouvez finir par obtenir le logiciel à temps, mais que se passe-t-il lorsque, au cours des prochains jours, vous recevez des appels d'assistance concernant des bogues dans le logiciel (ces bogues vivent dans la même pièce de code que vous vous êtes précipité pour terminer). Ou vous obtenez un client en colère qui vous appelle pour vous demander pourquoi son module de rapport ne fonctionne plus, même si vous avez promis que ce serait bien le jour de la sortie?

C'est très bien de dire "tu dois expédier" , mais il y a une différence entre avoir l'air efficace et ressembler à un travailleur bâclé.

Jason Evans
la source
5

Oui. Mais ça revient toujours me hanter plus tard.

Dima
la source
2

Lorsque je suis dans une situation de stress, mon code est destiné à faire le travail. C'est ça. Je ne me concentre pas sur l'efficacité et d'autres problèmes, ce qui est mauvais, à mon avis.

Je vais y travailler cependant.

ivorykoder
la source
Faites-le fonctionner, faites-le bien, faites-le rapidement :) c2.com/cgi/wiki?MakeItWorkMakeItRightMakeItFast
Juha Untinen
1

Je ne pense pas que j'écris personnellement du code bien pire, mais je livre un produit pire.

Face à un délai arbitraire et impossible, nous lésinons sur le processus de développement. Nous effectuons des révisions de code plus superficielles (ou les ignorons complètement). Nous testons moins, contournons les tests unitaires détaillés pour les tests d'intégration de type par vérification ponctuelle, puis essayons de compter le test d'intégration comme une qualification formelle. Nous avons tendance à ignorer les anomalies lors des tests si elles ne sont pas directement liées aux critères de réussite / d'échec. Nous ignorons les mises à jour de la documentation, ne vérifions pas les notes de publication, oublions de parcourir la liste des livrables pour les fichiers qui ne sont plus nécessaires.

Le code source que vous écrivez lors d'une crise peut être de haute qualité, mais il sera presque certainement expédié dans le cadre d'un produit de mauvaise qualité.

AShelly
la source
0

Dépend.

Est-ce la pression parce qu'il n'y a aucun moyen de tout faire et parce que de nouvelles fonctionnalités majeures sont ajoutées des heures avant la sortie?

Mauvais code à venir!

Mais si c'est parce que le calendrier est vraiment très serré mais le plan global est solide et je dois juste travailler beaucoup plus dur que d'habitude et rester concentré en continu tout en peaufinant quelques fonctionnalités entendre et là ... Ensuite, je produis un code bien meilleur que si le calendrier permet des tonnes de temps. Même si cela signifie que je ne reçois pas tous les tests unitaires écrits mais couvre les principales parties du code.

ElGringoGrande
la source
Oooh - bon commentaire, sauf que la toute dernière phrase me fait un peu peur.
Wonko the Sane
Bien. Cela ne signifie pas qu'ils ne seront jamais écrits. C'est effrayant mais je pense que cela m'aide à rester concentré. Et il y a un test unitaire, mais pas une couverture à 100%. Plus comme 66%.
ElGringoGrande
Le seul problème est que les 34% qui ne sont pas couverts sont le nouveau code que vous avez mis en hâte, et non le code déjà établi qui n'est pas aussi susceptible de (tous) rompre avec vos modifications. Pour ne pas dire que nous ne l'avons pas tous fait, juste que c'est une proposition effrayante.
Wonko the Sane
0

Je connais quelqu'un qui n'écrit jamais de mauvais code sous pression. Il a également des haricots magiques qui pourraient vous intéresser.

Tout le monde écrit parfois du mauvais code et les échéances imminentes sont la raison habituelle, l'astuce consiste à éviter d'entrer dans cette situation en premier lieu (et ce n'est pas facile non plus).

FinnNk
la source