Come possiamo rendere agile il divertimento per gli sviluppatori che amano personalmente, indipendentemente possedere grandi blocchi dall'inizio alla fine

51

Siamo all'incirca a metà della transizione dalla cascata all'agile usando la mischia; siamo passati da grandi team in silos tecnologici / disciplinari a piccoli team interfunzionali.

Come previsto, il passaggio ad agile non è adatto a tutti. Ci sono una manciata di sviluppatori che stanno avendo difficoltà a adattarsi all'agile. Voglio davvero tenerli fidanzati e sfidati, e alla fine mi diverto a venire al lavoro ogni giorno. Sono persone intelligenti, felici e motivate che rispetto sia a livello personale che professionale.

Il problema di base è questo: alcuni sviluppatori sono principalmente motivati dalla gioia di intraprendere un lavoro difficile, pensando a un progetto, pensando a potenziali problemi, quindi risolvendo il problema pezzo dopo pezzo, con una minima interazione con gli altri, per un lungo periodo di tempo. In genere completano il lavoro ad un alto livello di qualità e in modo tempestivo; il loro lavoro è mantenibile e si adatta all'architettura generale. Passando a un team interfunzionale che valorizza l'interazione e la responsabilità condivisa per il lavoro e l'erogazione di funzionalità operative a intervalli più brevi, i team evolvono in modo tale che l'intero team risolva questo difficile problema. Molte persone ritengono che questo sia un cambiamento positivo; qualcuno che ama prendere un problema e possederlo indipendentemente dall'inizio alla fine perde l'opportunità di lavorare in quel modo.

Questo non è un problema con le persone che sono aperte ai cambiamenti. Certamente abbiamo visto alcune persone a cui non piace il cambiamento, ma nei casi in cui sono preoccupato, le persone sono brave, sinceramente aperte al cambiamento, fanno uno sforzo, vedono come il resto della squadra è cambiando e loro vogliono adattarsi. Non è un caso di qualcuno che è difficile o ostruzionista, o che vuole accumulare il lavoro più bello. Semplicemente non trovano gioia nel lavoro come prima.

Sono sicuro che non possiamo essere l'unico posto in cui non si è imbattuto in questo. Come si sono avvicinati gli altri a questo? Se sei uno sviluppatore motivato a possedere personalmente una grande fetta di lavoro da un capo all'altro, e ti sei adattato a un diverso modo di lavorare, che cosa ha fatto per te?

    
posta Kris 01.06.2011 - 07:37
fonte

11 risposte

21

Dirò che ci sono pochissimi negozi di software che sono abbastanza fortunati da avere la rara distinzione in cui Agile non ha davvero senso come una metodologia. Se l'intero team è costituito da sviluppatori di software davvero eccezionali con una profonda conoscenza degli aspetti del business e della longevità con l'azienda e l'un l'altro, e se i requisiti aziendali e le esigenze dei clienti sono in genere sempre simili e raramente soggetti a modifiche nel mezzo di un Rilascio quindi sei fortunato a lavorare in un ambiente così raro in cui Agile può probabilmente HURT.

È stato progettato per essere l'approccio più efficace in mezzo a richieste di business caotiche e in costante evoluzione e alle esigenze dei clienti, all'evoluzione o alla modifica delle risorse del progetto e a scadenze rigide o mutevoli. Un tale ambiente rappresenta una sorta di rovina per lo sviluppo tipico delle cascate poiché è vulnerabile ai cambiamenti di squadra a metà progetto, vulnerabile ai mutevoli requisiti ed estremamente vulnerabile a una data che cambia.

Sento per i tuoi preziosi membri del team che non trovano più gioia nel loro lavoro. Molto bene possono essere persone di eccezionale talento che si immergono nel loro lavoro ma alla fine, un numero di fattori al di fuori del loro miglior controllo può comunque uccidere il progetto. Il modo migliore per avvicinarsi allo sviluppo delle caratteristiche è che perdano l'atteggiamento e l'espressione individuale e pensino in termini di approccio di squadra.

Se ritieni che ciò non funzioni per loro, puoi trovare un uso speciale per loro. Se sono eccezionalmente talentuosi e con esperienza, vedi se sono interessati a un ruolo architettonico, disponendo progetti di alto livello, approcci, sperimentando nuove tecnologie e migliorando le migliori pratiche. Chiedi a queste persone di controllare e revisionare la documentazione di progettazione.

Se questo non gli si addice ancora allora forse li farai lavorare separatamente su refettori tecnici estremamente complessi su un ramo separato, prototipi e prove di concetti estremamente coinvolgenti, o altri lavori pionieristici che a volte devono essere fatti ma non si adattano bene nell'ambito di un singolo progetto o versione.

    
risposta data 01.06.2011 - 13:43
fonte
43

They just don’t find joy in work like they used to.

Una corretta.

Questo è un grosso sintomo che stai sbagliando.

Agile non dovrebbe imporre un nuovo cattivo ordine agli utenti.

Agile dovrebbe consentire al team auto-organizzarsi in un modo che lo renda più efficace.

L'auto-organizzazione significa che la gestione non impone regole strane. Non impone scadenze e non impone un'interazione inutile.

Some developers are primarily motivated by the joy of taking a piece of difficult work, thinking through a design, thinking through potential issues, then solving the problem piece by piece, with only minimal interaction with others, over an extended period of time

Perché non possono continuare a farlo?

Perché cambiarli?

Leggi il Manifesto Agile un paio di volte.

Il Manifesto Agile dice

Individuals and interactions over processes and tools

Non dice che costringere le persone a lavorare in un modo che è scomodo e improduttivo.

Se stai costringendo le persone a troppe "interazioni" di basso valore, allora sei andato troppo oltre.

Working software over comprehensive documentation.

Lo stanno facendo? Quindi lasciali soli.

Customer collaboration over contract negotiation.

Lo stai già facendo? Quindi non cambiare.

Responding to change over following a plan.

Dove queste persone sono già in grado di rispondere al cambiamento? Se è così, allora erano già agili. Non hanno bisogno di cambiare.

    
risposta data 01.06.2011 - 14:26
fonte
22

la mia azienda ha tentato (e ancora tentato dopo anni di tentativi) di fare la stessa transizione e finora personalmente non ho visto molto successo con esso. Durante questa transizione, ho fatto un sacco di letture sullo sviluppo agile e su diversi modi / aspetti / preoccupazioni / tecniche e una cosa su cui sono decisamente d'accordo è che lo sviluppo agile puro è più adatto quando l'intera squadra è composta da persone di alto livello e di alta qualità (o almeno tutte le persone dello stesso livello).

Ultima uscita ero su un team "agile" che aveva IMHO troppi sviluppatori con livelli di abilità dappertutto e abbiamo cercato di coinvolgere tutti nello stesso progetto. È stato un disastro. Abbiamo fatto più discussioni / discussioni che lavoro, e alla fine ciò che il team ha prodotto è stato un lavoro medio (leggi Peopleware o Mythical Man Month riguardo alla media). Dimentica i modelli di progettazione, dimentica il basso accoppiamento o il codice di rottura in classi e metodi di piccole dimensioni. Dimentica di provare a rendere tutto interessante perché a) che non poteva essere spiegato e compreso da tutti i membri del team (almeno non in modo tempestivo) eb) dato che eravamo agili, qualunque cosa avessi iniziato questa iterazione, qualcun altro senza assolutamente capire continuerebbe nella prossima iterazione. Personalmente, ho appena rinunciato e ho semplicemente aspettato che la mischia o chiunque mi assegnasse compiti, li abbia fatti, sia andato a casa e abbia codificato i miei progetti personali.

Ho assolutamente odiato il fatto che non potevo fare nulla con i template C ++, o scrivere alcune librerie di basso livello (ma piuttosto complesse) a basso livello che avrebbero reso le nostre vite molto più semplici. Come si può fare qualcosa del genere quando nessun altro nel team è nemmeno in grado di leggere i file di intestazione STL, ma tutti dovremmo lavorare su una cosa alla volta. L'intero progetto è finito per essere funzione forzata bruta per caratteristica perché è quello che sembra enfatizzare l'agile.

Allo stesso tempo, ci sono poche (pochissime) persone nella mia compagnia che mi piacerebbe assolutamente lavorare fianco a fianco e condividere tutto il mio codice.

Ma ora ti trovi di fronte a una scelta. A) Prendi tutti i tuoi migliori sviluppatori senior che producono codice di alta qualità e li metti nella propria squadra e metti il resto in una squadra separata. O B) cercare di bilanciare le squadre e mettere quelle buone con quelle non buone. In (A) il problema è che uno dei tuoi team sarà molto poco performante e non acquisirà buone abilità / abitudini da bravi ragazzi. In (B) i tuoi bravi ragazzi (in puro ambiente agile) si sentiranno frustrati e inizieranno a lavorare sui loro curriculum. Il mio è aggiornato.

Quindi cosa devi fare?

Non so se questa è la soluzione giusta. Chiedimi di nuovo tra circa un anno. Ma se invece di "pura agilità" hai formato una squadra, ma identifica chiaramente quale persona (o persone) ha più influenza (design, recensioni di codice ...) e assicurati che quella persona lo capisca e venga ricompensata per ulteriore responsabilità. Mentre i membri del team iniziano a lavorare insieme, identifica quelli che stanno acquisendo buone abitudini / pratiche e li eleva allo stesso livello della tua brava gente. Si spera che mentre le persone trascorreranno un rilascio o due lavorando insieme, impareranno cosa pensa l'altra persona e come funzionano, quindi saranno più compatibili a lavorare nello stesso codice allo stesso tempo. Ma finché ciò non accade, se metti le persone in un progetto, non sarà altro che frustrazione (di nuovo, solo la mia opinione). In questo modo se i ragazzi senior devono lavorare con quelli meno esperti, almeno hanno più peso (non dittatura, solo più peso) nel processo decisionale.

Alcuni dei miei pensieri sono basati su come ho iniziato a lavorare professionalmente nel software. Quando ero una cooperativa, lavoravo con un ragazzo che era il mio mentore. Mi ha insegnato tutto, dalla codifica dell'etica al buon design alla lettura di migliaia e migliaia di righe di codice che non hai scritto. All'inizio non eravamo neanche lontanamente sullo stesso livello e sarebbe ridicolo se fossimo stati inseriti in una squadra agile e avessimo detto che possiamo lavorare sul codice degli altri. Ma nel tempo (alcuni anni), abbiamo iniziato a pensare molto allo stesso modo. Potevo capire il suo codice con una semplice occhiata e lui mi ha detto più volte che non aveva assolutamente problemi (e ne era rimasto sorpreso) nel navigare il mio codice che non aveva mai visto prima. Ci sono voluti anni, non qualcosa che è successo durante la notte. Dopo aver sperimentato un disastro dopo un disastro in un ambiente agile negli ultimi anni, vorrei saltare in un battito cardiaco per avere la possibilità di lavorare insieme a quel ragazzo in un team agile

Questa non è davvero una risposta, ma riassume la mia esperienza / osservazioni. Voglio vedere quello che gli altri direbbero di questo.

    
risposta data 01.06.2011 - 08:38
fonte
7

Che cos'è Agile?

È:

  • un insieme di regole che devi seguire per ottenere ciò che intendevano i regolatori?

  • un approccio best-guess per realizzare le cose in base a particolari punti di forza, requisiti e limitazioni?

Se pensi che Agile sia la prima e segui sempre tutte le regole di Scrum e ti preoccupi costantemente se lo stai facendo bene o no, forse questo link ti illuminerà un po '.

Se pensi di più sul secondo, poi congratulazioni - ottieni 'Agile. Qualsiasi metodologia Agile può essere solo un suggerimento su come fare per ottenere risultati. Se qualche aspetto del metodo agile scelto non ti sembra giusto, allora hai il dovere di smettere di usarlo, cambiarlo o comunque essere agile su di esso. Ciò che è importante è che tu realizzi qualcosa, che non ti trattiene da vincoli artificiali - non solo quelli che tutti conosciamo e amiamo dai nostri vecchi giorni di cascata in cui il PM ti avrebbe seccato per diagrammi documentati completi che nessuno avrebbe mai leggi solo perché "questo è ciò che il processo dice di fare", ma anche dai vincoli di ciò che stai usando. Se una mischia giornaliera sembra essere un vincolo, non batterli! Per avere ciecamente perché le regole dicono che non è più agile rispetto ai vecchi modi.

Ora, se hai alcuni ragazzi che ottengono risultati bloccati in una stanza con solo un gallone di cola e un boccaporto per pizza, allora usa questo fatto. Dare loro una parte del sistema che è per lo più autosufficiente e bloccarli. Quando hanno finito, dovresti convincerli a integrare quel lavoro (o far fare a qualcun altro se lo preferiscono) con il resto del sistema.

Alistair Cockburn ha descritto questo nei suoi metodi. Se hai "professionisti di livello 3", allora un metodo agile perfettamente valido è il seguente:

“Put 4-6 people in a room with workstations and whiteboards and access to the users. Have them deliver running, tested software to the users every one or two months, and otherwise leave them alone.”

Dato che hai un mix di persone, devi trovare un modo per convincerle a lavorare insieme in modo costruttivo, e questo significa che un approccio "tutto compreso" probabilmente non sarà molto efficiente. Quindi è necessario dividere le attività, assicurando nel contempo che l'obiettivo comune sia sottolineato. È ok per mandare questi ragazzi al codice, ma devono essere resi consapevoli di come le loro cose saranno parte integrante del resto del lavoro del team e che non riuscendo a ottenere ciò è un fallimento di qualunque cosa stiano producendo . Una volta capito (cioè non possono semplicemente fare quello che vogliono e consegnare qualcosa di inutilizzabile) allora il tuo lavoro è finito.

    
risposta data 01.06.2011 - 14:55
fonte
4

Diciamo che agile non è per tutti e agile non è per ogni progetto. Nello stesso tempo, l'agile è un termine molto ampio e Scrum è solo un'implementazione di un processo agile: in qualche modo posso dire che l'implementazione presenta probabilmente i maggiori vincoli che cercano di impostare un processo standardizzato con passaggi ben noti.

Un'altra area su cui riflettere è qual è lo scopo dell'agile? È agile sul modo in cui gli sviluppatori lavorano? Forse - alcune metodologie effettivamente vanno in quella direzione. Ma agile stesso copre aree al di fuori dello sviluppo. Agile significa più guidare l'intero processo, il modo in cui funziona l'interazione, il modo in cui consegna il prodotto funzionante con le funzionalità più importanti in tempo e il modo in cui controlli le risorse, come vedi dove ti trovi nel progetto attualmente, ecc.

Ci sono metodologie che non cercano di cambiare nulla dal tuo processo di sviluppo - Scrum non è l'unico. Tutte le metodologie agili enfatizzano il miglioramento continuo. Rileverete un passaggio inefficiente nel vostro processo e cercherete di migliorarlo / modificarlo - questo è il modo agile. Controlla un'altra metodologia popolare agile - Kanban.

Tu / la tua azienda hai deciso di usare Scrum e questo può portare al fatto che ad alcune persone non piacerà e se ne andrà. Dovresti trattare separatamente ciascuno dei tuoi sviluppatori. Dovresti parlarne con ognuno e dovresti cercare di trovare alcuni interessi che permettano loro di godere nuovamente del lavoro.

Possono avere un ruolo di mentori, possono insegnare agli altri, mostrare loro come rifattorizzare il codice per migliorare l'architettura quando si lavora in modo iterativo. Possono formare insieme l'uso di un modello di architettura globale attraverso i progetti. Possono anche lavorare su prove di concetti, partecipare a RFI (richiesta di informazioni) quando i clienti fanno domande per riflettere sulla fattibilità dei requisiti. Possono lavorare in coppia con sviluppatori meno esperti e svolgere insieme il compito complesso, ecc. Il loro valore principale dovrebbe essere nell'utilizzare le loro competenze e consentire ad altri di imparare da loro.

Scrum e agile a livello globale in effetti in qualche modo tengono fuori le persone e danno la priorità ai team: i team distribuiscono applicazioni, non gli individui. Questa idea si basa sul fatto che non avrai mai una squadra in cui tutti abbiano le stesse competenze ed esperienze.

Se la transizione a Scrum avrà successo, dovrebbero vedere che il processo complessivo è migliorato, i tempi di consegna sono stati ridotti, la qualità è migliorata e i clienti sono più soddisfatti. Possono ancora credere che le applicazioni sviluppate siano molto peggiori di quanto potrebbero essere, ma questo è il punto - il cliente non vuole il miglior codice mai scritto. I clienti vogliono il codice di lavoro minimo / più economico / più veloce sviluppato che soddisfi le loro esigenze. Se la forza bruta è sufficiente per quello, allora sii. Questo è qualcosa che può causare problemi agli sviluppatori esperti, ma non è un fallimento dell'agile, è il luogo in cui le esigenze aziendali e il perfezionismo si scontrano.

    
risposta data 01.06.2011 - 09:22
fonte
2

Trarrà beneficio all'intero team se prendi alcuni dei maggiori problemi e li consegni a un grande sviluppatore. Tutti possono essere aggiornati in seguito e imparare qualcosa durante il processo. Semplicemente non creare un'intera applicazione in questo modo.

Non abbassi il codice al minimo comune denominatore. Fai in modo che gli inesperti raggiungano gli sviluppatori migliori.

    
risposta data 01.06.2011 - 15:52
fonte
2

Ci sono state molte discussioni su ciò che è o non è "agile" e molti sentimenti personali, esperienze e timori riguardo al processo agile condiviso qui, ma non ho davvero visto una risposta effettiva alla domanda. La domanda iniziale era come mantenere motivati i tuoi migliori sviluppatori quando vedono il loro codice che hanno scritto a livello di pura forma d'arte e hanno investito il loro sudore e il loro sangue, hackerati da qualcun altro e "corrotti". Tieni presente che, agile o meno, questo accadrà a un certo punto, ora è solo più visibile perché stanno ancora lavorando al codice contemporaneamente ad altri, invece del tipico handoff da supportare, a quel punto non vedrebbero proprio quelle modifiche fatte

Quello che vedrei come chiave qui è di espandere la responsabilità di questi sviluppatori e aiutarli a cambiare il loro focus su un quadro più ampio. Forse questo significa un nuovo titolo, come Software Architect o Team Lead o Senior Software Engineer. Quindi mostra loro che questa è un'opportunità per avere un impatto maggiore, non solo su un singolo progetto alla volta, ma su più progetti. Il senso di appartenenza può ancora essere presente, ma il loro obiettivo non dovrebbe più essere quello di fornire un unico grande progetto, ma di aiutare a impostare la barra per i progetti ALL . Aiutali a cogliere il loro strong desiderio di creare qualcosa di grande, ma sposta l'attenzione su come costruire le pratiche di ingegneria del software della tua azienda e gli altri sviluppatori. Invece di pensare al fatto che i loro colleghi possano fare a pezzi il loro codice, questa può essere una possibilità per loro di passare al livello successivo e guidare i loro compagni di squadra e portarli al loro livello.

    
risposta data 01.06.2011 - 22:08
fonte
2

Cercherò di illustrare alcuni aspetti che non sono stati risolti da altre risposte e che, IMO, sono importanti.

The basic issue is this: Some developers are primarily motivated by the joy of taking a piece of difficult work, thinking through a design, thinking through potential issues, then solving the problem piece by piece, with only minimal interaction with others, over an extended period of time. They generally complete work to a high level of quality and in a timely way; their work is maintainable and fits with the overall architecture.

Questo tipo di sviluppatori potrebbe trovare difficile adattarsi a un ambiente agile e il loro atteggiamento è spesso ignorato come "mancanza di volontà di cambiare", probabilmente correlato all'ego o all'essere antiquati.

Ciò che viene spesso ignorato è che per risolvere problemi complessi è necessario gestire molte informazioni e che questo può richiedere molte analisi, pensare, provare, disegnare una soluzione, buttarla via, provarne un'altra. Un problema così complesso può richiedere da poche ore a poche settimane di lavoro mirato finché non si ha una soluzione completa.

Un approccio è che uno sviluppatore prende le specifiche del problema, va nella sua stanza e torna due / tre settimane dopo con una soluzione. In qualsiasi momento (quando necessario), lo sviluppatore può avviare alcune interazioni con altri membri del team o con le parti interessate (ponendo domande su problemi specifici) ma la maggior parte del lavoro viene svolto dallo sviluppatore a cui viene assegnata l'attività.

Cosa succede in uno scenario agile? Il team suddivide il problema in piccoli blocchi (storie utente) dopo una rapida analisi (toelettatura). La speranza è che le storie degli utenti siano indipendenti le une dalle altre, ma spesso non è così: al fine di suddividere un problema complesso in blocchi davvero indipendenti, è necessaria una conoscenza che normalmente si ottiene solo dopo aver lavorato su di esso per diversi giorni. In altre parole, se sei in grado di suddividere un problema complesso in piccole parti indipendenti, significa che lo hai già risolto e che hai solo un lavoro di diligenza. Per un problema che richiede, per esempio, tre settimane di lavoro, questo sarà probabilmente il caso durante la seconda settimana, non dopo un paio d'ore di toelettatura fatta all'inizio dello sprint.

Quindi, dopo che uno sprint è stato pianificato, il team lavora su diversi blocchi di un problema che probabilmente dipendono l'uno dall'altro. Questo genera un sovraccarico di comunicazione che tenta di integrare soluzioni diverse che possono essere ugualmente buone ma, beh, diverse l'una dall'altra. Fondamentalmente, il lavoro trial-and-error è distribuito su tutti i membri del team coinvolti, con un overhead di comunicazione aggiuntivo (in aumento quadratico). Penso che alcuni di questi problemi siano illustrati molto bene in questo articolo di Paul Graham, in particolare il punto 7.

Naturalmente, la condivisione del lavoro tra i membri del team riduce il rischio legato al fatto che un membro del team lasci il progetto. D'altra parte, la conoscenza del codice può essere comunicata in altri modi, ad es. usando le revisioni del codice o dando presentazioni tecniche ai colleghi. A questo proposito, non penso che ci sia un proiettile d'argento valido per tutte le situazioni: la proprietà del codice condiviso e la programmazione delle coppie non sono l'unica opzione.

Inoltre, "la consegna della funzionalità di lavoro entro intervalli più brevi" comporta un'interruzione del flusso di lavoro. Questo può essere OK se la parte di funzionalità è "aggiungi un pulsante Annulla nella pagina di accesso" che può essere completata entro la fine di uno sprint, ma quando lavori su un'attività complessa non vuoi tali interruzioni: è come provando a guidare un'auto 100 km più velocemente che puoi e fermandoti ogni 5 minuti per controllare quanto lontano hai ottenuto. Questo ti farà rallentare.

Ovviamente, avere frequenti checkpoint significa rendere più prevedibile un progetto, ma in alcuni casi l'interruzione può essere molto frustrante: si può a malapena guadagnare velocità che è già tempo di fermarsi e presentare qualcosa.

Quindi, non penso che l'atteggiamento descritto nella domanda sia legato solo all'ego o alla resistenza al cambiamento. Può anche darsi che alcuni sviluppatori considerino l'approccio alla risoluzione dei problemi sopra descritto più efficace perché consente loro di avere una migliore comprensione dei problemi che stanno risolvendo e del codice che stanno scrivendo. Costringere questi sviluppatori a lavorare in un modo diverso può ridurre la loro produttività.

Inoltre, non penso che avere membri del team che lavorano in isolamento su problemi specifici e difficili sia contro valori agili. Dopotutto, i team dovrebbero essere auto-organizzanti e utilizzare il processo che hanno trovato essere il più efficace nel corso degli anni.

Solo i miei 2 centesimi.

    
risposta data 07.06.2014 - 20:16
fonte
1
Some developers are primarily motivated by the joy of taking a piece of difficult 
work, thinking through a design, thinking through potential issues, then solving
the problem piece by piece, with only minimal interaction with others, over an 
extended period of time

Sembra che siano "Lone Rangers". Nello Scrum canonico, queste persone non sono adatte al Team (mancano il bit "interaction").

Se non sono "Lone Rangers", allora c'è speranza. Se stai facendo Scrum correttamente, devono far parte del design della funzione su cui lavoreranno (durante lo Sprint Planning). Questa è l'unica volta in cui hanno bisogno di interagire con gli altri. Puoi anche "assegnare" tutte le storie relative a quella caratteristica per loro.

Durante lo Sprint, saranno "disturbati" dallo Scrum quotidiano ... fino a che non potrai provarli (con azioni, non con parole) che saranno solo 15 minuti del loro tempo, e solo per garantire che tutto funziona senza intoppi. Resta vicino alle tre domande e la maggior parte delle persone smetterà di conformarsi.

Nel nostro team, abbiamo un gruppo speciale solo per migliorare le prestazioni. Non li vediamo molto, solo all'inizio dello sprint per parlare delle modifiche da apportare e alla fine della retrospettiva. Hanno il loro "capo di mischia" che riferisce al team Scrum of Scrum. Posso dirti che si stanno divertendo.

    
risposta data 01.06.2011 - 22:46
fonte
0

Se Joe (il tuo sviluppatore di Hero) è un po 'flessibile, allora non vedo un problema:

Come detto sopra, lascia che il team si auto-organizzi: se alcuni problemi vengono affrontati meglio lasciando che Joe mastichi da solo, allora ti aspetteresti che una squadra auto-organizzatrice dalla mentalità aperta raggiunga questa conclusione da sola. / p>

Le uniche sfide che rimangono nei pochi vincoli imposti da Scrum:

  1. Fornire funzionalità a intervalli regolari: se lasci che Joe mastichi un problema per mesi, senza mostrare nulla fino alla fine, allora Joe non è davvero agile: sta prendendo in ostaggio il proprietario del prodotto e non gli permette di un'opportunità per ri-specificare quella parte del prodotto. Con questa pratica c'è anche il rischio che sia in ritardo, e nessuno lo sta notando. (Ma secondo la tua descrizione non è così probabile). Rimedio: sarebbe troppo chiedere a Joe di sedere insieme al PO, suddividere la storia dell'utente e concordare i risultati intermedi, preferibilmente (ma non necessariamente) con il valore dell'utente?

  2. Onorare le priorità impostate dal proprietario del prodotto: se i pezzi di codice sono di proprietà di esperti, si rischia una situazione in cui l'evoluzione del prodotto è determinata dalla disponibilità di ciascun esperto, piuttosto che dalle priorità commerciali: Il resto della squadra potrebbe lavorare su funzionalità meno importanti, mentre le 3 funzioni principali sono in fase di stallo perché "solo Joe può farlo". Questo è male. In quel momento, la squadra dovrebbe (temporaneamente) cambiare abitudine e dividere il lavoro di Joe su più membri del team.

In breve: Se Joe, lo sviluppatore dell'eroe, è d'accordo con il PO su come mostrerà il progresso di ogni sprint, allora la squadra potrà assegnargli alcune storie e lasciarlo da solo. Ma se PO ha troppo lavoro per Joe, e non abbastanza per la squadra (o viceversa), allora Joe e il team devono adattarsi, non il PO.

    
risposta data 25.06.2014 - 08:57
fonte
-1

Le regole per un team agile dovrebbero essere personalizzate per adattarsi al team - questa può essere una personalizzazione personale; Ad esempio, ho lavorato in una squadra in cui la regola era:

All Code must be written by a pair, except David may write code alone.

David era uno sviluppatore / architetto senior, che lavorava principalmente su strumenti che altri avrebbero usato nel proprio codice. Ha molto posseduto il codice che ha scritto. Era gestibile e testato, e tutti nel team sapevano che probabilmente era il miglior programmatore lì e che il team sarebbe stato meglio servito lasciandogli costruire alcuni pezzi del framework e presentarli come completi al squadra.

Non ho una risposta per introversi nella varietà giardino, ma per introversi eccezionali, il team prenderà felicemente regole diverse per ottenere il beneficio.

    
risposta data 09.06.2011 - 16:34
fonte

Leggi altre domande sui tag