web-dev-qa-db-fra.com

Où dessinez-vous la ligne de votre perfectionnisme?

Le perfectionnisme peut être bon et mauvais lors de la programmation.

  • Quand et où dessinez-vous la ligne lorsque vous résolvez dans le problème?
  • Quand décidez-vous quand une solution est trop générale, trop générale ou simplement trop futuriste?

Veuillez commenter si la question n'est pas claire.

37
Amir Rezaei

EMBRASSE et YAGNI , surtout yagni.

Seul ingénieur une solution pour les choses que vous savez que vous allez avoir besoin bientôt. N'engagez pas l'ingénieur pour les choses qui pourraient être nécessaires dans deux ans, car probablement que vous aurez probablement besoin de choses très différentes et devront la réinganiser de toute façon.

Au moment où vous commencez à parler "avec cette conception à un moment donné à un moment donné, nous pourrions faire x, ou même y", au lieu de "Cette conception nous permet de faire des exigences clientes z dans la prochaine version", c'est-à-dire quand vous obtenez dans l'astronomie de l'architecture.

En réponse aux commentaires:

  • Kiss = le garder simple, stupide = prétendre que vous êtes un crétin et dois comprendre le design
  • Yagni = vous n'en aurez pas besoin = arrêter de prétendre que vous pouvez prédire l'avenir dans votre conception
40
Joeri Sebrechts

J'étais très perfectionniste (passer du temps à la création de cadres, pas de solutions).

Mais la chose qui m'a vraiment aidé à accélérer ma production était d'apprendre et de suivre les principes de BDD/TDD, y compris l'extérieur en principe (que j'ai trouvé particulièrement difficile à apprendre à adopter).

Cela m'a vraiment appris à ne pas écrire une seule ligne de code avant qu'un test n'existe pour cela. Mais les tests de l'unité n'existent pas non plus avant qu'un test d'acceptation n'existe pour cela. Et les tests d'acceptation proviennent des besoins réels des utilisateurs.

Donc, donc toutes les lignes de code proviennent d'un besoin réel.

Si vous n'êtes pas familier avec l'extérieur en principe, il dicte que vous commencez à écrire des tests pour la couche la plus externe de votre application (c'est-à-dire l'interface graphique dans pratiquement tous les cas) utilisant des tests doubles pour simuler le comportement des couches inférieures. Ensuite, vous implémentez juste assez pour que les tests passent. Cette implémentation de la couche supérieure dicte ensuite les tests que vous devez écrire pour la couche suivante, etc. jusqu'à ce que vous appuyez sur la couche inférieure de votre application.

6
Pete

Une solution est surchargée lorsque le temps supplémentaire pris pour la compléter vaut plus que l'impact négatif potentiel de lorsque la solution la plus facile est terminée lorsque celle-ci sera naturellement améliorée/modifiée.

Fondamentalement, vous négociez maintenant avec le temps avec le temps plus tard. Si vous dépensez plus de temps maintenant, vous économiserez plus tard, vous le faites mal. Si vous êtes vraiment sur l'ingénierie, vous passez du temps maintenant que cela n'affecte pas combien de temps (ou même fait il plus) que vous dépensez plus tard.

Vous vous améliorez de travailler cela plus d'expérience que vous avez. La meilleure façon de faire des choses (de mon expérience) est de faire ce dont vous avez besoin maintenant, mais d'une manière la plus facilement augmentée, les exigences ultérieures doivent la demander. Travailler comment faire c'est le bit tressant.

6
Dan McGrath

Je remarque que je suis meilleur à cela par expérience.

Quand j'étais (très) jeune, je suis toujours allé pour la solution la plus parfaite, pas de compromis. Maintenant, je suis mieux à garder des choses comme le budget et le temps à l'esprit.

5
Thomas Stock

La limite de temps dessine cette ligne assez claire.

4
Simon

Professionnellement et personnellement, la norme que j'essaie de s'appliquer à moi-même est la suivante:

Soyez du contenu avec gagnant.

Si mon code résout le problème, il est censé résoudre et ne créer aucun nouveau problème *, il est très probable de passer à autre chose. Lorsque vous apprenez à définir la barre aussi élevée que nécessaire, "assez bon" devient assez bon.

La perfection est comme la vitesse de la lumière: vous n'allez jamais y arriver, mais il n'y a pas de limite à l'énergie que vous pouvez dépenser en essayant.

(* - Notez que "Buggy" et "Difficile à maintenir" tombe fermement sous la rubrique "nouveaux problèmes". Je ne l'appelle donc pas terminé avant que le code ait été testé, si les bits superflus ont été coupés et avaient La documentation des commentaires/API a mis à jour.)

2
BlairHippo