Lorsque je travaille sur du code, je suis confronté à bon nombre des mêmes problèmes que mes coéquipiers. J'ai également écrit des fonctions et des classes utiles. S'il y a une bonne communication, j'entendrai parler d'une bonne chose, mais six mois plus tard, quand j'en aurai besoin, je me souviendrai peut-être et j'appellerai cette fonction, ce qui me fera gagner du temps. Si je ne m'en souviens pas ou si je n'en ai jamais entendu parler, je réinventerai probablement la roue.
Existe-t-il une pratique particulière consistant à documenter ce genre de choses? Comment les rendez-vous faciles à trouver?
Si votre équipe ne dispose pas de cette documentation, comment savoir si votre roue existe déjà?
MODIFIER:
À ce jour, toutes les réponses sauf une concernent une situation idéale; laissez-moi donc résumer ces solutions: documentation et communication; wikis, réunions stand-up, etc. Ce sont toutes d'excellentes choses, mais elles reposent sur le fait que les programmeurs ont le temps (et les compétences) nécessaires pour rédiger la documentation, assister aux réunions, prendre des notes et tout mémoriser.
La réponse la plus populaire à ce jour (Caleb) est la seule qui puisse être utilisée par un programmeur incapable de documentation et de réunion et ne faisant qu'une chose: la programmation. La programmation est ce que fait un programmeur, et oui, un grand programmeur peut écrire de la documentation, des tests unitaires, etc., mais soyons honnêtes - la plupart d’entre nous préfèrent la programmation à la documentation. Sa solution en est une où le programmeur reconnaît le code réutilisable et l'extrait dans sa propre classe, son référentiel ou autre, et par le fait qu'il est isolé, il devient trouvable et facilite la courbe d'apprentissage pour l'utiliser ... . et cela a été accompli par la programmation.
D'une certaine manière, je le vois comme ceci: je viens d'écrire trois fonctions et il me semble que quelqu'un d'autre devrait les connaître. Je pourrais les documenter, les écrire, les annoncer lors d'une réunion, etc. - ce que je peux faire, mais ce n'est pas ma force - ou ... Je peux les extraire en classe, les nommer bien, les faire fonctionner comme une boîte noire, et collez-le là où les autres fichiers de classe vont. Ensuite, un bref courriel l’annonçant est facile. D'autres développeurs peuvent analyser le code et le comprendre mieux qu'une fonction isolée utilisée dans du code qu'ils ne comprennent pas complètement - ce contexte est supprimé.
J'aime cela parce que cela signifie que disposer d'un ensemble de fichiers de classe bien nommés, avec des méthodes bien nommées, est une bonne solution qui nécessite une bonne programmation. Il ne nécessite pas de réunion et réduit le besoin de documentation détaillée.
Y at-il d'autres idées dans ce sens ... pour les développeurs isolés et pressés par le temps?
la source
Réponses:
Bibliothèques Cadres. Contrôle de version.
Si vous avez du code réutilisable, la dernière chose que vous souhaitiez est que différents membres de l'équipe copient le code source dans leur projet. S'ils le font, il y a des chances qu'ils changent un peu ici et en modifient un peu, et bientôt vous avez des dizaines de fonctions ou méthodes qui portent toutes le même nom mais qui fonctionnent un peu différemment. Ou, peut-être plus probablement, l'auteur d'origine continuera à affiner le code pour corriger les bogues, le rendre plus efficace ou ajouter des fonctionnalités, mais le code copié ne sera jamais mis à jour. Le nom technique pour cela est un énorme bordel .
La bonne solution consiste à extraire ces éléments réutilisables de tout projet pour lequel vous les avez construits et à les placer dans une bibliothèque ou une structure dans son propre référentiel de contrôle de version. Cela facilite la recherche, mais décourage également les modifications sans prendre en compte tous les autres projets susceptibles de l’utiliser. Vous pouvez envisager d’avoir plusieurs bibliothèques différentes: une pour le code bien testé qui ne risque plus de changer, une pour les éléments qui semblent stables mais qui n’ont pas été testés et révisés en profondeur, une pour les ajouts proposés.
la source
Une approche consiste à créer un wiki à cette fin et à rédiger des documents de haut niveau sur les composants réutilisables que vous avez, comment vous avez résolu un problème, etc.
Le plus difficile est de faire en sorte que tous les membres de votre équipe maintiennent constamment ce wiki. Mais tout autre type de documentation souffre du même problème.
Une partie de votre code peut également être suffisante pour être placée dans une bibliothèque réutilisable. Cela facilite également la recherche du code ultérieurement.
la source
Etre dans une entreprise de 700 employés, au sein d'équipes de 2 à 20 personnes, voici mon expérience.
Au niveau de l'équipe
Nous organisons des "réunions debout" chaque jour pendant environ 15 à 20 minutes. Nous pouvons rapidement partager des connaissances communes telles que "j’ai fait cette fonction hier, ça cogne tellement fort".
Nous avons également un wiki par projet. Cela signifie que nous pouvons partager des informations (techniques) sur ce qui est fait dans le projet, y compris les classes / fonctions personnalisées intégrées.
Au niveau de l'agence
Au niveau des agences, nous disposons de 4 outils:
Au niveau de l'entreprise
Au niveau de l'entreprise, c'est plus organisé.
Le wiki "niveau agence" fait en réalité partie du wiki de l'entreprise.
Et le wiki est ensuite divisé en fonction des technologies. Ainsi, tout le monde peut l’améliorer, le parcourir et donner une vie fondamentale au wiki.
Il existe également des listes de diffusion disponibles auxquelles nous pouvons nous abonner. N'importe qui dans l'agence peut s'inscrire, et la plupart des gens suivent au moins une ou deux technologies. En réalité, la plupart des gens en suivent 5 à 10.
Et le VCS est bien sûr le meilleur système de partage de code.
Conclusion
En résumé, il n'y a pas de solution claire. Le partage des connaissances a toujours été un gros problème et le restera probablement. Il existe de nombreuses solutions pour créer des bases de connaissances , et l'une d'entre elles pourrait probablement convenir à votre facture. Cependant, certaines personnes essaient d’obtenir des connaissances encore meilleures, car les solutions actuelles ne sont pas toujours très intelligentes.
la source
Eh bien, tout se résume à la communication.
Les wiki sont géniaux et vous devez absolument en installer et en utiliser un. Un bon intranet de programmeurs internes est utile si les utilisateurs le lisent et le mettent à jour. Vous parlez donc d'un problème de personnel. Vous pouvez suggérer des réunions hebdomadaires "mises à jour d'équipe" où tout le monde se réunit et donne un aperçu du travail en cours. Les responsables techniques (au moins!) Devraient se réunir et discuter de ce que fait chaque équipe. Les séances informelles "Brown Bag" sont excellentes, planifiez-les à l'heure du déjeuner et faites parler les gens.
Vous avez également besoin d'un moyen de partager le code, de le conditionner, de le versionner et de le distribuer. Les choses seraient plus faciles si vous disposiez d'un référentiel de code source vraiment bien géré, organisé dans des dossiers "communs" et de projet.
Si rien de tel n’est fait, parlez-en à votre patron, expliquez-lui les avantages pour l’entreprise et suggérez un moyen de progresser :)
la source
Les sessions de révision de code peuvent aider. Si votre équipe se réunit régulièrement pour discuter de ce qui a été développé, la personne qui a proposé une solution peut montrer aux autres comment l'utiliser. Si quelqu'un soulève un point sur lequel il s'en tient, les autres membres de l'équipe pourraient proposer une approche qui augmente la réutilisation des composants existants.
la source
La meilleure façon de gérer de tels problèmes est d’avoir une structure de référentiel qui comporte quelques conventions simples afin que je sache, en tant que programmeur, s’il existe une fonction
doXYZ
, à peu près où je devrais chercher cette fonction. Que vous utilisiez des espaces de noms, des répertoires, des modules, des plugins, des packages, peu importe, votre code doit être modulaire pour que les fonctions faisant la même chose ou accédant aux mêmes sources de données se trouvent presque au même endroit.la source
Idéalement, il devrait y avoir au moins une personne autre que l'auteur qui effectue une révision du code à chaque enregistrement. Le processus de révision du code peut aider à atténuer le problème de nombreuses méthodes en double archivées. Bien sûr, vous êtes limité par les connaissances des réviseurs.
TL; DR: avis de code pour chaque enregistrement.
la source