優れたエンコーダーの本能は、最終的に「口の中であなたを襲う」でしょう

画像



ほぼ32年前、6歳のときに最初の数行のコードを書きました。非常に強力なプログラミングの本能を身に付け、どんな問題でも見ることができ、すぐに解決方法がわかりました。



生計を立てるためのプログラムを書き始めた頃には、ロックスターのように感じていました。 私は同僚よりも早くエラーを見つけて修正しました。 私のチームは、最も目立たず、紛らわしいバグを私に与えてくれました。 彼らは私をマスターと呼び始めました。



しかし、 直感だけでは十分ではありません 壁にぶつかった。 そして、私はそれを打破するのに役立つエンコーダの本能はありませんでした。 その後、ビル・サワーは、そこで止まらない方法に関する情報を私たちと共有します。 一部の人にとって、これらの考慮事項は確かに明白に思えます。 さて、誰かが重宝します。



自分の直感に対する不信の問題



残念ながら、直感は問題を解決する手段とは見なされません。 直感と本能だけに頼ると、次のような曲線になります。



画像



もちろん、これらの制限を受け入れて、国境を越えない問題にのみ対処することができます 。 これはあなたにスターのように感じる機会を与えますが、同時にあなたの職業とキャリアの成長を大きく制限します。 また、退屈です。



私は自分の能力に挑戦し始めました-キャリアのはしごをさらに上に移動し、驚くべき傾向に気づき始めました。 私は最速ではなくなりました。



遅かれ早かれ、人との出会いは自分よりも強く、才能があることを常に知っていました。 私の誇大妄想には限界がありました。 私は天才ではないことを理解しました。



私は周りを見回して、私を取り巻く人々は私よりも優れた知性を全く与えられておらず、特別な贈り物を持っていないことに気付きました。 彼らには私が恋しい特別な武器があります規律です。



問題を調査して解決するための一貫した段階的な方法論的なアプローチは、最終的には自然データ(または開発しようとしている本能)を上回ることがわかります。



これらの能力を見てみましょう。



あなたが誰であるか、どれだけ情熱や才能があるかに関わらず、遅かれ早かれ限界に達するでしょう。 規律と能力の発達に関する問題を根本的に解決するのに役立ついくつかのトリックを紹介します。



デバッガーをお持ちの場合は、既にそれを起動し、少しグーグルで検索しても、結果が得られなかったと確信しています。

また、誰かがこの問題についてあなたに言ったら、あなたはそれを再現するだろうと確信しています。 これは重要な声明です。 問題を再現できない場合、これが最初のステップになります。



問題が発生したコンテキストと環境を、再現しようとしている環境と比較する必要があります。 条件を再現するまで、相違を1つずつ除去し始めます。



問題を再現できたら、デバッガが役に立たなくなったらすぐに、規律の方法を使用する必要があります。



いまいましい指示を読んでください!



最後に指示を読んでください! RTFMのアプローチはそれだけではなく、子供でも読むことができます。



実際に読んでください。 必要に応じて、複数回。 コピー/貼り付けできるものを探して、すべてが機能することを期待しないでください。



問題は、すぐに答えが必要なことです。 簡単な勝利のスリルが必要です。 働きたくない。 遅くなります。 吸い込む。 コーヒーを飲んでください。 付属のドキュメントを読んでください!



ドキュメントがない場合は、問題に対処した後に作成する価値があります。 彼女は他の誰かに役立つかもしれません。



前提を確認してください



何かが機能するはずであるが、機能しないと思われる場合は、どこかで間違えたためです。 すべての仮定を確認し、正しい答えを見つけてください。



簡単に検証できる最も単純な仮定から始めます。 サーバーは実行されていますか? ネットワークに接続されていますか? すべてのブラケットとセミコロンはその場所にありますか?



最も単純な仮定から始めないと、これが問題であることが判明した場合、ウィンドウから飛び出す準備ができます。 時間と神経を節約してください。



分解および再組み立て



すべてが機能し始めるまでコンポーネントを段階的に取り外してから、すべてを再組み立てすると、機能していない部分が見つかります。



退屈で怖いように見えますが、コード内のエラーを見つける最も効果的な方法の1つです。 すべてがうまくいかない場合に備えて、開始する前に必ずバックアップを作成してください。 そのため、いつでも出発点に戻ることができます。



ちなみに、コードを回復する方法がわからない状況に陥った場合、問題は見かけよりも深刻です。作業中のコードを理解できません。 これは悪い兆候です、私の友人。



期限が切れている場合は、コードをよく知っている人に連絡してください。 そのような人が近くにいない場合、あなたは眠れぬ夜を見つけるでしょう。 このコードの仕組みを理解することは価値があります。 その場合にのみ、修正できます。



変数を除外する



デバッグプロセスが進行している間、少なくとも1つのポイントで変化する可能性のあるものはすべて静的なままでなければなりません。 動いているターゲットにヒットすることはできません。



ここでは、テストによる開発(TDD)が役立ちます。 TDDを使用している場合は、いくつかのダミーオブジェクト(モックオブジェクト)を自由に使用できます。

架空のオブジェクトは、実際のオブジェクトの制御された動作をシミュレートします。 プログラマーは、原則として、モックオブジェクトを作成して、他のオブジェクトの動作をテストします。 これは、自動車の設計者がクラッシュテストダミーを使用して、自動車事故時の人の動的な挙動をシミュレートするのとよく似ています。 -ウィキペディア


ヒント:オブジェクトでの実験中にエラーが消えた場合、問題はおそらくこのオブジェクトにあります。

Saff Squeezeを使用する



著者であり作成者のケント・ベックである「サッフスクイーズ」(「サッフの万力」)と呼ばれるテクニックがあります。 これは、前の2つのオプションのクロスです。



著者は次のように説明しています。

欠陥を効果的に分離するには、システムレベルのテストから始めて、欠陥を示す最小のテストが見つかるまで段階的に進めます。

-ケント・ベック


したがって、コードを掘り下げる代わりに、テスト済みの関数をテスト自体に追加し、エラー自体が消えるまでステートメントをチェックするだけです。



これにより、利点が得られます。小規模なテストを実行できますが、可能な限り焦点を絞ることができます。



注:Saff Squeezeテクニックの理解を深めるために、Jim Balterからこのリンクが提供されました。



修正したら、もう一度壊れて、もう一度修正します



修正方法を理解するまで、決して間違いを残さないでください。 エラーを再現して再度修正することを学ぶ必要があります。



これがどれほど重要かはわかりません。 間違いを修正して、その原因と正確な修正方法がわからない場合、それは戻ってきて、最も不適切な瞬間に再び攻撃します。



しかし、本能はどうですか?



これらのテクニックを習得したので、自分の本能を信頼せずに、それらを使用する必要があるということですか? いいえ、まったくありません。



私はあなたの本能を適切な瞬間まで保存することをお勧めします。 問題が何であるかがわかっていて、すぐに確認できる場合は、好奇心を満たしてください。 間違いが緑色の線の下にある場合、直観が最も迅速に特定するのに役立ちます。



しかし、いくつかの仮定を試してみて、何も機能しなかった場合は、 整然と行動するのをやめてください。

規律と本能を組み合わせることで、どのチームでも最高になれます。



さらに行うには、お気に入りのリファクタリングテクニックの5つを無料のPDFリストに結合します 。これにより、エラーを減らすことができます 。ここをクリックし取得できます



PSあなた自身で働くことに関する別の有用な記事をお勧めします- 労働者マラソンを克服する:生産性を高める3段階の方法で、夜間の仕事を回避できます



翻訳の著者はTESTutorの創設者であるVyacheslav Davidenkoです。



All Articles