エンジニアのプログラミング技術を判断するためには、基準をどのように考え、またそれを測るために何が必要なのでしょうか?
こんな経験はありませんか?
・履歴書に記載されていたキャリアは本当だろうか?
・期待している技術は持ち合わせているだろうか?
・即戦力になるだろうか?
こうした不安をもつ理由はおそらく、エンジニアの採用にて事前の期待と実際のパフォーマンスに差があったという経験があるからでしょう。
面接ではプログラミング技術に自信があると言っていた。履歴書に記載されているキャリアも申し分ない。参画したプロジェクトも多く期待できそう。履歴書審査や面接ではこうした印象を抱いても、入社してみるとプログラミング技術も不十分で即戦力にならなかったというケースが多くあります。
これは多くの人事担当者が経験し、かつ課題に感じているポイントでもあるのです。だからといってあきらめてはいけません。エンジニア採用に関する基準を明確に設けて、自社が本当に求める人材を採用できるような体制を整えてゆく方法はあります。
プログラミング技術の客観的評価の重要性
そこで今回は、エンジニア採用活動においてプログラミング技術を客観的に判断するための方法をご紹介します。ちなみにプログラミング技術の客観的判断は採用活動の場だけではなく、自社エンジニアの技術力向上を継続的に目指す上でも大切な取り組みです。
適切なエンジニア採用で即戦力を確保したい、社内エンジニアの成長とシステム品質の向上を実現したいという課題をお持ちであれば、きっと本稿がご参考になるはずです。
技術力が高いプログラマーってどんな人?
米国でプロフェッショナルなプログラマーチームをプロジェクトごとに編成し、サービスを提供するTeamed.ioという会社があります。同社で働くYegor Bugayenko氏(多種多様な基準から見るプログラマの市場価値/原文)によると、優秀なプログラマーとは次のような人を指します。
・オープンソースプロジェクトに参加している
・プログラミングに情熱を持っている
・自分のコードを積極的にシェアしている
・自分のキャリアに対して投資している
・特定の言語のスペシャリストである
・ブログなどで積極的に情報発信している
他にも細かい要素はありますが、大まかに以上の条件に当てはまるのが優秀なプログラマー(である可能性が高い)としています。Yegor Bugayenko氏によると、職歴や学歴は関係ないとのこと。たとえTwitterのCTO(最高技術責任者)であっても採用するにあたってその職歴は何のプラス要素にもならず、マネジメントの経験などはむしろ長い期間現場から離れていたということでマイナス印象を受けることもあるようです。
これは同社が「プログラミングのプロフェッショナル集団」をサービスの売りにしているからと考えることもできます。しかし、日本の一般企業においても職歴や学歴はプログラミング技術とは無関係だと言えるでしょう。もちろん、東大など超難関校と言われている大学であれば、プログラミング技術に直接的な関係はないものの、その基礎学力の高さなどから「優秀なプログラマーである可能性が高い」と言えるかもしれません。しかし、それは必ずしも当たらないということは皆さんのご経験の中でもあるのではないでしょうか。
優れたプログラマーの条件は、技術力だけではない
技術力が高いプログラマー≠優れたプログラマーとすると、優れたブログラマーとはどのような人材でしょうか?技術力以外にもフォーカスして考えてみます。
博識である
様々なプログラミング言語やケーススタディへの広い知識があり、問題解決に向けて効率良い道筋を知っている博識なプログラマーは、プロジェクトに多く貢献します。
学ぶことが好き
優秀なプログラマーは新しいことを吸収し、自分自身の知識やスキルとしてアウトプットすることを楽しんでいます。技術は日進月歩で進化し、日々新しいトレンドが生まれている中で、学ぶことこそ成長の糧になります。
困難を楽しめる
プログラミングの世界は困難の連続です。複雑かつ巨大なプログラムには必ずバグが発生したり、コンパイラが上手く通らなかったりといった問題が生じます。そうした問題に頭を抱えて潰れてしまうプログラマーもいますが、優秀なプログラマーはそうした状況を楽しみ、学びを得ます。
ビジネスに興味がある
プログラミングはシステムをゼロから開発したり、既存サービスに新しい機能を追加することでビジネスが持つ課題を解決し、顧客のニーズを満たします。つまりプログラミングもあくまでビジネスなので、ビジネスや会社の戦略や目的に興味が無いと質の高いプログラムは作れません。
発想が柔軟である
システム開発プロジェクトでは様々な要因によって優先順位が変わり、それらに対応する必要があります。常に柔軟な発想を持っており、どんな変化もポジティブに捉えることができることもプログラマーにとって大切な資質です。
チームプレイができる
システム開発はチームで行うことが多いためメンバーと協力してプロジェクトを推進するチームプレイが重用です。優秀なプログラマーはこれを理解しているため、メンバーと積極的にコミュニケーションを取ることができます。
速読力と理解力
プログラマーにとって「コードを早く書くこと」を重視する人は多いですが、それよりも重視すべき資質は速読力と理解力です。なぜなら、プログラマーの1日の多くはコードを書くことよりも他者が作成したコードを読んだり、コード例が掲載されているWebサイトを閲覧し、その内容を理解することに費やします。そのため読むのが遅かったり、呼んだことを理解できないと効率が大幅に下がります。
プログラミング以外のことに対する飲み込みの早さ
多くのプログラマーはプログラミングという領域を離れたところでプロジェクトに関わっています。営業担当者が自社の顧客の状況を理解していなければならないように、プログラマーもまた関わっているプロジェクトの目的が何なのか、開発したシステムは何のために活用されるのかを理解していなければなりません。そのためプログラミング以外のことに対する飲み込みの速さを持っていることも優秀なプログラマーとしての資質です。
では、プログラマーの技術を判断するための具体的な基準はどのように設ければよいのでしょうか?
プログラマー評価のための基準づくり
多くの企業ではプログラマーの採用活動であっても人事担当者を中心として活動にあたるかと思います。社員としての適性を見極めるという意味では当然なのですが、さらに理想としては情報システムの開発責任者が積極的に採用活動に参加することが必要です。総務や営業などと違って情報システムには専門的な知識や技術が強く求められます。そうした知識や技術が無い人事担当者が採用活動の中心になっても、間違った採用をしてしまい現場から非難されるだけでしょう。
しかし現実問題として「採用活動は人事担当者がするもの」という考え方があり、情報システムの責任者が採用活動へ積極的になることは少なかったり、人事担当者が選考した後にシステムの責任者が面接するということも多いのではないでしょうか。そこで、人事担当者でもプログラマーの技術を判断できる基準作りが必要になってくるのです。
企業が採用時に重視しているポイントとは?
人材採用活動にあたって重視すべきポイントはたくさんありますが、過去の経団連の新卒採用に関する調査では次の5つのポイントが上位にランクインしています。
具体的な説明はしませんが、日本企業が人間性に重きを置いた採用をしている傾向は分かるかと思います。
・コミュニケーション能力
・主体性
・協調性
・チャレンジ精神
・誠実性
プログラマー評価の基準「資格」
まず、シンプルな基準として設定できるのは資格です。プログラミングには様々な言語(コンピューターに指令を出すためのテキスト)があって、それぞれに検定試験があります。Ruby技術者やPHP技術者など、これらの検定試験に合格しているということは一定の技術を持っているということです。なので、資格をまず基準に考えると人事担当者でもプログラミング技術を簡単に判断できます。
もう一つの基準「プログラミングテスト」
採用活動に際しプログラミングテストを実施すれば、そのスコアによって当人の技術力を判断できます。資格を所持していても必ずしもその技術を深く理解し使いこなせているとは限りません。しかし、独自に実施するプログラミングテストのスコアによって技術力を判断することは簡単です。また、優秀なプログラマーが必ずしも資格を持っているとも限りません。そのため、プログラミングテストのほうがより適切なエンジニアを判断できると言えるでしょう。
まずは社内のエンジニアに対してプログラミングテストを実施し、その結果から社内の基準もわかるため、相対的な採用者のプログラミング技術を判断しやすくなるのです。 [RELATED_POSTS]
プログラミングテストを簡単に実施するには?
プログラミングテストを実施するための課題
プログラミングテストによる技術力判断を実施するには問題があります。一つはテストを作成しなければならないこと。テストを実施するためには当然設問が必要なので、この作成をシステム開発の担当者に依頼する必要があります。設問を作ることも一苦労なので、積極的に協力してくれる人は少ないかもしれません。さらに、それらの問題は定期的に変更しなければなりません。
もう一つの問題はテストはあっても人事担当者で採点することが難しいことです。プログラミングに関する設問と回答が作成してあっても、それを確認しながらの採点ではかなりの時間を費やしてしまいます。かといって、いそがしい開発担当者に採点をしてもらうのも現実的ではないでしょう。
プログラミングテストを簡単に実施するには?
そこでプログラミングテストを簡単に実施できる方法をご紹介します。それはプログラミング技術を判定するためのサービスを利用することです。たとえばシステムインテグレーターが提供するTOPSIC(トップシック)というサービスは、オンラインでプログラミングテストを実施できかつ自動採点で素早くテスト結果を出すことができます。
テストの設問を作成しているのは世界的なプログラミングコンテストを運営しているAtCoder社です。JavaやC#、Ruby、Perl、PHP、Python、Scala、COBOLなど主流なプログラミング言語をすべて網羅しており、新しい問題が次々と出題されます。
TOPSICを利用すれば開発担当者に依頼せずとも、プログラミングテストを人事担当者だけで完結することができます。採点は自動なので効率よく行うことができます。これなら採用活動に際しエンジニアのプログラミング技術を客観的に判断できます。
さらに、社内エンジニアにも定期的なテストを実行することで課題意識を持たせ、モチベーションの向上によって技術力を向上するための支援ができます。ひいては自社システムの品質向上にも貢献するでしょう。
エンジニアのプログラミング技術を客観的に判断したい。そんな時はTOPSICをぜひご利用をご検討ください。
- カテゴリ: