Standard di codifica Python e. produttività

18

Lavoro per una grande organizzazione umanitaria, su un software per la costruzione di progetti che potrebbe aiutare a salvare vite umane in situazioni di emergenza accelerando la distribuzione del cibo. Molte ONG hanno disperatamente bisogno del nostro software e siamo in ritardo di settimane.

Una cosa che mi preoccupa in questo progetto è quello che penso sia un'eccessiva attenzione agli standard di codifica. Scriviamo in python / django e usiamo una versione di PEP0008, con varie modifiche, ad es. le lunghezze delle righe possono arrivare fino a 160 caratteri e tutte le linee dovrebbero andare tanto lunghe se possibile, nessuna riga vuota tra le importazioni, regole di ritorno a capo che si applicano solo a determinati tipi di classi, molti modelli che dobbiamo usare, anche se non lo sono il modo migliore per risolvere un problema ecc. ecc.

Un core dev ha trascorso una settimana a riscrivere una parte importante del sistema per soddisfare i nuovi standard di codifica, eliminando diverse serie di test nel processo, poiché la riscrittura significava che erano "non validi". Abbiamo trascorso due settimane a riscrivere tutte le funzionalità perse e a correggere i bug. È lo sviluppatore principale e la sua parola ha peso, quindi ha convinto il project manager che questi standard sono necessari. Gli sviluppatori junior fanno come gli viene detto. Sento che il project manager ha un strong sentimento di dissonanza cognitiva su tutto questo, ma ciononostante è d'accordo con esso con veemenza mentre si sente insicuro su che altro fare.

Oggi mi sono messo nei guai seri perché avevo dimenticato di inserire degli spazi dopo le virgole in un argomento di parole chiave. Sono stato letteralmente urlato da altri due sviluppatori e dal project manager durante una chiamata su Skype. Personalmente penso che gli standard di codifica siano importanti, ma penso anche che stiamo sprecando molto tempo ossessionandoli con loro, e quando l'ho verbalizzato ha provocato rabbia. Sono visto come un piantagrane nella squadra, una squadra che cerca capri espiatori per i suoi fallimenti. Dall'introduzione degli standard di codifica, la produttività del team è notevolmente diminuita, tuttavia questo rinforza solo l'ossessione, cioè lo sviluppatore principale blocca semplicemente la nostra mancata aderenza agli standard per la mancanza di progressi. Crede che non possiamo leggere il codice degli altri se non rispettiamo le convenzioni.

Questo sta iniziando a diventare appiccicoso. Ora sto cercando di modificare vari script, autopep8, pep8ify e PythonTidy per cercare di far corrispondere le convenzioni. Gestiamo anche pep8 contro il codice sorgente, ma ci sono così tante modifiche implicite al nostro standard che è difficile tenerne traccia. Il lead dev semplifica i difetti che lo script pep8 non raccoglie e ci urla nel prossimo stand-up meeting. Ogni settimana ci sono nuove aggiunte agli standard di codifica che ci costringono a riscrivere il codice esistente, funzionante e testato. Grazie al cielo abbiamo ancora dei test, (ho ripristinato alcuni commit e ho sistemato un gruppo di quelli che ha rimosso).

Nel frattempo aumenta la pressione per rispettare la scadenza.

Credo che una questione fondamentale sia che lo sviluppatore principale e un altro core deviano di non fidarsi degli altri sviluppatori per svolgere il proprio lavoro. Ma come affrontarlo? Non possiamo fare il nostro lavoro perché siamo troppo occupati a riscrivere tutto.

Non ho mai incontrato questa dinamica in un team di ingegneri del software. Ho sbagliato a mettere in discussione la loro adesione agli standard di codifica? Qualcun altro ha vissuto una situazione simile e come hanno affrontato con successo? (Non sto cercando una discussione solo le soluzioni reali che le persone hanno trovato)

    
posta Shroatmeister 29.08.2012 - 19:58
fonte

8 risposte

27

Gli standard di codifica non sono il problema. Il problema è che il management non riesce a capire quale sia il problema. Questo porta a "Fai qualcosa ... qualsiasi cosa!" modalità. Stai cercando una soluzione razionale, ma è un problema irrazionale. Il meglio che puoi fare è:

  • Dai critiche costruttive alle loro idee, ma una volta che la decisione è presa non piagnucerti continuamente.
  • Fai tutto il possibile per rendere più facile la riscrittura.
  • Smetti di stressare. Le scadenze perse sono problemi di gestione, non tuoi. Fai del tuo meglio, ma non assumerti la responsabilità delle loro decisioni sbagliate.
  • Se sai qualcosa che potrebbe aiutarti, diglielo. La tua menzione di standup fa sembrare che tu stia cercando di fare agilità, ma il resto non sembra molto agile. Vedi se riesci a fornire funzionalità limitate prima invece di provare a rispettare una grande scadenza con tutto. Crea storie utente per le riscritture, quindi è chiaro in che modo influiscono sul backlog.
  • Inizia a cercare un altro lavoro. Sul serio. Le aziende in tale stato non sono lontane dall'avvio di licenziare persone.
  • Prendi un po '"te l'ho detto" "T-shirt stampate: -)
risposta data 29.08.2012 - 22:05
fonte
7

Qualcuno deve decidere se la spedizione o l'aderenza agli standard di codifica è la vera priorità. So quale sarebbe la mia preferenza; se sta passando test di unità e accettazione, dico nave. Una volta spedito, l'azienda può decidere se dedicare o meno tempo e denaro per risolvere il debito tecnico.

I problemi con gli spazi dopo le virgole sono facilmente risolvibili con uno strumento di ottimizzazione del codice. Trova uno strumento che applica tutte le convenzioni di codifica ed esegui questo strumento su tutto il codice modificato prima che avvenga la generazione e il test. L'IDE decente lo fa già, mentre scrivi il codice.

    
risposta data 29.08.2012 - 20:03
fonte
4

Am I wrong to question their adherence to coding standards?

Dipende dal gruppo. Personalmente , penso che tutto dovrebbe essere messo in discussione. Alcuni ritengono che l'interrogatorio sia un affronto; che non mi fido di loro.

Has anyone else experienced a similar situation and how have they dealt with it successfully?

Ho chiesto come questi standard migliorino la produttività. Ho misurato il tempo trascorso a rovinare con gli standard contro 'ottenere cose fatte'. Alla fine, i poteri che si decide di attenersi agli standard. Succede. Mi sono lamentato di loro più strong del solito quando erano la causa per cui io non facevo cose fatte, ma per il resto focalizzavo sul mio lavoro. Combattere continuamente sulle cose non fa bene alla produttività ...

Se, come dici tu, le cose sono notevolmente peggiori a causa degli standard, quindi aderire agli standard dovrebbe invalidare l'argomento del lead e lasciare il tuo. Se le persone non riescono a vedere quella (in gran parte) correlazione oggettiva tra l'implementazione dello standard e il calo della produttività, allora non c'è molto altro da fare. Impara ad affrontarlo, e se non puoi, cerca un posto meno burocratico.

    
risposta data 29.08.2012 - 20:12
fonte
3

Gli standard sono qualcosa che non dovrebbe essere messo in atto in un progetto tardivo con una scadenza incombente. È qualcosa che avrebbe dovuto essere messo in atto all'inizio del progetto o quando c'è tempo da dedicare al programma del progetto (preferibilmente dopo la spedizione iniziale) per il refactore del codice (potenzialmente) di grandi dimensioni.

Se questo è stato effettivamente inserito in ritardo nel progetto, allora è un errore commesso dal tuo protagonista (IMHO).

Tuttavia , questo non significa che se non sei d'accordo con il tuo lead, dovresti procedere con l'ammutinamento. Questo è il tuo lavoro . Lavori come team . Hai un lead . Ci dovrebbe essere sicuramente un certo livello di democrazia nella squadra, ma alla fine il comando è il dittatore. Se dice di fare qualcosa, lo fai.

Alla fine, nel conformarsi alle sue richieste e ai suoi standard, non gli dai un facile capro espiatorio per le scadenze mancanti.

Inoltre, sono un eminente difensore degli standard di codifica (specialmente quando cresce la dimensione di un team), ma dovrebbero essere implementati quando ha senso.

    
risposta data 29.08.2012 - 20:58
fonte
1

La tua domanda era "Ho sbagliato a mettere in discussione la loro adesione agli standard di codifica?". link (per linguaggio di programmazione C) ha alcuni studi di riferimento sul valore delle linee guida di codifica. Vedere la sezione 9 a partire da pagina 39.

Gli standard di codifica sono implementati per una ragione. Una cosa che sembra mancare dalla domanda originale è comprendere il motivo di questi standard particolari sul particolare progetto (o nella particolare organizzazione). La decisione di implementarli sul codice esistente era basata su una logica. Senza conoscere la logica, è difficile commentare la "bontà" di questa decisione.

In secondo luogo ciò che qualcuno ha detto che gli standard sono implementati per la "produttività a lungo termine" - problemi come la manutenibilità del codice. Forse si è verificato un evento che ha provocato gravi danni al progetto a causa di confusione e fraintendimenti.

Sembra che ci siano un sacco di emozioni da entrambe le parti - prova ad arrivare a una discussione ragionata.

    
risposta data 30.08.2012 - 05:42
fonte
1

Come probabilmente avrai visto nelle altre risposte e nei commenti, il tuo progetto ha grossi problemi, quindi quello che sto per suggerire non ha grandi possibilità di successo, ma è qualcosa che puoi provare senza un rischio troppo grande per quanto riguarda la tua pelle.

Chiedi un incontro tra i quattro occhi con il tuo sviluppatore principale. Di 'che sei interessato a comprendere a fondo i vantaggi di essere così severi con lo standard di codifica e perché la base di codice era in una forma così pessima prima di introdurli. È molto importante mantenere un atteggiamento molto aperto e "Sto cercando di imparare" durante questa discussione. Probabilmente il tuo lead developer è già più stressato di te o di chiunque altro nella tua squadra, e sarà probabilmente molto difensivo non appena sentirà un odore critico.

Cerca di spingere la discussione nella direzione di cercare di capire come raggiungere il tuo obiettivo comune; fornire prontamente software funzionante e gestibile.

Ad esempio, alcuni frutti a foglia bassa non aggiungono altro alle linee guida sulla codifica. Ogni volta che ciò accade, il codice che in precedenza rispettava le linee guida non funziona più e ciò comporta che è necessario riscrivere blocchi di codice. Speriamo che il tuo lead dev possa vedere che anche se la regola aggiunta aggiunge valore (dal suo punto di vista), potrebbe non essere tanto utile quanto motivare la riscrittura in questa fase del progetto già in ritardo.

Se funziona, puoi provare a fargli rimuovere le regole più arbitrarie che non possono essere autoformate con qualche strumento.

    
risposta data 30.08.2012 - 08:25
fonte
-2

Gli standard di codifica sono buoni. Cambiare gli standard di codifica è costoso (beh, è costoso se li rendi meno permissivi, se una modifica allo standard lascia tutto il codice esistente ancora conforme, non è un problema), quindi dovrebbe essere fatto solo quando assolutamente necessario.

Una cosa è, forse, avere il lead controllare tutto il codice prima di commit / merge / whatever per assicurarsi che sia conforme allo standard, dal momento che apparentemente la catena di strumenti esistente sembra non essere in grado di controllarlo automaticamente.

    
risposta data 29.08.2012 - 22:41
fonte
-3

software that could help save lives in emergencies by speeding up the distribution of food

Credo in buoni standard di programmazione, ma credo anche che salvare vite sia molto più importante.

La tua priorità più grande deve essere salvare la vita delle persone . Immagina se questo software distribuisce cibo alla tua famiglia o alla tua squadra. Tutto il resto può venire dopo.

La buona notizia: hai dei test. I test ti aiuteranno a rispettare gli standard di codifica senza compromettere la funzionalità, ma ciò dovrebbe accadere dopo la spedizione , non prima.

    
risposta data 30.08.2012 - 09:22
fonte

Leggi altre domande sui tag