物事がうまくいかない場合のフラストレーションへの対処[終了]


62

シンプルなものを実装しようとしますが、何らかの奇妙な理由で機能しません。

そのため、可能な解決策を試してみますが、他の何かが機能しません。さまざまな回避策を試し続けていますが、毎回異なるものが機能していません。

一歩近づくたびに、この問題の解決からさらに1つ(またはそれ以上)のステップが得られ、現在では10時間かかっていたはずの3時間でした。そして、それはまだ解決されていません。

あなたの会社には誰も助けることができず、あなたはあなたの拳をあなたのスクリーンに入れようとしています。


この時点であなたはとてもイライラして、あなたはもはや問題についてはっきりと考えることができません。この時点で何をすべきですか?または、このポイントに到達しないようにするために何ができますか?


3
あなたと私は同じ経験をした/持っていると思います。
AndrewKS

19
SOに置いて、賞金を提供します。
JeffO

4
それだけが簡単だったら。これらの種類の問題のいくつかは、多くの死んだ/未回答の/失敗した質問に含まれています。
アディティアP

2
それはworkplace.stackexchange.comに属しているため、この質問は、オフトピックのように見える
キリアンFoth

私の同じ問題と同じ質問。
アンワル

回答:


69

これは本当の問題ですが、プログラミングに固有のものではありません。しかし、それは私見なので、このフォーラムの場所に値するほど重要です。

私の提案:休憩を持っています。散歩に出かけ、瞑想し、眠り、身体活動を行います*- 脳がリラックスして精神的なruから抜け出せるように、まったく異なることを行います。通常、驚くほど高速に結果を提供します-それについてあなたに知らせる必要があります。しかし、あなたの意識が必死に何度も何度も同じ思考のサイクルを繰り返している間、他のことを聞くことはできません。

このポイントに到達しないようにするために何ができますか?

リラクゼーションとマインドフルネスのテクニックは、ストレス反応を克服し、心をはっきりと集中させるための鍵です。そしてこれらを実践することは本当に報われます。誰かがこれらの経験を積むと、欲求不満が引き継がれる前にストレスレベルが上昇していることに気づくことができます。次に、例えば数回深呼吸するか、数分のリラクゼーションの練習をすることにより、思考のサイクルを中断することができます。これが、その時点で必要なものすべてです。

*パートナーにキスをし、ペットを愛careする-妻からの提案:-)


12
+1、私たちの心は常に問題を解決しようとしている、私たちが意識的にそれを解決しようとしていないからといって、私たちの心はいまだに動揺しています。そのため、名前を思い出せない1時間後に、青い名前を覚えているように見えます。そして、真夜中に解決した問題で目を覚まします。この説明偉大な本はある実用的思考と学習:あなたのWetwareリファクタリング
CaffGeek

+1自分のほうがいいとは言えません。私は実際にキューブから出て、オフィスを出て、町を歩き回り、妻に電話して、オフィスに戻ります。ほぼ100%の時間で動作します。
ミスターアント

9
そして、1日8時間以上働いてはいけません。疲れているほどイライラしやすくなります。
HLGEM

3
おしっこに休憩を取るとき、私はしばしば私の机に戻っている時間までに問題を解決します。あなたの潜在意識があなたの意識が黙るのを待っているようです。
バリーカーター

1
@junxiongの場合、時間の制約がある場合でもこれらの手法を使用できますが、これには経験が必要です。例えば何年も瞑想してきた人は、数分から数秒で自分をコントロールし、落ち着かせることができます。しかし、時間のプレッシャーの下で新しい何か、特にマインドフルネスを学ぼうとすることは非常に困難です。他のすべてが失敗した場合は、これを重要な教訓とし、期限が過ぎたら、行動を分析し、ここまたは他の回答で言及されているいくつかのテクニックを実践することで、次の危機に備えます。
ペテルトーレック

35

今では3時間で、10分かかるはずです。

魔法の言葉はすべきです。あなたの語彙からそれを打ちます。

誰が10分かかると言った?誰が具体的に?彼らの主張の根拠は何でしたか?

過去3回で、10分近く行ったことがある場合は、shouldの合理的な根拠があります。

あなたがそれをやったことがないなら、すべきだと言うことは失敗のためにあなた自身を設定するだけです。今日は使用を中止する必要があります。


2
もちろん、1日だけで作業をやめる100万回もやったことがたくさんあります。一部の自動生成コードで破損したファイルはかなりイライラすることがあり、デバッグが非常に困難な場合があります。誤って2つのものに同じ名前を付けた後、リファクタリングツールを使用して、名前が発生したすべてのインスタンスを変更することを考えています。ORMで生成されたクラスと競合するクラスを使用して、数回骨の折れる動きをしました。そのようなことをしてください、そして、あなたはあなたがチェックインに長けていることを望んでいた方が良いです。
モーガンハーロッカー

1
@Prof Plum:「骨頭を数回動かしました」。素晴らしい点。つまり、期待にはその骨のある動きの時間を含める必要があります。繰り返しますが、「すべき」には、「すべてがうまくいった場合」の事実ではなく、すべての事実を含め、「骨のある動き」の事実を除外する必要があります。
S.Lott

22

響板として使用する人を見つける

誰もあなたが取り組んでいることに精通していなくても、これらのことについて頻繁に話すのは良い考えです。誰かを響き板として使用するという純粋な行為だけで、あなたの心が向きを変え始めることができます。新しいことを試してみてください。また、ストレスを少し軽減して、新しい友達を作ることもできます。また、一般的には、チームがお互いに快適に分かち合い、これらの種類の問題を解決するためのチーム指向の雰囲気を生成することを快適に感じることができます。


7
その人があなたが彼に言っていることについての手がかりを持っていなくても、それを話す行為は物事を明確にするのに役立ちます。
マイケルブラウン

2
@マイク、その「人」がテディベアであっても、ケースの驚くほど大きな割合で動作します(ハッカーの辞書AFAIRにこれに関するいくつかの本当の話があります)
ペテル・トレック


1
ラバーダックのデバッグ?pfft。ちょうどこの理由のために、デスクにデバッグ用のGoombaを置いています。プロジェクト管理の面では、アヒルの方が優れています。
グラスント

P:うん、私はリンクプルアップするだけで怠惰だった...それを参照するつもりだった
マイケル・ブラウン

9

しばらく離れて、何か他のことをしてください。良い夜の睡眠を取り、朝に問題に戻ります。

また、打ち負かさないでください。10分間の見積もりは明らかに正しくなく、それは常に起こります。


9

この点に達すると、いくつかのステップがあります。通常、時間をかけて後戻りして考えると、解決策を見つけることができます。

ステップ1:問題から離れて、頭をきれいにします。あなたがイライラしていないときに戻って来て、新鮮な心でそれを見ることができます。

ステップ2:コードに戻り、見落としていたものがないか確認します。頭や尻尾を作ることができない場合は、誰かが来て第2の目になるようにしてください。

ステップ3:方程式からコードを削除します。解決しようとしている問題は何ですか?一枚の紙またはホワイトボードに書きます。問題と解決策について意見を得るために、誰かと問題を話し合ってください。

ステップ4:コミュニティに手を差し伸べて、彼らに解決策があるかどうか、または他の誰かが同じ壁にぶつかったことがあるかどうかを確認します。

基本的に、これらは「ハッキングをやめてコードから離れる」と要約できます。


私は常にホワイトボードを使用しています。デバッグ中の視覚化に非常に役立ちます。
マイケルK

ステップ3は、並列ドメインの成功を再利用できるかどうかを確認するために問題のドメインを変更することとして知られています。メタファーの使用とも呼ばれます。
-Kurucu

2

私はここで質問をし、コミュニティがあなたがそれを解決するのを手伝います。そのようにストレスが少ない。


6
質問を書くだけで解決策が得られることもあります。
ジョエルファン

1

私は別の種類の解決策を持っています- 睡眠 !!

問題に不満を感じている場合、簡単に抜け出すことはできません。そのため、問題を解決しようとしてとても疲れてから眠りにつくのが良いでしょう。

目を覚ますと、新鮮な気持ちになり、再び問題をはっきりと考えることができます。私は時々それをします。


よくあることではありませんが、この「異なる」解決策は少なくとも2つの以前の回答で言及されています。
ペテルトレック

1
私が意図したこと->休憩、散歩、または睡眠を取るだけでなく、問題を解決しようとして疲れてから眠る。あなたはあなたに問題がある場合、あなたは簡単にそれを出ていない可能性がありますので、
ルーベン

1

自信を取り戻すのに役立つ何かを見つけることは、私がこの点に達したときにする傾向があることです。これは、数独パズルやケンケンパズルを解く、タイムシートに記入する、散歩に出るなどの単純な心のない管理作業を行うことです。ここで重要なのは、このちょっとした気晴らしが何であれ達成感を持ち、馬に戻って野生の青空に乗り、そこにいくつかの隠phorを混ぜるのに十分な力を与えることです。

これが悪くなるのを避けるために、タイムボクシングの戦略を立てることをお勧めします.10分かかると思われ、突然1時間後にあまり進歩していない場合は、停止して頭を壁にぶつけ続けようとするのではなく、少し休憩します。


1

この種の状況には特別な名前があります。それは、壮大なプログラミングの戦いです。

特定のプログラミング言語またはツールと少なくとも1つの壮大なプログラミングの戦いを経験せず、問題を解決しなかった場合、そのようなプログラミング言語またはツールを使用できるとは言えません。

だから私の解決策があります:戦いと勇気と持久力のテストのようにそれを精神化してください。問題を解決できない場合は、「別の日に戦うために生きます」。

それは(それはあなたが勝たなければならないゲームのいくつかの並べ替えをしたように)あなたが直面しなければならないので、代わりにすべての方法を患っているこの観点で考えて、より楽しく、満足になり、少しはばかげて聞こえるかもしれないが、事実をそのあなたすべてを知らない


0

まあ...新しいキャリアか、まったく新しい期待が必要だと思う。確かに頻繁ではありませんが、ソフトウェアビジネスでは、3分、4時間、8時間、10時間、または40時間かけて、当初は10分間の仕事だと思っていた作業を行うことは確かに珍しいことではありません。中程度の複雑さでも作業するほとんどの開発者は、2日間のタスクを掘り下げて問題を理解すると、1か月のタスクに変わると確信しています。

優れた開発者になるには忍耐が必要です。そうしないとコンピューターが勝ち、最終的には動作しているように見えても、思いもよらなかったものを必ず壊してしまうようなクイックフィックスハックを組み込むことになります。わずかな遅延が原因でそれほど多くのストレスが発生する場合は、おそらくこの作業ラインにいるべきではありません。


0

2つの提案:

  1. 私が知っている最も賢い人は、2人の博士号を持ち、小規模な民間企業で「研究員」という肩書きを持っています。

    あなたが15分間それについてしかしもしあなたが答えを持っていないなら、あなたはそれを間違っている。

    それについて考えるのをやめてください。

    昼寝をします。(散歩か何かに行きます)

    答えは、目を覚ますときにそこにあります。

  2. David J Aganの本「Debugging」を入手してください。デバッグについて詳しく説明するので、うまくいかないときはすぐにデバッグできます。


0

うまくいかない何かに直面したとき、私はいつもこの引用を覚えています:

地獄にいるときは、その時点でできる最善のことなので、歩き続けてください。

休憩を取り、自己をリフレッシュして、新しいレベルのエネルギーで問題に集中するようにしてください。


0

他の人の推奨をエコーする:

  • この状況はほとんどいつもあなたが見ない些細なことです; 休憩する
  • 別の目で見たり、猫に問題を説明したりするだけでも役立ちます

追加:

  • 仮定、特に明記されていない仮定を再検討してください。あなたは間違った木をkingえている可能性があります
  • 状況を逆にします。現在の動作が望ましい結果であると仮定します。それを実現するためにコードに何をしなければなりませんか?
  • 実行パスに沿って仮定を検証するために、テストコード(アサートまたはロギング、または条件付きブレークポイント-シンプルにする)を記述します。

0

場合によっては、単に問題を切り抜けようとしないことが最善です。少し時間をとって、必要なことを疑似コードで書き出します。できる限り速く物事を成し遂げることへのプレッシャーがあることは知っていますが、私が見たところから、そのスタイルのコーディングはあなたが説明するタイプの状況につながります。条件の小さなセットが与えられた場合にのみ機能し、そのセットが変更されるコードを誰かが書いた場合、そのコードは壊れるか予期しないことをします。

また、(教授がこれに正しかったことを認めたくありません...)、文書化と単体テストが役立ちます。これにより、入力のセットが与えられると、コードのセクションが何を出力するかを簡単に知ることができます。そうすれば、そのセクションの入力を変更するとどのような影響が生じるかを簡単に確認できます。


0

疲労や睡眠不足は決して問題ではありません。業界全体としての組織の欠如と、私たちが自分自身に対して設定した低水準に全般的に不満を感じています。これが私をイライラさせる5つのことです。

  1. 設計が複雑なAPI。まったく新しいプログラミング言語を学ぶようなものです。実際、一部のAPIは、新しいプログラミング言語を学習するよりもはるかに学習しにくいものです。私はあなたの知性を称賛しますが、それを理解するためにソフトウェアエンジニアリングまたはコンピューターサイエンスの博士号が必要なドキュメンテーションを入れることで時間を節約できたでしょう。

  2. 適切なドキュメントの欠如。多くのAPI設計者が、最小限のドキュメントでAPIをリリースするためだけにAPIを作成するのに多大な時間を費やしているという事実を、私は決して乗り越えることができません。ありがとう、しかしこれはどうやって使うの?この状況で何をすべきか?等

  3. 独自の実装。一部の独自の実装は問題ありませんが、標準が存在する場合は、人類のためにそれらの標準に従ってください。実装が通常の標準に準拠していないことを発見するためだけに機能しない理由を考えるのに時間を費やすことほどイライラすることはありません。

  4. サンドボックス環境/制限。おそらく、これは悪い人たちを締め出すのに役立つかもしれませんが、私の意見では、プログラマができることに対する制限は創造性と技術の進歩を制限するだけです。私がしてきた素晴らしいアイデアの多くは、私が何かをすることが許されていないことを発見した後、捨てられてきました。プログラミング業界は、革新的な画期的なソフトウェアではなく、日常のアプリケーションを大量生産するために本当に作られています。プログラマーになることに決めたなら、孤独なアカデミックになりたくない限り、あなたは本当に現代のうなり声になることを本当に選択しています。

  5. 現代の議論。今日の人々は、Lispの括弧のさ、Pythonの清潔さのメリット、またはCobolやFortranのようないくつかの言語がどのように絶滅するかなどについてまだ議論しています。これは私たちが議論していることですか?並列処理、またはより安全なシステムを設計するためのより良い方法、またはロジックプログラミングがどのように私たちの生活を改善できるかについて話しましょう。コーダーのように考えるのをやめて、明日の世界のデザイナーのように考え始めましょう。

だから、私は個人的にはこれらのフラストレーションのためにそんなに多くはプログラミングしません。業界が次のFacebookを作成するだけでなく、私が設定したワードプロセッサを再発明する以上のことをしたいと判断するまでは。皆さんにお任せします。正直言って、犯罪はありません、それは良いお金です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.