ホームお問い合わせプロフィール未経験→就職転職合格率年収の相場ブラック企業判別定時帰りする方法

ITエンジニアの『スキルチェック』をする方法

2016年11月29日に投稿 → に更新 仕事術 アフィリエイトリンクを含みます


スキルチェックする場面って2つあります。

  1. 他人のスキルをチェックする
  2. 自分のスキルをチェックする

1は社員の採用面接や、プロジェクトの追加要員のスキルをチェックするシチュエーションです。

2は、「自分が入りたい会社に入るスキルがあるか?」とか、「次やる仕事が自分にできるか?」確認したい場合などに行います。

それぞれくわしく紹介します。

1. 他人のスキルをチェックする方法

私は以前チームリーダーをやっていた頃に、追加メンバーのスキルチェックの方法をいろいろと試行錯誤しました。

いろいろ試した中で一番良かったのは、「コードを書いてもらうこと」です。書いてもらうコードはかんたんなものでOKです。

かんたんなコードも書けない「えせエンジニア」は多い

難易度的にはFizzBuzzとかでいいと思います。私が実際に問題として出したのはFizzBuzzよりももっとかんたんで、

「配列aに5個の数字が入っています。この配列の中で4という数字が入っている要素のインデックス番号を出力するプログラムを書いてください。」

みたいな内容です。かんたんですよね。

JavaScriptで書くとこんな感じです。

a = {2,6,3,4,1};
for (i = 0; i < a.length; i++) {
	if (a[i] == 4) {
		cosole.log(i);
	}
}

「こんなかんたんなコード書けないやついるわけないじゃん?」と思われたかもしれませんが、書けない人がけっこういたんです。

その要員を連れてきた上司は

こんな難しい問題解けるやつうちの会社にはいないよ、会社を潰す気か?!」

と言い出したんです。コントみたいな話ですが実際にあった話なんですよ。

こんなかんたんなコードさえ書けない人をプログラマーとして現場に送り込んで報酬を請求しようとしていたわけですから、知性やモラルが疑われます。

コードを書いてもらうと、たとえ短いコードでもいろいろなことがわかります。例えば、

  • ロジックの組み方
  • 変数名の付け方
  • インデントの入れ方
  • 空行の入れ方

など、けっこう個性が出ます。

短いコードから読み取れる意識の高さ

変数名にわかりやすい名前をつける人は、可読性についての問題意識があります。このような、プログラマーとしての意識の高さが短いコードからも分かるんです。

「美は細部に宿る」って言葉がありますが、プログラムのコードも同じです。きれいなコードを書く人は、ちょっとした短いコードでも美しいコードになるんです。

話した感じだと、もっともらしいことを言っているんだけど、コード書かせてみたら、全く書けなかったなんて人もよくいます。

ですから、コードを書いてもらうのが一番なのですが、会話の中で相手のスキルを見極める方法もあります。

わかる人にしかわからない質問をしてみる

私がよく聞く内容はオブジェクト指向の質問です。

オブジェクト指向には三大要素があります。

  1. カプセル化 … private, publicなど、内部の変数・メソッドの公開レベルを変えることによって、モジュールの結合度を下げる
  2. 継承 … 親クラスの機能を受け継ぐ
  3. ポリモーフィズム … オブジェクトの実体によって、実行されるメソッドが変わること

これらについてどのように理解しているか聞いてみるとエンジニアとしてのレベルがわかります。特にいいのはポリモーフィズムについての質問です。

ポリモーフィズムを利用することによってフレームワークは作られているので、

「そのプロジェクトで使われてるフレームワークのどの部分にポリモーフィズムが使われていますか?」

と聞いてみるといいでしょう。

実力のある人は即答できます!

プロジェクトでStrutsというフレームワークが使われてた時に、

「Strutsでポリモーフィズムを使っている部分ってどこかわかりますか?」

と聞いてみた所、できる人は

「Actionクラスのexecuteメソッドを呼び出すところです。」
「ActionFormのvalidateメソッドを呼び出すところです。」

と即答しました。

抽出メソッドを呼び出す部分がポリモーフィズムなわけですが、抽象メソッドの実践レベルの使い方を理解してる人ってけっこう少ないんです(動的型言語の場合は抽象メソッドじゃなくてもOK)。

ですから、この質問はできるエンジニアのしきい値として使えます。

ということで、他人のスキルをチェックするには、

  1. かんたんなコードを書いてもらう
  2. 分かる人にしかわからない質問をしてみる

のが良いと思います。

2. 自分のスキルをチェックする方法

自分のスキルをチェックするのって難しいものです。

評価って基本的にレベルが上の人が下の人に対してするものです(自分よりレベルの低い上司に評価されることもよくありますが…)。自分よりレベルが上の人を評価しようとしても、どれくらい上なのかがわかりませんからね。

それに、自分のことって客観的に評価するのは難しいものです。どうしてもひいき目に見てしまったり、逆に劣等感によって実際よりも低くみてしまいがちです。

資格試験を取れば客観的なスキルが評価できそうですが、評価できるのは知識だけです。実際の仕事のスキルの評価とは少し違います。

では、どうするかというと、入りたい会社でやる仕事や、次入るプロジェクトの仕事を自分一人でできるかどうかを考えてみるんです。

自分一人でそのシステムを作れるか?

例えば、Twitterに入社したいとします。あるいは次のプロジェクトでTwitterのようなシステムを作るとします。

「自分一人でTwitter作れるかなぁ?」と考えてみると、

  • つぶやくボタンを押したら、AjaxでフォームをサブミットしてDBに書き込めばいいんだろうな
  • フォローはどう実装するんだろう?フォローボタンを押したら、ユーザーIDとフォローしたユーザーIDとの対照表テーブルに関連を保存すればいいんだろうな
  • フォローしてるユーザーがつぶやいたら、画面に新しいつぶやきが1件ありますって表示されるけど、あれはどうやって実装するんだろう?わからないなぁ…

などのように考えていくと自分がその仕事に必要なスキルを持っているのかチェックできます。具体的に考えていくことがポイントです。

わからないことがあったら、実力不足だと諦めるんじゃなく、調べれば分かる場合がたくさんあります。

新しいつぶやきの通知機能の実装法が分からないのであれば、「Web 通知」のようなキーワードで検索すれば、WebソケットやComet(ロングポーリング)などの技術が見つかるはずです。

さらに、

「アプリケーションの機能は実装できそうだけど、あれだけの大規模なトラフィックをさばくのはどうやっているんだろう?」

などのように、自分に足りない部分、これから学ぶべき部分も見えてきます。ですから、目標を立てる方法としてもとてもいいんです!

ぜひ、参考にしてみてください。