CodeIQの出題をみんなで解いたのがきっかけ
昨年から始まった、リクルートテクノロジーズITマネジメント統括部内のプログラミングコンテスト。
執行役員でもあるITエグゼクティブ(以下、部長)が率先して参加していたり、出題者も回答者になれたり、実行スピードを客観的に競う一方で、独自の実装方式をみんなで評価しあったり……。
なんといっても「遊びの要素」が参加者の負けん気を引き出している。
「リクルートキャリアが運営しているITエンジニアのための実務スキルサービス『CodeIQ』の出題を遊び半分でみんなで解いたのが始まりなんですよ。解答会を開いたら結構盛り上がったんで、これを定期化しよう。社内のエンジニアが出題してみんなで競おうということになったんです」と言うのは、発案者の宮川典久氏だ。
▲株式会社リクルートテクノロジーズ ITM1部 APソリューションG グループマネジャー 宮川典久氏
社内サーバーにリポジトリを一つ作り、出題者がテストコードやテストデータ用意する。出題者は固定せず、前回優秀者が次の回の出題を引き受ける。
期限は約1.5ヶ月。新卒のエンジニア以外の参加は任意。それでも毎回20~30人が参加する。勝負の基本は実行スピード。ミリセック単位で測ると、10倍ぐらいの差が出るという。
コードの美しさは主観的な評価が入るので問題としないが、実行スピードを高めるためにそれぞれ凝らした工夫は、みんなでレビューし加点する。それを5段階でランキングし、結果を毎回部内に掲示する。
賞金はないし、人事評価にも直接つながらない。だが、「負けたくない」という意識が参加者のモチベーションになっている。
普段の業務の裏側で動いているアルゴリズムを意識
これまで、6回開催された。メモリ上限を超えるような大容量ファイルのハンドリング、分散データベスの処理をアプリ側でいかに実装するか、SQLの高速化のためのチューニング技法、JavaScriptのテンプレートエンジンを自作し、サーバーサイドに実装する、などと課題は続き、第6回目はパスワード強度を判定する処理問題だった。
▼第6回プログラミングコンテスト問題の一部
「パスワード文字列と辞書を与え、それぞれに含まれる単語を比較しながら、パスワード強度チェックの処理をJavaで実装するという課題ですが、最適解を得るためには検索エンジンの知識も必要。普段の業務の裏側で動いているアルゴリズムを意識してもらえたらいいな」というのが、5回目の出題者・宮川氏の狙いだ。
今回は宮川氏も解答者の一人として参加。出題者が参加しちゃっていいのかという疑問はさておき、結果的に宮川氏は最上位にランクイン。同じランクに入ったのが、入社6年目、エンジニア歴4年目の麻柄翔太郎氏だ。
▲株式会社リクルートテクノロジーズ ITM2部 麻柄翔太郎氏
「普段の業務は、Rグループ内の事業会社のWebサイト構築。実際のところ業務ではここまでの処理は必要ないんですが、それ以外のことがわからない、できないではエンジニアをやっている意味がないじゃないですか。自分のスキルを拡張する意味でも、このコンテストはいい刺激になっています」
部長のコードをdisってしまった
最初の頃は解答者をすべて匿名にして、全員でレビューしていた。
「このコード遅えなあとか、知らない間に部長のコードをdisってたりしてたこともありました」と麻柄氏は苦笑い。
「部長」とは、リクルートテクノロジーズの片岡歩執行役員のこと。実は彼が社内で一番コンテストにのめり込んでいるとも言われる。
第4回のコンテストで優勝したときは社内報のインタビューを受け、「(このコンテストは)みんなの技術力を評価し、組織全体でレベルアップしていくための取り組み。同じテーマについてそれぞれの正解を見つけること、お手本だけでなく、自分で手を動かしてやってみることの両方を押さえることで、業務に必要な知識が磨かれていく」と組織幹部としては真っ当な意見を述べている。
「だって、案件の話をするつもりで行ったミーティングが、コンテスト問題の攻略法の話で終わっちゃったりしたこともあるんですから」という宮川氏の証言もある。
部長自ら熱く参加し、メンバーの意欲をあおる。もしかしたらこれは部長ならではの高度なエンジニア・マネジメント手法の一つなのかもしれない。
個々のエンジニアの特徴や可能性に気づく
「もちろん、誰がコードを書けるか書けないのかの見極めにはなっています。それ以上にコンテストをやってみてわかったのは、書き方は荒削りだけれどスピードはピカイチとか、非常に変わったロジックで解く人がいるとか、それぞれの個性や特徴がつかめたこと」と、宮川氏も言う。
「その結果を見て、インフラメインでやっているエンジニアに、アプリ開発もできるんじゃないかと、新しいタスクを与えたこともありました。普段の業務でコードレビューしているつもりでも、それだけでは見落としているエンジニアとしての可能性に気づけたのも、コンテストをやってよかったことの一つです」
スキル以前に、コンテストへの向き合い方、気合いの入れ方も重要だ。
「こいつ死ぬほどチューニングする奴だなとか、意外と途中で諦めちゃうタイプとか、それぞれのこだわりも見えてきます。そこから業務適性を見抜くこともできるかもしれないなと感じています」
メンバーの麻柄氏にとっても、コンテスト参加は重要な転機になった。
「エンジニアリングの基礎問題でありながら、どこかで業務につながっている。それを解くことで、サービス企画の幅が広がるような気がします。私は今後も具体的なプロダクトを担当しながらサービス開発の現場にいるつもりだけれど、新しい技術の導入についても、他人に頼らずに自分でできるようにはなりたい。エンジニアとしての実行力を高めることで、それをプロダクト開発の武器にしていきたいですね」と、今後の抱負を語る。
コードはセンスか、経験か
いいコードが書ける人とそうでない人の差。これはもともとのセンスか、それとも経験値の違いなのか。昔からある問題だが、なかなか正解はない。
「現時点でできない人も、いつかは書けるようになることはある。自分の業務でなんとなくコードを書いている人だからといって、センスがあるとは限らない。チューニングがうまい人、アルゴリズムに新規性がある人、コードは下手だけれどチームマネジメントに才をを見せる人など、さまざまなタイプのエンジニアがいるからこそ、チームは強くなる。そういう人たちがそれぞれ特性を発揮できるようなコンテストにしていきたい」と、宮川氏は語っている。
第7回目の課題は、エレベーターの配送ロジック問題を考えているという。複数台のエレベーターを制御しながら、順番待ちをいかに減らすかという、アルゴリズムの基本問題だが、そこに複雑な処理を加える予定だそうだ。
「アルゴリズムで工夫できるなら、私にも勝機はありそうだな。めちゃくちゃチューニング勝負だと、そのあたりの経験が少ない私は、宮川さんには絶対勝てないからなあ」と、麻柄氏の宮川氏への対抗意識は、今からメラメラと燃え上がっている。
新卒エンジニアの中には麻柄氏、宮川氏を追い上げるようなコードを書く人も現れた。リクルートテクノロジーズの社内競争はこれからますますヒートアップしていく様相だ。
あなたにとって「理想の会社」とは?
「理想の会社で働きたい!」――― いたって単純で、誰もがそう思うこと。
では、あなたにとって理想の会社とは?
あなたが思い描いた「理想」は、きっと今あなたが抱いている「不満」の裏返し。
- 残業が多い、服装が自由じゃない、エンジニア向きの設備がない、
- BtoBの開発だけだと反応がなくてつまらない、
- 会社全体が新しい技術や開発スタイルに関心がない、
- ずっとコードを書いていきたいのに管理職しか道がない…
あなたが抱くその「不満」を「理想」に変えられる会社がどこかにあるはずです。
ITエンジニアのための求人サイト「CodeIQ JOBS」は、スキルやこだわりで検索ができます。
また開発環境や技術への取り組みなど、ITエンジニアがスキルを発揮するために必要な情報を多く掲載しています。
さらに、「CodeIQ」で得た評価をもとに、掲載されている企業の求人へ応募することも可能。