75 votes

Comment un bon développeur empêche-t-il de créer du code avec un facteur de perte de bus bas?

alt text

Regardez l'image ci-dessus. Cela pourrait être un programmeur va être frappé par un autobus. Selon Wikipedia, dans le développement de logiciels un logiciel du projet "bus facteur" (ou "bus a heurté le facteur") est

un irrévérencieux de la mesure de concentration de l'information dans un seule personne, ou très peu de gens. L' bus facteur est le nombre total de clés les développeurs qui serait le cas si l'incapacité, que par se faire frapper par un autobus, d'envoyer le projet dans un tel désarroi qu'il ne serait pas en mesure de procéder.

Se faire frapper par un autobus pourrait prendre de nombreuses différentes formes. Cela pourrait être une personne de prendre un nouvel emploi, d'avoir un bébé, changer leur mode de vie ou la vie le statut, l'impact aurait la même effet.

Ou en d'autres termes: si le développeur à l'origine d'un morceau de code est jamais touché par un bus, vous êtes foutus.

Donc, ma question est: Comment un bon développeur garder de créer un code avec une faible bus a heurté facteur?

Et, qui est responsable de s'assurer que les développeurs, chargés d'entretenir un peu de code, sont en mesure de le comprendre?

75voto

Jay Bazuzi Points 20462

La perte d'un membre clé de l'équipe qui arrive souvent, que ce soit temporairement ou de façon permanente. Si quelqu'un prend une longue pause déjeuner, ou de la grippe est en cours autour de l'office, ou un programmeur veut changer les rôles au sein de la même entreprise, ou un passe par un divorce douloureux, ou se ferme à la voile autour du monde, ou est malheureusement blessé, la perspective d'une soudaine et inattendue de changement dans l'équipe est inévitable.

L'un des attributs d'un bon développeur est qu'ils s'efforcent de réduire leur équipe "bus facteur" en faisant eux-mêmes de moins en moins indispensable. C'est difficile à faire lorsque vous avez un sentiment d'insécurité au sujet de votre travail. Un bon manager crée la sécurité des gens ont besoin de se détendre sur ce genre de chose.

Pratiques, à peu près dans l'ordre de priorité:

  1. Bien factorisé code signifie que votre intention est écrit dans le code, et élimine les secrets.

  2. Approfondie des Tests Unitaires servir à la fois comme une sorte de documentation et de filet de sécurité quand un secret titulaire n'est pas disponible. (Qui est, ils sont vérifiables de la documentation.)

  3. La programmation en binôme, en particulier de la Promiscuité de Couplage, sera la diffusion de la connaissance sur l'équipe de développement et expose les secrets.

  4. Expédition souvent signifie que même si quelque chose arrive, vos clients ont déjà un récent, produit de travail, et que vous avez une quantité connue de revenir en arrière si les choses se détraquer.

  5. La Documentation, à la fois dans les commentaires et d'ailleurs, les magasins des idées et des intentions qui ne peuvent pas être exprimées dans le code. Cependant, la documentation est coûteux à créer, cher à consommer, coûteux à entretenir, et souvent ignoré, alors que les autres éléments sont à privilégier.

18voto

Corin Blaikie Points 6223

Je dirais que le code a de bons tests unitaires . Pour le développeur remplaçant rejoignant le projet, il est important de savoir que leurs modifications ne vont pas à l'encontre d'autres composants du système.

14voto

ChrisW Points 37322

La partie la plus difficile de l'entretien de l'OMI n'est pas de savoir ce que le logiciel fait ou comment il le fait: c'est de savoir ce que le logiciel est censé faire.

Si je sais ...

  • Ce que le logiciel est censé le faire (c'est à dire la spécification fonctionnelle ... je n'ai pas forcément besoin de la spécification de la conception)

  • Comment construire, comment l'exécuter, et (à la suite de la spécification fonctionnelle) comment faire pour tester le logiciel existant

... alors que c'est la chose la plus importante. D'autres documents (par exemple, "design": qui décrit comment la spécification fonctionnelle est mise en œuvre par le logiciel) peut bien avoir de trop, mais il est relativement facultatif et moins important que le précédent.

La plupart des développeurs va répondre à votre question en disant: "les commentaires dans le code, le bien-nommé identifiants, contrôle de code source, etc." ... mais je pense que le plus important est "en tant que développeur, si vous êtes d'un logiciel d'écriture qui n'a pas écrit les spécifications fonctionnelles, puis d'écrire un peu de spécification fonctionnelle pour aller avec votre logiciel." Une étude de faisabilité sera utile, même avant que quelqu'un essaie de maintenir le logiciel: il sera utile de QA qui veulent savoir comment faire pour tester le logiciel.

Et, qui est responsable de s'assurer que les développeurs, chargés d'entretenir un peu de code, sont en mesure de le comprendre?

Généralement, c'est la nouvelle du développeur leader de l'équipe (c'est à dire le programmeur senior qui connaît déjà le code existant); mais à défaut (si ce n'est pas le leader de l'équipe), il pourrait être un manager (de produit ou chef de projet, ou de "la libération de l'ingénieur"), si c'manager sait où trouver le logiciel de spécifications fonctionnelles et de construire les instructions.

12voto

Garry Shutler Points 20898

Régulière par les pairs des revues de code de l'aide. Cela signifie qu'au moins une autre personne a avoir regardé sur chaque ligne de code et de demander qu'il soit modifié pour plus de clarté, si nécessaire.

Je ne cesse de lutter pour le code de la clarté sur la brièveté, ce qui devrait aider les futurs développeurs. Cependant, il ya des occasions où vous ne pouvez pas aider mais écrire du code qui est légèrement obtus. Dans ce cas, je recueillir de l'équipe pendant 30 minutes à courir à travers une idée de comment fonctionne le code, si ce n'est une explication complète.

Une suite de tests unitaires à l'aide également d'autres développeurs d'avoir confiance dans la modification de code car ils seront alors de savoir quand ils font un changement qui casse une partie du système. Si bien l'auteur, ils peuvent également expliquer comment les parties du système sont destinés à travailler par le biais de nommage, plutôt que simplement par le biais d'un code.

10voto

Matthew Ruston Points 2319

Alors que j'étais un étudiant à la programmation à mon Université, au cours de mon baccalauréat mon Bus a heurté le Facteur a dû être gérée de près. J'ai travaillé sur de grands projets encore mon emploi il y avait seulement jusqu'au jour où j'ai obtenu mon diplôme. À ce stade, d'autres programmeurs dans le département aurait pour ramasser mon projet et de le gérer à partir de là. J'ai géré ce avec des seaux de documentation.

Depuis le jour où j'ai commencé à cet emploi, j'ai fait de mon mieux pour garder mon cahier des charges, de code et d'autres documents à jour et propre que possible de sorte que toute compétente co-travailleur pourrait ramasser une solide compréhension de mon travail dans une affaire de jours (avec ou sans mon aide). Chaque projet de mine ont un correspondant de Confluence où je voudrais garder tous les documents, schémas, spécifications et peu de "friandises" pour les autres développeurs de savoir.

Il aide également si vous avez un bon nettoyage de style de codage. Si votre code a du sens et est facile sur les yeux, d'autres programmeurs devraient être en mesure de ramasser après votre malheureux accident de bus.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X