単純なものを実装しようとすることがありますが、奇妙な理由で機能しません。
だからあなたは可能な解決策を試してみますが、それから何か他のことがうまくいきません。あなたは別の回避策を試し続けますが、いつも何か別のものが機能していません。
あなたが一歩近づくたびに、この問題を解決するのに一歩(またはそれ以上)遠ざかるようになり、今では3時間かかっていたはずですが、10分かかるはずでした。 そしてそれはまだ解決されていません。
あなたの会社には手伝ってくれる人がいないので、あなたは自分のこぶしを画面に入れようとしています。
この時点で、あなたはとてもイライラしているので、もはや問題について明確に考えることができません。この時点で何をすべきですか?または、この点に到達しないようにするために何ができますか?
これは実際の問題ですが、プログラミングに固有のものではありません。ただし、私見は非常に重要なので、このフォーラムに参加する価値があります。
私の提案:休憩あり。散歩に出かけ、瞑想し、睡眠を取り、身体活動を行います*-完全に異なる何かを行います脳がリラックスして精神的なわだちから抜け出せるようにします。通常、それは驚くほど高速に結果を提供します-それをあなたに知らせる必要があるだけです。しかし、あなたの意識的な心は同じ思考のサイクルを何度も何度も必死に繰り返していますが、それ以外のものを聞くことはできません。
このポイントに到達しないようにするにはどうすればよいですか?
リラクゼーションとマインドフルネスのテクニックは、ストレス反応を乗り越え、心を明確に集中させるための鍵です。そして、これらを実践することは本当に報われます。誰かがこれらで経験したとき、彼はすでに欲求不満が引き継ぐことができる前にストレスレベルが上昇していることに注意してください。次に、思考のサイクルを中断することができます。深呼吸を数回行うか、数分のリラクゼーション練習を行います。その時点で必要なのはこれだけです。
*あなたのパートナーにキスし、あなたのペットを愛撫-私の妻からの提案:-)
これで3時間になり、10分かかるはずでした。
魔法の言葉はすべきです。あなたの語彙からそれを打つ。
誰が10分かかると言ったの?具体的には誰ですか?彼らの主張の事実上の根拠は何でしたか?
以前に3回行ったことがあり、毎回10分近く経過した場合、すべきの合理的な根拠があります。
これまでに一度も行ったことがない場合、すべきと言っても、失敗するだけです。今日はshouldの使用を中止してください。
サウンドボードとして使用する人を見つける
あなたが取り組んでいることについて正確な専門知識を誰も持っていなくても、これらのことについて頻繁に話すことは良い考えです。誰かをサウンディングボードとして使用するというまったくの行動だけで、あなたの心は変わり始めます。新しいことを試してみてください。また、ストレスを和らげ、少しだけ気を配り、新しい友達を作る可能性もあります。また、チームがこれらの種類の問題を解決するためのチーム指向の雰囲気を生み出すためにお互いに快適に共有し、妥協することを感じるのは、一般的にちょうど健康です。
しばらく離れて、他のことをしてください。ぐっすりと眠り、朝の問題に戻ってください。
また、自分を殴らないでください。あなたの10分の見積もりは明らかに正しくありません、そしてそれはいつも起こります。
この時点で、いくつかのステップがあります。通常は、時間をかけて反省することで解決策を見つけることができます。
ステップ1:問題から離れ、頭をきれいにします。あなたが欲求不満ではなく、新鮮な心でそれを見ることができるときに戻ってきます。
ステップ2:コードに戻って、見落としがないか確認します。あなたがそれの頭または尾を作ることができないなら、誰かが来て、2番目の目となるようにしてください。
手順3:方程式からコードを削除します。解決しようとしている問題は何ですか?一枚の紙またはホワイトボードに書きます。問題と解決策についての意見を得るために誰かと問題を話し合います。
ステップ4:コミュニティに連絡して、解決策があるかどうか、他の誰かが同じ壁にぶつかったかどうかを確認します。
基本的に、これらは「ハッキングをやめ、コードから離れる」と要約できます。
ここで質問をして、コミュニティに解決を手伝ってもらいます。そうすればストレスが減ります。
このような状況には特別な名前があります:壮大なプログラミングの戦い。
特定のプログラミング言語またはツールとの壮大なプログラミングバトルを1回も受けておらず、問題を解決していない場合、自分には言えませんそのようなプログラミング言語またはツールを使用できること。
だから私の解決策があります:戦いと勇気と持久力のテストのようにそれをメンタライズします。問題を解決できない場合は、「別の日と戦うために生きる」。
それは少しばかげているように聞こえるかもしれませんが、factthatあなたはすべてを知っているわけではありません。
別の種類の解決策があります-[〜#〜] sleeping [〜#〜] !!
あなたが問題に不満を抱いているとき、あなたは簡単にそれから抜け出すことができません。ですから、問題を解決しようとして疲れて眠りに落ちた方がいいでしょう。
目を覚ますと新鮮な気分になり、問題をはっきりと考えることができます。私は時々それをします。
自信を取り戻すのに役立つ何かを見つけることは、このポイントに達したときに私が行う傾向があることです。これは、数独やケンケンのパズルを解いたり、タイムシートに記入したり、散歩に出かけたりといった、単純な無頓着な管理タスクを実行することです。ここで重要なのは、この小さな側面の気晴らしが馬に乗って野生の青の向こうに乗り降り、そこにいくつかの比喩を混ぜるのを助けるのに役立つことです。
これが悪化するのを避けるために、タイムボックス化の戦略を立てることをお勧めします。10分かかると思っていて、1時間後に突然、あまり進行しない場合は、停止して壁に頭をぶつけ続けるのではなく、少し休憩しました。
まあ...私はあなたが新しいキャリアまたはまったく新しい期待のセットを必要とすると思います。確かに頻繁ではありませんが、当初10分の仕事だと思っていた作業に3、4、8、10、または40時間かかることは、ソフトウェアビジネスでは珍しくありません。中程度の複雑さの作業に取り組むほとんどの開発者は、2日間のタスクを掘り下げて問題を理解すると、1か月のタスクに変わったと思います。
優れた開発者になるには忍耐が必要です。そうしないとコンピューターが勝ち、結局はうまく機能していないように見えるが、必然的に思いもよらなかったものを壊してしまうような、ある種のクイックフィックスハックを組み込むことになります。わずかな遅延がそれだけのストレスを引き起こしている場合は、おそらくこの作業に参加すべきではありません。
2つの提案:
私が知っている最も賢い人は、2つの博士号を持ち、肩書きが小さい研究会社で「Research Fellow」という肩書きを持っています。
15分間それについて考えても答えがわからない場合は、間違っています。
それについて考えるのをやめてください。
昼寝する。 (散歩に行くか何か)
あなたが目覚めると答えはそこにあります。
David J Aganの本"Debugging"を入手してください。デバッグについてもっと教えてくれるので、物事がうまくいかなかったときに素早くデバッグできます。
機能していない何かに直面したときはいつでも、この引用をいつも覚えています。
地獄にいるときは、それがその時点でできる最高のことなので、歩き続けてください。
休憩して、自分をリフレッシュし、新しいレベルのエネルギーの問題に集中してください。
他の人の推奨を繰り返します:
そして追加:
疲労や睡眠不足は私には決して問題ではありません。業界全体での組織の欠如、そして全体的に私たち自身のために設定した低い基準に私はもっと苛立っています。ここに私を苛立たせる5つのことがある:
設計が複雑なAPI。それはまったく新しいプログラミング言語を学ぶようなものです。実際、一部のAPIは、新しいプログラミング言語を学ぶよりも学ぶのがはるかに困難です。私はあなたの知性に感心しますが、それを理解するためにソフトウェアエンジニアリングまたはコンピュータサイエンスの博士号が必要であるというドキュメントを入れておけば、時間を節約できたでしょう。
適切なドキュメントの欠如。非常に多くのAPI設計者がAPIを作成するために多くの時間を費やして、最小限のドキュメントでそれをリリースするだけであるという事実を私は決して克服できません。ありがとう、でもどうやって使うの?この状況で何をすべきか?等.
独自の実装。独自の実装でも問題ありませんが、標準が存在する場合は、人類のためにそれらの標準に従ってください。実装が通常の標準に準拠していないことを発見するためだけに機能しないのはなぜかと思って時間を費やすことほどイライラすることはありません。
サンドボックス環境/制限。 OK、多分これは悪い人々を遠ざけるのに役立つかもしれませんが、私の意見では、プログラマーができることに対する制限は創造性と技術の進歩を制限するだけです。私が何かをすることが許可されていないことを発見した後、私が持っていた素晴らしいアイデアの多くは捨てられました。プログラミング業界は、革新的な画期的なソフトウェアではなく、実際に日常のアプリケーションを作り出すために作られています。ですから、プログラマーになることに決めたなら、孤独な学者になりたいのでない限り、あなたは本当に現代のうなり声になることを選んでいます。
現代の議論。今日の人々は、LISP括弧の醜さ、Pythonの清潔さのメリット、またはCobolやFortranなどの一部の言語がどのように絶滅するかなどについて、まだ議論しています。これは私たちが議論していることですか?並列処理、またはより安全なシステムを設計するためのより良い方法、またはロジックプログラミングが私たちの生活をどのように改善できるかについて話しましょう。コーダーのように考えるのをやめて、明日の世界のデザイナーのように考え始めましょう。
だから私はこれらの欲求不満のために私はもはやそれほど多くをプログラムしません。業界が、次のFacebookを作成する以上のことを実行するか、ワープロを再発明するかを決定するまで、すべての準備は整っています。皆さんにお任せします。正直なところ、犯罪は意味されていません。
場合によっては、問題を切り抜ける方法を試そうとするのではなく、少し時間をかけて、必要なことを疑似コードで書きます。私は物事をできるだけ早く終わらせなければならないというプレッシャーがあることを知っていますが、私が見てきたことから、そのコーディングスタイルは、あなたが説明するタイプの状況につながります。少数の条件が与えられた場合にのみ機能するコードを記述し、そのセットに変更を加えると、コードが破損したり、予期しないことが起こります。
また(私は私の教授がこれに正しかったことを認めるのが嫌いです...)、文書化とユニットテストが役立ちます。これにより、入力のセットが与えられた場合にコードのセクションが何を出力するかを簡単に知ることができます。そうすれば、そのセクションの入力の変更がどのような影響を与えるかを簡単に確認できます。