hogecoder

tsutaj 競技プログラミングの記録

純粋培養競技プログラマが社会に出てみた感想

この記事は Competitive Programming (1) Advent Calendar 2020 の 13 日目の記事として書かれました。

以下のツイートから着想を得たネタで書いています。完全にポエムなのでご了承ください。

自己紹介

どのような技術を持ち合わせている人間なのかを最初に説明したほうが良さそうなので、以下に書きます。

  • 今年春に大学院を卒業して社会人 1 年目
  • 競技プログラミングを始めてから 4 年半経ちました。自発的にプログラミングをするようになったのは完全に競技プログラミングのおかげなので、純粋培養なんじゃないかなあと思ってます
  • 競プロのライブラリ整備・ツール作成などを入り口にして少しだけ開発とかもやっていたりしました
  • 競プロの作問 (有志コン・主に大学合宿のための問題) に携わっていました

プロフィールを書くにあたって「競プロのことしか書けないなぁ」と思うくらいには、学生時代は競プロに染まっていた気がします。

就職で身につけたこと・できるようになったこと・やりたいこと

入社してから機械学習系のタスクに割り当てられました。これは自分がかねてから機械学習系の仕事に興味があったことや、インターンシップでお世話になっていたメンターがいらっしゃったからです。

作業するにあたって、環境をチームでそろえるために Docker を使ったり Python機械学習ライブラリ・画像処理ライブラリに触れたりなどが発生します。なのでこれらについては新たに覚えなければいけないことが多かったです。ネットで調べたり人に聞いたりして徐々に習得していきました。手法調査のために論文を調べることもあって、それも適宜行っていました。また業務の都合上、クライアントに発表する機会がいくらかあるのですが、学生時代のサークル活動のおかげか、発表は得意なほうなのでそれに関してはなんとかなっています。エンジニアであってもコミュニケーション能力が要求される印象です (というか、どの仕事でも多分そうですよね・・・)

機械学習そのものにもっと慣れるために、Kaggle にも登録しました。今年の 5 月くらいからやっています。初期に参加したコンペは Shake (Public と Private の順位表に大きな差が出て、順位が大きく変動してしまうこと) が強くてつらい気持ちになっていましたが、最適化を扱うコンペなどもたまにあり、そっちのほうがおもしろそうだなと思っています。もう少し時間をかけて取り組んでみたいと思います。

あと、これはあまり業務に直結する話ではありませんが、社内で英語学習を支援する福利厚生がいくつかあるので、来年から TOEIC を受けたりスピーキングの講座を受けたりする予定です。

ポエム要素が強いコンテンツ

以下は、このポエミーな記事の中でさらにポエム成分が高いコンテンツになります。

就職と競プロについて

先ほどの "就職で身につけたこと・できるようになったこと・やりたいこと" を見て、「あれ、競プロ出てこなくね?」と思った方もいるのではないかと思います。競プロで測れるのは「基礎体力」である、というのはよく言われていまして、実際、自分もそう思います。

驚くことに、実務では  998244353 で割った余りを求めたり、カードを食べたり数列をプレゼントされることはありません。その代わり、いま存在するアプリケーションから課題を抽出したり、抽出した課題に関してどう対処するかを考えて実装したり、クライアントに成果や進捗を発表したり・・・と、競プロでは測れない力を求められることのほうが圧倒的に多いと思います。個人的に、いま最も欲しい力は他人が書いた数千行のコードを一瞬で理解する能力です。Hack を鍛えていたら少しは能力がつくとは思いますが、競プロのコードで本質部分が数千行にも上ることはほぼないと思うので難しいですね。(どちらかというとマラソンの解答コードを読むほうが練習になりそう)

ちなみに自分が仕事をしていた中で最も競プロに近かった瞬間は、幾何をやっていたときです。幾何は実問題ではよく出てくるような気がするので、内積外積とか、最低限そのあたりは習得しておくと幸せになれると思います。

現在の自分と競プロについて

先述の通り、最近は英語や Kaggle のほうを頑張っているため、競プロに時間を割く機会は減りました。ただし、ここでコンテストに出るのをやめるとすべてが止まりそうなので、コンテストに出るのと復習するくらいは最低限やっています。CodeforcesTopCoder は平気で平日深夜に開催されてつらいので、最近は AtCoder にしか出ていません。

学生時代によく参加していた大学合宿は、スポンサーにならない限り当面行く予定はないですし、オンサイトコンテストも当面開催されなさそうなので、モチベの維持が難しいなぁと思っています。GCJ, FHC あたりで T シャツを得たり、数え上げを解いたりするのを楽しみにしながら競プロ余生を送れたらいいかなぁいう感じです。

さいごに

さて、この記事が誰かの参考になったのかは分かりませんが (なってなさそう・・・)、社会に出た競プロ er がどう過ごしてるかが伝わればうれしいです。

しばらくは英語や機械学習をやる人になると思いますが、JAG や yukicoder で細々と作問などは続けていくつもりなので、よろしくお願いします。