L'approccio agile è troppo una comoda scusa per i cowboy?


73

Credo che un approccio agile sia il migliore per i progetti in cui i requisiti sono confusi e sono necessarie molte interazioni per aiutare a dare forma alle idee dell'utente finale.

Tuttavia ... Nel mio lavoro professionale, continuo a finire in aziende in cui un approccio "agile" è usato come una scusa sul perché nessuno sforzo è stato messo in un design iniziale; quando i requisiti sono ben compresi.

Non posso fare a meno di pensare che se l'approccio agile non fosse in giro, sarei seduto qui con una bella specifica di alto livello e non dovrei rivedere lo stesso schermo e la stessa funzionalità ogni secondo giorno quando qualcos'altro cresce o giù di lì e quindi non ci avevo pensato.

I vantaggi delle metodologie agili sono davvero sufficienti a superare la scusa per essere zoppi che danno ai contatti tecnici del cowboy?

Aggiornamento: Ironia della sorte, ora sono uno Scrum Master certificato. Uno degli articoli presentati sul corso Scrum osservava che il miglior processo di sviluppo era quello in cui un singolo esperto o guru prendeva le decisioni di progettazione, tuttavia ciò ha evidenti punti deboli. Scrum sposta la responsabilità della produzione di software di qualità nel "Team", il che significa che un team di livello inferiore può cavarsela sfornando spaghetti che immagino non siano diversi dagli altri processi di sviluppo Agile e non Agile.


6
Downvotes eh ... Trovo che alcuni agili convertiti diventino un po 'difensivi soprattutto quando vedono agile e cowboy nella stessa frase. E non sto nemmeno insaccando agile, sono i cowboy che mi irritano.
sipwiz,

2
Ciò potrebbe avere a che fare con il motivo per cui molti dei firmatari originali del Manifesto Agile esprimono disgusto per il termine "agile" come viene utilizzato nella maggior parte delle aziende. Invece, ora stanno parlando di cose come "arte del software".
Darcy Casselman,

1
Per prima cosa, lasciami dire che NON sono un fan di agile. In secondo luogo, dirò che nella mia esperienza "la capitale A Agile" rallenta tutti (compresi i cowboy). Non ho mai lavorato in una situazione in cui sentivo che l'agile stava abilitando il cosiddetto "codificatore da cowboy".
TM.

1
Non credo sia corretto chiamare ciò che stai descrivendo "codifica da cowboy". Questo non è un problema individuale, è un problema di gruppo. Questa è una cattiva gestione del prodotto e del team.
opaco b

3
Trovo che pensare in anticipo sia quasi inutile. Passare a una soluzione seguendo i primi istinti può essere molto efficace se si utilizzano pratiche di programmazione sensate. La mia esperienza indica che coloro che pongono in primo piano piani sostanziali non possono reagire alla realtà una volta che iniziano a programmare.
dash-tom-bang,

Risposte:


87

Sono contento che abbia un nome

Credo che se stai usando lo sviluppo Agile come una scusa per la programmazione in stile cowboy, allora non stai seguendo lo sviluppo Agile. I cowboy saranno sempre cowboy, indipendentemente dal processo che darai loro.


17
Dilbert (sempre) rock ..
TheVillageIdiot

20

Agile non è più responsabile delle cattive pratiche di sviluppo di BDUF. Il problema sta nella disciplina, o nella sua mancanza, nell'applicare le pratiche. Lo scopo delle pratiche BDUF è identificare la direzione del progetto e determinare preventivamente i rischi. Lo scopo delle pratiche agili è mantenere lo stato dello sviluppo abbastanza flessibile da cambiare rapidamente direzione. Un progetto agile potrebbe preparare user story altamente dettagliate in modo che il team sia a conoscenza di direzioni future e selezioni ancora solo 2 o 3 per iterazione per implementarle completamente. Il problema rimane lo stesso a prescindere dalla metodologia utilizzata: la direzione sta facendo funzionare i cowboy.

[BDUF: Big Design Up Front]


3
Non sarà mai possibile contrastare i cowboy, qualunque sia l'approccio. Comunque almeno con la cascata dovrebbero almeno produrre un documento di requisiti, un documento di settificazione ecc. Con agilità possono essenzialmente cavarsela semplicemente digitando direttamente nel codice.
sipwiz,

3
Ancora una volta, questo è un errore nel gestire correttamente il processo. Il cliente dovrebbe istruire gli sviluppatori su quale sia il valore aziendale nella user story e i test dovrebbero verificare che siano integrati nella base di codice. Registra le aree in cui gli sviluppatori devono ripetere i loro passi. Non sono esperti nel processo aziendale del cliente? Sono incerti sull'ambiente di distribuzione? Se il progetto comporta costi di sviluppo aggiuntivi a causa della "rielaborazione dei componenti", la direzione dovrebbe voler correggerlo per ridurre la probabilità di superare budget o programmi.
Huperniketes,

4
Se inizi a sbattere contro il codice non stai agendo anche se lo chiami così. Cosa mi impedisce di battere semplicemente il codice e chiamarlo a cascata se ho trascorso 5 minuti a pensare ai requisiti all'inizio.
Craig,

1
Huperniketes ha ragione, il problema non riguarda la metodologia; il problema è con il team di gestione che consente ai cowboy di gestire il dipartimento.
Jeff Siver,

7
@sipwiz: Anche a cascata, i cowboy sbattevano direttamente nel codice. Alla fine avrebbero documentato tutto ciò che hanno scritto come specifiche di progettazione.
TMN,

13

Agile, come qualsiasi altra cosa , può essere usato per coprire un comportamento scorretto o per cercare di risolvere un problema di cui la squadra pensa di non essere responsabile.

Tuttavia, la magia di alcune metodologie Agile come Scrum è che forniranno molta visibilità sui problemi all'interno dell'organizzazione. Compresi i problemi all'interno della squadra!

Ti verrà quindi data la possibilità di risolverli non appena si presentano.

Se il problema risiede nei cowboy, questo sarà molto visibile dopo la prima iterazione. Se il problema è altrove, lo vedrai molto presto.


12

Stranamente, dai progetti "agili" con cui sono stato coinvolto, sembra più una scusa di gestione per saltare la fase di raccolta dei requisiti che un desiderio da cowboy di iniziare semplicemente a scrivere codice. I miei progetti sono stati estremamente frustranti perché non abbiamo utenti finali con cui interagire. Invece, abbiamo un regista che parla alle vendite per scoprire cosa pensano che i clienti desiderino, quindi convoca una riunione e la descrive ai gestori, che iniziano quindi ad assegnare compiti agli sviluppatori. Su un "buon" progetto potremmo avere una presentazione in PP a cui fare riferimento, ma di solito finiamo per passare le nostre riunioni di mischia quotidiane chiedendoci come dovrebbe funzionare qualche funzione, e il manager annota le domande e pone al regista. È una grande perdita di tempo, ma è "agile"!


Non lo chiamiamo nulla, ma è sostanzialmente così che vanno le cose qui. In realtà abbiamo alcuni grandi documenti di progettazione, ma sono obsoleti e nessuno li guarda. Invece ogni nuova funzionalità o correzione è dettata esclusivamente da ciò che il vicepresidente ritiene sia caldo o da ciò che le vendite dicono che i clienti vogliono, è uscito rapidamente nelle riunioni e buttato giù sotto pesanti scadenze.
CodexArcanum,

+1: @TMN, @CodexArcanum: ho avuto anche la stessa esperienza. Non c'era nessun campione utente. Le vendite hanno dettato nuove funzionalità alla gestione del prodotto, che le ha poi trasmesse allo sviluppo.
Jim G.

7

Non dirò di essere un fan di Waterfall, dal momento che anch'io ho a che fare con un creep sempre frustrante, ma ho sempre visto Agile come una concessione al problema, non un modo efficace per combatterlo. Un buon design, con i primi test iterativi e molti prototipi di carta sembra essere molto più efficace.


4
Il problema è che un buon design è quasi impossibile per qualcosa di diverso da progetti banali. I problemi con il design diventano evidenti solo man mano che il progetto avanza. Gli utenti non sanno cosa vogliono, non importa quanto siano esperti.
Craig,

@Brama. Mentre sono d'accordo con te sul fatto che le specifiche sono quasi impossibili da definire, anche i sistemi non banali dovrebbero essere in grado di essere prototipati su carta e questo è molto più economico da fare rispetto alla scrittura dell'intero sistema solo per scoprire che è necessario essere riscritto. Se non può essere prototipato su carta (almeno per le funzionalità di base), è difficile immaginare che il sistema particolare funzionerà bene o sarà comunque ragionevole implementarlo alla fine. Se tu e l'utente non riesci a sederti e ad affrontare uno scenario di prova su carta prima di iniziare a lavorare, allora ci saranno seri problemi.
Morgan Herlocker,

2
@Craig Non sono d'accordo sul fatto che un buon design sia impossibile. Conoscere ogni singola complessità del sistema in anticipo potrebbe essere quasi impossibile, ma ciò non significa che un progetto contro ciò che è noto non possa essere prodotto. Voglio dire anche una sola frase sulla falsariga di "Questa app verrà scritta come un'app MVC usando il framework di entità per il DAL" sarebbe qualcosa. A parte questo, ho visto gare d'appalto in cui ci sono più di 180 pagine di requisiti e non puoi dirmi che non sono sufficienti dettagli per produrre un design abbastanza buono.
sipwiz,

sipwiz, la mia esperienza è che il numero di pagine non è correlato all'utilità di una specifica. Ciò che è scritto è più importante, non quanto. Dipende totalmente dal sistema se 180 pagine sono buone o meno, se sto costruendo Windows penso che sia un po 'leggero.
Craig,

3
Inoltre penso che devi ricordare, agile non significa nessuna specifica.
Craig,

6

Vedo che le difese dello sviluppo agile dicono che non è responsabile per i guasti causati dai cowboy. Il successo con Agile richiede diligenza e intelligenza.

Questa sembra una posizione ragionevole, purché applichi la stessa concessione ad altre metodologie. Se non si può incolpare Agile per errori di progetto causati da cowboy, non si può incolpare metodologie non Agile per errori di progetto causati da cowboy.

Possiamo quindi discutere se esiste una correlazione (non causale!) Tra Agile e cowboy. Con solo prove aneddotiche, credo che ci sia. È percepito come un buon modo per cavarsela con le pratiche da cowboy senza essere scoperto dalla direzione?

Ovviamente, se accettiamo che i cowboy potrebbero non essere distribuiti uniformemente tra le metodologie e accettiamo che i cowboy minano l'uso di successo di un processo, abbiamo reso molto difficile verificare se un processo ha successo. L'affermazione secondo cui un processo è migliore (in un contesto) diventa quasi non falsificabile. Questo è uno dei problemi che mi fa vergognare della mia professione: la mancanza di sostegno scientifico di molte affermazioni.

(A proposito, odio chiamare l'alternativa o le alternative a "cascata" Agile, perché i processi a cascata sembrano essere un uomo di paglia che tutti attaccano, ma pochissime persone hanno mai effettivamente usato senza alcuna iterazione.)


4
I fallimenti dello sviluppo non sono il risultato della presenza di cowboy. I fallimenti dello sviluppo sono il risultato della mancata presenza della direzione.
Huperniketes,

@Huperniketes, questa è una notizia FANTASTICA. I programmatori non sono mai da biasimare! Che professione ideale abbiamo scelto!
Pensando in modo strano il

@Sensazione, smetti di limitarti al pensiero binario. I programmatori possono certamente essere incolpati di non riuscire a raggiungere il livello della loro professione, ma i programmatori non sono mai responsabili di fallimenti del progetto. Questa è la responsabilità dei project manager.
Huperniketes,

@Huperniketes, forse potresti chiarire ulteriormente, per favore? Originariamente hai detto "errori di sviluppo", ma poi sei passato a "errori di progetto". Concordo sul fatto che i project manager potrebbero dover "trasportare la lattina" se uno dei loro sviluppatori si comporta al di sotto delle aspettative, ma è difficile vedere come i cowboy che non riescono a consegnare non possano mai essere la causa del fallimento di un progetto.
Pensando in modo strano il

@Spensandoci, non intendevo distinguere tra "fallimenti dello sviluppo" e "fallimenti del progetto". Sono usati come sinonimi qui. Certo, un progetto potrebbe non essere riuscito perché lo sforzo di programmazione era al di sotto della media, ma il dovere del project manager è identificare quei casi e rimediare con le modifiche al team quando necessario. È suo compito vedere che il progetto ha successo. Deve essere licenziato se non può farlo. Quindi deve assicurarsi che i membri del team, anche programmatori di cowboy e programmatori di rock star, stiano rispettando i loro obblighi nei confronti del progetto o li licenzino.
Huperniketes il

5

Agile va bene finché funziona per la tua squadra.

Troppi lo stanno vendendo come un modo per trasformare una squadra cattiva in una buona squadra, e semplicemente non funziona in questo modo. Non puoi prendere le persone cattive e applicare un processo per renderle improvvisamente utili.

Mi piacciono molte delle idee alla base dell'agile, ma il fallimento che vedo più volte è che i manager stanno spingendo una serie rigorosa di "processi agili", che vola di fronte all'intero concetto di agile, che i team dovrebbero essere autonomi -organizzazione.

Per quanto riguarda i "cowboy", trovo che per tutti i team agili in cui sono stato, i processi servono a rallentarli più che a lasciarli andare. Non ho mai sperimentato una situazione in cui l'agile servisse per abilitare un "programmatore di cowboy".

Per i buoni team, sembra funzionare bene (poi di nuovo, la maggior parte dei processi sembra funzionare bene quando hai un buon team, divertente come funziona non è vero?).

Per altre squadre, nella mia esperienza, non aiuta mai le persone cattive a fare meglio, ma a volte serve a impantanare le persone produttive.

Nel complesso, penso che l'importante sia costruire una buona squadra, dire loro ciò di cui hai bisogno e poi toglierti di mezzo. Non penso che applicare una serie di parole d'ordine possa risolvere il problema di avere una squadra cattiva.

(Se non ti sei reso conto di quanto sopra, non sono un fan di "Capitol-A Agile" per lo meno. D'altra parte, non penso che incoraggi neanche i cowboy.)


3

Agile se fatto correttamente dovrebbe avere l'effetto di reinterpretare i lead tecnici "cowboy" e i programmatori "eroi". Se non osservi questo effetto, potrebbe essere un segno che manca qualcosa di importante nella tua agile implementazione.

Voglio aggiungere che "Agile" è davvero un'interfaccia (sto usando una metafora orientata agli oggetti qui) e non puoi istanziarla. Se la tua implementazione concreta è XP , allora devi seguire un sacco di pratiche tecniche con molta disciplina, che lascia poco spazio alla programmazione da cowboy. Un'altra possibilità è che il lavoro di squadra di un team Scrum ben auto-organizzato lo terrà sotto controllo.


3

Anche i programmatori di cowboy tendono a scrivere codice non molto testabile e tendono a non apprezzare la scrittura di test. Penso che avere tutti a fare TDD possa aiutare a dominare l'atteggiamento da cowboy e far riflettere gli sviluppatori un po 'di più sull'architettura. Nessuna metodologia è perfetta, ovviamente.


1
Non dimenticare i paranoici controlli "if (var! = Null)"
sparsi in

3

Attualmente sto lavorando in un negozio dove questo è il caso, tranne per il fatto che ha più a che fare con la cultura organizzativa che con singoli cowboy specifici.

L'organizzazione ha sempre operato con un approccio relativamente informale, "informale Agile". Non direi che è veramente Agile, è più "Agile nel nome", ma nella pratica è semplicemente una metodologia inesistente. Squadre diverse operano in modo diverso, ma poiché la cultura organizzativa complessiva non ha alcuna metodologia in atto se non un processo molto agile di "Agile in solo nome" - è relativamente caotico e complessivamente caotico - specialmente nell'intergrazione (e ce n'è molto ).

La morale della storia è - Sì, questo succede. Se al momento cercassi lavoro, starei molto attento a questo. Se un negozio afferma di essere Agile, farei alcune domande piuttosto difficili nell'intervista per assicurarmi che più di un semplice nome di Agile venga effettivamente seguito.


1
Sembra molto simile alla mia situazione. E arriva al punto di tutta questa domanda che se "Agile" non fosse nelle vicinanze delle organizzazioni probabilmente si attaccherebbe a cascata e qualunque siano le sue carenze è di gran lunga superiore a non avere alcun processo.
sipwiz,

2

Ho scoperto che gli utenti possono darci feedback solo quando hanno un'applicazione che possono usare, schermate su cui possono inserire i dati. Solo allora capiscono veramente cosa stavamo cercando di dire nei documenti dei requisiti (che i clienti firmano ma ognuno ha la propria versione del significato). Se non si tratta di uno sviluppo agile, sarà un progetto a cascata che va oltre il budget ma l'applicazione cambierà una volta consegnata. La tua prima versione non è altro che un prototipo per gli utenti per discutere quali requisiti avrebbero dovuto essere. Quindi preferisco chiamarlo agile piuttosto che sopra il budget.


Ho visto anche questo (i clienti che vedono una versione precedente e sono troppo presi dai bug / funzionalità che sai non sono ancora pronti), e potresti fare fatica a ottenere un feedback utile. Penso che si tratti di educare i tuoi clienti.
Dean Harding,

Prototipazione ....
sipwiz,

2

Penso che sia vero, in alcuni ambienti Agile è usato come una scusa per nessuna disciplina. Il vero problema è che abbiamo perso di vista il motivo per cui abbiamo una metodologia. Personalmente, ritengo che la metodologia sia un problema architettonico nel senso che l'architettura del sistema dovrebbe indirizzare gli attributi di qualità non funzionali, la metodologia dovrebbe affrontare alcuni di quegli stessi attributi (manutenibilità, produttività di sviluppo, trasferimento di conoscenze, et al.)

La visualizzazione della metodologia come controllo degli attributi del processo implica un paio di cose: 1) senza metriche non è possibile confrontare l'efficacia di una metodologia rispetto a un'altra, 2) è necessario prendere una decisione attiva su quali attributi sono importanti (tempi di consegna vs codice qualità vs trasferimento delle conoscenze).

Senza avere entrambe le metriche e un obiettivo tangibile, scegliamo semplicemente una metodologia come la nostra "piuma magica" che se ci teniamo stretti, saremo in grado di fornire software.

Ora i neofiti di Agile, XP, Scrum, ecc. Parlano della fragilità di quella particolare categoria di metodologie. L'argomento è: perché usare una metodologia che può essere sabotata da un individuo privo della disciplina per seguire tutte le regole? La domanda è valida; tuttavia, questo è il sintomo, non la causa. Se un insieme accurato e significativo (che è la parte difficile) di metriche di processo viene definito, testato e tempestivo feedback dato che penso che scopriremo che la particolare metodologia ha poco a che fare con il successo. (Aneddoticamente ho visto progetti di successo che utilizzano una miriade di metodologie e il doppio fallisce usando le stesse metodologie)

Quindi quali sono le metriche? Variano da progetto a progetto, da squadra a squadra e di volta in volta. Utile per quando il programma di consegna è importante, quello che ho usato personalmente è la capacità di stima e la qualità. La maggior parte degli sviluppatori può stimare con precisione attività che durano una settimana o meno. Quindi un approccio è quello di suddividere il progetto in attività per una settimana di sviluppo e tenere traccia di chi ha effettuato la stima. Man mano che il progetto procede, possono modificare le loro stime. Dopo che un'attività è stata completata, se è disattivata di oltre il 10% (1/2 al giorno), trattiamo la stessa cosa come un bug: identifichiamo perché la stima era disattivata (ovvero una tabella del database non è stata considerata), identifichiamo il azione correttiva (cioè coinvolgere il DBA nella stima), e poi andare avanti. Utilizzando queste informazioni possiamo creare metriche come il numero di bug di stima a settimana, il numero di bug per sviluppatore,

E allora? È a questo punto che arrivano le metodologie: se si dispone di un modello predittivo che non soddisfa le qualità del processo, è possibile scegliere di aggiungere o rimuovere alcuni aspetti della metodologia e vedere come influisce sul modello. Certo, nessuno vuole giocare con un processo di sviluppo per paura di fallire, ma stiamo già fallendo a un ritmo costantemente alto e prevedibile. Apportando modifiche individuali e misurando il risultato, potresti scoprire che Agile è la metodologia perfetta per il tuo team, ma potresti anche trovare RUP, cascata o semplicemente un miscuglio di buone pratiche come l'ideale.

Quindi il mio suggerimento è di smettere di preoccuparci di ciò che chiamiamo processo, mettere in atto controlli pertinenti ai nostri obiettivi del processo di sviluppo e sperimentare diverse tecniche per migliorare quel processo.


Punti buoni. Le mie frustrazioni derivano dai risultati finali in un approccio Agile sono molto più fluidi e ciò consente a un tecnico incompetente di cavarsela con tutto ciò che desidera e che nella mia esperienza finisce come nessun processo == codifica cowboy.
sipwiz,

1

Starei seduto qui con una bella specifica di alto livello e non dovrei rivedere lo stesso schermo e la stessa funzionalità ogni secondo giorno mentre qualcos'altro si presenta o così e quindi non ci avevo pensato.

Questo sembra coincidere con l'esperienza del mio collega del progetto "agile" a cui sta lavorando (non ne ho mai avuto uno io stesso): gli viene chiesto di scrivere un pezzo di codice su alcune specifiche, quindi proprio quando ha finito di testarlo e è pronto a passare a un nuovo requisito che gli richiede di cambiarlo e testarlo nuovamente. Lo trova frustrante.

Non sto agitando agilmente, sospetto che il team non stia agendo correttamente, ma come dici tu, il termine "agile" a volte può essere usato dai cowboy per convincere i dirigenti a punta che il design a metà cottura è un positivo piuttosto che un negativo .


agile senza test automatici richiede mal di testa
Steven A. Lowe,

1

È divertente come nessuno si consideri un programmatore di cowboy. Scommetto che molti dei poster sono o sono stati uno;)


1
Sospetto che la maggior parte di noi abbia iniziato come cowboy.
David Thornley,

Forse hai ragione, e non sto programmando da molto, ma quando ero in un negozio senza metodologia, avevamo dei cowboy. Ora sono in una società di consulenza agile, e quello che fai è grande e visibile, ed è davvero difficile per me immaginare un codice da cowboy che gode di questo ambiente.
Eric Wilson,

1

I programmatori di cowboy sono bravi perché a loro piace fare cose in fretta. Spesso non sono così preoccupati per i problemi del quadro generale o per la qualità del codice, motivo per cui "cowboy coder" è spesso un epiteto. I loro metodi mitigano i rischi in termini di opportunità derivanti dalla consegna tardiva del progetto.

Ai programmatori non cowboy piace fare il proprio lavoro in modo sicuro, disciplinato e ordinato. A loro piace costruirlo nel modo giusto e costruirlo una volta. Sono conosciuti per aver sempre raccolto informazioni, considerando what-ifs, producendo documenti di grandi dimensioni che nessuno legge e consegnando sistemi in ritardo o molto tardi. I loro metodi cercano di mitigare i rischi di software di scarsa qualità.

La genialità delle metodologie Agile è che sfruttano i punti di forza di entrambi i tipi di programmatori forzando iterazioni di lavoro limitate nel tempo che chiedono ai programmatori di produrre rapidamente piccoli lavori di alta qualità. E ogni iterazione mitiga sia i rischi in termini di opportunità derivanti dalla consegna tardiva sia i rischi di software di scarsa qualità.


0

La ragione per cui l'agile sta dando poca enfasi al design / alle specifiche iniziali non è solo perché i requisiti possono cambiare. Il motivo più profondo è che anche quando i requisiti sono stabili, le specifiche tendono ad essere:

  • errato: impossibile acquisire i requisiti.

  • incoerente - pieno di contraddizioni perché contengono abbastanza informazioni da rendere impossibile allo scrittore / lettore catturarle.

  • distaccato: non incorporano feedback preziosi da un sistema in esecuzione (sebbene degenerato).

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.