Quale metodologia di programmazione sarebbe adatta a noi?


11

Sfortunatamente, qualcuno ha insegnato ai nostri dirigenti la parola "Agile" e ora vogliono che ci muoviamo verso di esso. Ho una comprensione periferica dell'agile (in linea di principio) ma non l'ho mai usato in pratica. Da quello che so, non sarà adatto alla nostra organizzazione. In questo momento, le cose sono piuttosto grungey. Ecco com'è;

Siamo un team molto piccolo: due sviluppatori, un DBA, un designer. La società per la quale lavoro guadagna una quantità sproporzionatamente grande di denaro rispetto alle sue dimensioni, e quasi il 95% di questo è pura vendita online.

Dal punto di vista dello sviluppo, siamo sottoposti a molte invasioni da scrivania durante una giornata tipo (siamo supporto tecnico e sviluppo), il lavoro può regolarmente cadere dal cielo in un momento se un membro del team di vendita promette qualcosa a qualcuno . Intraprendiamo anche progetti più grandi, e sono un incubo con le continue interruzioni. Alcuni di noi stanno iniziando a strapparsi i capelli! I piani di progetto sono elaborati da gestori non tecnici in fogli di calcolo Excel, in cui cercano di suddividere l'attività in frasi di dimensioni ridotte che possono comprendere e inserire una data accanto a ciascuna. Queste date sono sempre terribilmente irrealistiche e spesso mancate, e i nostri incontri (che abbiamo circa settimanalmente) sono regolarmente pieni di momenti imbarazzanti con la gente che chiede "perché non è ancora stato fatto".

Sono abbastanza sicuro che Agile non è quello per noi. Ora, dato che (e ho provato) questa azienda non cambierà i suoi modi , e solo il team di sviluppo è disposto a cambiare, c'è una metodologia di sviluppo che potremmo adottare che è adatta per salvarci un po 'di buonsenso?


Stai descrivendo così accuratamente un mio vecchio posto di lavoro che è scomodo.
John N,

2
La prima frase ricorda una striscia di Dilbert. :)
MetalMikester

@MetalMikester - Penso che il malva abbia più RAM. Questo è stato il mio pensiero anche nel leggere quella riga.
jfrankcarr,

1
Sfortunatamente, ho familiarità con alcune di queste "caratteristiche" per piccole aziende. Penso che abbiano scambiato "Agile" per "più veloce".
Mister Smith,

1
@jfrankcarr intendevo questi due: dilbert.com/strips/comic/2007-11-26 e dilbert.com/strips/comic/2005-11-16 (pensavo che anche il malva fosse un vincitore. :))
MetalMikester

Risposte:


10

Agile è stato progettato per risolvere molti dei problemi esatti che stai riscontrando. Se il management ha veramente acquistato e non pervertirà il processo, potresti vedere un grande miglioramento. Lasciami affrontare i tuoi problemi punto per punto. La mia esperienza è con Scrum, quindi parlerò da quel punto di vista, ma sono sicuro che altre implementazioni hanno benefici simili.

  • lavoro che cade dal cielo Queste storie vengono messe in fondo all'arretrato fino a quando il proprietario del prodotto e il team possono incontrarsi per concordare di spostarlo verso l'alto. La sua priorità viene determinata in relazione agli altri impegni della tua squadra e tale priorità è visibile a tutti gli stakeholder che sono interessati a guardare. Dovrebbe essere estremamente raro aggiungere una nuova funzione nel mezzo di uno sprint e solo i bug con la priorità più alta dovrebbero poter interrompere uno sprint. È sorprendente quante "emergenze" possano attendere fino alla fine della prossima settimana, quando viene fatta un'aspettativa regolare.
  • intraprendere progetti più grandi Avrai la visibilità per mostrare come le priorità a breve termine incidono sui tuoi progetti a lungo termine. Se le persone spostano continuamente le storie degli utenti di fronte ai tuoi progetti a lungo termine, va bene, ma per prendere questa decisione tutti sapranno l'impatto che avrà sul programma del progetto a lungo termine.
  • i piani di progetto sono elaborati da gestori non tecnici Le storie degli utenti dovrebbero essere scritte da un punto di vista non tecnico, ma il team di scrum dovrebbe avere il potere di fare stime e determinare i dettagli di implementazione.
  • le date sono orribilmente irrealistiche Il tuo team gestisce tutte le stime, perché sei tu che sai cosa stai facendo. Se tali stime non sono accettabili per l'azienda, devono decidere come stabilire le priorità delle funzionalità. Se hanno bisogno di più lavoro di quanto tu possa gestire, sarà chiaramente visibile la necessità di assumere più persone.
  • le date sono spesso mancate Innanzitutto, le tue stime saranno più realistiche, il che dovrebbe aiutare. Inoltre, stai mordendo pezzi più piccoli e in realtà li finisci , il che aiuta l'azienda a pensare di aver prodotto qualcosa di utile anche se non completo.
  • incontri pieni di momenti imbarazzanti Agile ha più visibilità e un ciclo di feedback molto più rapido, con un proprietario del prodotto fortemente coinvolto. I tuoi problemi di blocco e i motivi del ritardo non dovrebbero essere una sorpresa.
  • anche facendo supporto tecnico Contrariamente alla credenza popolare, l'agile non è incompatibile con un programma diviso. Mischia fattori nelle tue interruzioni nella velocità della tua squadra. Se normalmente passi metà del tuo tempo a fare supporto tecnico, avrai semplicemente metà della velocità.

Ciò che la gestione e le vendite devono capire è che l'agile non è un modo per esercitare un controllo più stretto sul team di sviluppo, ma dà al team più autonomia per fare ciò che è bravo mentre aiuta l'azienda a considerare realisticamente tutte le sue priorità ogni volta che si assegna lavoro a Il gruppo.


1
"Se la gestione ha veramente acquistato e non pervertirà il processo" <- è un punto chiave per il successo finale. Vorrei che ci fosse un incantesimo per rendere quella realtà. Puzza vedere qualcosa che inizia bene diventare orribilmente contorto.
anon

Penso che questo vada bene con la tua risposta ... joelonsoftware.com/articles/DevelopmentAbstraction.html
Joe Internet

Le tue argomentazioni sono convincenti, ma purtroppo penso che la direzione dell'azienda del poster originale stia cercando un proiettile d'argento. Non sono sicuro che sosterranno agili quando si renderanno conto che potrebbero perdere un po 'di controllo sugli aspetti del processo di sviluppo. Quello che probabilmente accadrà è che c'è un sacco di servizio labbra pagato per agile, alcune cose vengono riorganizzate e poi alla fine le cose continuano praticamente come prima.
Antonio2011a

10

Direi che approfitta dei tuoi capricci gestionali! Sembra che ti stiano facendo un favore e ti stiano dando una leva per migliorare i tuoi metodi di lavoro.

Di 'loro OK, andremo agili tra le altre cose: -

  • una separazione di sviluppo e supporto
  • un processo formale di raccolta dei requisiti - sotto il controllo del team IT. "Storie" ecc. Sembrano tutte molto vaghe, ma in realtà è un metodo "formale" vestito per sembrare informale.
  • la pianificazione è sotto il controllo del team IT.

Se non lo accettano, digli che non puoi diventare agile.


Sono ottimi suggerimenti ma richiedono un cambio di cultura e cambiamenti di cultura semplicemente non accadono quando i soldi arrivano e sono facili.
maple_shaft

1
Sì, ma il punto è che la direzione ha dato loro un'apertura! Hanno chiesto metodi Agili, il team dovrebbe tornare con una proposta valida che enfatizzi la natura altamente strutturata dei processi agili.
James Anderson,

8

Agile non è una metodologia di programmazione, Agile è una metodologia di gestione del progetto. Se i vertici aziendali vogliono davvero che tu provi questa nuova parola d'ordine che hanno trovato, devono essere in grado di capire che il metodo Agile parte dall'alto e coinvolge la gestione in ogni fase del processo. Se hai bisogno di dare loro una dura dose di realtà, magari organizza una presentazione in Powerpoint di 30 minuti su Agile per dare loro un po 'di educazione. I gestori adorano Powerpoint.

Tuttavia, se, come dici tu, il team di sviluppo è l'unica persona disposta a cambiare, allora nessuna metodologia di sviluppo sarà in grado di aiutarti. Senza una riduzione del resto dei tuoi doveri, continueranno a verificarsi interruzioni e ti verrà chiesto di rispettare scadenze che semplicemente non puoi rispettare.

Il mio consiglio in questo scenario è di educare, non rimproverare, la gestione di come sia realmente in prima linea.


5
"Agile" non è nemmeno una metodologia di gestione del progetto. È un vago termine generico per un mucchio di metodologie specifiche e le idee e le pratiche su cui si basano.
Michael Borgwardt,

E un esempio di Agile che parte dall'alto implicherebbe la scelta esatta del metodo che vogliono usare!
Snorbuckle,

2
Alcuni metodi agili sono a livello di project management (Scrum) mentre altri sono a livello di task di sviluppo (Extreme Programming). Dici anche che i metodi agili iniziano dall'alto, tuttavia il miglioramento del processo (indipendentemente dalle metodologie o dagli obiettivi) tende ad essere più accettato quando si arriva dal basso verso l'alto e si ottiene il buy-in da ogni livello a partire da sviluppatori / ingegneri sul piano attraverso la catena di gestione.
Thomas Owens

5

Nessuna metodologia di sviluppo del software e di gestione dei progetti può aiutare in un'organizzazione in cui i venditori stabiliscono il programma quotidiano. Come dovresti gestire un progetto in una settimana lavorativa così caotica e distratta?

Così molti dirigenti vedono il valore di Agile e ne desiderano i benefici, ma non sono quasi mai in grado di apportare le modifiche interne necessarie per assicurarsi che la mossa abbia successo. Gli unici negozi Agile di successo che ho conosciuto erano iniziati in quel modo. Non riesco a ricordare una singola istanza nella mia esperienza professionale di un negozio di sviluppo software gestito da vendite o in cascata che fa la mossa perché richiede un cambiamento fondamentale nella cultura.

Questo cambiamento nella cultura è possibile? Sì, ma nel tuo caso quasi certamente no.

Un cambiamento nella cultura è di solito richiesto da un concorrente che minaccia l'esistenza della società o una situazione di make o break o qualche altra situazione similmente coinvolta per giustificare una riorganizzazione. Nella tua situazione, la tua azienda è all'estremo opposto dello spettro in cui i soldi in questo momento sono facili e tutti stanno ingrassando.

Le aziende non cambiano MAI dall'interno quando i soldi sono facili. Perché dovrebbero, hanno successo nonostante i fallimenti nello sviluppo del software, non a causa dei successi nello sviluppo del software.

Il mio ultimo consiglio è che se fossi in te cercherei qualcosa di meglio. Le persone qui hanno un grande consiglio, ma ho già visto questa canzone e ballare prima e non funziona nella tua situazione.


2
maple_shaft ha ragione: corri! Adesso!
Landei,

lol, temo che possa avere ragione :)
Mikey Hogarth,

1

guarda extremeprogramming.org - XP è una forma di Agile con aspetti facilmente comprensibili che puoi scegliere e scegliere a carrello; un ottimo punto di partenza

l'impegno del cliente a non cambiare idea durante un'interazione sarebbe un buon punto di partenza per il tuo ambiente, dal suono di esso ;-)


IMHO i loro maggiori guai sono legati al modo in cui vengono gestiti i requisiti e stimati i compiti, vale a dire la gestione del progetto. XP non è molto forte da quel lato, e contiene anche molte cose (ad esempio la programmazione di coppie) che possono rendere più difficile l'accettazione e non aiutare direttamente a risolvere i loro problemi. Quindi, ad esempio, Scrum potrebbe essere una scelta migliore per i principianti. Naturalmente, XP e Scrum si mescolano bene, ma XP dovrebbe essere considerato solo in una fase successiva.
Péter Török,

Non penso che sia una buona idea per qualcuno di nuovo agile scegliere e scegliere le pratiche al carrello. XP funziona perché le pratiche insieme incoraggiano e promuovono comportamenti desiderabili. Per i migliori risultati, la sartoria dovrebbe essere fatta solo una volta che il team ha un po 'più di esperienza.
Michael,

@Michael: in alcuni ambienti, devi far bollire lentamente la rana ;-)
Steven A. Lowe,

@ StevenA.Lowe: è vero, ma il compratore si preoccupa della sartoria precoce. Ecco da dove vengono termini come "Scrum-ma", come in "Sì, stiamo facendo Scrum, ma non facciamo [inserire le pratiche qui]" che porta a gravi problemi se non sai cosa stai facendo.
Michael,

1

Se si considerasse il panorama delle metodologie, sia tradizionali che contemporanee, ci si renderebbe conto che "Agile" è più un "anti-metodologia" che una metodologia. Gli schemi mirano a rappresentare la soluzione "best-case" a un determinato problema in un contesto particolare. I tentativi di violare direttamente una tale soluzione o modello, sono generalmente indicati come "anti-schemi" o pratiche peggiori. Allo stesso modo, mentre le vere metodologie di sviluppo del software tentano di prescrivere le migliori pratiche nello sviluppo di soluzioni, "Agile" (Scrum, XP, ecc.) Tenta di violare direttamente qualsiasi struttura all'interno del processo di sviluppo del software, a favore di un caos, caotico approccio - che (di recente), sembra richiedere anche applausi da curiosi (ingenui).

Detto questo, è opportuno tenere presente il contesto in cui è nata la filosofia Agile. Sebbene all'epoca esistessero sofisticate metodologie iterative (ad es. Unified Process), la metodologia principale era ancora il vecchio approccio a cascata, che prescriveva una "best practice" di analisi dei requisiti completa, quindi completa la progettazione, quindi sviluppa / codifica la soluzione, quindi implementa la soluzione. Chiaramente, questo approccio ingegneristico allo sviluppo del software è stato sconsigliato e ha portato a un sacco di scartoffie prima (e talvolta senza mai) di vedere una soluzione eseguibile.

Tuttavia, non garantisce ancora il lancio del bambino con l'acqua del bagno, come nel caso dei prestigiatori di Agile. L'approccio Agile quasi impone una negazione diretta di tutto ciò che è stato utilizzato prima di esso - tranne forse l'effettiva codifica della soluzione. Chiaramente, questa è un'indicazione di una visione limitata da parte dei suoi autori, o forse è semplicemente un caso di "non ce ne sono così ciechi, come quelli che non vogliono vedere".

Tuttavia, il merito dell'agile è che incoraggia i processi semplificati e si concentra sul codice eseguibile, che è inevitabilmente il tuo ultimo risultato.

ORA, per rispondere alla tua domanda più direttamente:

Data la tua visione d'insieme del tuo ambiente, ti suggerisco innanzitutto di selezionare un'implementazione Agile (es. Scrum, XP, ecc.). Quindi personalizza l'approccio alla suite del tuo ambiente, delineando un chiaro processo di funzionamento del tuo team, ad esempio:

  • Ricevi richieste dagli utenti;

  • Dai la priorità alle richieste degli utenti;

  • Calcolare l'impatto del miglioramento sul sistema esistente (magari durante le riunioni stand-up giornaliere / settimanali);

  • Stimare i tempi di sviluppo di ciascun miglioramento e comunicarli ai vari utenti richiedenti;

  • Eseguire miglioramenti effettivi sul sistema esistente (ad es. Codifica).

  • Effettuare test degli utenti e ottenere l'impegno degli utenti (ad esempio via e-mail) che le modifiche richieste sono state implementate correttamente.

Ciò dovrebbe fornire una certa struttura (e ordine), pur mantenendo una parvenza di approccio Agile.

Detto quanto sopra, ricorda che la vecchia figura retorica inglese, "Come agile come una scimmia", non fu coniata senza motivo!


0

Direi che hai bisogno di una metodologia come Agile è essenziale per la tua squadra. Poiché la tua azienda è così disorganizzata, devi essere più organizzata all'interno del tuo team di sviluppo. Non credo tuttavia che i tuoi manager non tecnici debbano avere a che fare con questo.

Se hai intenzione di respingere i tuoi venditori e richiedere scadenze realistiche, devi giustificarlo con piani organizzati.

Anche su una nota separata se vengono da te con preventivi senza consulenza tecnica, quindi semplicemente rifiutali.


1
Concordo sul fatto che Agile è la potenziale soluzione ai loro problemi, tuttavia, a) ha sicuramente bisogno di comprensione, forte impegno e supporto da parte della direzione, b) la spinta e il rifiuto creano solo reazioni avverse che riducono le possibilità di una soluzione (e possono aumentare il possibilità di essere licenziato :-().
Péter Török,

0

Forse focalizzarsi sugli aspetti incrementali / iterativi è ciò che sia il tuo team, sia le parti interessate che escono dal cielo devono essere in grado di fornire regolarmente e coerentemente. Nel tempo, il team di vendita e la direzione acquisiranno fiducia nel fatto che quando inseriscono una nuova richiesta di funzionalità, possono essere certi che il team consegnerà in tempi adeguati.

Ovviamente, devi investire in test di unità / sistema / regressione, build automatizzate, cibo per cani, ecc. Per arrivarci se non ci sei già.


0

Per prima cosa suggerirei di raccogliere alcuni dati. Siediti in un momento tranquillo e scopri cos'è lo status quo: come vengono fatte le cose. Se la direzione è decisa a implementare qualcosa che può chiamare agile, allora cerca di capire qualcosa che funzioni per la tua squadra, elabora un documento, schiaffeggia "Agile" sul nome e sei a posto. Tieni presente che l'unica cosa che sanno veramente di agile è la parola e qualche vaga associazione con la rapidità per la sua solita definizione in inglese. Quindi quello che sto sostenendo è che il tuo team risolva il problema, trova un sapore che funziona per te e poi lo presenta alla tua direzione come il modo Agile (tm). Altrimenti alcuni PHB prenderanno in mano un libro e proveranno ad inserire il piolo quadrato nel foro rotondo e nessuno sarà felice.

Se scegli una forma "pura" di agilità, potrebbe essere difficile che anche il tuo team debba svolgere il ruolo di supporto. Ammettiamolo, il tuo capo potrebbe avere difficoltà ad accettare i membri del tuo team che rispondono alle richieste dell'help desk dicendo "lasciami creare un articolo arretrato, lo raggiungerò tra (tempo alla fine dello sprint) settimane".

Il più grande ostacolo è quello dei soldi. Se tutto è sugo verde, è molto più difficile dire che qualcosa non va e deve cambiare.

Buona fortuna.


0

Al contrario, mi sembra che un metodo Agile sia esattamente ciò di cui hai bisogno per gestire scadenze mancate, aspettative non realistiche e progetti mal pianificati.

Il tuo management ha indicato di essere interessato a questa nuova parola Buzz. Molto probabilmente vorranno usarlo per promuovere la commercializzazione dei tuoi prodotti. questa non è necessariamente una cosa negativa, ma dovrà essere gestita con molta attenzione se vuoi far funzionare un metodo Agile per te.

Metà della battaglia sta ricevendo buy-in dalla direzione. Avere loro ricettivi all'idea stessa di Agile è la maggior parte della battaglia. Il resto è assicurarsi che le loro aspettative siano gestite in modo che continuino a desiderare che tu sia agile, ed evitare che rimangano disincantati quando e se i tuoi manager hanno la sensazione che il loro controllo sulla gestione del progetto stia in gran parte scivolando tra le dita.

Prima che la tua azienda decida qualcosa, consiglierei di salire su un pullman Agile per seminari e seminari di mezza giornata. Fai in modo che tutti pensino come una squadra - manager e sviluppatori allo stesso modo - su ciò che Agile ritiene che funzionerà per te e ciò che senti non lo farà. Se d'altro canto la direzione si fida del proprio giudizio, sarà necessario acquisire familiarità con una serie di pratiche e metodi agili e creare un seminario o il proprio. Personalmente, mi sarei orientato verso un allenatore esperto, in modo da non perdere molto tempo e mantenere lo slancio. Nel frattempo, prendi una copia di un paio di buoni libri Agile come riferimenti, leggili attentamente, ma lasciali anche appesi alla scrivania dove i dirigenti possono vederli. La psicologia subliminale può fare miracoli in una situazione come quella che hai descritto.

Raccomanderei almeno di leggere quanto segue:

e per credito extra (perché penso che sia un ottimo compagno per gli altri libri che ho citato):

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.