Dovresti scrivere una buona documentazione e un codice pulito per aumentare il "fattore bus"?


48

Uno degli obiettivi principali delle società di sviluppo software è aumentare il loro fattore Bus. Questo è anche raccomandato in un discorso organizzato da Google .

Ciò significa che dovresti codificare e documentare tutto in modo tale che se domani verrai investito in autobus, il progetto può continuare. In altre parole, dovresti renderti facilmente sostituibile da un altro programmatore con un'abilità simile alla tua.

Essere sostituibili, non è contro l'interesse di uno sviluppatore? Nel libro, 48 leggi del potere La Regola 11 afferma che dovresti cercare di mantenere le persone dipendenti da te, al fine di guadagnare potere, che poi si traduce in ricompense monetarie.

A parte lo scenario, in cui hai bisogno di documentazione per te stesso per continuare un progetto dopo 6 mesi di pausa, qui sembra esserci un chiaro conflitto di interessi tra lo sviluppatore e la società di software.

Quindi, come programmatore, dovresti davvero scrivere un'ottima documentazione e un codice facilmente leggibile per tutti; o dovresti scrivere codice e documentazione in modo tale che funzioni e tu stesso possa capirlo, ma un'altra persona potrebbe avere difficoltà a capirlo?


41
Il libro di Greene è adatto a despoti e lacchè che cercano di ottenere favore nei feudi. Non è una buona filosofia morale per il lavoro di squadra. Per non dire altro! [Nota che Wikipedia classifica questo libro sotto "sociopatia"]
Steven A. Lowe,

27
Non ti assumerei mai: D
deadalnix,

37
I cimiteri sono pieni di persone insostituibili.
Giobbe

20
Non vuoi mai essere insostituibile: come puoi ottenere una promozione se non puoi essere sostituito? A meno che tu non sia felice esattamente dove ti trovi, per sempre, il "fattore bus" è sempre importante.
Dave,

11
"Il libro condivide elementi tematici con Il principe di Niccolò Machiavelli ed è stato paragonato al classico trattato di Sun-Tzu The Art of War." Non credo di voler lavorare con chiunque veda il proprio posto di lavoro come la politica italiana del XVI secolo o ... l'antica guerra cinese.
Cascabel,

Risposte:


110

Dovresti cercare di diventare insostituibile non scrivendo codice che nessuno capisce, ma raccogliendo più esperienza e conoscenza di altri. Il primo modo ti rende uno sviluppatore con cui tutti cercano di evitare di lavorare, poiché temeranno e detesteranno mantenere il codice che hai scritto. Quest'ultimo modo diventa un membro del team ricercato, che i manager vogliono avere nel loro team.

Nella mia esperienza, la scrittura di codice pulito, ben documentato (e preferibilmente auto-documentazione) ha sempre dato i suoi frutti. In effetti, ho colto quasi tutte le opportunità per aiutare e insegnare agli altri (oltre a imparare da loro quando sapevano qualcosa di meglio), e quasi mai mi sentivo in pericolo di essere sostituito da qualcuno meno capace di me. In realtà, questo di solito ha aiutato l'intero team a lavorare meglio e a risolvere i problemi più velocemente, il che è il sogno di ogni manager - e un manager ragionevole non vuole sostituire i membri di una buona squadra.


1
È interessante che questo sia stato sollevato proprio ora, perché solo pochi giorni fa mi è stato detto quanto siano stati preziosi alcuni diagrammi che ho fatto su uno dei progetti su cui sto attualmente lavorando, a persone che probabilmente non lo faranno mai tocca il codice. Questo, e ovviamente mi fornisce una visione di alto livello dei diversi moduli e di come interagiscono. Quella panoramica potrebbe non essere particolarmente necessaria in questo momento quando ho tutto in memoria, ma quasi sicuramente aiuterà quando rivisiterò il codice tra un anno ...
un CVn

2
Alcune persone che hanno scritto codice (cattivo, offuscato) che li hanno resi "insostituibili" nel mio lavoro non funzionano più qui. I programmatori migliori hanno visto il loro lavoro durante la revisione del codice o la correzione di cose mentre erano in vacanza. Ho visto la "qualità" del loro lavoro e sono stati inscatolati.
CaffGeek,

44

Se hai intenzione di manipolare le organizzazioni o le persone in modo così trasparente, è meglio che siano stupidi o in difficoltà che non lasciano altra scelta. Un negozio di sviluppo software ben gestito guarderebbe il tuo codice oscuro e la documentazione mancante e ti licenzierebbe semplicemente prima che tu possa fare molti danni. Se sono gestiti male o non sono in grado di convincere altri sviluppatori a lavorare per loro, perché vorresti avere un sinecure con loro?

PS Né il signor Greene né Machiavelli in realtà hanno fatto molto, oltre a scrivere libri che cercavano di adulare gli aspiranti "uomini duri" del tempo. Segui i loro consigli con un granello di sale.


42

Se sei insostituibile, non puoi essere promosso.


14
Peggio ancora, in alcuni posti, se mai dimostrerai che puoi prendere il codice non funzionante di altre persone e farlo funzionare, non ti sarà mai più permesso di lavorare sul tuo codice, perché sarà percepito come più economico lasciare che gli altri ragazzi ruvida un enorme mucchio fumante, e poi fai pulire e lucidare detto enorme mucchio fumante.
John R. Strohm,

miglior argomento di sempre sull'argomento
ZJR,

2
Risposta classica davvero.
Sarawut Positwinyu,

@ JohnR.Strohm Dude !!!! Ci sono stato e mi sento così male. Essendo un ingegnere più attento, mi prenderei un po 'più di tempo su un compito. Quindi il manager ha iniziato a lasciare che altre persone scrivessero velocemente il codice squallido e poi mi facessero ripulire in una revisione del codice. Mi sono sentito assolutamente abusato perché quel ruolo è diventato la mia rilevanza per la squadra anche se non era quello che volevo. Inutile dire che ho lasciato la squadra subito dopo averlo realizzato.
davidXYZ,

17

Non vuoi essere insostituibile. Non vuoi far sentire le persone dipendenti da te, vuoi che ti apprezzino. In generale, vuoi stare lontano dalle persone, che credono che anche la metà delle leggi del potere dovrebbe essere applicata alle relazioni (professionali o personali).
Queste regole sono un insieme di istruzioni su come stabilire con successo una situazione win-perdi. Quello che vuoi, è una win-win situazione.
Non appena le persone iniziano a sentirsi, stai cercando di spingerle sul lato perdente di una situazione di sconfitta, reagiranno. I tentativi di stabilire situazioni di sconfitta spesso finiscono in un risultato di sconfitta, perché stai effettivamente sprecando risorse per portare il tuo partner in una posizione perdente, invece di investirli nel successo complessivo della tua partnership.

Se lo fai con i tuoi datori di lavoro, proveranno a imporre misure su di te, per ridurre il tuo monopolio della conoscenza. Principalmente, queste saranno linee guida ridicole su come devi fare il tuo lavoro e trasformeranno così la tua vita lavorativa in un inferno vivente. Inoltre, ti chiameranno alle 3 di notte quando qualcosa si rompe, perché sei l'unica persona che può ripararlo. Cercare di sfruttare situazioni come la leva finanziaria rischia di ritorcersi contro di te e causare più problemi.

I cimiteri sono pieni di uomini indispensabili.
- Gaulle, Charles De

Quindi taglia la merda e fai il tuo lavoro correttamente. Se non per nient'altro, allora per te, perché probabilmente sarai la povera anima, che dovrà apportare alcune modifiche al codice tra 2 anni.


Ho scoperto che ogni volta che provo a stabilire una situazione "win-win", le persone vorranno vincere e apparire superiori. È quasi come quel libro su come funziona la mafia: se tratti un pari alla pari, molto presto supporrà di essere superiore a te. Funziona con il graphic designer che è appena uscito dal college per 3 anni - più lo rispettavo, più mi trattava come uno sporco. E ora sembro superiore all'inizio, e più persone mi rispettano. È strano. Ma il posto di differenza dovrebbe avere una cultura diversa. Lavoro nelle startup spietate della Silicon Valley.
nopole,

1
@ 動靜 能量: suona più come perdere-vincere. Il punto di vincere è non essere gentili con tutti incondizionatamente. Se hai la sensazione che qualcuno ti stia trattando come sporco, dovresti affrontarlo in modo aperto, chiaro e ragionevole. Si può facilmente dimostrare che se qualcuno nella tua squadra si comporta come uno stronzo, non è vantaggioso per le prestazioni generali della squadra.
back2dos,

"perdere-vincere" è una situazione speciale nel sistema "vincere-vincere" o "perdere-perdere"? Non riesco a trovare molte informazioni ... ma nota che non tutto al mondo può essere vantaggioso per tutti. Il collega che vuole essere il regista o il capo squadra sicuramente non lo farà vincere. O i colleghi che vogliono apparire come una super star o ottenere una promozione, o ottenere un rilancio, o proteggere il suo titolo di "architetto", o non essere licenziati prima della data di maturazione delle opzioni su azioni di 1 anno, sicuramente non lo vedranno come "win-win" quando ha bisogno di metterti giù. Ora non voglio nemmeno entrare in una situazione di "sconfitta" per cominciare ...
nopole,

il motivo è che se prima mi tratta come se fosse sporco, probabilmente lo odierò un po ', e dopo non sarà una buona relazione. Se sembro superiore e mi rispetta in qualche modo, allora la relazione può continuare meglio senza i saliscendi. Ma è vero, ho scoperto che nella gola tagliata silicon valley, se stai "accettando" e "tollerante", diventi uno zerbino su cui alla gente piace calpestare. Quindi sicuramente ritorsione opportunamente o fargli sapere che ci sono conseguenze.
nopole,

@ 動靜 能量: segui il link nel mio post. Nel tuo caso, dovresti sostenere apertamente win-win o nessun accordo. Spesso tutti i tipi di interazione si trasformano in combattimenti, quando effettivamente passare del tempo a discutere sul modo in cui viene affrontata l'interazione risolve le cose. È semplice come: "Preferirei che la nostra relazione fosse una collaborazione, piuttosto che una competizione e sono disposto a prendere impegni di conseguenza. Se non lo vedi come opzione, sii onesto da dirmelo adesso. Se provi per usarlo per superare in astuzia, ti strapperò le palle ". Anche se potresti voler riformulare l'ultimo bit;)
back2dos

15

Le risposte negative non sono troppo sorprendenti, dato il numero di programmatori migliori della media che questo sito attira. Le persone di talento non hanno generalmente bisogno di ricorrere a questo tipo di tattiche di sicurezza attraverso l'offuscamento. Ma ho lavorato presso un fornitore di autoveicoli della Fortune 500 con alcuni sviluppatori poco talentuosi che si erano ritagliati piccoli feudi da loro stessi, che hanno protetto con zelo creando abbondanti quantità di documentazione per le orribili interfacce che avevano progettato.

L'intero lavoro di un ragazzo consisteva nel mantenere il codice per un modulo che collegava due sottosistemi completamente separati, consentendo ai moduli su ciascun sistema di comunicare tramite un UART. Fondamentalmente, era la programmazione seriale 101. Invece di creare semplicemente un'interfaccia generale che assomigliasse a questa:

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

ha creato codici operativi separati per ogni singolo messaggio che due moduli comunicanti potrebbero voler inviare a vicenda. Ciò significava che il suo modulo doveva conoscere ogni messaggio e doveva essere aggiornato ogni volta che veniva aggiunto o modificato un messaggio. Parla di intimità inappropriata!

Il fatto è che questo ragazzo ha tenuto un documento di Word che elenca ordinatamente tutti i codici operativi / messaggi e lo aggiorna diligentemente se necessario. È diventato tutto il suo lavoro . Alcune volte a settimana, avrebbe inviato una nuova revisione a tutte le persone sfortunate da averlo nel loro percorso critico. E questo è stato visto come "professionale", dal momento che l'amministrazione ha adorato vedere la documentazione. Kinda mi fa piangere per l'industria automobilistica.

Immagino che il mio punto sia: a volte scrivere documentazione può, in effetti, proteggere i programmatori mediocri. I manager spesso non sanno distinguere tra un buon design e uno cattivo, e molti sono costretti a prendere decisioni tecniche con informazioni limitate. È incredibilmente stressante per loro. Vedere un documento di Word con dozzine di tabelle ben formattate può essere molto confortante, anche se ciò che descrive è fondamentalmente una cattiva idea.


Una prospettiva interessante
scribu,

Questo non è solo limitato all'industria automobilistica. Penso che qualsiasi organizzazione di grandi dimensioni, che non sia nel campo del software / della tecnologia stessa ma che impieghi sviluppatori di software (tra gli altri membri dello staff IT), soffrirà di questo tipo di cose in misura minore o maggiore.
CraigTP,

Credo nel valore della documentazione, ma la documentazione non è ciò che protegge il lavoro di questo ragazzo. È lì solo a causa di una gestione incompetente e compiacenza. È sorprendente che nessuno abbia impiegato 90 minuti della giornata per scrivere un memo intitolato: Come risparmiare milioni di dollari E costruire un prodotto migliore. Forse questo è uno dei motivi per cui aziende come GM e Chrysler si sono trovate in buchi molto profondi e molto costosi.
Caleb,

1
@Caleb: in qualsiasi grande organizzazione, nessuna buona azione rimane impunita. È molto più facile permettere agli altri il loro feudo e ritagliarsi un feudo per te, se puoi.
Gilbert Le Blanc,

3
@Caleb: ci stiamo allontanando dall'argomento, ma io e altri come me abbiamo deciso di non combattere la natura umana. Potresti ottenere una meritocrazia in un piccolo (<20) gruppo di tecnologia dell'informazione, ma una volta che passi oltre 100 sviluppatori di software, la tua organizzazione diventerà un feudo, che ti piaccia o no.
Gilbert Le Blanc,

14

Essere sostituibili, non è contro l'interesse di uno sviluppatore?

Odio dirtelo, ma tutti sono sostituibili. Certo, a volte può essere una leggera sfida sostituirti (se hai esperienza e abbastanza brillante), ma sono anni luce dall'impossibile.

Il modo per essere veramente un bene prezioso per il tuo datore di lavoro (non solo l'attuale datore di lavoro, ma qualsiasi datore di lavoro) è dimostrare la capacità di scrivere codice così facile da individuare da chiunque legga il codice (poco tempo di accelerazione per lavorare con esso) e documentare il codice (chiunque può ottenere una panoramica di alto livello dei sistemi senza scavare nel codice).

In realtà essere bravo nella documentazione del codice è una qualità difficile da ottenere in questi giorni, in modo che solo ti aiuterà a distinguerti dagli altri.

Un codice pulito e ben documentato è anche degno di essere messo su un curriculum (almeno, risultati tangibili di esso, vale a dire "siamo stati in grado di attirare nnuovi sviluppatori con un incremento minimo e assistenza grazie alla mia documentazione), dove essere furtivi nel fare te stesso "insostituibile" non lo è.


-1: odio infrangerlo, ma tutti sono sostituibili. - Sì, ma alcune persone sono più difficili da sostituire rispetto ad altre.
Jim G.

10

Essere sostituibili, non è contro l'interesse di uno sviluppatore?

Dipende dagli interessi di quello sviluppatore. Se sei uno che vuole spingerlo in un unico lavoro per tutta la tua carriera, sii assolutamente indispensabile per un'azienda che premia l'incompetenza e guadagna bene, quindi sì, assolutamente.

Ma cosa succede quando la società si blocca, probabilmente perché hanno assunto troppe persone così? Dove andrai dopo? E quando ti chiedono perché sei rimasto nello stesso lavoro per 15 anni? E così via.

Ora guardalo in un altro modo: quanti sviluppatori hanno perso il lavoro essendo qualcuno che scrive codice che chiunque può leggere?

L'unica probabilità che ciò accada è se l'azienda è nei guai e rende le persone ridondanti. Se ciò accade, farai meglio ad uscire e sarai molto ben preparato per le prossime interviste. Inoltre la tua coscienza sarà completamente gratuita - non ti lascerai alle spalle un codice inspiegabile che hai scritto per il tuo auto-guadagno.

Non so che tipo di persona tu sia, ma questo serve meglio i miei interessi.

Personalmente, penso che uno dei miei maggiori punti di forza sia l'automazione del mio lavoro. Cosa pensi che un'azienda tende a pensare quando sono diventato un surplus alle mie esigenze? Pensano "ok, ci sbarazzeremo di lui adesso" o pensano "perché non lo spostiamo in un altro ruolo e lo lasciamo fare di nuovo"?


9

Essere sostituibili, non è contro l'interesse di uno sviluppatore?

Hai ragione, ma penso che tu abbia frainteso il significato di sostituibile. Potrei trovare un migliaio di sviluppatori che scrivono codice frenetico, senza documenti che possono rapidamente trasformarsi in un pasticcio non mantenibile.

Uno sviluppatore che produce non solo programmi stabili, ma anche codice pulito, documentazione informativa e garantisce la continuità del progetto, non solo insostituibile, impagabile .


7

Affronterò questa domanda da una prospettiva diversa, poiché ci sono già diverse risposte eccellenti.

Considera cosa succede quando giochi a piccoli giochi cercando di renderti "insostituibile" e impedendo ad altre persone di imparare come funziona il tuo codice. Rimani nello stesso lavoro mantenendo i tuoi casini per tutto il tempo che la compagnia ti tollera. E questo è lo scenario migliore, lo scenario peggiore è che altri ingegneri e manager più etici e di talento nella tua azienda vedono l'impedimento che le tue pratiche povere impongono all'azienda e decidono di fare qualcosa al riguardo: licenziandoti e riscrivendo tutto da zero. È stato fatto. In effetti, è una cosa abbastanza comune che accada.

Ora considera cosa succede quando scrivi un buon codice e una buona documentazione. Si crea un componente o un sistema che funziona bene, che dopo un po 'di tempo in fase di elaborazione i bug funzionano senza problemi e difficilmente devono essere esaminati. Ci vuole poco sforzo per mantenerlo. È quindi possibile passare a progetti più grandi e migliori, con una solida vittoria alle spalle. Le persone ti riconosceranno per aver fatto un buon lavoro e inizieranno a rispettare la tua opinione. Avrai la possibilità di salire nella catena del cibo e prendere decisioni più significative, o fare lavori più importanti e di impatto, o gestire progetti di livello superiore. La tua carriera migliorerà, sarai promosso, guadagnerai di più, otterrai riconoscimento e approvazione da parte dei tuoi colleghi, aggiungerai sempre più successi di progetti sempre più importanti al tuo track record.

Quale percorso preferiresti?


4

Se sei l'unico punto di fallimento, il tuo cliente (o datore di lavoro) probabilmente cercherà di sostituirti; c'è sempre un punto in cui è meno costoso sostituire il software che mantenerlo, non importa quanto sembri essenziale. C'è una ragione per cui l'IT è una delle professioni più esternalizzabili.

D'altra parte, essere sostituibili offre numerosi vantaggi inestimabili:

  • poter andare in vacanza
  • non essere in guardia
  • libertà di partire e lavorare su un nuovo ed eccitante progetto

-1: se sei l'unico punto di fallimento, il tuo cliente (o datore di lavoro) probabilmente cercherà di sostituirti; - Non nella mia esperienza. Si prega di consultare la risposta di @evadeflow.
Jim G.

3

Se non impieghi 5 minuti a scrivere una breve documentazione, trascorri un'ora a rileggere e spiegarlo alle persone quando devono usare il tuo codice.

Ancora peggio potrebbe essere passare giorni alla ricerca di un nuovo lavoro perché il tuo capo ha scoperto che non stavi scrivendo codice gestibile.


3

La documentazione eccellente alla fine sarà obsoleta con refactoring / evoluzioni e tenerlo aggiornato richiede davvero molto tempo.

Codice pulito + test unitario> eccellente documentazione


1
Concordato. Non posso dirti a quanti progetti ho lavorato in cui tutti i membri del team (incluso me) hanno deciso che avremmo dovuto "farlo bene questa volta" e usare doxygen o CppDoc per documentare tutto e tenerlo aggiornato- Data. Non è ancora successo. Le pianificazioni del progetto sono quelle che sono, i documenti sarebbero inevitabilmente fuori sincrono rispetto al codice e la copertura del nostro test sarebbe minima o inesistente. Ora tendo a fissare le freccette verso chiunque suggerisca di usare doxygen e chieda loro di mostrarmi prima i suoi test. La documentazione per il codice senza alcun test è solo un pacchetto di bugie.
evadeflow,

Questo è un po 'a parte il punto: buoni test unitari sono la documentazione. Stai solo sostenendo una particolare varietà di codice pulito e documentato, senza dire che non dovrebbe essere fatto.
Cascabel,

2

La risposta alla tua domanda è sì". Sì, dovresti scrivere una buona documentazione e un codice pulito. Fare deliberatamente altrimenti mostra una mancanza di integrità, che, sebbene sempre più diffusa nel mondo degli affari, non è in qualche modo improvvisamente una cosa "buona".

Nessuno è insostituibile. Le persone che producono una situazione in cui pensano di essere tendono a scoprire nel modo più duro che non lo sono. Produrre una co-dipendenza per te è controproducente in quanto limita anche te, non solo il tuo datore di lavoro.


2

Uno degli obiettivi principali delle società di sviluppo software è aumentare il fattore Bus

Falsa premessa. Gli obiettivi principali di una società di sviluppo software (tutti quelli in cui ho lavorato, comunque) sono produrre il miglior software possibile e fare soldi, non necessariamente in questo ordine. Ridurre il "fattore bus" è solo un modo per evitare di perdere denaro.

Legge 11 Impara come mantenere le persone dipendenti da te.

Cosa significa questo per te?

Vuoi che le persone dipendano da te perché le hai minate in modo tale da poter andare avanti solo con il tuo aiuto? O vuoi che le persone dipendano da te perché sei intelligente e perspicace, affidabile, affidabile e in grado di aiutare anche gli altri a fare meglio il loro lavoro? Vuoi far sembrare cattivi i tuoi colleghi senza il tuo aiuto o vuoi che ti apprezzino per averli fatti stare bene?

È la tua chiamata.


1

(assumendo il codice di produzione)

Tendo ad andare un po 'oltre. Ho scritto di rendere i programmi "a prova di idiota", ma non sempre lo qualifico: scrivo un sacco di codice con cui altre persone non vedranno o lavoreranno (almeno, questa è l'attesa quando è scritta). iosono l'idiota da cui sto cercando di difendermi in quel caso. È una buona cosa quando il tuo programma rileva problemi per te e il problema è stato semplificato così tanto che è abbastanza ovvio che c'è un errore e la sua origine. La verità è che i dettagli di implementazione sono evidenti quando si scrive un programma (a meno che non lo si stia implementando prematuramente), ma dovrebbero essere astratti e resistenti agli errori per i client (anche quando esiste la località del modulo). Il motivo è che i programmi diventano molto complessi. A volte è possibile separare i problemi, ma non sempre. Se mantieni i tuoi componenti molto rigidi, semplici, ben incapsulati e a prova di idiota, tendono a ridimensionarsi bene e la maggior parte dei difetti vengono rilevati prima della spedizione. È più facile da riutilizzare e hai più fiducia e un tempo più facile riutilizzare i programmi. quei programmi complessi che scrivi diventano più complessi (anche a te) dopo un po 'di tempo lontano dal programma. Quando lo leggi in 6 mesi, può essere necessario un tempo assurdo per capire ed eseguire il debug rispetto alla versione a prova di idiota. Se un componente introduce un cambiamento di rottura, altrimenti potrebbe non essere rilevato per molto tempo. I programmi sono complessi; non puoi sfuggire a quella realtà, ma puoi renderla una prova idiota, il che renderà la tua vita molto più semplice quando qualcosa va storto o quando deve essere riutilizzato o modificato. Pertanto, l'approccio a prova di idiota significa che il tuo software può essere compreso, riutilizzato o mantenuto dai tuoi junior o da persone più nuove nel team (non solo qualcuno buono / esperto come te). La sostituzione è una preoccupazione separata: se le persone adorano lavorare con i tuoi programmi, stai facendo un buon lavoro - non non preoccuparti per la sostituzione. Certo, potrei inventare scenari in cui programmi incomprensibili potrebbero salvare il tuo lavoro, ma scrivere un buon programma che gli altri possono usare e mantenere è chiaramente il male minore (guarda le risposte degli altri). Se mi sorprendo a scrivere qualcosa che non è una prova idiota, provo a risolverlo.

A parte lo scenario, in cui hai bisogno di documentazione per te stesso per continuare un progetto dopo 6 mesi di pausa, qui sembra esserci un chiaro conflitto di interessi tra lo sviluppatore e la società di software.

Davvero non hai idea di cosa stavi pensando qualche volta quando rivisiti le implementazioni inattive. Quando sei veramente esperto, il problema è più semplice perché puoi fare più affidamento su metodologie o approcci consolidati che usi. Ciò, tuttavia, presuppone anche che queste metodologie siano invarianti. Anche se la documentazione può essere lenta, devi comunque essere difensivo nelle tue implementazioni (ad es. Sai meglio che passare NULL in questo scenario - prova quella condizione).

Quindi, come programmatore, dovresti davvero scrivere un'ottima documentazione e un codice facilmente leggibile per tutti; o dovresti scrivere codice e documentazione in modo tale che funzioni e tu stesso possa capirlo, ma un'altra persona potrebbe avere difficoltà a capirlo?

Raccomando l'approccio a prova di idiota, che è ancora più chiaro e più resistente agli errori rispetto all'approccio del fattore bus. Scrivi i tuoi programmi e la documentazione in modo tale che possano essere facilmente compresi da qualcuno esterno al progetto: è un bene anche per te. In questo modo aumenterai il tuo valore per la tua azienda e il tuo team, non vorranno sostituirti.


1

Hai fondamentalmente frainteso il gioco. Il gioco non è quello di continuare a fare le stesse vecchie cose che hai fatto prima, essendo responsabile di tutto il codice che hai scritto perché nessun altro lo capisce. Il gioco consiste nel completare un progetto e passare a quello successivo, lasciando il codice che qualcun altro può facilmente comprendere e lavorare in tua assenza in modo da poter fare cose nuove e assumersi responsabilità sempre più diverse. La tua premessa funziona solo se sei felice di essere bloccato a fare sempre la stessa cosa senza possibilità di imparare o migliorare.


1

Vorrei anche sottolineare che se non hai occasione di guardare quel codice molto spesso, anche tu avrai problemi a capirlo tra sei mesi se lo offuschi deliberatamente.


0

Documento quel piccolo codice che scrivo, non in modo che altri possano leggerlo, ma in modo che io possa leggerlo tra 3 mesi! Si tratta di semplificare la manutenzione. Se sei responsabile del codice che hai scritto e non riesci a correggere i bug che verranno visualizzati in seguito, allora vorrai che sia ben documentato ... È abbastanza irrilevante quanto tu sia sostituibile se non sei in grado fare il tuo lavoro!


-1: Perché non ti sforzi per auto-documentare il codice? Al contrario, nella migliore delle ipotesi, la documentazione ridondante e, nel peggiore dei casi, la documentazione che diventerà obsoleta molto rapidamente? Vedi la risposta di @xsAce.
Jim G.

0

Ogni professionista del computer "insostituibile" con cui ho avuto la sfortuna di interagire è stato sostituito, in gran parte perché stavano cercando di tenere in ostaggio le risorse dei loro datori di lavoro. Quando ho avuto persone che mi segnalavano che il loro tempo è prezioso per "sprecare" la documentazione, le sostituisco al più presto.

Sembrerebbe che se un potenziale dipendente considera le 48 leggi del potere accettabili dal punto di vista etico o morale, allora staresti meglio senza di esse.


-1: Quando ho avuto persone che mi segnalavano che il loro tempo è prezioso per "sprecare" la documentazione, le sostituisco al più presto.
Jim G.

@Jim G: Bello. Presumo che il tuo tempo sia prezioso per sprecare la documentazione ...
John Percival Hackworth,

0

Se vuoi davvero essere insostituibile (cosa che potresti voler riconsiderare dopo aver letto tutte le risposte ...) - perché smettere di non documentare il codice?

C'è una guida davvero brillante su come scrivere codice non mantenibile che dovresti assolutamente leggere: http://thc.org/root/phun/unmaintain.html

Godere! (Ho sicuramente fatto ...)


C'è anche "Refuctoring" :)
CraigTP
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.