Blog -

実務に繋がる開発力を適切に見極めるためのプログラミング問題に設けると良い3つの要素



こんにちは。trackチームの新田です。
先日、大好評であったエンジニア採用担当者様向けセミナーの第二弾、エンジニア採用の質を劇的に向上させた各社の選考手法の裏側【Code Summit vol.002】を開催し、トークセッションを実施いたしました。

そのなかでも、参加している方々から非常に注目を集めていたトークテーマが、

  • 実際に株式会社オロ様ではどのようなプログラミング問題をtrack上で作成し、出題しているのか
  • また、その問題の中で、どのようなスキルを見極めているのか

という点でした。

これから新卒採用フローの見直しや、採用フローへの「スキルチェック」導入をお考えの企業様には、どのような問題を用意していくか、またどのような基準で見極めていくのか、はとても気になるトピックだったのではないかと思います。

そこで今回は、trackの運営をしていて気がついた、これまでにセミナーにご登壇をいただいた既存のtrack活用企業様が共通して設けられている 「プログラミング問題における共通点」「求職者のどのようなスキルを見極められるか」 についてを、3つほどご紹介致します。

実務に繋がる開発力を適切に見極めるためのプログラミング問題に設けると良い3つの要素

1. あえてWebで調べさせるように指示する

検索を完全に禁じるのは難しい
普通、このようなテストを実施する場合、受験者が「答えをWebで検索していないか」という点や「Web上に落ちている他人のコードをコピペしていないか」という点を気にして、そのような検索性のある問題を避けたい、と考えがちになるかと思います。

しかしながら、Web上で試験にアクセスをして問題を回答するtrackでは、どうしてもブラウザから模範解答を検索されてしまうリスクは防ぎ切ることはできません。

エンジニアの仕事においては「調べる」のが常識

しかしながら、エンジニアの「実務」にフォーカスをするならば「Webで検索して問題を解決する」というのは、普段の業務の中で毎日のように訪れます。

寧ろ、「何も調べずに仕事をする」という状況のほうが珍しいといえるでしょう。

そのためより実践に近づけるためには、インターネットという環境を持っていることを前提条件として、問題を設定するほうがより自然だといえるかもしれません。

逆にWebで調べることを推奨し、限られた時間の中で信頼性の高いリファレンスにたどり着くことができるかを見極める

そのため、trackを導入している企業様での成功事例の中では、わざと受験者にWebで検索してもらって問題に答えることを推奨し、「どのような事を調べたのか」を重要視しています。

Web検索をすることによって、沢山の情報にアクセスすることはできます。しかしながら「信頼できる情報」をどのようにして見つけ出し、またどういった情報を信頼するのかには、エンジニアのセンスが問われます。
例えば、情報は古くなってしまったものではないか、情報元は明示されているか等、与えられた情報でも信頼できる情報にアクセスするためには、注意を払なければならない点がたくさんあります。

2. 調べるだけでは解けない要素を絶妙に加える

「調べるだけ」では解決できない問題
とはいえ、調べるだけで簡単に解けてしまっては、頭をひねる必要はありません。簡単なアルゴリズム問題等であれば、Webで検索すればすぐに正解にたどり着くことができてしまい、見つけたソース・コードの内容をそのままコピー・アンド・ペーストしてしまえば終わってしまうケースもあります。

これでは、受験者ごとのスキルを見極めることは出来ません。 そのため、trackで出題をしている企業様の問題の二つ目の要素として、「調べるだけでは解けない絶妙な問題」を設定されています。

これは、trackがオフィシャルで提供しているプリセット問題(登録するだけで利用できる問題)も同様で、 アルゴリズムやロジックは活用できるのですが、少し頭をひねったり、調べた内容を組み合わせたりしなければ解けないようになっています。

仕事で直面する、調べてもなかなか解決できない場面

もちろん、このようなシチュエーションも、エンジニアとして働く上ではよく出くわす場面です。

仕事をしている上で直面したバグを解決しようと思って調べてみても、なかなか思ったような解答に巡り合うことができない。

あるいは、期待すべきリファレンスを活用してみたとしても、自身が直面している課題をそのままは解決することができない、という状況です。

このような状況においても、エンジニアはなんとしても問題を解決しなければなりません。

リファレンスを駆使し、どのように課題を解決するかの能力を見極める

問題を解決するためには、「調べた内容をどのように理解をして、解決策を導いていったのか」が求められます。

検索して導かれた情報や状況と、自分自身がおかれている状況をうまく比較して、正解を導き出すのです。

これを導き出すには、技術に対する理解度が求められます。

これは前回の記事で紹介した「入社後に飛躍的成長を遂げる未経験エンジニアとそうでないエンジニアの違いは「スキルアップのためのスキル」を持っているか否か」で紹介したテクニカルスキルに繋がる部分で、受験者のポテンシャルスキルをはかることができるのではないかと思います。

3. 書いたコードの内容や工夫、こだわりについて記述させる

自分の書いたコードを他人に見せることを意識させる
最後に共通している要素として、問題の最後に

  • 自分自身が書いたコードについての説明
  • 工夫した点などの説明

を記述させるということです。 ただソース・コードを提出してもらうだけではなく、回答内容そのものを受験者にテキストで説明させます。
ドキュメンテーションやコメントを書くことはエンジニアとしてのコミュニケーション能力
このように、回答の内容を説明支えることは、はある種「カンニング防止」にもなりはするのですが、本質的な点でいうと、 「エンジニアとしてのコミュニケーション能力」を見極めることに繋がります。
実はエンジニアの仕事ではソース・コードは
「書く量 <<<< 読む量」
と言われています。そのため、自分自身の書いたソース・コードをどのようにして「他人に読ませるか」という視点を持っているかどうかはエンジニアの実務力としては非常に重要なポイントです。
工夫点でエンジニアとしての「価値観」がわかる
また、工夫点を説明させることに寄って、その求職者のエンジニアとしての「価値観」の見極めにもつながります。

  • ソース・コード量を減らしてファイルサイズの軽減を目指す人
  • 実行速度をいかに早めるかを意識している人
  • 命名規則やコメントなどの可読性を意識する人
  • 関数、モジュール化等、無駄や重複のないコードを目指している人

などなど、特徴は様々です。 もちろん基本的に「良い」と思われているソース・コードの書き方はある程度ありますが、これ、といった正解はありません。
その中で、自社の価値観や考え方を見極めるために、記述による説明を書かせるのが良いでしょう。

まとめ

プログラミング試験でエンジニアが気にしているのは「ソース・コードの中身」だけではない

いかがでしたでしょうか。 trackという響きや言葉を聞くと、ついつい 「プログラムを書かせて動かす」という部分にフォーカスをして「技術力」のみの見極めが重要かと思われがちです。
しかしながら、これらの事例から考えると、エンジニアに求められている要素はプログラムを書く力だけではありません。
実務作業においては、エンジニアとしての課題解決能力や、コミュニケーション力(チーム開発力)も求められているということがいえるでしょう。

実務内容に近づけてエンジニアの総合力を見極めよう

そのため、選考におけるプログラミング問題を中心とした「技術選考」において今回ご紹介したような「実務作業に繋がる内容」を盛り込んでいくことが重要です。
記述されたソース・コードの良し悪しだけではなく、エンジニアとしての「パーソナリティ」面や「ポテンシャル」といった実務における総合力を見極めていく方法をエンジニアとすり合わせていくことが求められるのではないでしょうか。

Writer >

新田 章太
新田 章太
2012年3月に筑波大学理工学群社会工学類経営工学専攻卒業。学生インターンシップ時代に「エンジニア」領域に特化した支援事業を株式会社ギブリーにて立ち上げ、入社。現在は取締役を務める。オンラインプログラミング学習・試験ツール等の自社サービスを立ち上げ、同社のHR tech部門を管掌。また、日本最大規模の学生ハックイベント、JPHACKSの組織委員会幹事を務めるなど、若い世代のイノベーターの発掘・支援にも取り組んでいる。