it-swarm.it

Come spiegare a un non addetto ai lavori perché uno sviluppatore non dovrebbe essere interrotto mentre è immerso nel codice?

Se prendi in considerazione solo la seconda parte della mia domanda, "Perché uno sviluppatore non dovrebbe essere interrotto mentre è immerso nel codice", è stato discusso più volte da persone intelligenti. Heck, anche il co-fondatore di SO, Joel Spolsky, ha scritto un post sul blog su "entrare nella zona" e "essere eliminato dalla zona" e perché ci vogliono in media 15 minuti per raggiungere la produttività partecipando a complesse attività legate allo sviluppo del software. Quindi penso che il motivo sia stato stabilito.

Quello che mi interessa è come spiegare tutto ciò a qualcuno che non conosce i fagioli sui fagioli (khmm intendo lo sviluppo del software). Come dire alla moglie, o al simpaticone della contabilità sul posto di lavoro, o all'amico di lunga data che ti chiama su Skype ogni 30 minuti con un "Wazzzzzzup ?!", che tutte le interruzioni hanno un impatto molto più profondo sul tuo lavoro rispetto a gli ovvi 30 secondi che hanno impiegato dal tuo tempo. Ovviamente non puoi spiegarlo con frasi come "Devo destreggiarmi molti nomi di variabili nella mia memoria a breve termine" a meno che tu non voglia essere il bersaglio di sguardi vuoti o abusi amichevoli.

Mi piacerebbe essere in grado di spiegare tutto ciò ai non sviluppatori in modo da renderli chiaramente comprensibili, senza essere offensivi, elitari o troppo tecnici.

MODIFICA: Grazie a tutti per le loro ottime intuizioni. Ho accettato la risposta di EpsilonVector poiché la sua analogia era la più vicina alle mie esigenze originali. La spiegazione "addormentarsi" non è né offensiva né tecnica, quasi tutti possono collegarsi ad essa, e le conseguenze di essere disturbati mentre ci si addormenta o mentre ci si trova nella zona sono molto simili: si sperimenta frustrazione e si "perde" 15-20 minuti di tempo.

92

Prova le seguenti analogie: Prima: "Quanto tempo ti addormenti?" "X minuti" "Ora immagina che quando sei vicino ad addormentarti, qualcuno entra e ti interrompe, quanto tempo impiegherai ad addormentarti ora? Quei pochi secondi che hai lasciato, o dovrai ricominciare da" affondare "dove eri?" "Dovrò ricominciare" "Fantastico. Stessa cosa. Proprio come addormentarmi, ci metto un po 'a" sprofondare "nella modalità di messa a fuoco, e mi ci vuole un po' per tornare ad esso una volta interrotto, tranne che dimentico anche la metà di quello che stavo facendo ".

Secondo: "Sai come quando leggi un libro" ci sprofondi ", dopo un po 'non ti accorgi più nemmeno delle parole e blocchi tutto ciò che ti circonda e sei completamente immerso nelle immagini mentali vedi." "Sì." "Quanto tempo ci vuole per arrivarci?" "Circa X minuti" "Ora immagina che quando sei così immerso nel libro in cui qualcuno entra e ti interrompe, quanto ci vorrà per tornare a quello? Accadrà immediatamente o dovrai ricominciare da" affondare "dove eri?" "Dovrò ricominciare da capo" "Fantastico. Stessa cosa. Proprio come con la lettura, mi ci vuole un po 'a' sprofondare 'in modalità messa a fuoco, è altrettanto fastidioso quando qualcuno mi fa uscire e mi prende solo purché torni a farlo una volta interrotto, tranne che dimentico anche la metà di ciò che leggo ".

124
EpsilonVector

Non penso che lo stato di fantasticheria descritto da Joel sia tecnico. È lo stesso spostamento del cervello destro che chiunque sperimenta quando disegna o cade sotto l'incantesimo di un libro davvero buono. ("Il disegno sul lato destro del cervello" di Betty Edwards lo descrive perfettamente). Tutti hanno sperimentato quel senso di concentrazione in cui non si è consapevoli del passare del tempo.

Penso che sia condiscendente fin dall'inizio immaginare che questo sia qualcosa che solo le persone tecniche comprendono, che il concetto deve essere smorzato affinché i non sviluppatori possano capire. Spiega semplicemente in un linguaggio semplice: lo capiranno.

30
duffymo

Reindirizza il tuo thread interno all'IO verbale, ovvero ruota quando ti interrompono e continuano a borbottare il codice e guardando a distanza media finché non si arrendono e vanno via. Se parlano, borbottano solo più forte.

23
Peter

Spiega loro che programmare (o inserire qui altre attività ad alta concentrazione) è come essere un artista circense che fa il spinning plate act .

Per prima cosa inizi a girare una piastra su un bastoncino, fai partire, poi inizia a girare una seconda piastra, vai avanti, torna al primo piatto, fai un piccolo giro in più per farlo andare avanti, quindi inizia a girare una terza piastra , avvialo, quindi torna al secondo piatto, piccolo giro extra, primo giro extra, terzo giro extra, quindi inizia a girare quarto, ecc. ecc.

Quindi il telefono squilla e tutte le piastre cadono.

Lo stato del flusso è sparito. Ora devi ricominciare tutto da capo. Fai girare una piastra ...

Mi piace pensare a ciascuna piastra come a un insieme di dati, variabili, concetti, stati, ecc. Che devi mantenere nella tua testa.

16
Dhaust

Qualche mese fa ho fatto entrare qualcuno nel mio cubo ed estrarre gli auricolari mentre stavo programmando. Furia interna a parte, il mio approccio era quello di spiegare che spesso i programmatori sono profondamente nel pensiero logico che richiede un approccio diverso e concentrato al pensiero e che l'interruzione improvvisa può davvero rovinare il processo del pensiero. Non è più successo da quella persona, quindi forse ha funzionato. Un'altra cosa che potresti considerare è il segno di occupato/libero. Ho un amico che fa algoritmi e ha un segno a due facce che dice "Coding - Non interrompere" da un lato e "Free to Chat" dall'altro. La rimozione dell'ambiguità è la chiave qui.

13
n1reu

Ok, sto aggiungendo la mia risposta (so che è un po 'stupido, ma forse getta un po' di luce in più su ciò a cui stavo mirando).

Ho detto quanto segue a qualcuno che mi ha interrotto di recente in un brutto momento: "Sviluppare software è come guidare un'auto in una strada molto trafficata per la prima volta nella tua vita. Tutta la tua attenzione è focalizzata sulla ruota, sui pedali e sulle auto correndo intorno a te, e semplicemente non hai alcuna attenzione in più per una bella chat. Se inizi a concentrarti su ciò di cui parla la chat, sei destinato a perdere il controllo della macchina e finirai in un incidente".

Questo era qualcosa a cui la persona poteva riferirsi, ma è tutt'altro che una buona analogia. Se vengo interrotto, la conseguenza sarà molto diversa da un incidente. Faccio sviluppo sw da 2 decenni, quindi perché lo paragono a qualcosa che viene fatto per la prima volta. E così via.

12

" Mihaly Csikszentmihalyi on flow " è un buon TED. Parla di questa idea di essere veramente produttivo in determinate condizioni che potrebbero o meno piacere alle persone. Non dimenticare che per alcune persone potrebbero non voler mai capire la spiegazione e quindi è un po 'come battere il cavallo morto in modo ricorsivo all'infinito.

7
JB King

Lo chiamo trance programmatori. Ci sono molte buone analogie qui, quindi qual è un'altra eh? Come è stato detto in precedenza, un programmatore percorre mentalmente diversi flussi logici diversi fino a quando quello giusto non si presenta. POI viene scritto in codice e salvato sul computer.

Quindi, supponiamo che stai scrivendo un term paper o un documento importante. I pensieri fluiscono in parole nel computer ma non hai ancora salvato le modifiche. Quindi poof, il potere si spegne o il computer si arresta in modo anomalo. Il recupero di tutto ciò richiederà più o meno tempo e non sarà mai lo stesso dell'originale. (Quanti di noi vecchi timer l'hanno fatto succedere?)

Questo è ciò che accade al codice nella tua testa quando viene interrotto. I pensieri sono fragili come il fumo. Se non sono ancora stati salvati e qualcosa accade per interromperli, se ne sono andati.

4
R Hughes

Caro distinto collega, Nel tentativo di diventare più efficiente, mi sto concentrando sul mio lavoro e sto rispondendo alle domande tramite e-mail nei momenti tra un lavoro e l'altro per mantenere al minimo l'interruzione per servirti meglio e Nome dell'azienda _. Per favore mandami una email e ti ricontatterò appena posso. Grazie.

3
user16784

Se ascolti musica, metti un cartello che dice qualcosa sulla falsariga di

Headphones on? Please do not interrupt.

Questo è efficace solo se qualcuno legge e non sempre hai le cuffie.

2
Ian Potter

La penso come una grande rete di connessioni complesse che devo costruire nella mia mente, una struttura di relazioni interconnesse che si influenzano a vicenda in modi diversi, non sempre ovvi, che devono essere compresi e tenuti chiaramente a fuoco mentre scrivo il codice. Costruire questa rete richiede dai 5 ai 15 minuti su un progetto che ho ragionevolmente familiare, e più volte su uno meno intimo.

Quando la mia concentrazione viene interrotta, il web inizia a collassare e se l'interruzione dura più di qualche secondo o Mi viene richiesto di pensare ad un'altra cosa anche leggermente complessa ("Quando il server è andato la scorsa settimana, cosa hai detto al cliente? "), il web crolla completamente. Quando l'interruzione è finita, devo ricostruire nuovamente l'intera rete, in gran parte da zero.

Se mi occorrono 10 minuti per costruire il Web e sono interrotto per soli 2 minuti tre volte all'ora, devi capire che invece di programmare per 50 minuti l'ora sto solo facendo 24 minuti di lavoro. Quelle 3 minuscole interruzioni hanno ridotto la mia produttività in metà.

2

Neil Ford ne ha parlato lo scorso Devoxx. Ha scritto un libro al riguardo: il programmatore produttivo. Spiega suggerimenti sugli interruttori "flow". Se sei nel flusso sei nel punto di massima concentrazione. Ma se vieni interrotto ci vogliono + -20 minuti per tornare nel tuo flusso.

Potresti spiegarli se esci dal tuo flusso, la memoria ad accesso casuale nel tuo cervello perde i dati su ciò che stai lavorando e hai bisogno di 20 minuti per recuperare i dati dentro di te RAM ;)

1
Jeff

Non so il resto, ma almeno per Skype suggerirei di utilizzare la modalità "Non disturbare". E se devi usarlo per comunicare al lavoro, avendo un secondo account solo per lavoro che non condividi con nessuno che non vuoi disturbare sul lavoro :)

0
sashoalm

Di solito inserisco il seguente stato sui miei client di messaggistica istantanea:

Sono al lavoro e poiché non riesco a svolgere più attività contemporaneamente, per favore non disturbarmi ...

Almeno sembra fare il trucco con il

amico da molto tempo che ti chiama su Skype ogni 30 minuti con un "Wazzzzzzup ?!"

0
Yaneeve

Potresti provare a spiegare, ma puoi anche provare questo:

Tu li interrompi li , mentre stanno facendo qualcosa che richiede profonda concentrazione, che si tratti di leggere, guardare un film, calcolare o anche meglio contare qualcosa. Quindi, tutto ciò che devi spiegare è che è esattamente così per te quando ti interrompono. Dovrebbe fare il trucco. Per favore, non disturbarli mentre guidano o qualcosa del genere :).

0
Goran Jovic

Non spiego. Li informo gentilmente che l'interruzione ha appena aggiunto 6 settimane al programma.

0
Throwback1986

Quello che faccio in ufficio è trovare punti hotdesk (nascondigli) in diversi dipartimenti dell'ufficio, in questo modo nessuno sa dove ti trovi e non può disturbarti, ma se questa non è un'opzione, basta ottenere un segno ed esaltare che a meno che non sia di vitale importanza non disturbare!

0
kyndigs

Non deve essere complicato. Qualcosa di così semplice e non ostile come "Sto lavorando a qualcosa che richiede molta concentrazione. Può essere inserito in un'e-mail? Prometto di guardarlo non appena avrò finito qui."

0
Andy Lester