Devez-vous écrire une bonne documentation et du code propre pour augmenter le «facteur de bus»?

48

L’un des principaux objectifs des sociétés de développement de logiciels est d’augmenter leur facteur Bus. C’est également ce que préconise un exposé organisé par Google .

Cela signifie que vous devez tout coder et documenter de manière à ce que le projet puisse continuer si vous êtes dépassé demain par un autobus. En d'autres termes, vous devez vous rendre facilement remplaçable par un autre programmeur possédant les mêmes compétences que le vôtre.

Être remplaçable, n'est-ce pas contre l'intérêt d'un développeur? Dans le livre, 48 lois du pouvoir, la Règle 11 stipule que vous devez essayer de garder les gens dépendants de vous afin d’obtenir le pouvoir, ce qui se traduit ensuite par des récompenses monétaires.

En dehors du scénario où vous avez besoin de documentation pour pouvoir poursuivre un projet après 6 mois de pause, il semble exister un conflit d'intérêts évident entre le développeur et l'éditeur de logiciel.

Donc, en tant que programmeur, devriez-vous vraiment écrire une excellente documentation et un code facilement lisible pour tout le monde; ou devriez-vous écrire le code et la documentation de manière à ce que le travail soit fait et que vous puissiez le comprendre vous-même, mais qu'une autre personne puisse avoir du mal à le comprendre?

siamii
la source
41
Le livre de Greene convient aux despotes et aux laquais recherchant la faveur des fiefs. Pas une bonne philosophie morale pour le travail d'équipe. Pour dire le moins! [Notez que wikipedia classe ce livre sous la rubrique "sociopathie"]
Steven A. Lowe
27
Je ne
t'engagerais
37
Les cimetières sont remplis de personnes irremplaçables.
Job
20
Vous ne voulez jamais être irremplaçable - comment obtenez-vous une promotion si vous ne pouvez pas être remplacé? À moins que vous ne soyez heureux où vous êtes, pour toujours, le «facteur de bus» est toujours important.
Dave
11
"Le livre partage des éléments thématiques avec The Prince de Niccolò Machiavelli et a été comparé au traité classique de Sun-Tzu, The Art of War." Je ne pense pas que je veuille travailler avec des personnes qui voient leur lieu de travail comme la politique italienne du XVIe siècle ou ... une ancienne guerre chinoise.
Cascabel

Réponses:

110

Vous devez vous efforcer de devenir irremplaçable non pas en écrivant du code, mais en rassemblant plus d'expérience et de connaissances que les autres. L’ancienne méthode fait de vous un développeur que tout le monde essaie d’éviter de travailler avec, car ils craignent et répugnent à maintenir le code que vous avez écrit. De cette manière, vous devenez un membre recherché de l’équipe, que les responsables veulent intégrer à leur équipe.

Dans mon expérience, écrire du code propre, bien documenté (et de préférence auto-documenté) a toujours porté ses fruits. En fait, je saisissais presque toutes les occasions d'aider et d'enseigner aux autres (ainsi que d'apprendre d'eux quand ils savaient quelque chose de mieux) et je ne me sentais presque jamais en danger de me faire remplacer par quelqu'un de moins capable que moi. En fait, cela a généralement aidé toute l’équipe à mieux travailler et à résoudre les problèmes plus rapidement, ce qui est le rêve de tout responsable. Un responsable avisé ne veut pas remplacer les membres d’une bonne équipe.

Péter Török
la source
1
Il est intéressant de noter que cette question a été évoquée tout à l'heure, car il y a quelques jours à peine, on m'a dit à quel point quelques diagrammes de l'un des projets sur lesquels je travaille actuellement ont été précieux, à des personnes qui ne le feront probablement jamais. touchez le code. Cela, et bien sûr, me fournissant une vue de haut niveau des différents modules et de leur interaction. Cette vue d’ensemble n’est peut-être pas particulièrement utile en ce moment, mais j’aurai certainement de l’aide lorsque je revisiterai le code dans un an ...
un CVn
2
Quelques personnes qui ont écrit du code (mauvais, obscurci) qui les rendaient "irremplaçables" à mon travail ne fonctionnent plus ici. Les meilleurs programmeurs voyaient leur travail lors de la révision du code ou de la correction de choses pendant leurs vacances. Vu la "qualité" de leur travail, ils se sont mis en conserve.
CaffGeek
44

Si vous manipulez des organisations ou des personnes d'une manière si transparente, il vaut mieux être stupide ou dans un embouteillage qui ne leur laisse pas d'autre choix. Un atelier de développement logiciel bien géré examinerait votre code obscur et la documentation manquante et vous licencierait simplement avant que vous ne fassiez beaucoup de dégâts. S'ils sont mal gérés, ou incapables de faire travailler d'autres développeurs, pourquoi voudriez-vous avoir une sinécure avec eux?

PS Ni M. Greene ni M. Machiavel n’ont accompli grand-chose en dehors de l’écriture de livres qui essayaient de flatter les "hommes durs" de l’époque. Suivez leurs conseils avec un grain de sel.

Charles E. Grant
la source
42

Si vous êtes irremplaçable, vous ne pouvez pas être promu.

James McLeod
la source
14
Pire, à certains endroits, si vous montrez que vous pouvez prendre le code qui ne fonctionne pas et le faire fonctionner, vous ne serez plus jamais autorisé à travailler sur votre propre code, car il sera perçu comme moins coûteux de laisser les autres gars Dénudez un énorme tas de vapeur, puis laissez-vous nettoyer et polir ledit énorme tas de vapeur.
John R. Strohm
meilleure argumentation de tous les temps sur le sujet
ZJR
2
Réponse classique en effet.
Sarawut Positwinyu,
@ JohnR.Strohm Mec !!!! Je suis passé par là et ça fait tellement mal. En étant un ingénieur plus prudent, je prendrais un peu plus de temps sur une tâche. Le responsable a donc commencé à laisser les autres personnes écrire rapidement du code minable et à ce que je le nettoie dans une révision du code. Je me sentais absolument mal utilisé parce que ce rôle était devenu ma pertinence pour l'équipe même si ce n'était pas ce que je voulais. Inutile de dire que j'ai quitté l'équipe peu après l'avoir réalisé.
davidXYZ
17

Vous ne voulez pas être irremplaçable. Vous ne voulez pas que les gens se sentent dépendants de vous, vous voulez qu'ils vous apprécient. En règle générale, vous voulez rester loin des gens, qui croient que même la moitié des lois du pouvoir devrait être appliquée aux relations (professionnelles ou personnelles).
Ces règles sont un ensemble d’instructions sur la manière d’établir avec succès une situation gagnant-perdant. Ce que vous voulez, c'est une situation gagnant-gagnant .
Dès que les gens commencent à ressentir, vous essayez de les pousser du côté des perdants dans une situation gagnant-perdant, ils vont riposter. Les tentatives visant à établir des situations gagnant-perdant aboutissent souvent à un résultat perdant-perdant, car vous gaspillez effectivement des ressources pour placer votre partenaire dans une position de perdant, au lieu de les investir dans la réussite globale de votre partenariat.

Si vous faites cela avec vos employeurs, ils essaieront de vous imposer des mesures, afin de réduire votre monopole du savoir. Généralement, ce sont des directives ridicules sur la façon dont vous devez faire votre travail et transformeront ainsi votre vie professionnelle en un enfer vivant. De plus, ils vous appelleront à 3 heures du soir lorsque quelque chose se brise, car vous êtes la seule personne à pouvoir le réparer. Vouloir exploiter des situations telles que l’effet de levier risque de se retourner contre vous et de vous causer plus de problèmes.

Les cimetières sont pleins d'hommes indispensables.
- Gaulle, Charles De

Alors coupez la merde et faites votre travail correctement. Si ce n'est pas pour autre chose, alors pour vous, car vous êtes probablement la pauvre âme, qui doit apporter des modifications au code dans 2 ans.

back2dos
la source
J'ai constaté que chaque fois que j'essayais d'établir une situation «gagnant-gagnant», les gens voudraient gagner et sembler supérieurs. Cela ressemble presque à ce livre sur le fonctionnement de la mafia: si vous traitez un pair comme un égal, il va bientôt supposer qu’il est supérieur à vous. Cela fonctionne sur le graphiste qui vient de sortir du collège depuis 3 ans - plus je le respectais, plus il me traitait comme de la terre. Et maintenant, je parais supérieur au début et plus de gens me respectent. C'est étrange. Mais le lieu de la différence devrait avoir une culture différente. Je travaille dans les startups de Silicon Valley.
nopole
1
@ 能量: Cela ressemble plus à perdre-gagner. Le but gagnant-gagnant n'est pas d'être gentil avec tout le monde sans condition. Si vous avez le sentiment que quelqu'un vous traite comme de la terre, vous devez vous en occuper de manière ouverte, claire et raisonnable. On peut facilement montrer que si un membre de votre équipe se comporte comme un abruti, cela n’est pas bénéfique pour la performance globale de l’équipe.
back2dos
"perdre-gagner" est-il une situation particulière dans le système "gagnant-gagnant" ou "gagnant-perdant"? Je ne trouve pas beaucoup d’informations à ce sujet ... mais sachez que tout n’est pas gagnant-gagnant. Le collègue qui veut être le directeur ou le chef d’équipe n’en fera certainement pas un gagnant-gagnant. Ou les collègues qui veulent apparaître comme la super star ou obtenir une promotion, ou obtenir une augmentation, ou protéger son titre "d'architecte", ou ne pas se faire virer avant la date d'acquisition des options d'achat d'actions d'un an, ne le verront certainement pas comme "gagnant-gagnant" quand il a besoin de vous rabaisser. Maintenant, je ne veux même pas entrer dans une situation de "perdant-gagnant" pour commencer ...
nopole
La raison en est que, s'il me traite d'abord comme de la terre, je le détesterai probablement un peu et ce ne sera pas une bonne relation par la suite. Si je parais supérieur et qu'il me respecte un peu, alors la relation peut continuer mieux sans le haut et le bas. Mais vrai, j’ai trouvé que dans la Silicon Valley, si vous acceptez et tolérez, vous devenez un paillasson sur lequel les gens aiment marcher. Donc, indéniablement, exercez des représailles appropriées ou informez-le des conséquences.
nopole
@ 能量: S'il vous plaît suivez le lien dans mon post. Dans votre cas, vous devriez plaider ouvertement en faveur des parties, gagnant-gagnant ou nul. Souvent, toutes sortes d'interactions se transforment en bagarres, alors que passer du temps à discuter de la manière dont l'interaction est abordée permettrait de résoudre les problèmes. C’est aussi simple que: "Je préférerais que notre relation soit une collaboration plutôt que un concours et je suis prêt à prendre des engagements en conséquence. Si vous ne le voyez pas comme une option, soyez assez honnête pour me le dire maintenant. Si vous essayez à utiliser cela pour me surpasser, je vais déchirer vos balles. " Bien que vous souhaitiez peut-être reformuler le dernier bit;)
back2dos
15

Les réponses négatives ne sont pas trop surprenantes, étant donné le nombre de programmeurs meilleurs que la moyenne que ce site attire. Les personnes talentueuses n'ont généralement pas besoin de recourir à ce type de tactiques de sécurité par obfuscation. Mais je travaillais chez un équipementier automobile du Fortune 500 avec quelques développeurs peu talentueux qui s'étaient taillés des fiefs pour eux-mêmes, qu'ils gardaient avec zèle en créant de nombreux documents pour les interfaces épouvantables qu'ils avaient conçues.

Tout le travail d'un type consistait à gérer le code d'un module reliant deux sous-systèmes entièrement distincts, permettant ainsi aux modules de chaque système de communiquer via un UART. En gros, il s’agissait de la programmation série 101. Au lieu de simplement créer une interface générale ressemblant à ceci:

  int sendData (int targetModule, void * data, size_t byteCount);
  int recvData (int sourceModule, void * data, size_t maxBytes);

il a créé des codes d'opération distincts pour chaque message que deux modules communicants pourraient vouloir s'envoyer l'un à l'autre. Ce qui voulait dire que son module devait connaître chaque message et devait être mis à jour chaque fois qu'un message était ajouté ou modifié. Parlez d'intimité inappropriée!

Le problème, c’est que ce gars a gardé un document Word répertoriant tous les opcodes / messages et l’a mis à jour avec diligence au besoin. C'est devenu tout son travail . Quelques fois par semaine, il envoyait une nouvelle révision à tous les malheureux qui l'avaient laissé sur son chemin critique. Et cela a été considéré comme «professionnel», car la direction aimait voir de la documentation. Kinda me fait pleurer pour l'industrie automobile.

Je suppose que mon propos est le suivant: parfois, rédiger une documentation peut en fait protéger des programmeurs médiocres. Les gestionnaires ne peuvent souvent pas faire la différence entre une bonne conception et une mauvaise, et beaucoup sont obligés de prendre des décisions techniques avec des informations limitées. C'est incroyablement stressant pour eux. Voir un document Word avec des dizaines de tableaux bien formatés peut être très réconfortant, même si ce qu'il décrit est une idée fondamentalement mauvaise.

échapper
la source
Une perspective intéressante.
scribu
Cela ne se limite pas à l'industrie automobile. Je pense que toute grande entreprise, qui ne fait pas partie du domaine logiciel / technologie mais emploie des développeurs de logiciels (entre autres membres du personnel informatique), souffrira de ce genre de problèmes dans une mesure plus ou moins importante.
CraigTP
Je crois en la valeur de la documentation, mais la documentation n'est pas ce qui protège le travail de ce type. Il n'y est que pour des raisons de gestion incompétente et de complaisance. Il est étonnant que personne ne prenne 90 minutes de sa journée pour rédiger une note de service intitulée: Comment économiser des millions de dollars ET créer un meilleur produit. C'est peut-être en partie pourquoi des sociétés telles que GM et Chrysler se sont retrouvées dans des trous très profonds et très coûteux.
Caleb
1
@Caleb: Dans toute grande organisation, aucune bonne action ne reste impunie. Il est beaucoup plus facile de laisser les autres membres de leur fief et de se créer un fief, si vous le pouvez.
Gilbert Le Blanc
3
@Caleb: Nous nous écartons du sujet, mais moi et d'autres comme moi avons décidé de ne pas combattre la nature humaine. Vous pouvez obtenir une méritocratie dans un petit groupe (<20) de technologies de l'information, mais une fois que vous aurez dépassé les 100 développeurs de logiciels, votre organisation deviendra un fief, que cela vous plaise ou non.
Gilbert Le Blanc
14

Être remplaçable, n'est-ce pas contre l'intérêt d'un développeur?

Je déteste te le dire, mais tout le monde est remplaçable. Bien sûr, il peut parfois être un léger défi de vous remplacer (si vous êtes expérimenté et assez brillant), mais il est impossible de trouver des années lumière.

Pour être vraiment un produit de valeur pour votre employeur (non seulement l'employeur actuel, mais tout employeur), vous devez démontrer votre capacité à écrire un code aussi facile à comprendre pour quiconque le lira (peu de temps pour travailler avec lui) et documenter. le code (n'importe qui peut obtenir une vue d'ensemble de haut niveau de vos systèmes sans creuser dans le code).

Être réellement bon en documentation de code est une qualité difficile à obtenir de nos jours, alors cela seul aidera à vous différencier des autres.

Un code propre et bien documenté mérite également d’être mis sur un CV (du moins, des résultats tangibles, c’est-à-dire "nous avons été en mesure de recruter de nnouveaux développeurs avec un minimum de montée en puissance et une assistance minimale grâce à ma documentation"). vous-même "irremplaçable" n'est pas.

Demian Brecht
la source
-1: Je n'aime pas vous en parler, mais tout le monde est remplaçable. - Oui, mais certaines personnes sont plus difficiles à remplacer que d'autres.
Jim G.
10

Être remplaçable, n'est-ce pas contre l'intérêt d'un développeur?

Cela dépend des intérêts de ce développeur. Si vous êtes un homme qui veut rester dans le même emploi pendant toute sa carrière, soyez absolument indispensable pour une entreprise qui récompense l'incompétence et gagne beaucoup d'argent, alors oui, absolument.

Mais que se passe-t-il lorsque l'entreprise se bloque, probablement parce qu'elle a embauché trop de personnes de ce type? Où vas-tu aller ensuite? Qu'en est-il lorsqu'ils vous demandent pourquoi vous avez occupé le même emploi pendant 15 ans? Etc.

Maintenant, voyons les choses différemment: combien de développeurs ont perdu leur emploi en écrivant du code que tout le monde peut lire?

La seule probabilité que cela se produise est si l'entreprise est en difficulté et rend les personnes licenciées. Si cela se produit, vous feriez mieux de sortir et vous serez très bien préparé pour les prochaines interviews. De plus, votre conscience sera complètement libre - vous ne laisserez pas de code inexplicable que vous avez écrit pour votre propre gain.

Je ne sais pas quel genre de personne vous êtes, mais cela sert mieux mes intérêts.

Personnellement, je pense qu'une de mes plus grandes forces réside dans l'automatisation de mon propre travail. Que pensez-vous qu'une entreprise a tendance à penser lorsque je suis devenu excédentaire par rapport à mes propres besoins? Pensent-ils "ok, nous allons nous débarrasser de lui maintenant" ou pensent-ils "pourquoi ne le transfère-t-il pas dans un autre rôle et le laissons-t-il à nouveau"?

pdr
la source
9

Être remplaçable, n'est-ce pas contre l'intérêt d'un développeur?

Vous avez raison, mais je pense que vous avez mal compris le sens de «remplaçable». Je pourrais trouver un millier de développeurs qui écrivent du code mouvementé, des documents non documentés qui peuvent rapidement se transformer en désordre intenable.

Développeurs qui produisent non seulement des programmes stables, mais aussi du code épuré, une documentation informative et assurent la continuité du projet, ce qui est non seulement irremplaçable, mais aussi inestimable .

Rahmu
la source
7

Je vais aborder cette question sous un angle différent, car il existe déjà plusieurs excellentes réponses.

Pensez à ce qui se passe lorsque vous jouez à de petits jeux en essayant de vous rendre "irremplaçable" tout en empêchant les autres d'apprendre le fonctionnement de votre code. Vous restez dans le même travail en maintenant vos propres dégâts aussi longtemps que l'entreprise vous tolère. Et c’est le meilleur des scénarios. Le pire des scénarios, c’est que d’autres ingénieurs et cadres de votre entreprise, plus talentueux et plus éthiques, voient l’encombrement que vos mauvaises pratiques imposent à l’entreprise et ils décident de réagir, en vous licenciant et en le réécrivant. tout à partir de zéro. C'est fait. En fait, c'est une chose assez commune à se produire.

Maintenant, considérons ce qui se passe lorsque vous écrivez un bon code et une bonne documentation. Vous créez un composant ou un système qui fonctionne bien et qui, après un certain temps de fonctionnement, corrige les bogues et fonctionne sans problème. Il faut peu d'effort pour le maintenir. Vous pouvez ensuite passer à des projets plus grands et meilleurs, avec une solide victoire à votre actif. Les gens vous reconnaîtront pour avoir fait du bon travail et commenceront à respecter votre opinion. Vous aurez la possibilité de progresser dans la chaîne alimentaire et de prendre des décisions plus significatives, ou d'effectuer un travail plus important et impactant, ou de gérer des projets à un niveau supérieur. Votre carrière va s'améliorer, vous serez promu, vous gagnerez plus d'argent, vous serez reconnu et approuvé par vos pairs, vous ajouterez de plus en plus de succès dans des projets de plus en plus importants.

Quel itinéraire préféreriez-vous?

Coin
la source
4

Si vous êtes le seul point d'échec, votre client (ou votre employeur) tentera probablement de vous remplacer. il y a toujours un point où il est moins coûteux de remplacer un logiciel que de le maintenir, même si cela semble essentiel. Il y a une raison pour laquelle l'informatique est l'une des professions les plus externalisables.

En revanche, être remplaçable vous procure plusieurs avantages inestimables:

  • pouvoir prendre des vacances
  • ne pas être sur appel
  • liberté de partir et de travailler sur un projet nouveau et intéressant
Domchi
la source
-1: Si vous êtes le seul point d'échec, votre client (ou employeur) tentera probablement de vous remplacer. - Pas dans mon expérience. Veuillez consulter la réponse @evadeflow.
Jim G.
3

Si vous ne passez pas 5 minutes à rédiger une documentation rapide, vous passerez une heure à la relire et à l'expliquer aux personnes qui souhaitent utiliser votre code.

Pire encore pourrait passer des jours à chercher un nouvel emploi parce que votre patron a découvert que vous n’écriviez pas de code maintenable.

Pubby
la source
3

Une excellente documentation finira par devenir obsolète en refactorisation / évolutions, et sa mise à jour prend beaucoup de temps.

Code propre + test unitaire> excellente documentation

Xsace
la source
1
D'accord. Je ne peux pas vous dire combien de projets sur lesquels j'ai travaillé et où tous les membres de l'équipe (y compris moi-même) ont décidé que nous allions "faire les choses correctement cette fois" et utiliser doxygen ou CppDoc pour tout documenter et le garder à jour. Date. Cela n'est pas encore arrivé. Les calendriers des projets étant ce qu’ils sont, les docstrings se désynchroniseraient inévitablement par rapport au code, et la couverture de nos tests serait minimale, voire inexistante. Maintenant, j’ai tendance à regarder fixement tous ceux qui suggèrent d’utiliser du doxygen et je leur demande de me montrer ses tests en premier. La documentation pour le code sans aucun test est juste un paquet de mensonges.
evadeflow
C’est un peu un autre point: de bons tests unitaires sont de la documentation. Vous ne faites que préconiser une variété particulière de code propre et documenté, sans prétendre que cela ne devrait pas être fait.
Cascabel,
2

La réponse à ta question est oui". Oui, vous devriez écrire une bonne documentation et du code propre. Le fait de vouloir délibérément faire autrement montre un manque d'intégrité, ce qui, même s'il est de plus en plus répandu dans le monde des affaires, n'est soudainement pas une "bonne" chose.

Personne n'est irremplaçable. Les personnes qui fabriquent une situation dans laquelle elles se pensent ont tendance à découvrir qu'elles ne le sont pas. Construire une co-dépendance pour vous-même est contre-productif car cela vous limite également, pas seulement à votre employeur.

Temptar
la source
2

L’un des principaux objectifs des sociétés de développement de logiciels est d’augmenter leur facteur de bus.

Fausse prémisse. Les principaux objectifs d'une entreprise de développement de logiciels (de tous ceux dans lesquels j'ai travaillé) sont de produire le meilleur logiciel possible et de gagner de l'argent, pas nécessairement dans cet ordre. Réduire le "facteur autobus" n'est qu'un moyen d'éviter de perdre de l'argent.

Loi 11 Apprenez à garder les gens dépendants de vous.

Qu'est-ce que cela signifie pour vous?

Voulez-vous que les gens dépendent de vous parce que vous les avez minés de telle manière qu'ils ne peuvent aller de l'avant qu'avec votre aide? Ou voulez-vous que les gens dépendent de vous parce que vous êtes intelligent et perspicace, fiable, digne de confiance et capable d'aider les autres à mieux faire leur travail? Voulez-vous gâcher vos collègues sans votre aide, ou voulez-vous qu'ils vous apprécient de les avoir bien rendus?

C'est ton appel.

Caleb
la source
1

(en supposant le code de production)

J'ai tendance à aller un peu plus loin. J'ai écrit sur la façon de faire des programmes "idiot proof", mais je ne le qualifie pas toujours: j'écris beaucoup de code que d'autres personnes ne verront pas ou avec lequel ils ne travailleront pas (du moins, c'est ce à quoi on s'attend quand il est écrit). jeJe suis l'idiot dont j'essaie de me défendre dans ce cas. C'est une bonne chose que votre programme détecte des problèmes pour vous, et le problème a été tellement simplifié qu'il est assez évident qu'il y a une erreur et son origine. En réalité, les détails d'implémentation sont évidents lorsque vous écrivez un programme (sauf si vous l'implémentez prématurément), mais ils doivent être résumés et résistants aux erreurs pour les clients (même lorsque la localité du module existe). La raison en est que les programmes deviennent très complexes. Parfois, vous pouvez séparer les problèmes, mais pas tout le temps. Si vous maintenez vos composants très stricts, simples, bien encapsulés et à l'abri des puzzles, ils ont tendance à bien s'adapter et la plupart des défauts sont détectés avant leur expédition. Il est plus facile de réutiliser, et vous avez plus de confiance et plus de facilité à réutiliser les programmes. ces programmes complexes que vous écrivez deviennent plus complexes (même pour vous) après un certain temps d'absence du programme. Lorsque vous le lisez en 6 mois, la compréhension et le débogage peuvent prendre un temps absurde par rapport à la version idiot proof. Si un composant introduit un changement radical, il peut rester indétectable pendant longtemps sinon. Les programmes sont complexes. vous ne pouvez pas échapper à cette réalité, mais vous pouvez le rendre infaillible, ce qui vous facilitera grandement la vie lorsque quelque chose ne va pas ou s'il doit être réutilisé ou modifié. Par conséquent, l'approche imbécile signifie que votre logiciel peut être compris, réutilisé ou mis à jour par vos juniors ou les personnes les plus récentes de l'équipe (et pas seulement par quelqu'un d'aussi bon / expérimenté que vous). Le remplacement est une préoccupation distincte: si les gens aiment travailler avec vos programmes, vous faites du bon travail - ne ' Ne vous inquiétez pas du remplacement. Bien sûr, je pourrais imaginer des scénarios dans lesquels des programmes inintelligibles pourraient sauver votre travail, mais écrire un bon programme que d’autres peuvent utiliser et maintenir est clairement le moindre mal (regardez les réponses des autres). Si je me surprends à écrire quelque chose qui n'est pas idiot, j'essaie de résoudre ce problème.

En dehors du scénario où vous avez besoin de documentation pour pouvoir poursuivre un projet après 6 mois de pause, il semble exister un conflit d'intérêts évident entre le développeur et l'éditeur de logiciel.

Vous ne savez vraiment pas à quoi vous pensiez lorsque vous revisitez des implémentations en veille. Lorsque vous êtes vraiment expérimenté, le problème est plus simple car vous pouvez vous fier davantage aux méthodologies établies ou aux approches que vous utilisez. Cela suppose toutefois que ces méthodologies sont invariantes. Même si la documentation peut être laxiste, vous devez toujours être défensif dans vos implémentations (par exemple, vous savez mieux que de passer NULL dans ce scénario - testez cette condition).

Donc, en tant que programmeur, devriez-vous vraiment écrire une excellente documentation et un code facilement lisible pour tout le monde; ou devriez-vous écrire le code et la documentation de manière à ce que le travail soit fait et que vous puissiez le comprendre vous-même, mais qu'une autre personne puisse avoir du mal à le comprendre?

Je recommande l'approche imbécile, qui est encore plus claire et plus résistante aux erreurs que l'approche par facteur de bus. Ecrivez vos programmes et votre documentation de manière à ce qu'ils soient facilement compris par quelqu'un de l'extérieur du projet. C'est bon pour vous aussi. Cela augmentera votre valeur pour votre entreprise et votre équipe, ils ne voudront pas vous remplacer.

Justin
la source
1

Vous avez fondamentalement mal compris le jeu. Le jeu ne consiste pas à continuer à faire comme avant, à être responsable de tout le code que vous avez écrit car personne d'autre ne le comprend. Le jeu consiste à terminer un projet et à passer au suivant, en laissant derrière lui le code que quelqu'un d'autre peut facilement comprendre et avec lequel travailler en votre absence, afin que vous puissiez faire de nouvelles choses et assumer plus de responsabilités. Votre prémisse ne fonctionne que si vous êtes heureux de devoir faire la même chose encore et encore, sans possibilité d'apprendre ni de vous améliorer.

tvanfosson
la source
1

Je vous ferai également remarquer que si vous n'avez pas souvent l'occasion d'examiner ce code, vous aurez également de la difficulté à le comprendre dans six mois si vous le dissimulez délibérément.

HLGEM
la source
0

Je documente le petit code que j'écris, non pas pour que les autres puissent le lire, mais pour que je puisse le lire dans 3 mois! Il s'agit de faciliter la maintenance. Si vous êtes responsable du code que vous avez écrit et que vous ne pouvez pas corriger les bogues qui apparaîtront plus tard dans la ligne, vous voudrez qu'il soit bien documenté ... Il est peu important que vous soyez remplaçable si vous n'êtes pas capable. faire votre travail!

Seamus
la source
-1: Pourquoi ne vous efforcez-vous pas de code auto-documenté? Au contraire, au mieux, de la documentation redondante et, au pire, de la documentation qui va devenir obsolète très rapidement? Veuillez voir la réponse de @xsAce.
Jim G.
0

Tous les informaticiens "irremplaçables" avec lesquels j'ai eu la malchance d'interagir ont été remplacés, en grande partie parce qu'ils essayaient de tenir en otage les ressources de leurs employeurs. Lorsque des personnes qui me font rapport me disent que leur temps est trop précieux pour "gaspiller" de la documentation, je les remplace dès que possible.

Il semblerait que si un futur employé considère que les 48 lois du pouvoir sont éthiquement ou moralement acceptables, il serait préférable de s'en passer.

John Percival Hackworth
la source
-1: Quand des personnes me rapportant me disent que leur temps est trop précieux pour "gaspiller" de la documentation, je les remplace dès que possible.
Jim G.
@ Jim G: Nice. Je vais supposer que votre temps est trop précieux pour gaspiller de la documentation ...
John Percival Hackworth
0

Si vous voulez VRAIMENT être irremplaçable (ce que vous voudrez peut-être reconsidérer après avoir lu toutes les réponses ...), pourquoi ne pas documenter le code?

Il existe un guide vraiment brillant sur la façon d'écrire du code non maintenable que vous devriez absolument lire: http://thc.org/root/phun/unmaintain.html

Prendre plaisir! (J'ai certainement fait ...)

Yonix
la source
Il y a aussi "Refuctoring" :)
CraigTP