ベストアンサー
私は現在、これを非常にうまくやっているAutoTraderで働いています。
ノートパソコンの前に座って、より大きなモニターとキーボード/マウスを持ち、上級開発者の1人とペアリングし、別の上級開発者が観察します。
とても楽しいです。みんな、いつもの面接の神経を除いて、そしてあなたが新しい人々に会っているという事実。しかし確かに、私があなたのペアであるとき、私は少し友好的な関係を築き、あなたを歓迎していると感じさせるなどを試みます。私がいつもするように。私は実際にあなたが成功することを応援しています。
あなたは簡単なタスクの半ページの問題の説明を受け取ります。次に、ペアプログラミングを少し行います。
観察され、採点されたものがいくつかあります。
- 最初にテストを作成しますか?コードの後?決して?
- テストを使用して設計について考えますか?
- 明確に名前を付けますか?
- OOP、手続き型プログラミング、または1つだけを好みますか?巨大な機能?
- ペアとうまくやりとりしていますか?それともまったくですか?
- 進行中に自分の考えを説明し、ペアに貢献してもらいますか?それとも黙って座っていますか?
- コレクションのようなJavaの標準機能を使用していますか?そうでない場合は、どうしますか?
- IDE(選択したもの)をうまく使用していますか?
- 問題をうまく分割していますか?不完全に?まったくそうではありませんか?
Java、TDD、および/またはユニットテスト用の設計を行うことができ、適度に人懐っこい種類のように思える場合は、高得点になる傾向があります。
このテストは、奇妙な言語機能の知識、奇妙なアルゴリズムの知識、または問題の解決に関するものではありません。
CVに書き込んだこれらのことを、実際にどのように使用するかを確認することがすべてです。
あなたはそれを本当に楽しむでしょう。候補者がどこにいるかを誰もが公平に把握できます。
偽の履歴書の主張も容赦なく洗い流します。
TDDを実行しますか? 「アサート」の意味がわかりませんか?まあ。 OOPをマスターしたとしましょう。動作しないすべてのコードは、提供した単体テストと同じ方法ですか?ああ、親愛なる。
(そして、そうです、それは本当に起こりました。)
私にとって、このプロセスの両側にいるのは目を見張るものでした。
回答
TDDはツールです。何が問題なのかは、 TDDを宗教として扱うことです。
TDDは通常、ユニットテストで行われます。小さなパーツまたは機能(「ユニット」)のテストです。 )あなたのコードの。単体テストは高速で実行されることになっているため、通常は外部サービスの依存関係をモックアップして、コード自体がテストされていることを確認します。
これに関する巨大な部屋の中の象の問題は、モックした外部サービスに関数のロジックのほとんどが含まれている場合があることです。 「ユニット」がクエリを使用してデータベースからアイテムを取得して返す場合、その相互作用は100%役に立たないモック 型チェックの代わりを除いて。
もう一度言います:いわゆる「ソートリーダー」 …