特に厳しいプログラミング期限(1時間など)の最中にパニックが発生した場合、私の傾向は、実際の計画なしにコーディングに飛び込み、進むにつれてそれを理解できることを願っています。十分な時間が与えられればこれはうまくいくかもしれませんが、インタビューでは実に逆効果ではないにしても、かなり失敗しています。時計が時を刻む間、私はいつもそこに座って快適であるとは限りません。
チェックリストはありますか、またはコーディングを開始するのに十分なほど問題を理解したときにそれを認識するテクニックはありますか?いくつかの実験よりも多くのことを考えて設計し、後で全体的な設計を理解することが最も生産的ですか?
算数テストを受けるためのテクニック と 口頭試験を受けるため のリストを次に示します。圧力下でプログラミング問題を処理するための同様のテクニックのリストはありますか?
回答:これは有効な回答だと思います: 解決方法 。私はそのリンクが 解決策または解決に向けて取り組むためのステップ への回答として見つかった。 面接中に大声で考えることが本当に最善の戦略ですか? にもいくつかの本当に良いヒントがありました。 TDDの素晴らしく簡潔な議論は、 TDDコードの作成と問題の解決策の理解? に対する最初の回答です。
火災現場に到着したときに消防隊が行動計画をどのように形成するかに関する研究を読んだことを思い出します。研究では、アイデアを思いついた後、最初のアイデアをすぐに追求したことを観察(および非難)しました。時間のプレッシャーのために、「これでうまくいくかもしれない」、「それでは、やろう」が続きました。調査では、より優れた、より速く、より安全なオプションが利用可能であると指摘しましたが、マーシャルが最初にそれらを考慮しなかったという理由だけで、それらは追跡されませんでした。
「火事」に対処するための構造化されたアプローチが必要な場合は、いくつかのフェーズを規定している(新しい)本から一枚の葉を取り除く可能性があります。
R.R.A.P.I.D。
またはより一般的な言葉で:
...私の傾向は、実際の計画なしにコーディングに飛び込む傾向があり、私が進むにつれてそれが理解できることを願っています。
私は大学でこれをしました。これは実際の問題になり、通常はコードの書き換えにつながります。私はコードを書かないことでこれに対処し始めました。私はその問題についての考えを強調しました。十分な練習を重ねて、キーボードではなく直感的に自分の考えに手を伸ばします。
...インタビューでは、実に逆効果ではないとしても、かなり失敗しています。時計が時を刻む間、私はいつもそこに座って快適であるとは限りません。
面接では、合理的でよく考え抜かれたソリューションの実装が必要ですが、それは必ずしも容易ではありません。あなたがしたくないのは、考えずに答えをぼかすことです。答えがわかっている場合は、すぐに答えてください。そうでない場合は、考えに基づいて解決策を推論してください。 常にわからない場合を示し、解決策を見つける方法を示します。
チェックリストはありますか、またはコーディングを開始するのに十分なほど問題を理解したときに、それを認識するテクニックはありますか?
あなたが厳しくそれに頼るかもしれないので、私はそのようなことを思いとどまらせます。むしろ、コーディングを開始するのに十分なほど問題を理解しているかどうかを自問してください。どうやって知る?あなたがあなたのアプローチを推論し、それを調べるとき、あなたの現在の言語の知識があれば、それは理にかなっているからです。常に計画とアプローチを持っています。また、コードが完成することは決してなく、進化しないコードは死ぬので、頻繁にコードに戻ることを期待してください。
いくつかの実験よりも多くのことを考えて設計し、後で全体的な設計を理解することが最も生産的であるのはいつですか?
全体的なデザインを知り、考えてみてください。次に、クラス構造とスタブの作成を開始します。その後、もう一度確認してください。それは意味がありますか?コーディング実験は、何かがうまく機能することを実証する優れた方法であり、使用する必要がありますが、作成したコードのファッションや形に依存することはできません。
私は常に要件を理解し、答えを必要とするギャップを探すことから始めます。
次に、2つまたは3つの可能な解決策をスケッチします(大まかに、紙またはホワイトボードに)。次に、「これらを実装するために他に知っておく必要があることはありますか?」と自問します。
最初の質問があると(質問が100%あります。質問がない場合は、要件を詳細に検討していません)、関係者に戻って私の答えを取得します。
私は彼らの反応を待ちながら、自分の解決策を検討し、他の解決策より優れているものがあるかどうか、または質問に対する回答を得たらもっと良いものになるかどうかを確認します。たとえば、すぐに質問が必要な場合は、すぐに開発を進めることができますが、後で設計を改善する方法を開いたままにすることができます。パフォーマンスが重要であると彼らが言った場合、私は解決策を見て、どれがより良いパフォーマンスを発揮する可能性が高いかを判断します(これらは現時点では推測ですが、一般に情報に基づいたものです)。 GUIが関係している場合、いくつかの異なるデザインの紙のプロトタイプを作成し、コードを書く前に関係者に見てもらうことがあります(通常、関係者は、XYZについてのことを忘れてしまったことがわかります。設計!)
答えが出たら、大まかな設計を選択し、それを実装するために実行する必要があるすべてのことのリストを作成します。次に、コーディングを開始します。