Come fermare la doratura e accontentarsi di rilasciare sviluppi funzionanti [chiuso]


29

Il team di sviluppo di cui faccio parte si è recentemente adattato per lavorare secondo le pratiche Agile. Ciò ha messo in evidenza personalmente il fatto che non riesco a fermarmi il codice di doratura (e la documentazione) e di conseguenza supero le stime originali, quando avrei potuto fornire soluzioni che soddisfano i requisiti molto prima.

Penso che la mia etica sia al limite dell'ossessivo in quanto divento troppo attaccato al mio codice e raramente mi accontento di rilasciarlo prima di averlo rifattorizzato e perfezionato all'ennesima potenza. Sono felice di averlo capito, ma come posso cambiare il mio atteggiamento / mentalità per accontentarmi dei miei progressi e liberarmi in tempo?


7
Definire la doratura. Per me, la doratura sta aggiungendo cose inutili (in termini magri, producendo rifiuti come funzionalità non necessarie, troppa documentazione o documentazione senza valore aggiunto). Sembra che tu non stia aggiungendo cose che non sono necessarie, ma stai solo impiegando del tempo a effettuare il refactoring anziché a eliminare nuovi prodotti di lavoro.
Thomas Owens

Con doratura intendo sforzarmi di perfezionare un design (forse per cercare di incoraggiarne il riutilizzo in futuro) che soddisfi già i suoi requisiti, non necessariamente aggiungendo nuove funzionalità.
Andy Bowskill,

Cosa pensa il tuo capo?
JeffO,

Risposte:


22

Il migliore è il nemico del abbastanza buono.

Puoi sempre fare più test, scrivere una documentazione migliore, scovare quei casi angolari, compilare ciò che ritieni manchino le funzionalità, rendere l'architettura più pulita. Non finisce mai. Tuttavia, deve finire. Ci sono date di scadenza che devono essere rispettate, vincoli esterni che dipendono dalla tua parte del prodotto finito. La ricerca della perfezione in una piccola parte di un prodotto danneggia il prodotto nel suo insieme.


2
Grazie David, questo mi ricorda molto una citazione pertinente che ho letto di recente: "Perfetto è il nemico del fatto".
Andy Bowskill,

1
Dato che l'originale è in francese (Voltaire), è un po 'difficile dire quale versione sia "corretta" - a meno che uno non l'abbia scritto in francese, cioè.
David Hammen,

24

Prima di tutto, vorrei che più sviluppatori avessero questo problema, non perché il software sarebbe stato rilasciato più tardi del previsto, ma perché probabilmente sarebbe stato un rilascio di qualità superiore.

Se stai superando le tue stime originali, forse devi includere i tuoi passaggi di "doratura" come parte delle tue stime. Se non sono le tue stime, forse dovresti essere coinvolto nella loro formulazione.

In ogni caso, se hai una scadenza di rilascio, dovresti attenervi. Qualsiasi "placcatura in oro" dovrebbe essere lasciato come un passaggio finale che non dovrebbe contenere un rilascio. Se ritieni che debba essere incluso come parte di una versione, considera di aggiungere la "placcatura in oro" nel tuo tempo libero (cioè al di fuori dell'orario di lavoro).

Quello che dovresti fare è portare i tuoi passaggi di "doratura" al tuo team e / o al tuo management e discutere del perché ritieni che siano importanti. Se riesci a convincerli che questi passaggi sono utili, dovrebbero diventare parte delle versioni future.


Grazie Bernard, un buon consiglio. Sì, ciò evidenzia anche i tempi e i costi rispetto alla qualità del trade-off del prodotto finale.
Andy Bowskill,

@AndyBowskill, sto avendo questo stesso problema. Cosa stai facendo adesso?
datasn.io

14

Software placcato in oro

La prima volta che ho visto la placcatura in oro usata come descrizione per il software è stata in un articolo di Barry Boehm in cui ha dato la seguente causa principale:

Placato in oro. Le specifiche dei requisiti fissi prima della progettazione tendevano a incoraggiare la doratura del software. Gli utenti che chiedevano quali fossero i loro requisiti spesso ragionavano: "Non so se avrò bisogno di questa funzione o meno, ma potrei anche specificarla per ogni evenienza".

Nella sua descrizione, raccomanda di utilizzare i metodi descritti nella sua ricerca, incluso il modello del ciclo di vita del software a spirale in cui i progetti erano mirati a produrre una serie di prototipi uno per ciclo e, man mano che le spirali si ingrandivano, un prodotto completo. Spiral ha avuto un'influenza diffusa tra i ricercatori di software ed è stato un importante ponte tra la cascata e Agile. Un limite critico della spirale è che ogni volta attorno alla spirale i cicli si allungano e diventano più costosi.

Come con Agile, la spirale cerca di evitare la placcatura in oro mirando più restrittivamente e programmando il risultato del progetto abbastanza a lungo da consentire ai team di soddisfare i requisiti, mentre allo stesso tempo è abbastanza breve da consentire di concentrarsi sull'obiettivo dal primo giorno fino al giorno della consegna. Un modo in cui i metodi Agile come Scrum sono superiori è che Scrum corre per un arco di tempo che non si allunga con le iterazioni. Dal documento, la gestione del progetto sembra avere più influenza sulla doratura rispetto ai singoli sviluppatori.

Talento per il pugilato a tempo

Essere in grado di time box è molto importante, ma non è un'abilità binaria. Non ce l'hai o ti manca. Sei migliore o meno bravo con esso. Che provenga dal tuo capo o da te, preferirei se nessuno dicesse che non puoi fermare la doratura. Sembra personale, pervasivo e permanente.

Un'analisi delle cause alla radice potrebbe aiutare a identificare diversi problemi. Sono abbastanza certo che non ti indicheranno tutti e che, a meno che tu non lavori con psicopatici, altri nel tuo team vedranno esigenze simili per migliorare il loro set di abilità Agile. Se conosci qualcuno senza problemi, non li conosci molto bene. Se conosci qualcuno che pensa di non aver bisogno di migliorare, non si conoscono molto bene.

Spero che i miglioramenti che identifichi siano cose che puoi risolvere con la tua consapevolezza e l'aiuto del team. Tuttavia, penso che non sia qui che finisce. La mia aspettativa da parte del supervisore o del responsabile che scrive le tue recensioni sarebbe che possano anche istruire i loro subordinati per avere successo. Ciò è particolarmente critico quando l'organizzazione sta subendo un cambiamento rivoluzionario come il passaggio da pianificato ad Agile (o ad hoc ad Agile).

Prototipo rapido e sporco o gestito a rischio?

Avevo un manager che richiedeva che le attività fossero eseguite in un certo modo.

Veloce e sporco, ma una cosa di bellezza.

Conosceva la stupidità di ciò ed era parte del suo ironico senso dell'umorismo. Molte persone dicono cose come questa e sono molto serie. Da qualche parte, c'è un compromesso o un'opportunità per alleviare il problema con una tecnologia o un approccio migliorati.

Cosa possiamo sacrificare per adattarci al nostro time box?

Nel capitolo uno di Extreme Programming Explained , seconda edizione, Kent Beck parla di ciò che serve per muoversi velocemente. La sua risposta è che "fai solo ciò che devi fare per creare valore per il cliente".

Rischio

Nella prima edizione dello stesso libro, Beck identifica un po 'più da vicino le opinioni di Boehm sul controllo del rischio come critiche per la sua metodologia dicendo:

"Il rischio è il problema di base dello sviluppo del software"

In entrambe le edizioni, Beck elenca e descrive otto rischi comuni, seguiti da un'affermazione che XP (o forse per estensione, Agile) affronta ciascuno in un modo particolare. Per me, la maggior parte della sua spiegazione si riduce all'uso di incrementi più piccoli e iterazioni più veloci ci consentono di riportare le cose sulla rotta prima che i rischi diventino troppo grandi da gestire.

Mentalità di sufficienza

Beck discute le risorse nel contesto di una storia sulla gente di montagna e la gente della foresta e introduce un concetto chiamato "Mentalità della sufficienza". Nel contesto della tua situazione, chiede "Come faresti se avessi abbastanza tempo?" Solo questo primo capitolo, disponibile come anteprima del libro, può fornire un sacco di spunti di riflessione su come XP (e altri metodi Agile) pensano a vincoli come il tempo.

La compulsione potrebbe essere il sintomo, non la malattia

Anni fa ho guardato un libro sulla procrastinazione che affermava che molta procrastinazione ha origine nella paura. Se non inizi, non commetti un errore e forse non sarai criticato. La compassione e il perfezionismo danno qualcosa che il nostro senso morale ci dice che è meglio della procrastinazione, ma probabilmente ha lo stesso risultato. Considera che forse stai riscontrando un problema con la procrastinazione in un'altra forma?

Critica e concorrenza

Nelle metodologie Agili come Scrum, le opportunità di essere criticate o punite per la procrastinazione non sono mai state così alte. Questo è un circolo vizioso. Procrastino perché sono criticato, sono criticato perché procrastino. Con le riunioni di mischia quotidiane, siamo sempre in allerta perché siamo sempre un giorno o meno dal riferire al team ciò che abbiamo realizzato.

In una squadra ideale, Scrum offre un'opportunità quotidiana per correggere la procrastinazione. Gli errori non dovrebbero avere il tempo di diventare grandi prima dell'arrivo dell'aiuto. Le squadre non sono sempre dove dovrebbero essere sagge in termini di fiducia, quindi i leader all'interno del team potrebbero dover affrontare in modo proattivo le critiche o la paura delle critiche per consentire alle cose di andare avanti.

Nel nostro mondo del lavoro, ogni persona in una squadra deve anche competere con gli altri. È un po 'schizofrenico credere di avere un team che condivide il lavoro e la gloria per i risultati, ma poi utilizzare un processo annuale di gestione delle prestazioni che premia il 20% dei suoi membri, punisce o espelle il 10% o più dei membri e finge che la maggioranza del 70% contribuisca al meglio senza incentivi. Penso che questo sia un grande elefante nella stanza che promuove il lavoro di squadra, e per fare riferimento alla storia di Kent Beck, mostra profondi legami culturali con l'essere Mountain People.

La strada davanti

Come membro di un team Agile, sarebbe bene studiare e dialogare con gli altri su ciò che funziona. Se il tuo team sta usando TDD per automatizzare i test unitari con uno strumento, chiedi alla persona che fa di meglio di allenarti. Se il tuo supervisore o manager ha un problema con il tuo approccio alla documentazione, scopri cosa gli piace o chi lo sta facendo come piace a lui e segui il loro approccio. Se si riduce a una velocità di codifica non elaborata, studia cosa serve per codificare più velocemente.

I leader possono compiere passi nella giusta direzione modellando i comportamenti desiderati come chiacchiere sui propri problemi (non quelli di qualcun altro), offrendo e seguendo con aiuto, dialogando su come il team può passare allo stile Agile Marine (cioè nessun uomo lasciato indietro). Non tutti i membri del team hanno le stesse abilità. Potrebbe essere opportuno esplorare i membri del team di accoppiamento o assegnare compiti e ruoli che possano enfatizzare i punti di forza complementari delle persone coinvolte. Pianificare la crescita o il risanamento delle competenze dovrebbe essere una parte gratificante del lavoro sia per il supervisore che per il subordinato, ma deve avvenire presto e spesso per essere efficace.


Risposta piacevole e dettagliata. +1. Ri "ma deve succedere presto": è autunno, quindi userò un'analogia sportiva americana. Immagina se una squadra di calcio operasse come un normale business con le sue revisioni annuali dei dipendenti. "Stiamo riducendo il salario del 50%. Hai perso tre facili prese nella prima partita, nelle quattro partite successive non hai affrontato il gioco fino al secondo trimestre e la tua corsa è stata scadente per tutta la stagione." Una volta all'anno le critiche fanno più male che bene. Non esistono critiche costruttive se è troppo tardi.
David Hammen,

Collegamento interrotto a gente di montagna e gente della foresta.
Wildcard

7

Programmate anche per divertirvi? Sono stato anche infastidito dalle restrizioni sul lavoro che tolgono il divertimento dalla programmazione e, per compensare, a volte accendo un nuovo progetto a casa e "lo faccio bene". La divisione mi permette di soddisfare sia le mie esigenze che l'azienda.

Oppure, potresti sviluppare una nuova abilità oltre alla programmazione da svolgere nel tuo tempo libero che (alla fine) soddisfa ciò che il lavoro non può fornire. ;)


Benvenuto e grazie per aver pubblicato il tuo primo post su Stack Exchange Programmers. Ti preghiamo di considerare di inserire le domande di follow-up come commenti alla domanda piuttosto che come risposta. Puoi saperne di più sui criteri per scrivere domande e risposte di alto livello e ottenere un badge leggendo le domande frequenti su programmers.stackexchange.com/faq
Sviluppatore

Grazie, il tuo primo paragrafo suona sicuramente vero anche con me!
Andy Bowskill,
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.