web-dev-qa-db-fra.com

Est-ce normal / acceptable d'écrire des notes, des pensées, des algorithmes, des décisions lors du codage et de la maintenance?

Certaines personnes ont ce problème qu'ils ne peuvent pas penser sans mots. Et écrire leurs pensées et leurs décisions est le moyen le plus efficace de procéder.

Donc, est-ce normal et acceptable que j'écris mes pensées et décisions dans certains fichiers NotePad ++ pendant le codage?

Parfois, il devrait être acceptable, par exemple Lors de la recréation de la documentation technique ou du raisonnement sur des algorithmes plus complexes, mais parfois, cela peut être étrange, par ex. quand je envisage des options de conception et j'essaie de juger.

L'impact de cette pratique sur la productivité n'est pas clair. Du côté d'un côté - le raisonnement avec des mots intérieurs peut être plus rapide qu'avec les mots écrits. De l'autre côté - des problèmes plus complexes nécessitent une écriture. En outre, si l'on est coincé avec plus d'options de conception, le sentiment est préférable lorsque la décision est écrite, elle monte donc le moral.

22
TomR

Non seulement c'est normal, c'est une bonne idée.

Il y a une citation célèbre

"Donne-moi six heures pour couper un arbre et je vais passer les quatre premiers alléger la hache".

Prendre le temps d'organiser vos pensées et de planifier votre travail avant que le codage soit bien dépensé. Mettre ces pensées sur papier vous donnera le temps de réfléchir à vos projets, de les critiquer et de les organiser de manière très difficile si elle ne fait que "dans ta tête".

61
Dan Pichelman

Oui, c'est parfaitement acceptable et normal.

Documenter votre processus de prise de décision est souvent précieux lors de la révision du code, afin de déterminer pourquoi le code a été écrit d'une certaine manière.

Ces notes peuvent être incluses directement dans le code comme des commentaires, si suffisamment courts. Le commentaire étendu est souvent conservé dans le cadre d'un document de conception technique externe.

26
mcknz

C'est une foutue bonne idée. Jusqu'à ce que cela devienne un moyen de procraffer.

La clé est l'équilibre. Je trouve que je suis plus productif si je ne me cogne pas, mais je saisis des idées comme elles viennent.

Si je me recette à un niveau bas et qu'une idée de haut niveau vient je viens de la joindre et de revenir dessus plus tard.

Planifier le travail est une bonne idée, mais sauf si vous devez communiquer ou présenter devant un public, les meilleurs outils sont des stylo et des serviettes. Capturer l'idée. Ne perdez pas de temps à le rendre joli.

20
candied_orange

Dans toute situation professionnelle, il n'est pas seulement "normal et acceptable", c'est obligatoire. Le cycle de développement typique consiste en deux phases de documentation avant que tout codage ne commence même pas:

  1. Exigences fonctionnelles Document: Typiquement écrit par des analystes métier, spécifiant les fonctionnalités à mettre en œuvre.

  2. Document de conception de détail: qui est à peu près ce dont vous parlez, tout simplement plus formel, spécifiant la décomposition fonctionnelle (affacturage) du système, des algorithmes, etc. Certaines de mes (très) anciens sont en ligne, par exemple Ceci .

Pour une documentation moins formelle, I 110% d'accord avec les remarques précédentes concernant les commentaires en ligne. C'est le seulement chemin d'aller; D'une manière ou d'une autre, tout est finalement perdu. Mais des commentaires inlinités soignés et réfléchis sont une compétence de codage distincte, développée par effort et pratique comme toute autre compétence. Vous pouvez voir certaines de mes choses (très) anciennes, par ex. Ceci . Ce style peut ou peut ne pas vous appeler. Je recommanderais d'abord trouver un code bien commenté avec un style que vous aimez et que vous aimez cela dans votre propre code. Après un certain temps, adaptez-le comme vous le voyez.

9
John Forkosh

Un excellent endroit pour mettre ce genre d'informations est directement dans le message de validation de votre système de contrôle de version (SVN, GIT, etc.). De cette façon, vous pouvez voir les changements et le raisonnement pour eux au même endroit.

4
Derek

En plus des autres bonnes réponses, j'ajouterai que j'écris souvent mes pensées sur ce que j'essaie de faire.

Être très explicite quant à l'articulation de ce que j'essaye de faire aide à me réaliser des présomptions, des hypothèses et/ou des exigences qui ne tiennent pas nécessairement.

Cela suggère ensuite aux alternatives que je peux alors faire de la multitude à son tour; Cet écriture aidant à sauver ma place si je pense à autre chose.

Je prends des notes rapides pour explorer le souffle et la profondeur. Cela fonctionne donc de manière récursive, m'aidant à élaborer, à naviguer et à évaluer un arbre de solutions, sauvegarder, explorer, découvrir, réaliser et décider.

2
Erik Eidt

Écrire tout ce qui peut vous enregistrer/(nouveau) TeamMembériers temps est-il temps de dépenser du temps. Assurez-vous simplement que c'est quelque chose que quelqu'un pourrait avoir besoin plus tard et de ne pas trop penser à moins que ce soit un véritable projet à long terme.

Cela ne devrait pas non plus prendre de temps que ce soit. Si vous passez du temps à penser que vous pouvez écrire vos pensées de 1 à 1 (tant qu'ils le feront/peuvent être utiles à quelqu'un).

Le vrai problème pourrait être impérieux ce que vous écrivez. Juste parce que vous écrivez ne signifie pas que vous devez adhérer à un format déjà existant ou à utiliser tout le plan de la création d'une documentation complète.

Si votre choix est entre ne pas écrire quoi que ce soit et n'écrivez simplement à écrire des notes non formelles sur un bloc-notes, écrivez simplement des notes non formelles.

1
HopefullyHelpful

Les humains ne peuvent contenir que sept "choses" dans leur tête à la fois. C'est la raison des numéros de téléphone à sept chiffres. Pour que les programmeurs fonctionnent efficacement, ils doivent trouver une sorte de système pour décharger des choses de leur mémoire et la récupérer rapidement plus tard au besoin. Vos notes prises sont une voie évidente et directe, mais tout le monde travaille sur tout ce qui est modérément complexe doit le faire en quelque sorte. Lorsque vous associez un programme avec quelqu'un, faites un point pour rechercher leur méthode.

Un moyen courant est le développement axé sur le test. Dans cette méthodologie, vous écrivez un test d'échec, vous écrivez juste assez de code pour obtenir ce test de défaillance à passer, puis vous refactorez votre code pour le rendre plus agréable tout en conservant tous vos tests existants. Cette méthodologie conserve toutes vos "notes" codées à l'intérieur des tests. Les gens peuvent travailler très rapidement de cette façon sans sembler prendre des notes, car elles se concentrent simplement sur le prochain test.

Un autre moyen courant est de simplement écrire vos notes dans votre code sous forme de commentaires ou de talons pseudocode, puis substituez-la progressivement avec la vraie chose. Voici comment j'écris habituellement des algorithmes. Mon premier brouillon n'est qu'une fonction principale avec pseudocode, puis il se remplit progressivement dans des niveaux d'abstraction plus profonds et plus profonds.

Ne vous sentez pas mal à utiliser quelle que soit la méthode qui fonctionne pour vous, mais essayez de constater les méthodes que vos collègues "efficaces" utilisent. Ils ont les mêmes limitations humaines que vous faites.

1
Karl Bielefeldt