paizaで、自分のコーディング能力を調べてみた

Fall 2010 hackNY Student Hackathon

この春から自営業になり、空き時間にビジュアルプログラム編集ライブラリ「mameblock.js」なんてものを作っている訳ですが、それなりに形になってきたので、今度は自分の実力がどの程度のものなのか試してみたくなりました。

私の場合、今さらプログラマーにジョブ・チェンジするわけではありませんが、実力が分かれば、次にどんなランクのことを学習すれば良いか把握できますし、もしものときにバイトでもできるなら、セーフティネットとしてもありがたいし。

そんな訳で、「自分のプログラミング力が、他社で通用するか“こっそり”腕試しができる」という、IT/Webエンジニアのための転職サービスpaizaに挑戦してみました。

これは、ステルス・マーケティングではありません。本当に個人的な興味でチャレンジしています。

さて、その顛末や如何に。

paiza(パイザ)とは

paiza_001

paizaは、株式会社ギノが提供する、IT/Webエンジニアのための転職情報サービスです。

就職・求人は、求職者にとっても企業にとっても一大イベントです。そのため、近頃のIT/Web系企業への転職・面接は、こんなふうに進めるといいヨね、というような情報がネットで人気を集めています。もちろん、アピール/評価すべきポイントは技術力だけではありませんが、実際にコーディング能力は大きなウェイトを占めています。

その点、paizaは、ただ履歴書と職務経歴書を提出するのではなく、実際に、コーディングの問題を解いて、そのコードで面接までたどり着けるところが特徴です。コーディングに自信がある人、だけど初対面の人と面接して、自分の力量をアピールするのは苦手という人にはありがたいサービスだと思います。企業にとっても、アピールだけ長けた人より、本当に技術力を備えている人の方が確実に助かります。

今回の私の場合のように、実務に近いコーディング形式でスキルチェックしたいという場合にも役立ちます。
ちなみに、同様のサービスに、リクルートが提供する、ITエンジニアのための実務スキル評価サービス「CodeIQ」なんてのもありますね。

コーディング・スキルのランク

paizaで評価するコーディング・スキルのランクは、次の6段階に分かれています。

paiza_201

  • ランクS – 超上級
    非常に高いスキルを持っている上位2%です。
    ほぼすべての企業で、書類選考なしでカジュアル面接に進むことができます。
    paizaでは「サイコロで迷路」「ビリヤードの球突き」といった問題を解きます(想定回答時間120分、制限時間6時間)

  • ランクA – 上級
     高いスキルを持っている上位8%です。
     paizaでは「平面上の移動シミュレーション」「うなぎを蒲焼きにしたくない 」といった問題を解きます(想定回答時間 120 分、制限時間 6 時間)。例題が、ハノイの塔なので、これはネットで探せば、それなりに答えが見つかりそうですね。

  • ランクB – 中級
     一定以上のスキルを持っている上位30%です。
     paizaでは、クレジットカードのチェックデジットを計算したり、与えられた英単語を複数形に変換するといったプログラムを作る時間を競います(想定回答時間40分、制限時間2時間)。

  • ランクD – 初級
     基本的なコーディングを行えるランクです。
     paizaでは、IPアドレスの書式をチェックしたり、ゲームのスコア計算をするといった、30行-40行程度のプログラムを作る時間を競います(想定回答時間20分、制限時間1時間)。

  • ランクD – 超初級
     プログラムの基本的な命令をいくつか理解しているランクです。
     paizaでは、簡単な計算や文字列処理をする10行-30行程度のプログラムを作る時間を競います(想定回答時間20分、制限時間1時間)。

  • ランクE
    まったくの初心者です。会員登録すると、まずこのランクになります。

実際に、コードを提出できるのは、C、C++、Java、Ruby、Python、PHP、Javascriptというように、複数のプログラミング言語に対応しており、自分の得意なプログラミング言語を選ぶことができます。

また、作成するプログラムは、標準入力からパラメータを受け取り、標準出力に結果を出力します。

スキルの評価手順

コーディング・スキルの評価手順は、次のようになっています。

  • 1.ランクと問題を選ぶ
  • 2.問題を読み、解答するプログラミング言語を選ぶ
  • 3.コーディング開始
  • 4.テスト実行
  • 5.評価と判定

paizaのWebページ上でコードを入力すると、それを実行して、結果を出力/評価してくれます。評価のポイントは、問題によって違いますが、たとえば、10個のテストケースが入力されて、正答数と解答の提出までに要した時間で得点が決まります。正解数得点(50点) + 正解率×回答時間得点(20分以内で50点、40分で25点、60分で0点)という具合です。

paiza_301

問題には、サンプルとなるデータが用意されていますが、それ以外にも複数のデータで評価されます。入力条件の境界値や大規模データについても、正しい結果を出す必要があります。また、一定の時間内に処理が終わらないと、タイムオーバーになります。

問題は、 まず一度チャレンジします。この結果は、そのまま記録されますが、もしも1回目のチャレンジで失敗しても、何度でも再チャレンジすることができます。そして、挑戦したランクの問題を1回目のチャレンジで1問でもクリアすることができれば、該当するランクを獲得できます。 一度獲得したランクは下がることはありません。

評価結果が、合格点以上の場合、トロフィーがもらえるというように、ゲーミフィケーションの要素もあり、ついついハマってしまいました。

paiza_401

実際に、スキルチェックしてみた

という訳で、paizaのいくつかのスキルチェック問題に挑戦してみましたが、何とかランクB(中級)を獲得することができました。ランクCは、さすがに全問解けそうですが、ランクBになると時間が足りなかったり、問題によってはランタイムエラーになってしまうことがありました。ランクAも、一応正解にたどり着けるのですが、制限時間の1.2倍ほどかかってしまいました。

まだまだ修行が足りません。

ランクBの正解率を上げるには、やっぱり場数が必要そうな気がします。あと、テストやプログラミング言語の制約にも、もっと気を使わないといけません。

プログラミングには、できる人とできない人で、その生産性に50倍以上?の開きがあるといわれています(もっとだったかな)。こうして制限時間のなかで問題を解いてみると、確かにそれくらいの実力の差があってもおかしくないという気がしてきました。こっちは2時間近くかかって解いた問題を、20分くらいで解かれたら、グーの音も出ません。

一方で、paizaで評価するコーディングの問題は、標準入力から得たデータを加工して標準出力に結果を出力するという、いわば古典的なコーディングです。これだけで、プログラミング教育をするのは、初級者には敷居が高いだろうなと思いました。

まあ、IT/Webエンジニアの転職がゴールになっているので当然ではあるのですが、JavascriptでCANVAS要素に描画できる「jsdo.it」のようなWebサービスのほうが、出力結果が目に見えて、わかりやすくところもあるかもしれませんね。

チャレンジするときは

もしも自分でもやってみようというときは、次の2つがオススメです。

まず例題(動画&学習コンテンツ paiza learning)を見て、どんなランクでどんな問題が出るのか確認すること。

それから、自分の得意なプログラミング言語の実行環境を用意して、そちらでデバックしながらやることになりますが、面倒だったらオンライン実行環境 paiza.IOを使うと良いと思います。

paiza その他のサービス

さて、paizaには、そのほかにもコーディングのスキルを上げるため便利なサービスがあります。

paizaオンラインハッカソン

期間限定コンテンツ。コーディング問題の解答に応じて、ストーリーが分岐するオンラインコンテンツです。プレゼント応募期間は終了していますが、問題には解答できます。

paiza_501

動画&学習コンテンツ paiza learning

スキルチェックではなく、スキルを向上させるための動画&学習コンテンツ。当初は問題を解答するだけでしたが、現在は解説動画を見ながら、コーディングできるようになっています。

paiza_601

オンライン実行環境 paiza.IO

ブラウザ上でコードを書いて、すぐに実行・共有できるオンライン実行環境です。paizaと同じく複数のプログラミング言語に対応しており、paizaでコーディングスキルを測るとき、すばやく実行環境を用意するのに便利です。

paiza_701

ITエンジニアを目指す学生の就活サイトpaiza新卒

学生さんが、就職活動で利用できるサービスも登場しました。いけてるWebサービス企業への就職を目指すには、いいかも知れませんね。

paiza_801

という訳で、paizaを使って、コーディングスキルを確認してみました。

プロのプログラマーになるなら、paizaを利用して一度ドップリプログラミングしてみるのも、悪くないかも知れません。どうせ、仕事でプログラミングをするようになったら、1日8時間以上プログラミングをやる訳ですから。こういう泥臭い馬力が必ず必要になるでしょう。