Come si disarma un programmatore di cowboy? [chiuso]


37

Ho trovato una domanda (codice cowboy nella squadra), ma era più correlata a "Ninja Coder" rispetto al problema che ho.

Ho un membro del team che è un puro esempio vivente di " Cowboy Coder ". Capisco che non si può cambiare la gente, ma è un modo per farlo smettere di comportarsi come un "Cowboy Coder"?

Rifiuta di ascoltare il team e recentemente ha interrotto le revisioni del codice, i test delle unità, la condivisione dei dettagli di implementazione, ecc.

Sì, "codifica" velocemente, ma il suo codice è solo un generatore di bug. Gli altri membri del team e io siamo in una "fase di correzione degli errori" e l'80% dei bug proviene dal suo codice. Non voglio riparare i suoi bug. E il management è cieco, o non vuole vederlo, o forse gli piace la sua "velocità".

C'è un modo in cui io (come suo collega più giovane per età, non come capo) posso fare qualcosa al riguardo?

Come posso disarmare questo programmatore di cowboy?

Mi sento come se fossi l'ultimo a cui interessa davvero il progetto.


17
Questo ragazzo ha bisogno di correggere i propri bug. Perché non tutti gli sviluppatori sono tenuti a passare attraverso le revisioni del codice?
programmatore

8
Sotto l'autorità di chi ha interrotto le revisioni del codice?
Otávio Décio,

14
Quindi ... non ne hai uno che gestisce questa cosa. Questo è il tuo problema, non il programmatore di cowboy.
Otávio Décio,

3
In tal caso, Scrum è un processo buono a nulla. Quando tutti sono in carica nessuno è in carica e il prodotto soffre dell'effetto spettatore.
Otávio Décio,

7
Ma come possiamo disarmare i cowboy "vicino al filo" ...
Rig,

Risposte:


22

Vedo alcune opzioni:

  • Avvicinati al programmatore con le tue preoccupazioni. Deve essere fatto come critica costruttiva con punti specifici. Prima di fare passi più grandi è opportuno sollevare preoccupazioni direttamente e in privato per dare alla persona l'opportunità di cambiare.
  • Raccogliere informazioni e statistiche e portarle alla gestione. La gestione potrebbe non interessare, ma spesso è importante fare lo sforzo nel caso funzioni. Le possibili conseguenze negative includono l'alienazione di altri che non apprezzano i reclami alla direzione.
  • Trova un collega del programmatore di cowboy e discuterne in privato. Potrebbe avere maggiori possibilità di far ascoltare la persona.
  • Chiedi di lavorare su un altro team. Non risolverà il problema ma manterrai la tua sanità mentale. Per lo meno, lavora sempre al meglio delle tue capacità e non lasciarti trascinare verso il basso.
  • Lasciare l'organizzazione se nessuno ascolterà. Sembra un brutto ambiente.

6

Rifiuta di ascoltare il team e recentemente ha interrotto le revisioni del codice, i test delle unità, condividendo i dettagli dell'implementazione ...

Le revisioni del codice non richiedono necessariamente che il programmatore invii il lavoro per la revisione.

Un modo semplice per tenere traccia di ciò che fa è tenere d'occhio la storia di VCS, cercando i suoi check-in. Se sei preoccupato per il suo codice, questo è un modo semplice per trovarlo. Ottieni una cronologia delle differenze, guarda cosa ha inserito e vedi se qualche bandiera rossa salta fuori da te. Prendi i suoi check-in abbastanza velocemente e se trovi un problema, puoi ripristinare il commit e inviarlo via e-mail in tal senso. Ti è permesso chiamare i tuoi compagni di squadra, anche come programmatore junior, quando vedi qualcosa che ovviamente non va.

Sì, "codifica" velocemente, ma il suo codice è solo un generatore di bug. Gli altri membri del team e io siamo in una "fase di correzione degli errori" e l'80% dei bug proviene dal suo codice. Non voglio riparare i suoi bug. E il management è cieco, o non vuole vederlo, o forse gli piace la sua "velocità".

Il codice deriva dai requisiti. I requisiti comportano test eseguibili che verificano che i requisiti siano stati soddisfatti. Tali test possono essere ulteriormente suddivisi e possono essere scritti prima che vengano apportate modifiche per verificare che le modifiche soddisfino i requisiti (refattore rosso-verde; l'essenza del TDD).

Aggiungi una metrica "copertura del codice" al server di build del tuo team (si spera che tu ne abbia uno; in caso contrario, questo è il tuo primo problema). Il semplice controllo del superamento dei test unitari non colpirà i problemi con il suo nuovo codice non TDDed, realizzato in aree che non hanno test unitari. Dopo aver eseguito tutti i test unitari, il server di generazione dovrebbe idealmente aver eseguito ogni riga di codice, ma in realtà ci sono alcune cose che non si possono testare. Realisticamente, dovresti comunque aspettarti una copertura del 95% o superiore (o escludere determinate biblioteche o tipi di file dalla copertura). Prima o poi, il tuo cowboy controllerà qualcosa che rompe la build perché ha abbassato il livello di copertura sotto la soglia e lo chiami.

E per quanto riguarda la "velocità", la velocità è la velocità con cui fai "fare" le cose, e non viene "fatto" fino a quando non viene fatto correttamente. Puoi metterlo ai tuoi manager in questo modo; considera un meccanico che, quando il manager prende la sua BMW per ottenere un cambio d'olio, si dimentica di rimettere il tappo della coppa dell'olio, e di conseguenza tutto il nuovo olio fuoriesce prima ancora di uscire dal garage. Certo, il cambio dell'olio è durato solo cinque minuti, ma il gestore non se ne preoccuperà quando il motore della sua auto si bloccherà sulla strada di casa. Si preoccuperà che il meccanico abbia perso un passo, che gli costerà molto tempo e denaro in più da sistemare. In questo momento, sta pagando un cowboy per fare il lavoro molto velocemente, e poi ' s pagando al resto della squadra una somma molto più grande per entrare e rifare il lavoro correttamente. Qual è, in realtà, il vantaggio di continuare a lasciare che il cowboy faccia la sua cosa?

C'è un modo in cui io (come suo collega più giovane per età, non come capo) posso fare qualcosa al riguardo?

Chiamalo fuori. Quando trovi qualcosa che ha rovinato, mostragli come il suo codice non sta funzionando, come avrebbe potuto prevenire il problema in primo luogo (inclusi design appropriato, TDD, recensioni di codice) e cosa dovevi o ti sarà richiesto di fare di conseguenza per correggere il suo codice non funzionante.

Mi sento come se fossi l'ultimo a cui interessa davvero il progetto.

i clacson squillano, le luci lampeggiano, le sirene gemono - se ti senti davvero come se fossi l'unica persona che si preoccupa della qualità del codice prodotto dal team, allora c'è un problema SERIO. Se senti che stai cercando di trascinare l'intera squadra a calciare e urlare nell'era del buon codice, ed è troppo pesante da trasportare, quindi lascialo cadere. Se c'è un altro team dell'azienda che lo sta facendo nel modo giusto, chiedi un trasferimento, altrimenti esci.


5

Vai alla gestione con le tue statistiche su quanti bug / problemi provengono da questo sviluppatore. Spiega loro che correggere i loro bug influenza la produttività della tua squadra. Se effettivamente l'80% dei problemi proviene da una sola persona, è necessario risolverlo sicuramente. Fintanto che lo spiegherai al management in termini con cui possono concordare (cioè "il tempo sprecato è denaro sprecato"), interverranno.

Inoltre, questo sviluppatore dovrebbe correggere i propri bug / problemi, quindi potrebbe essere utile assegnare loro questi problemi. La tua squadra non dovrebbe coprire questa persona.


4

C'è un modo in cui io (come suo collega più giovane per età, non come capo) posso fare qualcosa al riguardo?

La pressione dei pari e l'esempio sono gli unici buoni modi. I modi migliori sono fatti dal loro capo / capo. Se non sei il loro capo / capo, parla con quelli che lo sono. Ma alla fine è loro compito occuparsene, non il tuo. Assicurati di fare un buon lavoro e che le cose tendano a risolversi da sole.


1
Il programmatore di cowboy potrebbe essere immune dalla pressione, se il management non capisce il suo vero impatto potrebbero essere accecati dal suo impatto percepito.
mhoran_psprep,

Può difendere molto bene i suoi errori prima della gestione, in modo che grandi bug o problemi appaiano piccoli alla direzione, ma alla fine il codice rimane rovinato. E questo è qualcosa che alla direzione non interessa.
Adronius,

2
@mhoran_psprep - Oh certamente. Non mi aspetto che abbia successo , ma penso anche che cercare di sistemare le cose, altrimenti sarebbe più rischioso per quanto riguarda le conseguenze negative. Fare una confusione gigantesca al riguardo è un modo semplice e veloce per farsi ostracizzare, specialmente se le percezioni del OP sul cowboy sono imprecise.
Telastyn,

0

Rifiuta di ascoltare il team e recentemente ha interrotto le revisioni del codice, i test delle unità, condividendo i dettagli dell'implementazione ...

Non hai un percorso documentato per il codice attraverso revisione, test e implementazione? In caso contrario, hai un problema più ampio. Se lo fai, allora questo è qualcosa che deve essere intensificato.


Certo, abbiamo tonnellate di processi e documenti. Ma riguarda le persone come le usano .
Adronius,

Ma nulla dovrebbe entrare in produzione senza acquisire l'approvazione rilevante. Mi stai dicendo che aggira il normale controllo del cambiamento?
temptar,

Non esattamente, ma in un certo senso. Apporta modifiche al codice, quindi esegue i passaggi "formali" per eseguire la revisione del codice = usa solo alcuni strumenti, quindi il codice ha "rivisto" il flag o chiedi al suo compagno (che non si preoccupa del codice) di "rivedere" il suo codice. Quindi "spiega" il codice in un minuto e il gioco è fatto. Huray, e va a presentare le modifiche.
Adronius,
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.