chokudaiのブログ

chokudai(高橋直大)のブログです

競技プログラミングと現代社会、および就職について

AtCoderはここ数年で大きく成長し、関わりのある企業も大きく増えました。競技プログラミングが社会に与える影響も、確実に変化してきています。

そのあたりについて、僕から見えているものをざっくりと書いていこうと思います。

そもそもAtCoderってなに?

AtCoderは、プログラミングのコンテストを毎週オンラインで開催している企業です。土曜日午後9時頃に、毎週3000人程度のプログラマが参加しています。基本的にはスポンサーがついていないコンテストをしていますが、就活シーズンには、多くの企業がAtCoderを利用したコンテストを主催しています。

 

AtCoderの利用企業

ここ 1 年間でAtCoderで大きめの取引があった企業(殆どがコンテスト実施)は以下の通りです。(株式会社とかその辺は省略してます。抜けがあったらごめんなさい。)

見た通り、多くのIT企業がAtCoderでコンテストを開催しており、コンテストに参加する学生・社会人に興味を持っている企業が増えていることがわかります。AtCoderでコンテストを開いた企業の9割以上が継続して取引を続けており、採用や企業ブランディングに関して、成果が出ていることが伺えます。

例えばドワンゴさんなんかだと、今年のニュースリリースにおいて、

過去4回の実施で、予選・本戦がきっかけで入社した参加者は20名以上に上ります。

と書かれており、非常に多くのプログラマが入社していることがわかります。*1

他の会社については、ここまでの情報開示をしていませんが、SoundHoundさんとかRCOさんとかのコンテストを見ると、運営スタッフにAtCoderの参加者が増えているのを見れば、各社にAtCoderプログラマを送り出すことに成功しているのが分かると思います。

 

AtCoderのレーティングとエンジニアとしての能力の相関

AtCoderでは、毎週のプログラミングコンテストの成績から、その人のレーティングを算出しています。コンテストの成績が良ければ上昇し、コンテストの成績が悪ければ減少していきます。

f:id:chokudai:20181204173933p:plain

AtCoderのレーティンググラフ(chokudai)

このAtCoderレーティングは、400刻みで色分けがなされており、上から赤・橙・黄・青・水・緑・茶・灰・黒となっています。

f:id:chokudai:20181204174157p:plain

AtCoderの色分け。

画像のは僕のレーティングなので、最高評価の赤ですが、赤は希少です。他社サイトだと、水色(B)から最高評価、緑も十分優秀で、茶色は学生としては優秀、といった感じです。

さて、このレーティングを採用に役立てる動きが最近は活性化していますが、本当にAtCoderのレーティングは、エンジニアとしての能力を測定するのに有効なのでしょうか?

競技プログラミングは役に立たない!」という意見がいくつかあるように、競技プログラミングの能力と、エンジニアとしての能力は必ずしもイコールではありません。エンジニアに必要な能力で、競技プログラミングで測れない能力はたくさんあります。

具体例を挙げると、

競技プログラミングで測れる能力】

  • 高速で正確なコーディング(プログラミング)力
  • 量の多いデータや、複雑な計算に対し、高速に演算出来るプログラムを書く力
  • パフォーマンスを改善する力
  • 高度なアルゴリズムの知識を要する処理を記述する力

競技プログラミングで測れない能力】

  • 大規模なチーム開発などにおける経験やノウハウ
  • コードの保守や運用に関しての知識やノウハウ
  • セキュリティ対策に関する知識やノウハウ
  • フレームワークやデータベースに関する知識

みたいな感じです。ざっくり言うと「コードを書く力と、数学的な処理を必要とする部分はめっちゃ強いけど、それ以外は別に計ってないから知らないよ!」みたいな感じです。これだけだとエンジニアとしての能力の網羅性って意味では全然ダメなんですが、論理的思考能力等を会社で育てるのは難しく、逆に開発に直結する部分は会社で教えることが比較的容易であることなどにより、ポテンシャル含め新卒採用において、かなり有効である、という見方が強まっています。逆に中途採用だと、専門性が高い人を就職したい!という見方が根強く、レーティングよりも職歴等を重視する企業が多いです。

そんな感じで、競技プログラミングでエンジニアの能力は一部測れるし、採用においてそこそこ役立つが、競プロが出来る=エンジニアとして十分な能力ではない、というのを考慮する必要があります。

 

AtCoderに取り組めば優秀なエンジニアになれるのか?

これも上のテーマと同じ話なんですが、競プロで身に付くのは一部の能力です。もしエンジニアを目指しているのであれば、競プロ以外の開発にも触れてみるのは良いことだと思います。(あんまり作りたいものがない場合は、競プロ採用を重視している企業のインターンシップなどがお勧めです)

また競プロの問題に出てくるような数学的な問題を解けるようにすることが、本当にエンジニアとしての成長につながっているのか、という話はよく見かけますが、これまでに話を聞きに行った限り、少なくともレーティングが青になるまでであれば、競技プログラミングはかなり直接的に役立つ業務が多い、と言えそうです。逆に黄色以上になると、かなり専門的な分野となるため、役立つ企業が限られてきます。ただまぁ、研究機関だったり検索系の会社とかでは滅茶苦茶重宝されてますし、そもそも人数が少ないところなので、困ることは絶対にないです。

 

なぜAtCoderでコンテストを開くのか?

コンテストを開催するという行為それ自体は、採用活動ではありません。ですが、多くの企業が、採用の際の母集団形成として、AtCoderを使用しています。

正直な話、コンテスト参加者は、IT企業に関して無知です。超有名企業は知っているものの、そうでない企業はほとんど知らない、という場合がほとんどだと思います。コンテストを通じて企業名を覚えてもらうだけでも、他企業に対して大きなアドバンテージを得ることが可能となります。

AtCoderの参加者は、他就職サービスと比べて滅茶苦茶優秀です。他実力判定サイトで上位2%のSランクと呼ばれているレベルでも、AtCoderでは上位30%程度にしかなりません。なので、各企業は早い段階から連絡を取り、新卒採用サイト等に登録する前に内定が出てしまい、そのまま就職活動を終える、ということが良くあります。

つまり、コンテストを開いて接点を作らないと、絶対に採用出来ない参加者が多くいる、ということになります。この層にアプローチできるのが、AtCoderでコンテストを開催する最大のメリットです。

 

AtCoderが現状リーチ出来ていない層

 拡大を続けているAtCoderですが、現状リーチできていない層が、参加者層にもスポンサー層にも存在します。

まず参加者層で言うと、明らかに高学歴層に偏っています。単純に「プログラミングコンテストを娯楽として見れる層が高学歴に偏っている」というのはあると思いますが、AtCoderを知る機会がない、という事実が、その偏りに拍車をかけています。

スポンサー層で言うと、こちらは明らかに「新しいことを取り入れていく企業」しか食いついてないのが、一覧を見れば一目瞭然だと思います。ウェブ系・ゲーム系なんかの、ベンチャーをそのまま大きくしたような会社はすぐにAtCoderを活用していますが、日本の古き良き大企業の名前が全然ありません。このあたりにどうリーチできるかが、今後の課題となります。

 

今後の展望:日本経済新聞社主催「全国統一プログラミング王決定戦」の開催 

さて、この度、AtCoderは、日本経済新聞社さんと共催する形で、「全国統一プログラミング王決定戦」を開催することになりました。

beta.atcoder.jp

日経さんとコラボすることで、日経さんが営業に行ってくれるので、これまで、AtCoderがリーチし得なかった企業にアプローチすることが可能になりました。

このコンテストは、上手くいけばかなりの転換点になると思ってます。これまでWeb系等の会社にしか送り込めていなかったAtCoderのエンジニアの卵を、日系の大企業に送り出す足がかりになるかなあ、と思ってます。

もちろん、多分ただ採用するだけだとダメだと思ってます。就職しても、社内でコーディングはせずに絶対に外注に投げないとダメ、みたいなルール付けとがされていたら、何も改善しません。多くの企業がIT人材の重要性を感じてきているタイミングですし、部門編成に関して大きな動きをしやすいタイミングでもあります。そのあたりも含めて、経営層にアプローチしていける足がかりがようやく出来た、と感じてます。

自分にとってのAtCoderは、正直ネットゲームサイトなんですが、日本のITに関して相当大きな影響を与える存在になっているのも自覚しています。これをきっかけに、日本のソフトウェア産業を変えていく、というところまであり得ると考えています。

とりあえずこのコンテストが成功しないと話にならないので、普段参加してない人も、これを機会にぜひ参加してもらえればなあ、と思ってます。

というわけで、1月27日の予選、ぜひぜひご参加ください!