Come approccio un collega alla sua qualità del codice? [duplicare]

47

Lavoro su una nuova impresa in una grande azienda di software aziendale (più di 3000 programmatori). Nel mio gruppo, abbiamo un sacco di progetti e le persone di solito lavorano su diversi progetti nel corso di un anno.

Ho appena iniziato a lavorare su un progetto che è stato precedentemente gestito da un mio amico (consulente che è stato con noi per 3+ anni) per aggiungere alcune funzionalità. Ho inserito il codice e la qualità era davvero scarsa. Sia che si trattasse del frontend dell'interfaccia utente o del backend dei servizi, il codice semplicemente non era rientrato, c'erano centinaia di righe commentate senza una ragione apparente, la documentazione era praticamente inesistente, gli standard di codifica non erano applicati in modo coerente (ad es.camelCase e under_scored_variables ), i nomi delle variabili erano inintelligibili, le scelte dei tipi di dati erano sbagliate, ecc. ecc.

Sono una persona non conflittuale, quindi non voglio attaccare il mio collega, ma non voglio nemmeno andare dal mio capo e lamentarmi della sua prestazione. Quali sono i tipi di cose che potrei dire per dire gentilmente che il codice è scarsamente strutturato?

Modifica

Voglio chiarire che, mentre capisco, c'è un elemento di "Il codice di tutti gli altri fa schifo" a tutti i programmatori, quando vedo qualcosa di simile (i nomi vengono scelti di proposito e alcuni dettagli lasciati / modificati in questo esempio):

public void doCalculate(Object argument) {
  if (argument instanceof String) {
    String argument2 = (String) argument;
    if (argument2 == "DataBase") {
      // do something
    } else {
      long argument3;
      try {
        argument3 = Long.parseLong(argument2);
      } catch (Exception e) {
        argument3 = -1;
      }
      // do something completely unrelated
    }
  }
}

Penso che sia obiettivamente corretto dire che questa è not una buona idea. Inoltre, non ho a che fare con un principiante qui (sto solo codificando da 3 anni). Ha forse 20 anni di esperienza su di me. Il consiglio che avete dato finora è grandioso; voglio solo assicurarci che non stiamo parlando di una "linea sottile" qui.

    
posta daveslab 11.01.2012 - 18:27
fonte

11 risposte

44

Chiedigli di spiegarti il suo codice

Digli che non hai mai visto X programmato in quel modo prima e chiedigli perché lo codifica in quel modo. Mostragli il modo in cui lo codifichi e spiega perché lo fai in questo modo (best practice, prestazioni migliori, meno possibilità di errori, più facile lettura / manutenzione per altri programmatori, ecc.)

Assicurati di preparare tutti i tuoi argomenti in anticipo e concentrati sul motivo per cui il tuo metodo è il migliore, invece del perché il suo metodo è il peggiore. Dopo, vedi se supporta ancora il suo metodo sul tuo.

Se è aperto al miglioramento, probabilmente cambierà il suo modo di programmare. Se preferisce ancora usare il suo stile di codifica sui tuoi, non è probabile che cambi la sua opinione.

Questa è esattamente la stessa risposta che ho dato per la domanda Come dire al tuo capo che il suo stile di programmazione è davvero pessimo? . Inizialmente avevo votato per chiudere questa domanda come un duplicato, tuttavia la gente pensava che fosse abbastanza diverso da riaprirlo. La mia risposta è sempre la stessa, indipendentemente dal fatto che tu stia parlando con un capo o un collega di lavoro.

    
risposta data 11.01.2012 - 20:02
fonte
14

E se invece di avvicinarti a lui personalmente, ti avvicini al team e in un modo completamente neutrale, proponi al "team" di elaborare uno standard / linee guida di codifica come modo per i diversi membri del team di lavorare in modo più efficiente con il codice dell'altro.

Una volta implementato, penso che il codice di cui si ha dubbi diventerà il massimo da solo.

Le revisioni del peer code aiutano anche in quest'area. Gli standard di codifica non hanno molti vantaggi se nessuno guarda mai il codice. Ma le revisioni del peer code hanno molti altri vantaggi, il primo è un trasferimento di conoscenza, quindi dovresti spingerti ad introdurli in entrambi i casi.

Suppongo che anche se hai più di 3000 ingegneri, voi ragazzi avete MOLTO gruppi secondari più piccoli che lavorano insieme come un'unità

    
risposta data 11.01.2012 - 20:01
fonte
11

Per prima cosa, tutti pensano che il codice degli altri faccia schifo.

In secondo luogo, forse ha ereditato il codice da qualcuno / da qualche altra parte O questo era un prototipo che non è mai stato inteso come il codice utilizzato per il progetto attuale, ma ovviamente è quello che è finito per essere usato.

In terzo luogo, forse il suo codice fa davvero schifo, ma è il tuo lavoro sfidare gli sviluppatori precedenti? A meno che tu non abbia costruito una reputazione che comanda il rispetto per l'azienda, sospetto che se tu piagnucoli del codice dell'altra persona, sei tu che finirai per sembrare cattivo e non il tuo amico. Il momento di dare alle persone dolore per il loro codice è quando si tengono le recensioni del codice. Almeno allora fa parte delle tue responsabilità lavorative.

Raccomando che se non ti piace il suo codice, correggilo a tuo piacimento. Quindi il prossimo sviluppatore arriverà e si lamenterà del tuo codice e probabilmente lo cambierà per renderlo più simile a quello che ha fatto il tuo amico.

    
risposta data 11.01.2012 - 20:14
fonte
11

Probabilmente il tuo collega non è la causa principale del problema nella tua azienda. La ragione per cui il codice di scarsa qualità entra in produzione è la mancanza di standard di codifica automaticamente misurabili nella vostra azienda. In questo caso, la luce solare è la migliore medicina.

Dovresti parlare con il tuo responsabile tecnico sull'implementazione di metriche di qualità del codice sorgente automatizzate nel tuo gruppo. Il sistema dovrebbe funzionare almeno settimanalmente, inviare via e-mail a tutti i membri del team un elenco file per file delle violazioni standard di codifica e inviare un sommario esecutivo al proprio capo. Il riepilogo dovrebbe contenere il numero di violazioni per progetto.

Nella mia esperienza, tutto ciò che viene misurato e segnalato a un boss migliora nel tempo.

    
risposta data 11.01.2012 - 20:16
fonte
11

...the code simply wasn't indented, there were hundreds of lines commented out for no apparent reason, documentation was basically non-existent, coding standards weren't applied consistently (e.g. mixing camelCase and under_scored_variables), variable names were unintelligible, datatype choices were wrong...

Per quanto posso dire, sopra le partite # 12, # 9, # 5, # 2 e probabilmente # 7 di Top 12 cose che potrebbero essere ascoltate se hai un programmatore Klingon (archivio) [ link originale ] :

12. Specifications are for the weak and timid!
11. This machine is a piece of GAGH! I need dual Pentium processors if I am to do battle with this code!
10. You cannot really appreciate Dilbert unless you've read it in the original Klingon.
9. Indentation?! - I will show you how to indent when I indent your skull!
8. What is this talk of 'release'? Klingons do not make software 'releases.' Our software 'escapes,' leaving a bloody trail of designers and quality assurance people in its wake.
7. Klingon function calls do not have 'parameters' - they have 'arguments' - and they ALWAYS WIN THEM.
6. Debugging? Klingons do not debug. Our software does not coddle the weak.
5. I have challenged the entire quality assurance team to a Bat-Leth contest. They will not concern us again.
4. A TRUE Klingon Warrior does not comment his code!
3. By filing this PTR you have challenged the honor of my family. Prepare to die!
2. You question the worthiness of my code? I should kill you where you stand!
1. Our users will know fear and cower before our software! Ship it! Ship it and let them flee like the dogs they are!

È molto probabile che l'unico modo per evitare lo scontro sia un azionamento a curvatura in un altro quadrante spazio .

    
risposta data 12.01.2012 - 14:04
fonte
3

Fai un po 'di informazioni su cosa stava succedendo all'interno dell'azienda e del team quando questo progetto è stato scritto. Chiedete a questo dev per un feedback su come ha pensato che il progetto è andato. Il suo stile è cambiato? Se ne avessi l'opportunità, cosa farebbe in modo diverso?

Potrebbe essere d'accordo con i tuoi standard, ma non ha avuto il lusso di applicarli durante la creazione di questa app o semplicemente non li sapeva.

O il tuo gruppo non ha norme o criteri di revisione del codice o un problema serio con l'applicazione. Potresti avere un'opinione di uno.

    
risposta data 11.01.2012 - 20:32
fonte
3

Lo ammetterò, a volte sono quel tipo. Quando sarò, avrò le mie ragioni, di solito limiti di tempo, progetti di marcia della morte, istruzioni come "ora, non perfetto" ecc. Molto raramente, è a causa di una brutta giornata. Sono felice di essere interrogato su qualsiasi problema, mi dà la possibilità di diventare uno sviluppatore migliore. A condizione che tu sia ragionevole riguardo a ciò che verrà modificato (non è molto rotto, accetta di non risolvere), e b) non sei un dittatore del lavoro che crede che il tuo modo sia l'unico modo.

Per avvicinarmi a questo proposito, non chiedere "Perché". Perché è una parola di combattimento, una sfida, ed è in definitiva distruttiva. Se ti ritrovi a usare troppo Perché, cambialo in I. "Perché hai chiamato questa x" diventa, "avrei usato indice, è più descrittivo di x".

Il modo migliore è dichiarare ciò che avresti fatto o avresti preferito. Spiega che ciò che stai vedendo non soddisfa determinati standard e che vorresti vederlo migliorato. La mia ipotesi è che il 99% delle volte la risposta sarà "così vorrei, ma ........"

    
risposta data 11.01.2012 - 21:42
fonte
1

È improbabile che l'autore del codice torni a correggere il suo codice per pura buona volontà, o che il datore di lavoro lo paghi per farlo. Quindi, in entrambi i casi, sei scr / wed.

Se ritieni che il disordine del codice abbia un grave effetto negativo sulle tue prestazioni mentre lavori su di esso, assicurati di salvare un backup del codice originale da qualche parte in modo da poter dimostrare che era un disastro quando è stato consegnato a voi. Quindi, se il tuo datore di lavoro ti affronta in un secondo momento a causa delle tue scarse prestazioni, puoi coprirti il culo.

Tuttavia, potrebbe sembrare una scusa al tuo datore di lavoro, quindi cerca di evitare anche quello che succede se puoi.

    
risposta data 11.01.2012 - 18:35
fonte
1

Pensa a cosa gli ha fatto bene menzionare che ha uno stile di codifica sbagliata?

Forse è meglio provare a migliorare le procedure di controllo qualità della tua azienda.

    
risposta data 11.01.2012 - 18:35
fonte
1

Devi scoprire due cose: qual è il tuo obiettivo? Come ti piacerebbe essere contattato da solo?

Se il tuo collega, con oltre 20 anni di programmazione alle spalle, è davvero molto aperto, puoi semplicemente parlare con lui e indicare esempi specifici, dirgli perché ti hanno guardato male e discutere le alternative. Perché è davvero, veramente aperto e desideroso di imparare, ascolterà, ne seguirà una discussione e capirà i tuoi punti e vivrai per sempre felici e contenti.

Nella mia esperienza, però, il collega è molto probabilmente programmatore del genere perché non si preoccupa solo dello stile. Potrebbe essere perché ha davvero sbagliato lavoro, o potrebbe essere perché, in oltre 20 anni di programmazione, non ha mai trovato una ragione per preoccuparsene - forse il suo codice funziona e si muove.

Se quest'ultimo è il caso, stai solo andando a sprecare il tuo e il suo tempo, e potresti intaccare la tua relazione se si trasforma in una discussione. Quindi qual è il tuo obiettivo qui?

Vuoi che pulisca il suo codice in modo che tu possa lavorare su un codice migliore? Vuoi che impari e migliori? Vuoi sentirti bene per essere un programmatore migliore? Vuoi che il tuo capo sappia che sei un programmatore migliore di lui?

Il primo non succederà e il terzo è già stato stabilito, anche se probabilmente vorresti che lo riconoscesse anche lui, buon amico, figura paterna?

Se vuoi davvero che impari e migliori, allora scopri come vorresti essere affrontato nella situazione inversa, e fare lo stesso. E scopri cosa ti infastidirebbe e assicurati di non farlo.

Il quarto è facile: vuoi uno stipendio migliore e poi lo chiedi solo durante il prossimo meeting di feedback (non importa quanto sei bravo in questo settore) o vuoi più responsabilità e poi tu continua a fare un buon lavoro fino a quando non lo ottieni.

    
risposta data 18.01.2012 - 09:09
fonte
0

Suggerisci al tuo capo che hai visto qualche codice pazzo e chiedigli di mettere tutto il personale possibile in alcuni corsi di programmazione. Penso che dovrebbe essere consapevole del fatto che le sue app sono piene di codice scadente.

    
risposta data 12.01.2012 - 10:46
fonte

Leggi altre domande sui tag