Trattare con frustrazione quando le cose non funzionano [chiuso]

60

Hai mai provato a implementare qualcosa di semplice ma per qualche strano motivo non funziona.

Quindi provi una possibile soluzione ma poi qualcos'altro non funziona. Continui a provare soluzioni alternative diverse ma ogni volta che qualcosa di diverso non funziona.

Ogni volta che ti avvicini di un passo, ottieni anche uno (o più) passaggio dalla risoluzione di questo problema e sono passate da 3 ore in cui questo avrebbe dovuto richiedere 10 minuti. E non è ancora risolto.

Non c'è nessuno nella tua azienda che possa aiutarti e stai per mettere il tuo pugno sullo schermo.

A questo punto sei così frustrato che non puoi più pensare chiaramente al problema. Cosa dovresti fare a questo punto? O cosa puoi fare per evitare di raggiungere questo punto?

    
posta JD Isaacks 17.01.2016 - 21:10
fonte

15 risposte

68

Anche se questo è un problema reale, non è specifico per la programmazione. Tuttavia, è IMHO così importante che merita un posto su questo forum.

I miei suggerimenti: fai una pausa . Fai una passeggiata, medita, dormi, fai attività fisica * - fai qualcosa di completamente diverso da Permetti al tuo cervello di rilassarsi e uscire dal solco mentale , lasciando che il tuo subconscio lavori sul problema in pace. Di solito fornisce risultati sorprendentemente veloci - ha solo bisogno di farti sapere. Ma mentre la tua mente cosciente sta ripetendo disperatamente gli stessi cicli di pensieri più e più volte, non sarà in grado di ascoltare altro.

what can you do to avoid reaching this point?

Le tecniche di rilassamento e consapevolezza sono una chiave per superare le reazioni di stress e consentire alla mente di concentrarsi chiaramente. E la pratica di questi paga davvero. Quando qualcuno è esperto in questi, può già notare il livello di stress in aumento prima che la frustrazione possa prendere il sopravvento . Quindi si può interrompere il ciclo di pensieri, ad es. facendo alcuni respiri profondi o facendo un paio di minuti di pratica di rilassamento. Questo potrebbe essere tutto ciò che è necessario a quel punto.

* bacia il tuo partner, accarezza il tuo animale domestico - i suggerimenti di mia moglie: -)

    
risposta data 03.02.2011 - 18:23
fonte
35

its now been 3 hours when this should have taken you 10 minutes.

La parola magica è dovrebbe . Colpiscilo dal tuo vocabolario.

Chi ha detto che dovrebbero impiegarci 10 minuti? Chi specificamente? Qual è stata la base fattuale per il loro reclamo?

Se hai fatto 3 volte in precedenza e ogni volta che sei vicino a 10 minuti, hai una base razionale per un dovrebbe .

Se non l'hai mai fatto prima, dire dovrebbe è solo impostare te stesso per il fallimento. Dovresti smettere di usare dovrebbe oggi.

    
risposta data 02.02.2011 - 22:32
fonte
21

Trova qualcuno da usare come cassa di risonanza

Anche se nessuno ha esperienza in ciò a cui stai lavorando, è una buona idea parlare spesso di queste cose. Solo il semplice atto di usare qualcuno come cassa di risonanza può far girare la mente. Ti troverai a pensare a cose nuove da provare. Allevierà anche il tuo stress per sfogare un po 'e potenzialmente fare un nuovo amico. Inoltre, è anche salutare in generale che il team si senta a proprio agio a condividere e commiserarsi l'un l'altro per creare un'atmosfera orientata al team per risolvere questo tipo di problemi.

    
risposta data 02.02.2011 - 21:40
fonte
9

Ho qualche passo quando raggiungo questo punto. Normalmente posso trovare una soluzione se mi prendo del tempo per fare un passo indietro e riflettere.

Passaggio 1: allontanati dal problema e schiarisci la testa. Torna quando non sei frustrato e puoi guardarlo con una mente nuova.

Passaggio 2: torna al codice e verifica se c'era qualcosa che ti era sfuggito. Fai venire qualcuno ed essere un secondo paio di occhi se non riesci a farne testa o croce.

Passaggio 3: rimuovi il codice dall'equazione. Qual è il problema che stai cercando di risolvere? Scrivilo su un pezzo di carta o lavagna. Parla con qualcuno per ottenere le loro opinioni sul problema e sulla soluzione.

Passaggio 4: raggiungi la community per vedere se hanno una soluzione o se qualcun altro ha mai colpito lo stesso muro.

Fondamentalmente, questi possono essere riassunti come "Smetti di hackerare e allontanarti dal codice".

    
risposta data 02.02.2011 - 21:44
fonte
8

Allontanati per un po 'e fai qualcos'altro. Dormi bene e torna al problema la mattina.

Inoltre, non abbatterti. La tua stima di dieci minuti non è chiaramente corretta, e ciò accade sempre.

    
risposta data 02.02.2011 - 21:38
fonte
2

Vorrei fare una domanda qui e chiedere alla comunità di risolverlo. Meno stressante in questo modo.

    
risposta data 02.02.2011 - 21:35
fonte
1

Ho un diverso tipo di soluzione - SLEEPING !!

Quando sei frustrato da un problema non puoi facilmente uscirne. Quindi è meglio se sei così stanco che cerchi di risolvere il problema e poi ti addormenti.

Quando ti svegli avrai una sensazione di freschezza e di nuovo puoi pensare chiaramente al problema. Lo faccio a volte.

    
risposta data 02.02.2011 - 23:01
fonte
1

Trovare qualcosa che aiuti a ricostruire una certa sicurezza è ciò che tendo a fare quando raggiungo questo punto. Questo potrebbe risolvere un puzzle di Sudoku o Kenken, facendo qualche semplice compito amministrativo senza senso come riempire il mio foglio del tempo o uscire a fare una passeggiata. La chiave qui è per me avere un senso di realizzazione in qualunque piccola distrazione laterale è quella di aiutarmi a pomparmi abbastanza per tornare a cavallo e cavalcare nel selvaggio blu laggiù, per mescolare alcune metafore lì.

Per evitare di fare il male, probabilmente suggerirei di adottare una strategia per il time-boxing in modo che se credi che qualcosa duri 10 minuti e improvvisamente un'ora dopo non avrò molti progressi, direi fermati e fai una piccola pausa piuttosto che cercare di continuare a sbattere la testa contro il muro.

    
risposta data 03.02.2011 - 00:38
fonte
1

Ho un nome speciale per questo tipo di situazione: battaglia di programmazione epica .

Se non ho avuto almeno una battaglia di programmazione epica con uno specifico linguaggio o strumento di programmazione, e ho risolto il problema, non posso dire a me stessa che posso usare un tale linguaggio di programmazione o strumento.

Quindi c'è la mia soluzione: mentalizzarlo come una lotta e una prova di coraggio e resistenza . Se non riesco a risolvere il problema, allora " vivo per combattere un altro giorno ".

Può sembrare un po 'ridicolo, ma sarà più divertente e gratificante pensarlo in questi termini (come se fosse una sorta di gioco che devi vincere) invece di soffrire fino in fondo perché devi affrontare il fatto che non sai tutto .

    
risposta data 03.02.2011 - 07:02
fonte
0

Bene ... Penso che tu abbia bisogno di una nuova carriera o di una serie completamente nuova di aspettative. Anche se non è frequente, prendere 3, 4, 8, 10 o 40 ore per fare quello che inizialmente pensavi sarebbe stato un lavoro di 10 minuti non è certamente raro nel settore del software. Sono sicuro che la maggior parte degli sviluppatori che lavorano su qualsiasi cosa, anche di moderata complessità, hanno avuto compiti di 2 giorni che si trasformano in compiti di 1 mese, dopo averli approfonditi e aver compreso il problema.

Parte di essere un buon sviluppatore implica essere paziente, altrimenti il computer vincerà e finirai per incorporare una sorta di correzione rapida che a malapena sembra funzionare, ma inevitabilmente rompere qualcosa a cui non hai pensato. Se ritardi minori ti causano così tanto stress, probabilmente non dovresti essere in questa linea di lavoro.

    
risposta data 03.02.2011 - 01:43
fonte
0

Due suggerimenti:

  1. La persona più intelligente che conosca, che ha due dottorati di ricerca e ha il titolo di lavoro "Assegnista di ricerca", in una piccola società privata, dice questo

    Se ne hai parlato per 15 minuti e non hai la risposta, stai sbagliando.

    Smetti di pensarci.

    Fai un pisolino. (vai a fare una passeggiata o qualcosa di simile)

    La risposta sarà lì quando ti svegli.

  2. Trova il libro "Debugging" di David J Agan . Probabilmente ti insegnerà di più sul debug in modo che quando le cose non funzionino, puoi eseguirne il debug velocemente.

risposta data 03.02.2011 - 02:27
fonte
0

Quando mi trovo di fronte a qualcosa che non funziona, ricordo sempre questa citazione:

When you are in hell, keep walking as its is the best thing that can be done at that point.

Have a break, try to refresh your self and focus on problem with new level of energy.

    
risposta data 03.02.2011 - 05:59
fonte
0

riecheggiare i consigli degli altri:

  • questa situazione è quasi sempre qualcosa di banale che tu semplicemente non vedi ; prenditi una pausa
  • un altro paio di occhi o anche solo spiegando il problema al tuo gatto può aiutare

e aggiungendo:

  • riesamina le tue ipotesi, in particolare quelle non dichiarate; è probabile che tu stia sbraitando sull'albero sbagliato
  • capovolgere la situazione: supponiamo che il comportamento corrente sia il risultato desiderato, quindi cosa dovresti fare al codice per farlo accadere?
  • scrivi un codice di prova (asserzioni o logging o breakpoint condizionali - mantieni semplice) per verificare le tue ipotesi lungo il percorso di esecuzione
risposta data 03.02.2011 - 06:50
fonte
0

A volte, è meglio non provare solo a risolvere un problema. Prenditi un po 'di tempo e scrivi in pseudo codice cosa devi fare. So che c'è la pressione per fare le cose il più velocemente possibile, ma da quello che ho visto, quello stile di codifica porta al tipo di situazione che descrivi. Se qualcuno scrive codice che funzionerà solo in presenza di un piccolo insieme di condizioni e che imposta modifiche, il codice si interromperà o comporterà azioni impreviste.

Inoltre (odio ammettere che i miei professori avevano ragione su questo ...), la documentazione e il collaudo delle unità aiutano. Ciò renderebbe più facile sapere quale parte del codice verrà emessa in base al set di input. Quindi, sarebbe più facile vedere quale effetto avrà un cambiamento in quell'inserimento di sezioni.

    
risposta data 03.02.2011 - 14:41
fonte
0

L'affaticamento o la mancanza di sonno non sono mai un problema con me. Sono più frustrato dalla mancanza di organizzazione nel settore nel suo insieme e, in generale, dagli standard bassi che ci siamo prefissati. Ecco cinque cose che mi frustrano:

  1. API complicate nella progettazione. È come imparare un nuovo linguaggio di programmazione. In effetti alcune API sono molto più difficili da imparare rispetto all'apprendimento di nuovi linguaggi di programmazione. Ammiro la tua intelligenza, ma avresti potuto risparmiare tempo inserendo nella documentazione che avevo bisogno di un dottorato in ingegneria del software o in informatica per capirlo.

  2. Mancanza di buona documentazione. Non riesco mai a superare il fatto che così tanti progettisti di API impiegano molto tempo a creare un'API per rilasciarlo con una documentazione minima. Grazie, ma come lo uso? Cosa fare in questa situazione? ecc.

  3. Implementazioni proprietarie. Qualche implementazione proprietaria è ok, ma se esistono degli standard, per il bene dell'umanità, per favore segui questi standard. Niente di più frustrante del passare del tempo a chiedersi perché qualcosa non funziona solo per scoprire che l'implementazione non segue gli standard normali.

  4. Ambienti / Restrizioni in modalità sandbox. Ok, forse questo aiuta a tenere fuori la gente cattiva, ma a mio parere, le restrizioni su ciò che un programmatore può fare limitano la creatività e il progresso tecnologico. Molte delle grandi idee che ho avuto sono state spazzate via dopo aver scoperto che non mi è permesso fare qualcosa. Il settore della programmazione è fatto apposta per sfornare le applicazioni di tutti i giorni, non un software innovativo e rivoluzionario. Quindi, se decidi di diventare un programmatore, stai davvero scegliendo di diventare un grugnito dei tempi moderni, a meno che tu non voglia diventare un accademico solitario.

  5. Discussioni moderne. Le persone oggi discutono ancora della bruttezza della parentesi Lisp, o del merito della pulizia di Python, o di come alcune lingue come Cobol o Fortran si estinguono, ecc. Ecc. Davvero persone? Questo è ciò di cui discutiamo? Parliamo di parallelismo, o modi migliori per progettare sistemi più sicuri, o di come la programmazione logica possa migliorare le nostre vite. Smettiamola di pensare come programmatori e cominciamo a pensare come designer del mondo di domani.

Quindi personalmente non programma più tanto a causa di queste frustrazioni. Fino a quando l'industria deciderà di voler fare di più che creare il prossimo Facebook, o reinventare il word processor, sono tutto pronto. Lo lascerò a voi ragazzi. Onestamente nessuna offesa significava, è un buon prezzo.

    
risposta data 16.07.2013 - 23:27
fonte

Leggi altre domande sui tag