Come creare un "culto della qualità" [chiuso]


21

DeMarco e Lister (Peopleware) suggeriscono di creare un "culto della qualità" all'interno del team di programmazione. Frustrantemente, non suggeriscono come si fa a farlo!

Qualcuno ha qualche idea su come realizzare questo?


1
Il tuo "culto della qualità" sarà efficace solo nella misura in cui il tempo lo consente. Quando il capo dice "Deve essere fatto entro venerdì" , sei costretto a rinunciare alla qualità per la velocità. Ovviamente questo non è ciò che i programmatori preferiscono. Idealmente preferiamo il tempo per garantire la qualità!
inverti il

1
@WesleyWerner: buon punto. Ma penso che un "culto della qualità" dovrebbe anche abbracciare la cura del debito tecnico, che risolverà (eventualmente) il problema del capo che lei menziona.
Talonx,

@invert: in genere rispondo in questi casi, che qui abbiamo una situazione analoga al teorema della PAC. Abbiamo qualità, velocità e forza lavoro, e lui può sceglierne due.
JensG,

Risposte:


37

La mia esperienza è che i team di sviluppo (ma in generale qualsiasi team) sono composti da 3 tipi di persone:

  • quelli con un drive integrato per la qualità,
  • quelli che ci sono solo per i soldi (birra / ragazze / qualunque cosa) e non potrebbero fregarsene di meno comunque cerchi di motivarli,
  • quelli "mediocri" (per mancanza di una parola migliore).

L'ultimo gruppo è il più grande e tendono a seguire il partito al potere. Se ci sono abbastanza persone di qualità nella squadra, possono attirare la maggioranza con se stessi, creando una forte spirale verso l'alto nello spirito di squadra e nella motivazione. Tuttavia, se ci sono troppi fannulloni, possono facilmente creare l'effetto opposto, una spirale di morte.

Quindi il compito principale per il manager è scegliere e mantenere le persone giuste e sbarazzarsi di quelle cattive al più presto . Tuttavia, non quelli "mediocri": potrebbero essere influenzati per iniziare a migliorare, per sostenere le buone idee di altri, e alcuni di essi potrebbero persino diventare dei trend setter positivi per conto proprio.

[Aggiornamento2] riflettendo sulla risposta di Alb : IMO non è necessario che gli sviluppatori di qualità siano in netta maggioranza all'interno del team (anche se non fa male :-). Esiste una "soglia di impostazione delle tendenze" , al di sopra della quale le opinioni e il comportamento di un sottogruppo possono rapidamente diventare il "mainstream" all'interno di una comunità , in modo che altre persone se ne accorgano e inizino a seguirle. Puoi vederlo nel lavoro nella società più ampia in ogni momento (ad es. Abitudini (non) di fumare, salute e diete, mode pop, alimenti biologici). La mia stima molto approssimativa è che può essere intorno al 25-30%, ma dipende da molti fattori. Questo è dove le persone cattive possono ferire molto. Anche un paio di persone cattive all'interno della tua squadra possono alzare significativamente questa soglia. [/ Update2]

Ovviamente non è sempre possibile assumere abbastanza dei migliori ragazzi. Quindi, quando la prima fazione non è abbastanza forte da guidare le cose da sola, il management deve aiutarle. Un paio di pensieri su questo:

  • Penso che Scrum abbia una buona idea per questo con le demo dei prodotti. Dimostrare la funzionalità che hai implementato di fronte a un pubblico composto non solo dai tuoi compagni di squadra, ma probabilmente dagli sviluppatori di altri team, gestione, persino gli utenti dell'app può essere un'enorme fonte di orgoglio e anche un forte fattore per aiutare la squadra a gelare.

  • Un'altra cosa è che il management ascolti seriamente il team di sviluppo per quanto riguarda la qualità. DeMarco e Lister menzionano persino che ci sono aziende / dipartimenti in cui i team di sviluppo hanno il veto su ciò che può andare in produzione. Se ritengono che l'app non sia ancora pronta per la prima serata, possono posticipare il rilascio indipendentemente da ciò che la gestione vorrebbe. Ora questo è difficile per il management, ma posso immaginare che costruisca lo spirito di squadra e comunichi fortemente il messaggio che la qualità è davvero importante qui, non solo a livello di parole.

  • Questo porta al punto successivo: per creare un "culto della qualità", il management deve comprendere a fondo ciò che gli sviluppatori più esperti sanno già: che la qualità non è un ripensamento, ma deve essere integrata nel prodotto fin dall'inizio. Quindi le persone dovrebbero essere incoraggiate a (e premiate per!) Pensando alla manutenibilità a lungo termine, cercando di trovare soluzioni valide , invece di soluzioni rapide .

Aggiornare

@Machado nel suo commento ha dato una nuova svolta alla domanda (almeno per me):

Cosa posso fare, come membro del team, non come manager, per migliorare la qualità del codice del mio team?

Alcuni pensieri:

  • Continua a studiare e diffondi le conoscenze a tutti coloro che ascoltano. Impara e usa le migliori pratiche nelle tue aree di competenza.
  • Sii orgoglioso del tuo lavoro .
  • Questi due ti permetteranno quasi naturalmente di diventare un modello di ruolo positivo per gli altri - specialmente i nuovi arrivati ​​e gli juniores -; essere consapevoli di ciò e sfruttare il proprio ruolo a vantaggio di tutto il team. Il modo migliore per influenzare gli altri è l'esempio positivo.
  • Guarda non solo il codice, ma l'intero processo di sviluppo del software; continuare a porre domande e fornire feedback per ottimizzare il processo di sviluppo .

E, ultimo ma non meno importante: trova un posto in cui puoi essere un "top guy" . Se sei nel gruppo "mediocre" in questo momento, sforzati di svilupparti - si spera che le idee di cui sopra ti aiutino. Ma se ti capita di essere negli "strati inferiori" della tua squadra attuale, ti consiglio di analizzarne i motivi. Che cosa ti demotiva? Cattive condizioni di lavoro? Compagne di squadra? Gestione? Tipo di lavoro? E cosa ti eccita e ti interessa? Potrebbe essere necessario parlarne con i colleghi e / o il capo. Oppure potresti aver bisogno di cercare un lavoro migliore - o anche una nuova professione - dove puoi iniziare a brillare. Non vale davvero la pena di dedicare una parte significativa della propria vita a un'attività insoddisfacente o deprimente.

Può anche essere che sei costretto a continuare il tuo lavoro attuale, non ottimale a causa di fattori esterni (mancanza di migliori opportunità di lavoro, necessità di pagare le bollette ecc.) - succede di tanto in tanto. Anche in questo caso, prova a trarne il meglio. Produrre un lavoro di qualità (per quanto le circostanze lo consentano) è una ricompensa in sé, che aiuta a mantenere la tua autostima e a mantenerti sano e aperto a lungo termine. Pertanto, quando appare un'opportunità per qualcosa di meglio, sei meglio preparato a prenderlo.


4
Un consiglio pericoloso. Cosa succede se l'OP appartiene al 2 ° / 3 ° gruppo? ;)

1
ottima risposta, non ci avevo mai pensato in questo modo, ma ha molto senso.
Alb

9
@Seviloper se lo fossero, non avrebbero letto DeMarco e Lister o fatto la domanda qui.
Alb

Pensavo che la domanda fosse più diretta dal punto di vista dei membri del team. Se il management desidera davvero la qualità, ascolterà i suoi sviluppatori principali / core. Cosa posso fare come membro del team e non come manager per migliorare la qualità del codice del mio team?
Machado,

1
@ Thorbjørn, ottima domanda! Ammetto che mi è mancato questo nella maggior parte dei miei posti di lavoro finora. Sperando di non sembrare troppo auto-esaltante, ho sempre cercato compagni di squadra da cui guardare e da cui imparare, ma raramente li trovavo. Quindi mi sono rivolto a libri e Internet. Per quanto è possibile, ho trovato modelli di riferimento in Martin Fowler, Zio Bob Martin e altri. E ultimamente nella comunità SO! È un posto fantastico per imparare. Anche un potente "fornitore di controllo della realtà". Le esperienze umilianti che rivelano limiti e lacune nella propria conoscenza possono essere difficili da prendere, ma sono molto salutari per me.
Péter Török,

2

Ottima risposta di Péter Török per evidenziare che lo farai solo con la maggior parte delle brave persone. Una volta che hai delle brave persone, devi mirare di più all'approccio alla carota piuttosto che al bastone. Responsabilizzare gli sviluppatori, far loro assumere la proprietà di progetti / attività e incoraggiare la concorrenza in termini di qualità, forse far sì che le persone facciano brevi presentazioni su come hanno migliorato la qualità nei progetti. I buoni sviluppatori saranno motivati ​​a impressionare i loro colleghi.


+1 Aspetti positivi sulla motivazione. Apparentemente ero incomprensibile riguardo alla maggioranza; Ho aggiornato la mia risposta per chiarire.
Péter Török,

2

Oltre ai commenti di Peter (che sono davvero il problema principale), è necessario assicurarsi che la qualità non sia una funzionalità che verrà aggiunta in seguito.

Più specificamente:

  • Rimuovi ogni traccia del pensiero "Lo ripuliremo più tardi". Invece, mettiti in gioco all'inizio per farlo nel modo corretto.
  • È necessario che le modifiche vengano riviste e elaborate attraverso una sorta di processo di controllo qualità che coinvolge qualcuno diverso dallo sviluppatore.
  • Forzare pensieri sulla qualità nelle prime fasi dei progetti. Durante lo sviluppo, tieni a fuoco cose come "quanto sia facile da mantenere per gli altri".
  • Tieni traccia e segnala i bug che si verificano. Se ci sono tendenze, guarda i modi per combattere la causa principale dei bug.
  • Introdurre il pensiero del software come un mestiere che può essere migliorato e qualcosa di cui i creatori possono essere orgogliosi.

1

Direi che il modo migliore è incoraggiare la qualità rispetto alla produzione. Questa è una delle premesse del movimento Lean Software (basato su Lean Manufacturing). Ho scritto un lungo post sul blog discutendo di cosa tratta Lean . Ti dico come creare un culto della qualità. Investi nei tuoi dipendenti e lasciali investire nella tua azienda (non un investimento monetario, ma piuttosto un investimento personale).

Dan Pink ha tenuto un grande discorso al TED su ciò che ci motiva. Mentre non lo fa riferimento in modo specifico. La Gerarchia dei Bisogni di Maslow spiega perfettamente il fenomeno osservato. Fintanto che il datore di lavoro risponde ai primi due bisogni (vale a dire pagare abbastanza denaro in modo che il denaro non sia un problema) tutto ciò che rimane è Appartenenza, stima e attualizzazione.

  • Fornire una solida comunità per l'appartenenza.
  • Fornire un ambiente in cui il dipendente si senta libero di commettere errori in modo da poter stimare la propria fiducia quando realizzano risultati.
  • Passa le redini ai tuoi sviluppatori in modo che possano prendere le decisioni importanti per l'autorealizzazione

La qualità non è qualcosa che può essere dettata ... piuttosto è abilitata. Affidati ai tuoi dipendenti per fare ciò che è meglio e farti strada. Alla fine, dovrai dire loro che devono andarsene. Piuttosto che chiedere loro di dedicare più ore

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.