IT業界の採用におけるコードレビュー - なぜ、どのように使用すべきなのか?

公開されました。 最終更新日

ソフトウェア開発者を採用する上で、最も重要でありながら未だに無視されていることの一つに、候補者がコードをどのように扱っているか、また、特定のプログラミング言語で自分の考えを表現できるかどうかを検証することがあります。通常、IT業界の採用では、候補者に特定の問題を解決するためのコードを書いてもらうことでそれを行います。候補者はそれを一人で行うこともできますし、採用担当者とペアプログラミングを行うこともできます(自然環境でのコーディングテストで大目玉を打つ【事例).コードを書くことは、開発者が日常的に行っている最も重要なことのひとつだからです。しかし、開発者はソースコードを書くよりも読むことの方がはるかに多いことも忘れてはなりません。ですから、候補者がいくつかのコードスニペットを素早く分析し、理解できるかどうかを検証することを忘れてはなりません。単純にコードを印刷したものを見せたり、(さらに良いことには)IDEにいくつかのプロジェクトを与えて、ここで何が起こっているのかに関連した質問をすることもできます。これこそが、コードレビューの課題が本当に役立つところです。

技術面接で候補者のプログラミングスキルを確認するには?

上に述べたように、技術面接やアセスメントでは、候補者がプログラミングの課題や問題を解決できるかどうかを確認することにほとんどの時間を費やしています。候補者は、問題を理解・分析し、適切な解決策を見つけることに集中しています。しかし、私たちは候補者が「どのようにするか」よりも「何をするか」について考えることを強いられていることに気づくことができます。ある条件のもとで飛行機の座席を予約するコードを書いてほしいと依頼したとき、目標は正しい機能を提供することですが、ストレスと時間の制限のために、候補者はそれしかできませんでした。この状況を逆転させ、候補者に「どのように」に集中してもらうためのオプションはありますか?はい、あります。私がIT業界で開発者やアーキテクトの採用に積極的に関わっていた長年の間、私はコードレビューを使用していました。

コードレビューとは?

コードレビュー は、プログラマーがお互いのコードを検証して、潜在的な問題やエラー、ベストプラクティスからの逸脱を見つけるプロセスです。 ウィキペディア).ここ数年、コードレビューはソフトウェアデリバリープロセスに欠かせない要素となっています。コードレビューは、優れた監査可能性とコード品質の向上をもたらすだけでなく、素晴らしい知識の共有を可能にします - 人々は経験を共有することで、教えると同時に学ぶことができるようになりました。しかし、私はあなたの開発プロセスにコードレビューを導入するよう説得したいのではなく(もちろん、まだ導入していないのであれば考え直すべきですが)、技術面接でコードレビューを利用する理由と方法を紹介したいと思います。

ITの採用活動でコードレビューを活用するには?

すでに書かれていて、(ほぼ)期待通りに動作するコードを候補者に見せることで、ソリューションの品質に注目してもらいます。また、「このコードについてどう思いますか」という簡単な質問をすることで、候補者を読み取り専用モードにします。重要なことは、開発者の中には、認定試験などで行われるこのような作業に慣れている人もいて、セミコロンがない、パラメータが正しくない、クラスが間違っているなど、くだらない意図的なエラーを探しているということです。私の意見では、異なるアプローチをとるべきだと思います。私は常に正しくコンパイルされた作業用コードを使用しています。私は最初に、「認証のような」エラーは存在しないことを強調し、受験者はベストプラクティスや、自動ツールでは気付きにくく、本番で深刻な問題を引き起こす可能性のある一般的な問題に焦点を当てるべきだと考えています。

コードレビューチャレンジの例

例えばJavaでは、thread.start()の代わりにthread.run()を呼び出している可能性があります。この場合、コンパイルは正しく行われ、テストは通過しますが、最終的なパフォーマンスを低下させる可能性のある新しいスレッドを起動していません。また、データベースの深刻な一貫性の問題を引き起こす可能性のある、あるトランザクション・メソッドがトランザクション・アスペクトの外で呼び出されていることに、候補者が気づくかどうかをチェックすることもできます。

コードレビューでプログラミングスキルを評価するには?

候補者の第一印象に基づいて、その人の品質に対するアプローチを評価することができます。もし私たちにとってコードが本当に醜くて問題だらけなのに、候補者が「私には良さそうに見えます」などと言ったとしたら、その人は私たちの会社のコード品質の向上には役立たず、むしろ劣化させてしまうと考えられます。また、候補者の経験を評価するのはとても簡単です。例えば、60行のソースコードの中で、ジュニアの開発者が見つけられた問題は約4~5個でした。8年以上の経験を持つ開発者は10個の問題を見つけることができました。そして、優秀な候補者は15~20個の問題を見つけていました。最高の候補者は、私が気づかなかった2つの問題を指摘してくれましたが、私がコードを書いているときには30以上の問題が含まれていました。

受験者にはどのようなコメントを期待すればよいのでしょうか?最も重要なことは、上述した問題点です。特定の技術に共通する問題で、一見しただけではわからない問題です。次に重要なのは、読みやすさです。著者だけでなく、他の開発者が理解して変更できるように、コードはきれいで、よく構造化され、よく名前が付けられていなければなりません。例えば、メソッドや変数の名前は、意味があるか、長すぎないか、などです。メソッドは大きすぎず、ロジックが多すぎないか。スニペットに使われている技術は、特定の問題を解決するのに適しているか(例えば、私たちのコードがXMLを構築するために文字列操作を使用している場合、より良い方法でそれを行うために作成された多くのライブラリがあることを指摘する候補を期待することができます)。

DevSkiller評価キャンペーンでのコードレビュー

DevSkillerでは、コードレビューはプログラミングスキルの評価に含まれるべきだと考えています。だからこそ、私たちの評価キャンペーンのほとんどが、そのような問題を解決することを含んでいます。また、企業の皆様には、コードレビューの課題を含んだ独自のコーディングテストを構築することをお勧めしています。ほとんどの企業にとっては、古いコードベースを使ってそのような課題を準備できるので、とても便利です。これについては、IT部門に相談して、採用プロセスに組み込んでください。

シェアポスト

技術者の採用についてはこちら

ラーニングハブに登録すると、有益な情報をメールで受け取ることができます。

シームレスにコーディングスキルを検証&開発

DevSkillerの製品をご覧ください。

セキュリティ認証とコンプライアンス。お客様のデータの安全性を確認します。

DevSkillerのロゴ タレントブーストのロゴ タレントスコアのロゴ