最新動向

プログラミングの能力は測れるのか?

  • 2018.07.10
  • 株式会社システムインテグレータ
プログラミングの能力は測れるのか?

「すごいプログラマー」とはどんな人をイメージしますか?どんな企業も優秀なプログラマーの獲得を目指していますが、その定義が曖昧なために求めている人材を確保できていない現状にあります。IT人材不足(IT人材の最新動向と将来推計に関する調査結果~ 報告書概要版 ~)が叫ばれ、ただでさえ優秀な人材確保が難しい中、このままでは優秀なプログラマーの採用や確保に関する課題が解決されることはないでしょう。

プログラマーの採用活動を成功させるためには、まず優秀の定義と能力の基準を明確に定めることが大切です。本稿ではそのポイントについてご紹介します。

すごいプログラマーってどんな人?

世間ではすごいプログラマーに対して様々な基準があります。それらを統合して考えると、次のような要素があるでしょう。

①好奇心がある

目の前にあるもの(システムなど)をありのままに捉えるのではなく、正確に動作しているように見えてもその中身を理解しようと深く踏み込む好奇心があります。そうした行動は往々にして様々な問題の発見と解決につながるでしょう。

②論理的思考力

当然ながらプログラミングには論理的思考が欠かせません。物事を順序立てて考え問題解決のための最適な答えを導き出せる。これは単にプログラミングスキルの高さだけではありません。論理的思考力が備わっていることで適切な問題解決ができます。

③速読力、理解力

プログラマーは自分でソースコードを書くだけでなく他人が作ったプログラムを読み解くことも仕事です。なので速読力と理解力は欠かせません。読むのが遅いと仕事が滞りますし、ソースコードを理解できないと生産性が低下するばかりかバグを生むリスクがあります。

④細かいところへの注意力

プログラムとはいわば文字列の集合体なので、非常に細かいところまで気を配らないと問題を見落としてしまいます。細部まで注意を向けられる能力が大切です。

⑤自ら学ぶ

すごいプログラマーは決して学習の場を待つようなことはしません。常に自ら積極的に学び、色々なことを吸収しようとします。たとえば技術的にまだ未熟なプログラマーであっても、自ら学ぶ姿勢さえあればすごいプログラマーに成長する可能性もあります。

⑥熱意がある

プログラマーの中には仕事以外ではプログラムについて一切考えない、考えたくないという人があります。それ自体が悪いわけではありません。しかし、一般的にはすごいプログラマーはプログラミングへの興味や関心が高く、大げさに言えばいつでもプログラムのことを考えているような人のほうがより高い能力を発揮するでしょう。

⑦適応能力

システム開発プロジェクトでは非常に高い確率で仕様変更が生じます。仕様変更を経験していないプログラマーなどいないでしょう。変更に対して柔軟で、適応能力があることは重要な要素でしょう。

⑧コミュニケーション能力

プログラマーと聞くとデスクに座ってひたすらプログラムを作っている人、コミュニケーション能力が欠如している人というイメージがあるかもしれません。しかし、すごいプログラマーほどコミュニケーション能力が優れています。ただしシステム開発は一人で完結するものではありません。チームや関係者と「考えていることを正確に、効率良く伝えられるか」というコミュニケーションは重要です。

⑨一定の協調性がある

たとえば技術的な面で上司の判断が明らかに間違っているときに意見を言うことはいいでしょう。しかし、システム開発のプロジェクトは技術的要素だけで成り立っているわけではありません。そのため時には異なる意見を受け入れることも必要です。お互いの立場を理解し、ときには受け入れる協調性が欠かせません。

以上がすごいプログラマーと呼ばれる人たちに共通している要素です。もちろん、すべての人が100%この条件に当てはまるわけではありませんが、みなさんも思い当たるところはあるのではないでしょうか。

採用活動における優秀なプログラマーの判断

すごいプログラマーの要素について説明しましたが、これらすべてを客観的に評価することは難しいかもしれません。プログラマーの能力やマインドを100%評価するために、採用活動という時間はあまりに短すぎます。

では、その短い時間の中でどういった基準で判断すればよいのでしょうか?

まず「すごいプログラマーを採用する」と考えてしまうと、上に挙げたような項目をすべて満たしてほしいと考えてしまいがちです。しかし、実際にはそこまで満たしていなくても、「優秀なプログラマーを採用する」ということは可能です。なぜなら現時点ではすべてを満たしていなくても、ある一定のレベルを満たしていれば優秀な人を見つけ出すことができるからです。

では改めて優秀の定義とは何でしょうか?先ほどご紹介したすごいプログラマーの条件にはある前提があります。それはプログラミングスキルです。そのうえで、意欲や性格などが組み合わさると、すごいプログラマーと思われるようになるのです。しかし、実際にはすべてのプログラマーがすごいレベルである必要はないのも事実です。そのため、まずプログラマーとして優秀であるかという点をきっちり判断し、加えて上記の要素があればなおいいという形で区別したほうが、採用後のミスマッチを防ぐことができるでしょう。

まずプログラミングスキルの判定から

ではその根底となるプログラミングスキルはどのようにして判断すればよいのでしょうか。新卒採用なら基礎学力などを見て採用するのもよいでしょうが、中途採用の場合はやはり実践的なプログラミングスキルが欠かせません。

そこで、プログラミングスキルの判定をシステムに任せてみはいかがでしょうか?システムインテグレータが提供する「TOPSIC(トップシック)」というクラウドサービスはそれを可能にします。

TOPSICはオンラインで利用するプログラミングスキル判定サービスです。具体的には6段階の難易度で次々と出題される設問に回答し、受験者のプログラミングスキルを自動で判定します。プログラミングスキルは次のような基準で判定されます。

≪アルゴリズムのスキル≫

1:フローチャートを書かなくても解ける
2:簡単なフローチャートを書ける
  分岐2,3個やループ1個程度
3:ちょっと込み入ったフローチャートを書ける
  例外処理などにも注意が必要
4:複雑な問題をきれいに整理できる
  課題の本質を整理できる数的頭脳が必要
5:複雑な問題を読み取り、最適なアルゴリズム手法を
  使いこなすことができる
6:5に加え、複数のアルゴリズム手法を組み合わせて
  汎用的な問題を解決することができる

≪プログラミングのスキル≫

1M:プログラミング歴1か月

3M:プログラミング歴3か月

6M:プログラミング歴6か月

1Y:プログラミング歴1年以上

3Y:プログラミング歴3年以上で日頃から効率良いコーディングを心がけている

各設問の難易度はアルゴリズムとプログラミングの組み合わせによって決まるため、受験者のスキルを客観的に判定できます。テストの採点は自動で行われるため、人事担当者に特別なスキルは必要ありません。

優秀なプログラマーを確保したい、採用後のミスマッチを防ぐために採用前にプログラミングスキルを判定したい。こうしたニーズを持っている場合は、TOPSICの利用をぜひご検討ください。

TOPSIC ご説明資料

TOPSIC ご説明資料