Come è possibile ottenere e mantenere il flusso durante la programmazione delle coppie?


17

Flow è un concetto introdotto da Mihaly Csikszentmihalyi; in breve, significa entrare nella "zona". Ti senti immerso nel tuo compito, concentrato; l'attività può essere difficile ma allo stesso tempo impegnativa. Quando le persone raggiungono il flusso, la loro produttività aumenta. La programmazione richiede molta attenzione mentale perché spesso abbiamo bisogno di destreggiarsi tra diverse cose nella nostra mente contemporaneamente. A molti piace lavorare in un ambiente tranquillo dove possono dirigere la loro piena attenzione al compito. Se vengono interrotti, potrebbero essere necessari diversi minuti o addirittura ore per tornare al flusso.

Capisco che esiste una pratica nello sviluppo agile e nella programmazione estrema chiamata programmazione a coppia. Significa che metti l'intero team di sviluppo software in una stanza in modo che la comunicazione sia perfetta. Scrivi il codice con la tua coppia perché in questo modo ottieni revisioni istantanee del codice e passa meno bug.

Ho sempre avuto problemi a raggiungere il flusso durante la programmazione di coppia a causa di continue interruzioni. Sto pensando a fondo a un problema, poi all'improvviso qualcuno mi fa una domanda da un'altra coppia. Il mio treno di pensieri è perso.

Come è possibile ottenere e mantenere il flusso durante la programmazione delle coppie?


4
Non sono d'accordo sul fatto che altre coppie possano semplicemente interrompere in qualsiasi momento.
JeffO,

3
Un'alternativa a Flow è identificare e mantenere la posizione sul Ballmer Peak . Questo può richiedere una buona quantità di sperimentazione, tempo e scotch per raggiungere.
Hovercraft Full Of Eels,

Sono distratto dalla lettura di questa domanda quando dovrei scrivere il codice. Se avessi programmato la coppia con qualcuno, non avrei aperto questa domanda per leggerlo e presumibilmente avrei fatto di più.
TehShrike,

Risposte:


15

Modifica: Dichiarazione di non responsabilità - Ecco come definisco "la zona": A state of extreme focus, in which one is able to understand how many intricate details connect together, regardless of whether these do so elegantly (or simply) or not.

Cerco di evitare questo stato perché, mentre potrei produrre il codice corretto nella zona, io e altri sviluppatori avremo difficoltà a capirlo in seguito. Per farla breve: leggere il codice che è stato scritto nella zona può spesso richiedere che il lettore si trovi nella zona. Questo vincolo è il mio problema.

C'è un delizioso capitolo su The Clean Coder in cui lo zio Bob spiega in modo persuasivo perché "entrare nella zona" sia un'idea deludentemente cattiva.

Ecco un'alternativa forse migliore di "entrare nella zona": pensa in modo corretto e considera con calma e professionalità ciò che stai facendo. Comunicare. Condividi pensieri con i tuoi partner. Identifica i problemi reali. Discutere possibili soluzioni. Potresti non sentirti concentrato in modo soprannaturale, ma probabilmente prenderai buone decisioni e progetti accessibili.

Se tu e il tuo partner di coppia potete discutere il problema senza che entrambi siate estremamente concentrati, è probabile che abbiate ridotto il problema alla sua natura più semplice. Ciò suggerisce che sarai in grado di capirlo di nuovo ogni volta che è necessario.

Il rovescio della medaglia... Se hai solo bisogno di un po 'di tempo da solo per raddrizzare la testa (a volte lo facciamo tutti), prendilo. Metti insieme i tuoi pensieri. Risolvi prima il problema nella tua testa.

Ma la cosa è che se lo fai, non usare quel tempo per scrivere il codice di produzione. Invece, gioca con un codice di esempio e prototipi. Cerca di capire il problema, senza pensare ancora alle soluzioni. Una volta che hai capito tutto e scritto, discuterne con la tua squadra e il tuo compagno di coppia, o anche l'anatra di gomma sulla tua scrivania. Se ancora non riesci ad articolarlo o non riescono a capirlo, allora affina le tue idee. Dopo aver risolto tutto, integra tutto quel pensiero e codice di esempio in una soluzione reale e funzionante.


2
Vorrei votare un milione di volte se potessi, i professionisti imparano a lavorare se sono "nella zona" o no. I professionisti possono lavorare con le persone che li interrompono per porre domande, con il rumore che li circonda e insieme ad altre persone che hanno effettivamente conversazioni su come svolgere qualsiasi compito su cui stanno lavorando insieme. Non mi interessa lavorare con la prima donnas che deve avere delle condizioni di lavoro speciali per concentrarsi.
HLGEM,

7
@HLGEM - Non credo che avere accesso a un posto tranquillo dove lavorare quando è necessario sia troppo da chiedere.
JeffO,

2
@HLGEM: Naturalmente un professionista dovrebbe avere una produttività media in condizioni di lavoro medie. D'altra parte, sarebbe nell'interesse del datore di lavoro lasciare che lo stesso professionista lavori in modo molto mirato, perché ciò può aumentare enormemente la produttività e la qualità.
Giorgio

2
"Mi sembra che le persone trattino" la zona "come se fosse una soluzione rapida magica per risolvere bene i problemi, come un cappello pensante.": No, più banalmente, la zona è uno stato di concentrazione in cui sei più produttivo perché sei concentrato sul tuo compito senza distrazioni. La zona non ti rende onnipotente, ti rende solo più produttivo.
Giorgio

2
@Yam Marcovic: questo non è il tipo di produttività che avevo in mente (producendo più codice di qualità inferiore): se si usa l'isolamento come scusa per fare ciò che vogliono non saranno più produttivi. Per me il flusso non significa confondere e poi scrivere un sacco di codice, ma piuttosto lavorare sistematicamente su un'attività specifica senza essere interrotto da altre attività non correlate.
Giorgio

5

La programmazione delle coppie a volte richiede periodi di isolamento dal proprio partner.

Esempio

Stai lavorando insieme su una determinata classe e ti rendi conto che devi scrivere un metodo che richiede una profonda riflessione su una logica complessa, ma che altrimenti restituisce un risultato banale. Lavori insieme alla creazione di unit test per quel metodo e rinvii la scrittura di quel metodo ad un periodo di tempo in cui lavori in isolamento. Una volta completato il metodo, si torna insieme come coppia e si valutano i risultati.


Perché l'implementazione non dovrebbe essere effettuata nella programmazione in coppia?
Try-catch-finalmente il

5

Ho scoperto che esiste una piccola classe di problemi per i quali funziona la programmazione di coppie. Ad esempio, se stai lavorando su un prodotto multipiattaforma e il ragazzo di Winders ha implementato una funzione che richiede un codice specifico del sistema operativo, può aiutare il ragazzo di Mac a implementare la stessa funzione sul codice di Mac mentre il ragazzo di Mac guida.

Tuttavia, nella mia esperienza, la programmazione di coppie provoca insolitamente una perdita netta di produttività. Sembra così spesso che stiamo pagando due sviluppatori per fare il lavoro di uno.

Sì, riduce la terribile possibilità che uno sviluppatore possa fare una pausa di scambio di stack durante la giornata lavorativa.

IMHO sarebbe più economico per quelle aziende che vogliono sorvegliare i loro sviluppatori semplicemente accoppiare ogni sviluppatore con una guardia di sicurezza privata per stare dietro lo sviluppatore e colpirlo con un manganello se mai rallenta o cerca di raggiungere un picco non essenziale pagina web.


1
Il punto di programmazione della coppia non si sta impedendo a vicenda di rallentare; non sarebbe nemmeno efficace. Il punto è avere la revisione del codice in tempo reale.
Lev

3
@Lev: avere una revisione del codice prima di impegnarsi è molto più efficiente: la revisione richiede da pochi minuti a mezz'ora, anziché un'intera giornata lavorativa.
Giorgio,

@Giorgio Non proprio. Ad esempio, può succedere che tu crei un bug, poi perdi tempo a catturarlo e solo allora riesci a rivedere e impegnare il tuo codice. Se la coppia fosse stata programmata, il partner avrebbe notato il bug e salvato il tempo di debug.
Lev,

1
@Lev: "Se avessi programmato una coppia, il tuo partner avrebbe notato il bug e risparmiato il tempo di debug.": Non vi è alcuna garanzia che venga notato un bug con la programmazione della coppia o con le revisioni del codice. Ad esempio, dopo sei ore di programmazione in coppia, uno potrebbe essere così stanco da trascurare facilmente i bug.
Giorgio,

Ovviamente non esiste alcuna garanzia, ma può aiutare.
Lev,

3

Come sviluppatore che tenta di entrare nella zona, tenterai di isolarti meglio che puoi per sentirti a tuo agio e liberare la mente. Perché la programmazione delle coppie dovrebbe essere diversa?

Tu e il tuo partner dovreste trovare un ambiente che induca la zona che funzioni per entrambi. Ciò richiederà probabilmente un compromesso su alcune cose, ma il mio punto principale è che l'ambiente delle coppie dovrebbe essere simile all'assolo. Spegni il mondo esterno. La coppia sta programmando insieme; altre coppie (altri colleghi in generale) non dovrebbero interrompere (tranne i problemi critici, drop-what-stai-facendo).


0

Flow è un ottimo stato in cui essere quando si conoscono i passaggi esatti per risolvere un problema. cioè alcune incognite sconosciute. Ti siedi in un angolo tranquillo e martelli via la soluzione. Tuttavia, la maggior parte dei problemi / storie / funzionalità non sono molto chiari quando si inizia a programmarli. Ci sarà sempre un "divario" tra lo stato finale atteso e il modo in cui il cervello lo ha "pianificato". Impari molte cose quando "lo fai" davvero. Il tuo cervello si destreggia

  • Progettazione del codice

  • Digitando

  • Imparare nuove cose sul dominio e sul codice

Quando programmo da solo, faccio fatica a bilanciare queste cose. Tendo a entrare in "buchi di coniglio" in cui la mia incapacità di costo sommersa mi impedisce di fare un passo indietro e guardare il quadro generale e cambiare il mio design. È anche difficile per me parlare con un'anatra di gomma immaginaria o una vera per quella materia. Dopotutto sono in "flusso".

Tuttavia, quando accoppiamento produttivo la programmazione, ottengo periodi alternati di battitura seguiti da periodi di riflessione e riflessione. È qui che molte cose nascoste si rivelano e può emergere un design diverso. Se vado in una tana di coniglio, il mio compagno di coppia può tirarmi fuori. Parlare / spiegare qualcosa a un vero essere umano ha questo meraviglioso effetto di rendere i tuoi pensieri più chiari in qualche modo. A volte, mi manca essere nel "flusso", ma penso di contribuire molto di più alla mia squadra quando abbino il programma rispetto a quando programmo da solo. Dopo tutta la programmazione! = Digitazione. La programmazione avviene nel cervello e una migliore programmazione avviene quando due cervelli collaborano e si criticano a vicenda.

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.