Come mantenete l'attenzione quando un particolare aspetto della programmazione richiede 10+ secondi per essere completato? [chiuso]


141

Mi diverto molto a concentrarmi su ciò che sto facendo (in termini di programmazione) quando qualcosa (compilazione, tempo di avvio, ecc.) Richiede più di pochi secondi. Aneddoticamente sembra che la soglia sia di circa 10 secondi (e ricordo di aver letto dello studio che diceva la stessa cosa, anche se non riesco a trovarla ora). Quindi ciò che accade in genere è che apporto una modifica e quindi eseguo il programma per testarlo. Ci vogliono circa 30 secondi, quindi inizio a leggere qualcos'altro, e prima che io lo sappia sono trascorsi 20 minuti, e poi ci vogliono (se sono fortunato!) Altri 10+ minuti per gestire il cambio di contesto per tornare alla programmazione .

Non è un'esagerazione dire che alcune cose che dovrebbero impiegarmi minuti richiedono letteralmente ore per essere completate.

Sono molto curioso di sapere cosa fanno gli altri programmatori per combattere questa tendenza (o se sono unico e non hanno questa tendenza?). Suggerimenti di qualsiasi tipo sono i benvenuti - qualsiasi cosa, da "sedersi sulle mani dopo aver premuto il pulsante di compilazione", a trucchi mentali, a "se ci vogliono 30 secondi per avviare qualcosa per testare una modifica, allora qualcosa non va nel processo di sviluppo !"


24
Ho un problema simile (quindi questo commento :)). Ho scoperto che ciò che aiuta davvero è meno caffè al mattino o niente affatto. Cerco anche di lavorare la mattina e programmare incontri nel pomeriggio. Spero che ti aiuti .... oh guarda un gattino.
DevSolo,

7
Hai a che fare con una forma di procrastinazione - il nemico dei lavoratori della conoscenza di tutto l'universo.
Aditya MP,

130
Arrrg !! Lo sto facendo ora - grazie per il promemoria - di nuovo al lavoro.
mjhm,

8
Di solito passo questo tempo su siti SE, leggendo domande, rispondendo a ciò che posso aiutare gli altri sviluppatori e imparando qualcosa di nuovo nel processo.
Bernard,

6
Dovresti iniziare a sviluppare per SharePoint b / c lì in realtà devi aspettare 20 minuti :)
kev

Risposte:


117

Ho scritto una piccola utility a riga di comando chiamata 'alert' che farà emettere un segnale acustico al computer / riprodurre un suono / ecc. Poi, quando ho un comando lungo da eseguire come un make, corro make; alert. Dove posso, dovrò anche prendere un argomento in modo che produca un suono diverso a seconda dell'argomento. Così posso fare make; alert $?e saprò a) che la compilazione è terminata e b) è passata o fallita. Non devi essere così fantasioso con esso; solo un echo -e "\a"può essere abbastanza.

Se vuoi diventare davvero fantasioso / fastidioso, usa un pacchetto di sintesi vocale e attiva un popup di dialogo.

L'idea principale qui è quella di interrompere la distrazione non appena l'attività relativa al lavoro è completata.


6
Esempio rapido:MSG="back to work" && xmessage -buttons ok -default ok -nearmouse "${MSG}" 2> /dev/null
sakisk,

6
@faif In tal caso, si desidera utilizzare ;invece di &&. Il tuo secondo esempio verrà eseguito solo show_messagese ha makeesito positivo, che non è proprio quello che vuoi. Per essere chiari: mi piace l'esempio che hai dato, sono solo schizzinoso sui dettagli di implementazione. ;)
retracile

2
Ho scritto un programma rapido da riga di comando che mi invia un'email al termine di una determinata attività, quindi se lascio la stanza per eseguire alcune operazioni IT nel tempo di attesa, il telefono emetterà un segnale acustico per dirmi di tornare nel mio ufficio e terminare quello che stavo facendo.
Phil

7
+1 per distrarti dalla distrazione: combatti il ​​fuoco con il fuoco! In questo modo non vieni licenziato!
corsiKa

1
Ubuntu ha una bella configurazione di alias di avviso in .bashrc. Dipende da libnotify, ma se è installato, puoi farlo command; alerte ti darà un avviso desktop quando hai finito di specificare quale comando era quello finito. Molto utile per lunghe compilazioni o test.
Leo

104

Ho lo stesso problema, e la soluzione per me è stata quella di passare il tempo a fare qualcosa che non ti risucchiava. Per me, questo di solito è (1) riempire una bottiglia d'acqua o (2) alzarsi e facendo una passeggiata di 30 secondi in ufficio per allungare le gambe, che comunque necessitano del movimento. Puoi perderti navigando in Internet; raramente ti perdi camminando intorno al tuo cubicolo.


37
+1 per fare una breve passeggiata / tratto. È qualcosa che dovremmo fare tutti più spesso.
Jon Purdy,

2
Funziona bene in combinazione con la mia risposta ... imposta i tuoi altoparlanti abbastanza forte da sentirlo attraverso la stanza nella tua camminata in modo da poterlo corto. (Come quella build di 10 minuti che termina dopo 30 secondi a causa di un errore di sintassi.)
Retracile

1
+1, fai qualcosa che non richiede più di 10 secondi. Bevanda. Prendi una gomma da masticare. Guarda vicino alla finestra, se sei abbastanza fortunato potrebbe succedere qualcosa fuori. Se stai ascoltando musica, controlla cosa sta succedendo nella tua playlist o aggiungi alcune tracce.
Laurent Couvidou,

2
Aggiungerò anche, uso il bagno :) Spesso, quando mi alzo per la prima volta dopo una lunga sessione di programmazione, trovo che ho davvero bisogno di usare l'impianto idraulico, come si suol dire, come si suol dire. Usa queste pause per prenderti cura di te.
eykanal,

4
Fino a quando non parlerai con lo sviluppatore nel prossimo posto / cubo sopra ... ora è una chat di 20 minuti invece di 20 minuti di navigazione.
Steven Evers,

29

Fai qualcosa per la tua salute:

Alzati, allontanati dal tuo computer e fai alcuni esercizi di allungamento di mani e braccia. Questo richiederà 2-5 minuti al massimo. Il tuo sé futuro non affetto da RSI ti ringrazierà per questo.

Inoltre, per quanto riguarda la pausa di 2-5 minuti, leggi la tecnica del Pomodoro . Questo si basa sull'idea di avere brevi pause frequenti per distogliere la mente dal tuo compito attuale e lasciare che le cose affondino un po '. È una pausa abbastanza breve per non perdere completamente il filo del pensiero ma abbastanza a lungo per dare un respiro al tuo cervello.


10
E non devi nemmeno alzarti: chiudere gli occhi per riposarli per 30 secondi ti aiuterà a mantenerli umidi e meno stanchi.
JBR Wilkinson,

1
Questa è un'ottima risposta (aiuta a bruciare l'energia nervosa) e la tecnica pomodoro può funzionare se sei abbastanza disciplinato.
DevSolo

1
+1. Avere una scrivania regolabile in altezza aiuta anche. Ho scoperto che quando sono in piedi sono molto più produttivo poiché durante quelle brevi pause (compilazione, ecc.) Passo un po 'in giro pensando a cosa sto lavorando e non appena il compito è completo vado tornando al lavoro. Forse sono solo io, ma mi piace muovermi molto quando penso e la stimolazione aiuta.
Paperjam,

1
Non ho mai sentito parlare di Pomorodo, ma sono stato a lungo un sostenitore dell'idea che devi fare pause occasionali per riposare la tua mente più consapevole e lasciare che i tuoi bruciatori posteriori risolvano alcune cose per un po '. C'è un motivo per cui accadono molti momenti di a-ha sotto la doccia e il bagno.
Erik Reppen,

25

Lo sviluppo è un processo creativo. Non puoi essere costantemente produttivo, soprattutto se ci sono molte distrazioni nel tuo ufficio. Ecco perché il test Joel suggerisce condizioni di lavoro tranquille.

Joel Spolsky spiega anche cosa significa "non essere nella zona" . Ogni volta che qualcosa ti impedisce di svolgere il tuo lavoro, devi spendere dieci minuti, spesso più per tornare nella zona e tornare produttivo.

Ci sono molte distrazioni:

  • Una telefonata di tua moglie,
  • Una telefonata all'uomo d'affari nello spazio ufficio vicino al tuo,
  • Un collega che ti chiede aiuto,
  • Avere fame,
  • Problemi personali
  • Dover lavorare su un codice legacy scritto da uno sviluppatore inesperto dieci anni fa e mai rifattorizzato,
  • Avere un PC lento o una connessione Internet lenta,
  • Avere un lungo processo di compilazione,
  • eccetera.

Non c'entra niente. L'unica cosa che puoi fare è rimuovere le distrazioni stesse:

  • Nessun telefono nel tuo ufficio,
  • Condizioni di lavoro silenziose,
  • Accesso rapido a computer e Internet,
  • Processo di compilazione veloce,
  • eccetera.

Nel tuo caso, se è il compilatore che ti distrae, prova a ridurre il tempo di compilazione di:

  • Ridurre le dimensioni del programma (alcuni IDE, ad esempio, consentono di scaricare alcuni progetti da una soluzione, riducendo notevolmente i tempi di compilazione),
  • Usando build notturne e compilando meno durante il lavoro,
  • Acquistare una macchina più veloce (se non c'è altro da fare),
  • eccetera.

9

Immagino che sarò io a dirlo, ma dovresti semplicemente sederti lì e aspettare che finisca.

Devi riqualificarti per non sentire il bisogno di essere costantemente attivo e fare attivamente le cose. Questo è un problema molto dannoso che riguarda non solo gli sviluppatori ma tutte le persone. La società è diventata ossessionata dalla necessità di una stimolazione costante (visiva, audio, mentale). Sembra che nessuno possa rimanere inattivo per più di 30 secondi senza estrarre il telefono e inviare SMS, navigare in Internet, controllare Facebook, ecc.

Se colpisci la compilazione e ci vorrà un minuto o giù di lì, considera una grande opportunità per sederti e rilassare il cervello. Resisti alla tentazione di fare qualcosa di stimolante e goditi un momento di non attività.

Con il tempo diventerà più facile e scoprirai che avrai un'esperienza lavorativa molto migliore quando smetti di cercare di mantenere il cervello acceso al 100% per tutto il giorno.


Devo chiedermi se l'odiare il multitasking sia davvero giustificato, o se si tratti forse di un malinteso generazionale. Certo, gli studi hanno riscontrato una perdita di produttività durante il multitasking, ma forse è semplicemente un'abilità che alcune persone hanno sviluppato. Per ogni nuova tecnologia o processo, sono sicuro che ci sono stati studi che li hanno trovati terribili per la produttività, prima che le persone imparassero davvero a usarli in modo efficace

@JonofAllTrades Non si tratta della tecnologia o dell'apprendimento, è un fatto noto che il cervello umano non è progettato biologicamente per permetterci di multitasking continuo di flussi di pensiero a coscienza multipla. Siamo in grado di destreggiarsi tra un paio di pensieri disconnessi per brevi periodi di tempo, ma oltre a ciò l'intero atto di bilanciamento cade a pezzi. Non è salutare perché ti logorerai mentalmente e fisicamente. Vi siete mai chiesti perché così tanti sono malati e stanchi? Lavoriamo tutti duramente.
Alan Barber,

Ah, ma concentrarsi su una cosa è anche estenuante e la nostra attenzione vaga rapidamente. Come sempre, c'è un mezzo felice. Sospetto che una volta possa imparare a multitasking meglio, e che il flusso di lavoro ideale per, ad esempio, un quarantenne nato nel 1950 sia diverso da un quarantenne nato nel 1990. Non compro che siamo più malato e stanco ora di 100 anni fa; semmai, possiamo permetterci il lusso di esserne consapevoli!

8

Sono d'accordo con ciò che suggerisce @retracile, ma nota che secondo le regole di programmazione Zen dovresti concentrarti su un solo compito alla volta. Rispondere alle chiamate telefoniche, navigare sul Web, social network o persino fare multitasking probabilmente ridurrà la produttività. Usa il breve ritardo di attesa per pensare all'attività / soluzione esistente e a cosa puoi fare per migliorarla.


8

Ho un bar attaccato allo stipite

inserisci qui la descrizione dell'immagine

Posso fare solo 5 pull-up, quindi ci vuole meno di un minuto. O faccio una tazza di tè.


quanti programmatori sulla terra possono fare pull up mi chiedo davvero ora
kommradHomer

2
Si potrebbe fare di più, se almeno provassero a fare un pull su ogni compilazione.
Esko Luontola,

3
Quindi, se il tuo IDE è meno intelligente, otterrai una forma migliore. Conclusioni interessanti che possono portare a.

Mi sono appassionato abbastanza usando un Mac antico con una scheda madre che si è surriscaldata costantemente. Mi sono allenato aspettando che si raffreddasse.

Amo questo! Più buff è lo sviluppatore, il livello! @ # $ Sono i suoi strumenti.
Erik Reppen,

6

Per me, il modo per mantenere la concentrazione è di essere spietato nel mantenere uno spazio di lavoro pulito, qualunque esso sia. Tutto ciò che non fa parte del mio progetto attuale è il rumore nel rapporto segnale-rumore santificato. Una parte vitale del mantenimento della messa a fuoco riguarda il mantenimento di un rapporto segnale-rumore elevato.

Quando sto programmando, questo significa chiudere i programmi che non ho usato di recente, eliminare regolarmente le schede del mio browser e mantenere il desktop libero da elementi che non sono immediatamente rilevanti per i miei progetti attuali. Uso i ritardi di dieci secondi per "fare il giro", per così dire: chiudere le schede, chiudere i programmi, eliminare i file temporanei e archiviare ciò che deve essere archiviato, ecc.

Prendere l'abitudine di "fare il giro" aiuta anche a prevenire le tracce dei conigli, perché mi costringe a valutare continuamente - e mi viene ricordato - qualsiasi compito attuale.

C'è un piccolo prezzo da pagare quando devi riaprire una scheda che hai già aperto 5 volte oggi o riavviare un prompt dei comandi con privilegi elevati per la 15a volta, ma sfruttando acceleratori come le scorciatoie da tastiera puoi tagliare questo davvero un prezzo molto basso.


1
Il problema con la chiusura delle schede del browser, (o programmi o simili) è che è troppo facile distrarsene quando si va a chiuderle. Come tornare a una domanda StackOverflow dopo aver implementato la risposta, quindi vedere un link interessante nella barra laterale e fare clic su di esso ....
Bobson

6

Trovo che aiuti a tenere traccia del tempo effettivo che trascorro non lavorando

Puoi usare qualsiasi numero di cose per questo. So che ci sono molte app gratuite che puoi scaricare per farlo per te (non riesco a pensare a nessuna delle mie idee in questo momento, ma se qualcuno me ne dà alcune le aggiungerò a questa risposta), oppure è molto facile crearne uno tuo. Di solito ne uso una che ho creato, che è una piccola finestra nell'angolo del mio schermo con pulsanti per Working/ NotWorking, e faccio semplicemente clic su quello che sto accedendo ogni volta che cambio focus.

Un orologio per scacchi funziona anche

L'atto stesso di tracciare il tuo tempo ti rende più consapevole di quanto tempo stai sprecando che dovresti spendere lavorando, e trovo che mi renda più produttivo perché mi costringerò a lasciare quella domanda super interessante su stackoverflow o blog articolo e tornare al lavoro


5

Per mantenere alta la mia attenzione uso scarabocchi. Ho sempre una penna e un blocco note dietro la tastiera e scarabocchio. Non è altro che scarabocchiare su un pezzo di carta senza alcun significato, ma mantiene la mia attenzione appena sufficiente e non mi distrae in modo da poter tornare a quello su cui stavo lavorando.

L'ho fatto inconsciamente per tutta la vita ma recentemente ho trovato un wiki al riguardo: http://en.wikipedia.org/wiki/Doodle


4

Qualunque cosa tu faccia , non andare su nessuno dei siti StackExchange. Ti succhiano dentro :)

Più seriamente, navigare sul Web in attesa che qualcosa finisca non fa bene alla produttività (a meno che non si stia cercando qualcosa correlato all'attività corrente).

Di solito eseguo alcune attività minori che non richiedono più di 1-2 minuti. (pulire qualcosa, scrivere commenti, note).


1

Nel tuo caso, alzati e cammina un po 'in giro. Se è difficile tornare nella "zona" è probabilmente perché sei troppo in là. Fare cose sul web è solo un'altra zona ed è facile perdere la cognizione del tempo. Dai al tuo cervello la pausa che chiaramente vuole e fare una passeggiata, fare un mago, idealmente in un bagno, o parlare con un collega a caso. Facciamo un sacco di cose dietro le quinte del pilota automatico. Le pause non sono male per la codifica, sono buone, ma l'idea è quella di smettere di sparare su tutti i cilindri per un po 'e vedere cosa escono i tuoi bruciatori posteriori mentre la parte più consapevole della tua mente gli dà una pausa. I buoni sviluppatori non sono calcolatori umani. Lascia che le parti del tuo cervello che fanno tutte le cose intuitive e corrispondenti al modello sull'autopilota facciano le loro cose per un po '.

Se questo non è solo un problema di codifica, potresti considerare ADD.


1

I suggerimenti per alzarsi, camminare, ecc. Sono buoni se i tuoi cicli sono lunghi (circa un'ora). Ma quando i tempi di ciclo si riducono e mi ritrovo a saltellare avanti e indietro tra vim e fare ogni pochi minuti, quindi rimango nella zona rimanendo in fase di pipeline: mentre la build o la suite di test è in esecuzione, tendo a tornare indietro e rivedere il codice, quindi iniziare a lavorare sul blocco successivo che farei comunque se la compilazione o i test avessero esito positivo.


1

Prepara un piano all'inizio di ogni giorno su come utilizzare questo "tempo libero". Potrebbe coinvolgere

  • recuperando alcune attività di documentazione,
  • elaborando casi di test unitari per la classe che stai per scrivere successivamente,
  • studiando alcune nuove tecnologie che avresti voluto imparare,
  • scrivere una lettera alla tua zia preferita,

o quasi tutto davvero.

Avere questa attività secondaria sempre aperta in una finestra da qualche parte sul desktop. Non appena premi il pulsante "compila" (o qualunque cosa ti richieda più di 30 secondi), passa all'attività secondaria e dedica abbastanza tempo per spostarti in avanti, che potrebbe essere un paio di minuti, o potrebbe essere inferiore.

Mentre svolgi il compito secondario, tieni a mente che questo non è ciò su cui il tuo cervello dovrebbe essere focalizzato. Continua a pensare alla programmazione. Questo non è facile; soffrirai comunque del cambio di contesto il più delle volte.

Se lo fai, anche se perdi il contesto molte volte, il tuo tempo perso non è in realtà tempo perso e hai qualcosa da mostrare alla fine della giornata. Ma la cosa più importante è pianificare, all'inizio della giornata, quale sarà l'attività secondaria della giornata.


1

Suppongo che possiamo usare il tempo di compilazione per documentare il codice, pulire il codice, allineare il codice correttamente, in modo da non allontanarci dal nostro IDE e migliorare ancora la qualità del codice.


1

Di solito cerco solo bug, errori di battitura o modi per migliorare lo stile del codice nel frattempo. Questo mi fa guardare il codice, ma non mi distraggo (sempre) da qualcosa di interessante. Inoltre, questo !


1

È possibile che tu abbia un po 'di ADHD. Molte persone lo fanno. I meccanismi di coping sono indicati nelle altre risposte (o possibilmente nei farmaci).


1

Durante quei 10-30 secondi vai e fai qualcosa:

  • ciò non richiede molta attività mentale
  • apri il codice che stai compilando e ricontrolla (potresti trovare qualcosa di sbagliato o un modo per migliorarlo)

Durante quel periodo, non fare cose che sai che ti richiederà molto tempo (a meno che non ti permetta di passare un po 'di tempo) come:

  • iniziando a leggere un libro
  • leggi le email se sai che può richiedere molto tempo
  • eccetera

Inoltre, non installare alcun allarme audio per segnalare la fine della compilazione. I tuoi colleghi lo apprezzeranno.


12
Personalmente, controllare la posta elettronica è un'idea terribile. Vedi, può diventare un tale sfigato che i tuoi 30 secondi possono facilmente diventare 30 minuti.
Adrian,

Controllare l'e-mail all'inizio e alla fine della giornata è uno di quei suggerimenti che molti tipi di exec vogliono dare. Dipende da quanto è grande la tua azienda, suppongo.
Erik Reppen,

Se ti servono 30 minuti per controllare la tua e-mail, non farlo. Non vado in un ufficio postale per recuperare le mie e-mail, quindi per me è un'operazione di 30 secondi - 3 minuti.
BЈовић,

1
@ErikReppen, se lo facessi, non avrei un lavoro.
HLGEM,

0

Per la distrazione di Internet durante il lavoro in generale, suggerisco il plug-in Pomodoro se si utilizza Google Chrome

Personalmente penso che non puoi essere produttivo durante tutto il tuo tempo di lavoro! dal momento che stai compilando, significa che hai fatto abbastanza sforzi per prendere fiato ... per non abusare o uscire dal contesto, continua a pensare al passaggio successivo se la compilazione non genera errori ... O pulisci il tuo lavoro area: Desktop, Schede, Explorer ...


0

Quello che stai descrivendo è perfettamente normale.

Quando stavamo facendo studi di usabilità, osservavamo i ritardi per ordine di grandezza. Quando un utente fa clic su un pulsante, per quanto deve aspettare?

  • 0,1 sec: nessun ritardo percepito
  • 1 secondo: nessun cambio di messa a fuoco
  • 10 sec: attenzione persa
  • 1 min: l'utente passa a un'altra attività
  • 10 min: l'utente si alza e se ne va

Ci sono molte eccezioni, come le operazioni composte, come la digitazione.

Quando stavamo eseguendo un lavoro di performance, spesso ponevamo la domanda "quanto veloce dovrebbe essere l'operazione X?" La risposta è, finché l'utente può percepire un ritardo, più veloce sarebbe meglio.

Nel tuo caso, stai raggiungendo quella soglia di 10 secondi e la tua attenzione si dirige. La cosa migliore che puoi fare è ridurre il ritardo. Più breve è il ritardo, maggiore è la produttività. Immagina di avere il codice sul lato sinistro dello schermo e l'app in esecuzione sulla destra. Mentre modifichi il codice, l'app cambia in tempo reale. Fino a quando non ci sei, hai spazio per migliorare.

Vedi anche il recente post sul blog di Jeff (le tonnellate di buoni contenuti a cui porta): http://www.codinghorror.com/blog/2012/03/visualizing-code-to-fail-faster.html

Se stai per passare a qualcos'altro, scegli qualcosa che non coinvolga il tuo cervello allo stesso modo del lavoro che stavi facendo. Pulisci la scrivania, medita, allunga, flessioni, arte, guarda fuori dalla finestra.


0

Quando faccio un lavoro ad hoc in SAS, trovo molto utile la seguente riga:

dm log 'postmessage "Code finished"' continue;

Ciò produce una finestra di dialogo pop-up al termine dell'esecuzione di tutto il codice precedente. Sono sicuro che ci sono equivalenti in altre lingue. Avrei pubblicato questo come commento alla risposta di retracile ma non ho abbastanza reputazione.

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.