Gestire la frustrazione quando le cose non funzionano [chiuso]


62

Hai mai provato a implementare qualcosa di semplice ma per qualche strana ragione 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 un (o più) passo in più dalla risoluzione di questo problema e ora sono passate 3 ore quando questo avrebbe dovuto impiegarti 10 minuti. E non è ancora risolto.

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


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


3
Penso che tu e io abbiamo appena avuto / stiamo vivendo la stessa esperienza.
AndrewKS,

19
Mettilo su SO e offri una taglia.
JeffO,

4
Se solo fosse così semplice. Alcuni di questi tipi di problemi sono tra le molte domande morte / senza risposta / mancata risposta.
Aditya P,

2
Questa domanda sembra essere fuori tema perché appartiene a workplace.stackexchange.com
Kilian Foth,

Lo stesso mio problema e la stessa domanda.
Anwar,

Risposte:


69

Sebbene questo sia un vero problema, non è specifico per la programmazione. Tuttavia, è IMHO così importante che merita un posto su questo forum.

I miei suggerimenti: fare una pausa . Fai una passeggiata, medita, dormi, fai attività fisica * - fai qualcosa di completamente diverso per consentire al tuo cervello di rilassarsi ed uscire dalla routine mentale , lasciando che il tuo subconscio lavori sul problema in pace. Di solito fornisce risultati sorprendentemente veloci - deve solo 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 nient'altro.

cosa puoi fare per evitare di raggiungere questo punto?

Le tecniche di rilassamento e consapevolezza sono la chiave per superare le reazioni allo stress e consentire alla mente di concentrarsi chiaramente. E la pratica di questi paga davvero. Quando qualcuno ha esperienza in questi, può già notare il livello di stress che aumenta prima che la frustrazione possa prendere il sopravvento . Quindi si può interrompere il ciclo di pensieri, ad esempio facendo qualche respiro profondo o facendo un paio di minuti di pratica di rilassamento. Questo può essere tutto ciò che è necessario a quel punto.

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


12
+1, La nostra mente sta SEMPRE tentando di risolvere i problemi, solo perché non stiamo consapevolmente cercando di risolverlo, la nostra mente sta ancora sfornando. Ecco perché apparentemente ricordi un nome di punto in bianco, un'ora dopo non essere stato in grado di ricordarlo. E svegliati con un problema risolto nel cuore della notte. Un ottimo libro che spiega questo è Pragmatic Thinking and Learning: Refactor Your Wetware
CaffGeek

+1 Non avrei potuto dirlo meglio. In realtà esco dal mio cubo, esco dall'ufficio e giro in città, chiamo mia moglie e poi torno in ufficio. Funziona quasi il 100% delle volte.
Mr. Ant

9
E non lavorare più di 8 ore al giorno. Più sei stanco, più ti senti frustrato.
HLGEM,

3
Quando faccio una pausa per fare pipì, ho spesso il problema risolto quando torno alla mia scrivania. È come se il tuo subconscio stesse aspettando che il tuo cosciente tacesse.
Barrycarter,

1
@junxiong, si possono usare queste tecniche anche sotto pressione del tempo, ma ciò richiede esperienza. Qualcuno che, ad esempio, sta meditando da anni, può controllare e calmarsi in pochi minuti o addirittura secondi. Ma cercare di imparare qualcosa di nuovo - e soprattutto la consapevolezza - sotto la pressione del tempo è molto difficile. Se tutto il resto fallisce, prendi questo come una lezione importante e una volta scaduto il termine, inizia a prepararti per la prossima crisi analizzando il tuo comportamento e praticando alcune tecniche menzionate qui o in altre risposte.
Péter Török,

35

sono passate 3 ore quando questo avrebbe dovuto impiegarti 10 minuti.

La parola magica è dovrebbe . Colpiscilo dal tuo vocabolario.

Chi l'ha detto che dovrebbe richiedere 10 minuti? Chi in particolare? Qual è stata la base fattuale per la loro richiesta?

Se l'hai già fatto 3 volte prima, e ogni volta che eri vicino a 10 minuti, hai una base razionale per un dovere .

Se non l'hai mai fatto prima, dire dovresti solo prepararti per il fallimento. Dovresti smettere di usare dovrebbe oggi.


2
Certo, ci sono molte cose che hai fatto un milione di volte che un giorno smetti di funzionare. Un file danneggiato in alcuni codici generati automaticamente può essere dannatamente frustrante ed è talvolta estremamente difficile eseguire il debug. Sto pensando a volte in cui ho accidentalmente chiamato due cose con lo stesso nome, quindi ho usato uno strumento di refactoring per cambiare tutte le istanze in cui il nome è comparso. Ho fatto quella mossa dalla testa d'osso alcune volte con classi in conflitto con le mie classi generate da ORM. Fai qualcosa del genere, e faresti meglio a sperare di essere stato bravo con i check-in.
Morgan Herlocker,

1
@Prof Plum: "Ho fatto quella mossa dalla testa d'osso alcune volte". Punto eccellente. Ciò significa che un'aspettativa deve includere il tempo per quella mossa dalla testa d'osso. Ancora una volta, il "dovrebbe" dovrebbe includere tutti i fatti, non i fatti "se tutto è andato per il verso giusto" ed escludere i fatti relativi alla "mossa dalla testa d'osso".
S.Lott

22

Trova qualcuno da usare come cassa di risonanza

Anche se nessuno ha esperienza su ciò su cui stai lavorando, è una buona idea parlare di queste cose frequentemente. Solo l'atto puro di usare qualcuno come cassa di risonanza può far girare la tua mente. Ti ritroverai a pensare a nuove cose da provare. Allevierà anche lo stress a sfogare un po 'e potenzialmente fare nuove amicizie. È anche salutare in generale per il team sentirsi a proprio agio nel condividere e commiserare tra loro per generare un'atmosfera orientata al team per risolvere questo tipo di problemi.


7
Anche se la persona non ha idea di cosa gli stai dicendo, solo l'atto di parlarne aiuta a chiarire le cose.
Michael Brown,

2
@Mike, anche se quella "persona" è un orsacchiotto, funziona ancora in una percentuale sorprendentemente grande dei casi (c'è una vera storia al riguardo nel Dizionario degli hacker AFAIR)
Péter Török,


1
Rubber Duck Debugging? pfft. Tengo un debug Goomba sulla mia scrivania proprio per questo motivo, le anatre sono migliori per il lato della gestione del progetto.
glasnt

Sì, stavo per fare riferimento a ... era troppo pigro per tirare su il link: P
Michael Brown,

9

Allontanati un po 'e fai qualcos'altro. Dormi bene la notte e torna al problema al mattino.

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


9

Ho qualche passo quando raggiungo questo punto. Normalmente riesco a trovare una soluzione se mi prendo il tempo di 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 fresca.

Passaggio 2: torna al codice e verifica se hai perso qualcosa. Chiedi a qualcuno di venire e di essere un secondo paio di occhi se non riesci proprio a capirlo o fare la coda.

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

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

Fondamentalmente, questi possono essere riassunti come "Smettere di hackerare e allontanarsi dal codice".


Uso sempre la lavagna. Molto utile per la visualizzazione durante il debug.
Michael K,

Il passaggio 3 è noto come modifica del dominio del problema per vedere se è possibile riutilizzare un successo parallelo. Viene anche indicato come l'utilizzo di una metafora.
Kurucu,

2

Vorrei porre una domanda qui e chiedere alla community di aiutarti a risolverlo. Meno stressante in questo modo.


6
A volte solo scrivere la domanda porterà alla soluzione
JoelFan,

1

Ho un diverso tipo di soluzione - DORMIRE !!

Quando sei frustrato da un problema, non puoi facilmente uscirne. Quindi è meglio se ti stanchi di provare a risolvere il problema e poi ti addormenti.

Al risveglio avrai una sensazione fresca e di nuovo puoi pensare chiaramente al problema. Lo faccio a volte.


Non essere pignoli, ma questa soluzione "diversa" è stata menzionata in almeno due risposte precedenti.
Péter Török,

1
cosa intendevo -> non solo fare una pausa, camminare o dormire piuttosto stancarsi cercando di risolvere il problema e poi dormire. perché quando hai il problema in te, potresti non uscirne facilmente
ruben,

1

Trovare qualcosa che aiuti a ricostruire un po 'di fiducia è ciò che tendo a fare quando raggiungo questo punto. Potrebbe trattarsi di risolvere un enigma di Sudoku o Kenken, fare qualche semplice compito amministrativo insensato come compilare il mio foglio di lavoro o uscire a fare una passeggiata. La chiave qui è per me avere un senso di realizzazione in qualunque cosa questa piccola distrazione laterale sia di aiutarmi a pomparmi abbastanza da tornare sul cavallo e cavalcare nel selvaggio blu laggiù, per mescolare lì alcune metafore.

Per evitare di diventare così cattivo, probabilmente suggerirei di avere qualche strategia di roba da time boxing in modo che se credi che qualcosa duri 10 minuti ed è improvvisamente un'ora dopo senza molti progressi, mi fermerei e avrei una piccola pausa piuttosto che cercare di continuare a sbattere la testa contro il muro.


1

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

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

Quindi c'è la mia soluzione: mentalizzarla 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 pensarci 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 tu non so tutto .


0

Beh ... penso che tu abbia bisogno di una nuova carriera o di una serie completamente nuova di aspettative. Sebbene certamente non frequente, impiegare 3, 4, 8, 10 o 40 ore per fare quello che inizialmente pensavi fosse un lavoro di 10 minuti non è certamente raro nel settore del software. Sono sicuro che la maggior parte degli sviluppatori che lavorano su qualcosa di anche di moderata complessità hanno avuto attività di 2 giorni trasformate in attività di 1 mese una volta che hanno approfondito e compreso il problema.

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


0

Due suggerimenti:

  1. La persona più intelligente che conosco, che ha due dottorati di ricerca e ha il titolo di lavoro "Research Fellow", in una piccola azienda privata, dice questo

    Se ci hai pensato per 15 minuti e non hai la risposta, stai sbagliando.

    Smetti di pensarci.

    Fai un pisolino. (fare una passeggiata o qualcosa del genere)

    La risposta sarà lì quando ti svegli.

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


0

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

Quando sei all'inferno, continua a camminare perché è la cosa migliore che puoi fare a quel punto.

Fai una pausa, cerca di rinfrescarti e concentrati sul problema con un nuovo livello di energia.


0

facendo eco alle raccomandazioni degli altri:

  • questa situazione è quasi sempre qualcosa di banale che non si vede ; fare una pausa
  • un altro paio di occhi o anche solo spiegare il problema al tuo gatto può aiutare

e aggiungendo:

  • riesamina i tuoi presupposti, in particolare quelli non dichiarati; è probabile che abbai abbaiando l'albero sbagliato
  • invertire la situazione: supponiamo che l'attuale comportamento sia il risultato desiderato, quindi cosa dovresti fare al codice per farlo accadere?
  • scrivere un codice di prova (asserzioni o registrazioni, o punti di interruzione condizionali - mantienilo semplice) per verificare i tuoi presupposti lungo il percorso di esecuzione

0

A volte, è meglio non solo provare a risolvere un problema. Prenditi del 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 un codice che funzionerà solo con un piccolo insieme di condizioni e che cambierà, il codice si romperà o farà cose inaspettate.

Inoltre (odio ammettere che i miei professori avevano ragione su questo ...), la documentazione e i test unitari aiutano. Ciò renderebbe più semplice sapere quale sezione di codice verrà pubblicata, dato l'insieme di input. Quindi, sarebbe più facile vedere quale effetto provocherà un cambiamento nell'input di quelle sezioni.


0

La fatica o la mancanza di sonno non sono mai un problema per me. Sono più frustrato dalla mancanza di organizzazione all'interno del settore nel suo complesso e dai bassi standard che ci siamo prefissati. Ecco cinque cose che mi frustrano:

  1. API complicate nella progettazione. È come imparare un linguaggio di programmazione completamente nuovo. 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 risparmiarmi tempo inserendo la documentazione che mi serviva un dottorato di ricerca in ingegneria del software o informatica per capirlo.

  2. Mancanza di buona documentazione. Non riesco mai a superare il fatto che così tanti progettisti di API passano molto tempo a creare un'API solo per rilasciarla con una documentazione minima. Grazie, ma come posso usarlo? Cosa fare in questa situazione? eccetera.

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

  4. Ambienti sandbox / Restrizioni. Ok, forse questo aiuta a tenere fuori le persone cattive, ma secondo me le restrizioni su ciò che un programmatore può fare limita solo 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. L'industria della programmazione è fatta apposta per sfornare applicazioni quotidiane, non software innovativi innovativi. Quindi, se decidi di diventare un programmatore, stai davvero scegliendo di essere un grugnito moderno, a meno che tu non voglia diventare un accademico solitario.

  5. Discussioni moderne Le persone oggi discutono ancora sulla bruttezza della parentesi di Lisp, sul merito della pulizia di Python o su come alcune lingue come Cobol o Fortran si stiano estinguendo, ecc. Ecc. Davvero persone? Questo è ciò di cui discutiamo? Parliamo di parallelismo, o modi migliori per progettare sistemi più sicuri, o in che modo la programmazione logica può migliorare la nostra vita. Smettiamola di pensare come programmatori e cominciamo a pensare come designer del mondo di domani.

Quindi personalmente non programmo più molto a causa di queste frustrazioni. Fino a quando l'industria non decide di voler fare di più che creare il prossimo Facebook o reinventare il word processor che ho impostato. Lascio a voi ragazzi. Onestamente, nessuna offesa significava, è un buon prezzo.

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.