見出し画像

【イベントレポート】「競プロer のソフトウェアエンジニアとしてのキャリアパス」【前編】

2024年4月3日、株式会社estieとの共催で「競プロer のソフトウェアエンジニアとしてのキャリアパス」をテーマにしたキャリアイベントを開催しました。

当日は株式会社estieと当社のエンジニア計4人がパネルディスカッションを行い、競プロの知識や経験がソフトウェアエンジニアリングの業務にどう活かされているかや、将来のキャリアについての各自の考えを伝えました。

オンライン会場(Zoom)には203人、オフライン会場(株式会社estie本社・東京都港区)には35人の参加者が集まる大盛況となった本イベントの様子を前編・後編の2回に分けて紹介します。


開催背景

2018年12月に創業した株式会社estieと、2021年7月に創業した株式会社ALGO ARTISは、いずれも競プロer(競技プログラマー)出身者が活躍するスタートアップとして知られています。

今回、両社は「ソフトウェアエンジニア」として活躍する競プロerの社員に焦点を当て、競プロerとしてのスキルがいかにソフトウェアエンジニアに活きるのか、語ってもらう場を設けました。

両社共催のイベントは今回が初。競プロerにソフトウェアエンジニアの仕事に興味を持ってもらいたい、という思いが両社で合致し、今回の開催に至りました。


◾️株式会社estie ・・・日本の商業用不動産データ基盤を保有し、「estie マーケット調査」や「estie 物件売買」などのサービスを提供。世界最大級の日本の不動産市場をデータとテクノロジーの力でアップデートし、社会の価値創造の中心地であるオフィスの真価を拓くことをチャレンジとしている。

◾️株式会社ALGO ARTIS・・・エネルギー・製造業・物流はじめとした社会基盤を支えるあらゆる産業を対象に、複雑な運用計画に特化した計画最適化ソリューション「Optium」を提供。「社会基盤の最適化」をミッションに掲げ、「TECHNOLOGY&INTEGRITY」をビジョンとする。


自己紹介

当日は、株式会社estieからスタッフエンジニアのkenkooooさんとソフトウェアエンジニアのriano_さん、株式会社ALGO ARTISからterry_u16さんとplcherrimさんという、業界でも指折りの計4人のエンジニアが登壇しました。

会場ではアルコールやソフトドリンクが振る舞われる和やかな雰囲気の中、最初に4人の自己紹介からスタートしました。(以下、敬称略)

登壇者の皆さん  
*ご本人の希望により多少の加工を加えております。

・kenkoooo :estieスタッフエンジニア

kenkoooo:新卒で自宅を警備する仕事に就き、そこで2年ほどキャリアを積み、国立情報学研究所に転職しました。その後、リクルート、SoundHound、Indeedでソフトウェアエンジニアとして勤務しました。

その後リタイアし、今は趣味でestieという会社で暮らしている感じです。

馴染み深いのは「AtCoder Problems(※)」だと思いますが、最近は放置してたまに再起動するぐらい。全然何もやっていないんですけど、今日はよろしくお願いします。
 ※注)「AtCoder Problems」: 競技プログラミングへの取り組み具合を管理することができるサイト。どの問題を解いたのか、その難易度はどのくらいかなどを一覧表示できる。 https://kenkoooo.com/atcoder/#/

・riano_:estieソフトウェアエンジニア

riano_:AtCoder橙(※1)、Codeforcesがグランドマスター(GM)です。今年の目標は銅冠(※2)まで行きたいと思っています。ARC writer(※3)をしたこともあるので、ぜひ解いてみてください。

一昨年の8月からestieでソフトウェアエンジニアとして、2つぐらいの開発を経験しました。その後「バックエンドを作り直しましょう」ということをやって、今では「いろいろなプロダクトの開発をうまく進めていくためにはどうしたらいいですかね?」と考えることをやっています。

大学では物理の理論、素粒子論をやってました。その後、注文住宅の家を売っていまして、そこから今に至っています。

※注1)AtCoderでは参加者の実力によって色分けされる。橙は競技プログラミングをやったことのある人全体のうち、概ね上位0.25%という実力。
※注2)上位100位以内のランカーのこと。
※注3)問題を解く側ではなく、作る側として参加したということ。

・plcherrim:ALGO ARTIS ソフトウェアエンジニア

plcherrim:もともとはゲーム会社でUnityで開発をしていましたが、途中からはフロントエンド開発をやっていました。ちょっと違うかなと思っているうちにALGO ARTISに出会い、入社して半年経ちました。

特にアルゴリズムエンジニアではなく、ライターをやったこともなく、コンテストに優勝したこともございません。(会場笑)どうぞよろしくお願いします。

・terry_u16:ALGO ARTIS アルゴリズムチーム サブリード

terry_u16:ALGO ARTISでアルゴリズムチームというのがあり、そのサブリードをやっています。最適化プロダクトのアルゴリズムを開発したり、働きやすい環境作りをするために、地味な仕事をやったりしています。

AtCoderは、だいたい黄色と青の境目をずっと漂っているんですけど、ヒューリスティックは得意かな?(会場笑)だいたい世界3位ぐらいかな、という感じです。

競プロがいかに人生を破壊するかの実例ですが、もともと私は全然プログラミングに関係ない機械工学を勉強して、メーカーで戦闘機のジェットエンジンのプロトタイプを開発していました。

2020年にコロナで暇になったのがきっかけで、競プロにはまってしまって・・・。そこから人生が壊れてしまった感じです。そして、2021年に社内公募に応募して最適化部門に異動し、2022年に最適化プロダクトのアルゴリズム開発をするALGO ARTISに転職したという形です。よろしくお願いします。


4人とも、競プロの世界で知らない人はいないという有名人ですが、自己紹介では皆さん控えめな発言で笑いの多いスタートとなりました。

パネルディスカッション Part1〜競プロの知識と経験がソフトウェアエンジニアリングにどう活きているか〜

続いて、大きく2つのテーマでパネルディスカッションが始まりました。事前に参加者から集まった質問や、会場からの質問に4人が本音で語ります。

登壇者の皆さん  
*ご本人の希望により多少の加工を加えております。

圧倒的なスピードや論理的思考力が戦力に

ーーー最初のテーマは「競プロの知識と経験が、ソフトウェアエンジニアリングにどう活きているか」。まず、kenkooooさんからいかがですか?

kenkoooo:僕は結構活きていると思っています。競技プログラマーはめちゃくちゃプログラミングが速いんですよね。「1問目から4問目まで15分で解きました」とか。もしかすると15分でも遅いと言われるかもしれない。あれは、常軌を逸している速さです。

普通そんなに速く書けないですけど、競技プログラマーはコードを書き過ぎて考える前にタイピングが進んでいる。

仕事でも、最終的にやることはプログラミングなので、そこがボトルネックにならないのはすごく活きると思っています。

terry_u16:コードを書くまでの障壁が低い、ということは一つある気がしますよね。常に小さい問題を毎週解くという謎の訓練をしているので。「これ、実装して」となった時に、「ABCのC問題ぐらいかな?」という形で気付いたらぱぱっと実装していることがあります。

それと、僕は人に仕事を振ることがあるんですが、返ってくるスピードが非常に速いんですよね。もうちょっとかかるかと思ったら、すぐに上がってきて、しかもクオリティも高い。びっくりさせられることはすごくあります。

plcheerim:設計を固めて「あとは実装するだけだよね」となれば、もう実質勝ちみたいなところがあるかと思ってます。その分だけ上段の議論で考察に時間を使える、というのは日々感じるところがありますね。

riano_:個人的には、論理的思考力や問題を整理する力が、ソフトウェアエンジニアの仕事をしていて重要かと思っています。

論理的思考力をフル活用しなくてはいけないことに真剣に取り組めば、競プロでなくてもそうなると思いますが、その一つが競プロなのかと思っていますし、そういうところで取り組んだ力は確実に活きていると思います。

kenkoooo:僕もマジでそうだと思っていて、競プロって愚直に解くことってないじゃないですか。山があって石を1個か2個取りますという時に全探索することはなかったり。結局問題を別の問題に帰着してるんですよね。

そのほかにも、AチームとBチームの人たちをマッチングする時に、なぜか上から水を流すじゃないですか。水が流れた量が一番多くなるところを求めるという、マッチングをなぜか最大流に帰着したりということがあると思いますが、普通の仕事でも結構あります。

そこまで言い換えることは少ないですが、ユーザーからこういう機能が欲しいと言われた時に、「そのユーザーが何が欲しいか」とか、「自分たちはどう実装したら良いのか」を突き詰めて考えたりして、元の問題を別の整理されたものに帰着したりするところは、競プロの人たちの得意な分野だという気がします。

ソフトウェアエンジニアの仕事としては、納品して終わりではなく、開発し続けるソフトウェア開発の分野で競プロの力が活きる気がします。

課題のボトルネックを見つける力にも強み

ーーー「AtCoder緑(※1)以上の能力をWEB開発系の実装に活かせますか?」という質問も来ています。ソフトウェア開発以外に活きる例をいくつか教えてもらえますか?

kenkoooo:estieで作っているものはtoB向けでお客さんが法人なので、仕事で使うためのソフトウェアという感じですが、たとえばボタンをクリックしたときに、「10秒後に結果が表示されます」という形だと遅すぎてやってられない。お客さんからは「それでは解約します」となってしまいます。

そこではレスポンスの速さが重要で、「なぜかわからないけど遅い」ではなく、ちゃんとボトルネックを見つけ、「これが二重ループになっているからですね」と見つけて速くしていく時に、すごく競プロが活きている気がします。

terry_u16:なんかこう、息をするように計算量(※2)を意識できますよね。普通、よくわからないままに、あまり根拠なくチューニングする人は結構いると思うのですが、競プロをやっている人はボトルネックがわかって計算量を意識した上で、「あ、ここは遅くなる」というのを突き詰めて改善までできる

そこまでできるのは、普段からそういう訓練を積んでいるからかなと感じます。

riano_:たとえば、estieでは、オフィスビルの募集情報を扱うときに、ビル単位で1階、2階、3階と複数の募集があります。当然、世の中にはいくつもビルがあって、ある人がその募集をまとめたリストを作り、後から別の募集も追加したいとなった時、既存のビルにある募集は既存のままで、新たにリストを追加したいということがある。

では、インデックスをどう振るかというのは、意外と難しくて詰まってしまう場面。そんな時に競技プログラマーは何も考えずにできて、そこは速さが段違いで、バグも生まれない。そこはすごくありがたいです。

※注1)ある程度競技プログラミングを熱心にやっている人が到達するレベルで、競技プログラミングをやったことのある人のうち概ね上位8%の実力
※注2)コンピュータに何かを処理させる時に必要になる計算の量。コンピュータは一瞬で様々な処理をしてくれると思われがちだが、実際はちゃんと処理を工夫しないと現代のコンピュータでもものすごく時間がかかってしまうことがある。競技プログラミングでは、いかに処理を工夫して計算量を少なくできるかが問われることが多い。

事業が作る未来や問題解決自体に強い関心

ーーーその他、業務寄りの話で「コンテンツ自体に興味を持っているか」という質問があります。たとえば、estieでは不動産領域、ALGO ARTISでは多様な領域にあると思いますが、そもそもそこに興味を持ちながら仕事されているのでしょうか?

terry_u16:ALGO ARTISは最適化のプログラムを提供する会社なんですが、業務領域はいろいろあるんですよね。たとえば、「工場のラインでどういう風に何を生産すると一番利益が出ます」とか、海外から船で物を輸入する時に「どういう風に船を動かすと一番安く済みます」ということをやります。

僕がそういう領域にめちゃくちゃ興味があったかというと、そうではないんですよね。もちろん面白いんですが、それがやりたくて入ったとまでは言えない。

ただ、今までやってなかった業務領域について知るのは、結構面白いんです。最初は、本当に何もわからないままお客さんの話を聞いたりするんですけど、だんだんと断片的な知識が急に、ふっと全部繋がることがあるんです。

「あ、これはこうで、このためにこれがあったのか。だからこういう業務の仕方をしてるのか」とか。それは普段、競プロで、断片的な考察が一気に集まって解けた感覚と似ています。そういう時に、かなり面白いなと感じますね。

riano_:estieの場合、商業用不動産をメインで扱っていますが、今の商業用不動産市場の取引の状態にそんなに強い興味を持っていたわけではないんです。

ただestieには、「データを整備して、みんなが使えるようにしていくことで、都市の発展自体を良くして、産業の進化を切り拓く」というパーパスがあるのですが、そういうestieが作る未来には興味がありました

実際にプロダクトを作っていく中で、「どういう風に設計したらお客さんのやりたいことがシンプルにできるか?」というのは、単純に問題を解決する作業になるので、扱う題材とは独立して面白いなと思って取り組んでいます。

terry_u16:estieさんの不動産業界ってなかなかデジタル化が進んでいなかった領域で、一番難しいところを頑張って変えているというのは、先駆者としての面白さがありそうな気がします。

kenkoooo:確かにそうですね。他に誰もやっていないことをやる方が、自分がやる意味があるんですよね。すごく面白いところだと思います。

実際、競プロの問題やってる時に、高橋君と青木君のどっちが勝つかって、マジでどうでもいいじゃないですか。

そういう風に、問題を解くこと自体が面白いと思うタイプだったので、事業の内容はもちろん面白いと思うこともあるけれど、基本的にそこについてくる問題を解くことが一番面白いと思っています。

ーーー「扱うデータ量が多い会社ほど、競技プログラマーのパフォーマンスを出しやすいでしょうか?」という質問があります。実際、データ量はどのくらいですか?

plcherrim:ALGO ARTISの扱うデータは膨大ですが、どちらかというとデータ量よりも複雑さの方が面白いかというところがあります。

そもそも、お客さん側が運用で日々困っていて、「最適化どころか計画業務すらできない」というところに入っていくので、数も多いし、データの複雑さはトップクラスになってきます。

terry_u16:お客さんのデータを初めて見た時にはびっくりしました。それを、お客さんが人の力でちゃんとエクセルで頑張って読み解いてるんです。読み解くのも大変だし、そのデータをどう扱うかも大変。そこは競プロの知見が活きるところだと思います。

riano_:estieは、日本にある建物の数ぐらいのデータ量なので、1000万はいかないぐらいのデータ量だと思います。

kenkoooo:先日は、事業開発のチームがデータを仕入れて一気にデータ量を50倍に増やしたら、全てが遅くなったということがあったので、ちゃんと競技プログラミングをやるのは大事だなと思いました。


両社ともに、競プロでの知見は、論理的思考力や問題解決時のスピード力など、業務のさまざまな場面で活きることが語られました。

【後編(翌週公開予定)】パネルディスカッション Part2〜将来のキャリアをどう考えているか〜

パネルディスカッションの後編では、将来のキャリアについて各自がどう考えているか、かつて新卒の就職活動の時にはどのようなキャリアを見据えていたかについての話題に及びます。

イベント後半を紹介する【イベントレポート後編】は、翌週公開予定です。どうぞお見逃しなく!


ALGO ARTISについて:https://www.algo-artis.com/

最適化ソリューション『Optium』:https://www.algo-artis.com/service

化学業界DXソリューション『Planium』:https://planium.jp/

X:https://twitter.com/algo_artis

Linkedin: https://www.linkedin.com/company/algo-artis/