Come posso entrare nella "mente del programmatore" più velocemente e più spesso? [duplicare]

12

C'è un flusso di lavoro su cui sto lavorando. Finora sono stati i moduli web a riempire database con script di configurazione di scrittura occasionali per strumenti di analisi, e l'ho scritto tutto, in Perl, Javascript, HTML, Javascript, MySQL.

E proprio ora, il compito che ho di fronte sta generando uno script Bash di analisi post-strumento. O, piuttosto, un generatore di script di analisi post-strumento scritto da Perl. E sta prendendo per sempre.

Ho avuto questo compito come masterizzatore anteriore per un po 'di tempo e il progresso è stato orribile, imbarazzantemente lento. Infatti, venerdì scorso, mi sono seduto, guardando lo schermo, cercando di trovare la strada per il prossimo passo del progetto, e il primo segno di ... ispirazione? Di capacità? Di conoscere e attaccare qualsiasi aspetto del compito ed essere in grado di codificarlo? Bene, è iniziato alle 16:30 e l'ho guidato fino alle 8:20.

Sto cercando e sperando in idee e tecniche per entrare in quello spazio mentale in modo coerente e secondo i miei programmi. Qualche suggerimento?

    
posta Dave Jacoby 28.03.2011 - 04:34
fonte

11 risposte

11

Ecco una carrellata dei migliori post su la psicologia del "flusso" di Programmers.SE . Come raggiungerlo, come romperlo, libri da leggere e video da guardare.

Attenzione: non fare clic su questi collegamenti se stai cercando di raggiungere uno stato di flusso.

risposta data 28.03.2011 - 05:36
fonte
5

Prendi un foglio di carta e una penna comoda e scriva fisicamente. Annota esattamente quello che stai cercando di fare. Schizzo, scarabocchio, scarabocchio, basta disegnare / scrivere. Mspaint non funzionerà. Qualsiasi programma sul tuo computer che dovrebbe aiutare, non funzionerà. L'atto di digitare le parole di qualsiasi lingua stai usando in qualsiasi editor che stai usando non crea un programma. È fatto nel tuo cervello.

Vuoi scrivere del codice? Allontanati dal tuo computer!

Ho recentemente creato un database mysql per un sito di fotografia di amici. Stavo attraversando un periodo molto difficile avvolgendo la mia mente esattamente su come doveva funzionare e su come disporre la struttura del tavolo. Ho provato prima mspaint, poi varie app di progettazione di database. Tutti aiutano un po ', ma ero ancora bloccato. Appena ho ottenuto una penna reale e una carta reale e l'ho annotata, ho appena fatto clic.

Può sembrare "new-agey", ma onestamente penso che abbia qualcosa a che fare con il fatto di dover effettivamente usare il cervello per muovere fisicamente il braccio per spostare la penna per disegnare ciò a cui stai pensando.

    
risposta data 28.03.2011 - 09:26
fonte
2

Se procrastinating

Se rimuovi tutte le cose più interessanti della tua vita, la cosa più interessante che rimane sarà il tuo lavoro.

Se sei veramente bloccato

Trovo di uscire da un vecchio foglio di carta e di chiedere "Cosa sto cercando di fare qui?" E dopo che ho risposto, "Come ottengo da A a B?". Se riesco a metterlo nei passaggi, farò il primo passo. Se no, forse chiedi a qualcun altro? (Ma prima google.)

    
risposta data 28.03.2011 - 05:37
fonte
1

Per prima cosa, se stai cercando dei puntatori, stai usando la lingua sbagliata, prova C ... aspetta il gioco di parole ...

Ma in realtà, a volte il modo migliore per entrare in un certo stato d'animo o superare un'impasse nella programmazione è lavorare su qualcosa di diverso per un po 'o provare ad attaccare lo stesso problema da una diversa angolazione .

    
risposta data 28.03.2011 - 05:01
fonte
1

"Conoscere e attaccare qualsiasi aspetto del compito ed essere in grado di codificarlo? Beh, è iniziato alle 16:30 ..."

Devi definire cosa stai costruendo prima che possa essere costruito. Questo è quello che ti ha fermato con parole tue.

    
risposta data 28.03.2011 - 05:43
fonte
1

Flow è la risposta definitiva. Per fare ciò, hai bisogno di obiettivi chiari. Ciò incapsula alcuni degli articoli che altri hanno menzionato. A volte, il percorso verso questi obiettivi non è così chiaro, quindi hai bisogno di una sorta di "aggiornamento mentale".

Anche molte persone che codificano per vivere si destreggiano tra di loro. Non sto discutendo di una lunga lista di attività, sto parlando di oggetti di giocoleria. La cosa della giocoleria è che non richiede abilità cognitive significative ma richiede attenzione e attenzione. Se riesci a distogliere completamente la mente dal compito che ti infastidisce e COMPLETAMENTE FOCUS su qualcos'altro, ottieni spesso un "Eureka!" momento e poi puoi tornare alla codifica.

Non ho il coordinamento per destreggiarsi. Salgo su un tapis roulant, davanti a una finestra, metto un po 'di rumore bianco nei miei auricolari, metto il mio e-reader davanti a me e cammino per circa 30 minuti. Lo sforzo fisico (non intenso, ma costante) ottiene il "succo che scorre". Altri hanno suggerito una passeggiata intorno all'edificio. Il tempo, qui intorno, diventa decisamente cattivo; il tapis roulant è utilizzabile, indipendentemente da come sia il tempo. L'e-reader, con un libro accattivante, di solito è abbastanza per distrarmi mentalmente. La luce naturale, specialmente durante il giorno, aiuta a liberare la mente (le luci fluorescenti tendono a fare il contrario).

Dopodiché, di solito sono mentalmente abbastanza aggiornato da poter affrontare qualsiasi problema mi abbia infastidito. E ho maggiori possibilità di trovare obiettivi chiari e un percorso verso di loro, migliorando le probabilità di colpire uno stato di "flusso".

    
risposta data 13.06.2013 - 17:09
fonte
0

Ecco alcune delle cose che faccio quando rimango bloccato:

  • Specifica (opposto di generalizzare). Risolvi una versione più specifica del problema.
  • Suddividi il problema in parti componenti e risolvi una parte.
  • Ri-caratterizzare il problema. Cosa sto realmente cercando di fare.
  • Fai una pausa.
  • Fai coinvolgere qualcun altro che è più fresco.
risposta data 28.03.2011 - 08:03
fonte
0

Se sei sicuro che il problema non sia il burnout, e che un po 'di riposo pianificato e onesto non lo risolva, allora per un po' di tempo mi sforzo di pensare a qualcos'altro:

  • Meditazione.
  • Riproduzione di musica.
  • Uno sport.
  • Il I Ching . L'intero processo.
  • Studiare qualcosa di tecnico ma (apparentemente) completamente estraneo al compito in questione. Promuove il pensiero laterale.
risposta data 28.03.2011 - 05:54
fonte
0

Ho scoperto che se ho difficoltà a capire come procedere su qualcosa, non ho ancora afferrato completamente il dominio del problema.

Penso che una cosa che mi trattiene è sentire la pressione per produrre qualcosa. Quello che mi piace fare è esplorare liberamente il dominio del problema senza tentare di progettare o implementare. Una volta che ho esplorato un po ', posso vedere i componenti e ciò che deve essere fatto. Quindi posso progettare gli oggetti e il flusso, capire cosa voglio fare e come, e poi posso implementarlo. Ma se provo a spingere uno di questi due nella fase di esplorazione, ottengo il congelamento del cervello.

Spesso scopro che la mia mente sente la libertà di esplorare quando sono lontano dal computer e posso scrivere le cose - come altri hanno menzionato. Se sono al computer, sento che dovrei fare il codice, che non è quello che devo fare iniziando.

A volte un po 'di codifica o di prototipazione saranno utili / necessari, ma ci arriverò solo dopo aver esplorato un po'.

Potrebbe essere che forse non sei una persona mattiniera? Avevo un collega che si lamentava della stessa cosa: non essere produttivo fino alla fine della giornata. Forse è così che alcune persone lavorano?

    
risposta data 13.06.2013 - 22:55
fonte
-1

Diverse persone hanno detto di allontanarsi dal computer, e una passeggiata intorno al blocco può fare miracoli. Ma per problemi veramente difficili ci penso mentre andrò a dormire. Preferibilmente un pisolino nel pomeriggio in cui non stai per uscire per 8 ore, ma di notte puoi usare una penna e un blocco di carta per la testa.

    
risposta data 10.04.2011 - 06:08
fonte
-1

Mi piace eseguire un Kata TDD ( alcuni Katas ) che mi aiuta a risolvere un semplice problema e eseguire una pratica deliberata. Lo uso come riscaldamento o come distrazione se risolvo un problema particolarmente frustrante.

    
risposta data 13.06.2013 - 17:27
fonte

Leggi altre domande sui tag