面接の候補者が「コピー アンド ペーストのコーダー」であるかどうかを知るには、どのような質問をすればよいですか?
候補者が面接でコーディングの質問にうまく答えたとしても、仕事に就くと、リファクタリングよりもコピーする傾向があることがわかりました.
他に同じような経験をした人はいますか?
面接の候補者が「コピー アンド ペーストのコーダー」であるかどうかを知るには、どのような質問をすればよいですか?
候補者が面接でコーディングの質問にうまく答えたとしても、仕事に就くと、リファクタリングよりもコピーする傾向があることがわかりました.
他に同じような経験をした人はいますか?
面接プロセスの最初のステップは、5分間のオンライン質問です。候補者に「FizzBuzz」、「Recursive fibonacci」、「Findfactorialofn」などを提供します。
ルールはありません。貼り付け、コンパイルする必要のあるコード、またはどの言語にする必要があるかについては何もありません。それを実行するだけです。5分の時間枠により、ほとんどの候補者は2つの道のいずれかを強制されます-いくつかの擬似コード(またはほとんど機能するコード)を書くか、それをグーグルで検索します。
私たちが答えを得るとき、私たちは答えをグーグルで検索します。およそ半分の時間、それはいくつかのサイトからコピーされました。私たちの期待は、彼らがGoogleで答えを見つけるのに5分を費やした場合、それはコンパイルされるだけでなく、そこにあるその問題の解決策の絶対的にクリーンで最良の例になるはずです。約半分の時間、貼り付けられた答えはまったくがらくたです。スニペット全体を貼り付けず、チャンク全体を見逃した番号も取得します。
コピーペーストは、それらをチェックするコンパイラがない場合に公開される傾向があります。それらの手口は、貼り付け、コンパイル、微調整、コンパイルです。Webページから別のWebページにソリューションを貼り付けて送信するだけの場合、修正する必要があることを伝えるものは何もありません。
これは非常にうまく機能しました-すべきではない電話スクリーニングに誰も到達していません。
私も候補者にこの問題を抱えています。秘訣は、定義のみに依存する質問の数を減らすことです。リファクタリングが必要なコードを提供し、コードを改善するために何をするかを尋ねることができます。これは、候補者がどのように考えているかを示す非常に自由形式の質問です。
多くのインタビュアーは、候補者が新しいコードを書く場所について質問するのが好きですが、残念ながら、開発者が新しいものを最初から書いていることはめったにありません。候補者に既存のコードを提示し、問題を解決するためにそれを使用するように依頼することに焦点を当てます。
これらの質問があっても、インタビューは必ずしも現実の世界でどのように行動するかではないため、コピーアンドペーストコーダーを入手することは可能です。
それは私の2セントです。
私には2つのアプローチがあり、常に両方を使用しています。全部で 15 分かかり、私は初級レベルの就職面接の最後の 3 分の 1 として使用します。
理論に基づいた非常に単純な質問をします。
「あなたが最後に書いた、誇りに思うことは何ですか?」
私は人々に、解決したことを誇りに思うよりも難しい問題を (詳細に) 説明してもらいます。彼らが詳細を本当に理解していなかったか、それとも単に問題を解決していなかったかは簡単にわかります。解決策を説明する際の熱意 (輝きも!) は大きなプラスです。問題解決への愛がなければなりません!
基本的に、誰かがリファクタリングの方法/理由を知っているかどうかを確認するテストを作成しました。
シンプルなモックアップ アプリケーション (ユーザーが定義済みの形状を作成し、画面上で移動できるようにする) を作成しましたが、意図的に多くの種類のエラーを導入しました。
これらの 1 つは、コピー アンド ペースト コーディング (同じ機能が複数の場所で繰り返される) でした。もう 1 つの方法は、各形状のロジックをイベント ハンドラーに埋め込むことでした。ひどい、ひどいもの - 私たちが考えることができる最悪のアイデア。
これにより、候補者が改善の機会を認識しているかどうか、およびそれらを解決するためにどのようなアプローチを取るかを確認できます。
これは持ち帰るテストであり、候補者はアプリケーションを書き直すか、どのような変更を加えるかについてメモを提供することができました。
これは言い訳にはなりませんが、開発者がコードをコピーして貼り付ける理由の1つは、使用しているコードを理解していないことです。たとえば、C#またはJava開発者を雇い、彼をFortranシステムに配置して、作業を完了するように指示した場合、理解が不足しているため、彼はそのシステム全体にコピーアンドペーストします。
それに加えて、コードの品質がこれに関与する可能性があります。リファクタリングが許可されていない特定のシステムを知っていますが、新しい変更を導入する必要がありました。開発者は、タスクをタイムリーに実行するために必要なことを実行する必要がありました。
もちろん、これらのシナリオはどちらもコピーアンドペーストコーディングを許しませんが、これが発生する理由を理解するために組織内を調べる価値があります。
よくある質問をしたり、コードの説明を求めたりしないでください。
アプローチを少し変更できます。テクニカル レビューとスマートフォンのスクリーニングを行います。もちろん、コーディング テストに挑戦してください。単純なプログラミング テストの質問を事前選別として行うのではなく、彼らが解決できるかなり複雑なプログラミング プロジェクトを考え出します。インタビューの後、完了する時間を与え、十分に文書化され、理解しやすいものにする必要があります。次に、解決策について話し合うフォローアップをスケジュールし、候補者に「ここで何を考えていたの?!」などの質問をします。
私が考えているプロジェクトの種類の例:
彼らが現場にいる場合は、何かをホワイトボードに書いてもらいます。抽象的に問題を分割して征服する方法を確認できます。彼らが何に焦点を当てているか、何を省略しているかを観察し、続けながら質問をし、少し悪になりたい場合は、ルールを途中で変更してください。
その一部を分割し、ホワイトボードに疑似コードを書いてもらいます。