prologue
初めまして。8月から estie でソフトウェアエンジニアとして働いている riano_ です。
趣味で競技プログラミングをしているので、同じ趣味の方はもしかしたら知ってるよ、という方もいるかもしれません。
estie でのお仕事は専ら Web アプリの開発なのですが、実は Web 開発は初めての経験です(びっくりですね)。プログラミング自体、ほとんど競技プログラミングでしか触れたことがありませんでした。
つまり estie でのお仕事は、個人的には全く新しい挑戦です。ではなぜそうしようと思ったのか、そしてその結果どんな景色を見ているのか。そんな事をこの記事では書いてみようと思います。
入社するまで
前職は AI 系のスタートアップ企業で、機械学習のプロジェクトをビジネスサイドからデータ分析までカバーして行っていました。これはこれで面白いお仕事でしたが、机上検証のフェーズが長く、実際に製品として実装される段階になかなか関われないという一面もありました。また、業務範囲が広かったため、コードを書くのがメインの仕事というわけではではありませんでした。
せっかくプログラミングを始めたのですから、それを活かして実際に動き、使われる製品を作りたい。そんな漠然とした思いを持っていたところに、1 つのツイートが流れてきました。
こんな面白い話はそうそうないと思ってすぐに応募し、3 ヶ月後には入社していました。有名人である kenkoooo さんと一緒に働いてみたいという気持ちもありました。
(選考の過程で、CTOのNariさんにしていただいたコーディング面接なども強く印象に残っているのですが、長くなってしまうのでまたの機会にしておこうと思います。)
とはいえ、入社にあたっては不安もありました。何しろ大学なども情報系でもなければ、チーム開発の経験もありません。競技プログラミングで多くの問題を解いた経験から、コードを書くこと自体は今や得意だと思いますが、それ以外に関しては全てが未知の世界です。それでも、せっかくチャンスなので、思い切って飛び込んでみることにしました。
estie という会社
ここでやや主題から逸れてしまう上に、あまり上手く言語化もできていないのですが、少し触れておきたいことがあります。
それは、estie という会社は稀有な組織だと感じている、ということです。estie Programming Contest 2022 (AHC014) のコメントにも書いた通り、チームで成果を出すという目標に対して非常に良い雰囲気で仕事が回っていると、入社してすぐの段階で思わせてくれる何かがありました。
全てのことをできる必要はなく、お互いに背中を預け合うこと。一方で、優しさと好奇心を持って関わり合うこと。まだまだ入社したばかりですが、自分自身が成長していくための場所として、とても良い場所だったと感じています。
競技プログラミングは Web 開発の役に立つか?
では、業務内容に関してはどうでしょうか。
実装方針を考えるというところまで含めた実装力という点においては、競技プログラミングの経験が非常に役に立っていると感じています。単純に慣れによる速さという点もありますが、実は計算量の感覚も役に立っています。
例えばバックエンド側の処理では、データベースの情報にアクセスして、得られた情報に応じた何かしらの処理をすることがあります。その中で、例えば簡単な前計算をすることで O(NM) を O((N+M)logN) にできるなど、「何も考えないで書くとすぐに計算量がとんでもないことになる」という場面には意外なほど出くわしました。
これらを身につける媒体は、別に競技プログラミングでなくても良いのですが、私の場合には間違いなく、その経験が自然と役に立ってくれています。他にも、既存のコードを読解してどこで何が行われているかを理解する能力なども役に立っていると感じています。
一方で、もちろん慣れるのに大変な点もあります。エンジニアの中で半ば常識のように使われている各種便利ツールの数々(GitHub や Docker など)や共通認識となっている用語に不慣れであったという点も一つですが、最も大変だったと感じているのは開発環境に関するトラブルです。
この点に関しては本当に何も分からず、手元環境で異常にコンパイルに時間がかかったり、手元でだけテストが正常に動かなかったりと、かなりトラブルメーカーになってしまっていたと思います。しかし大変ありがたいことに、必要十分なサポートをしていただけたおかげで、今では(たまにトラブルに陥りますが)しっかりと成果を出せる状態になることができました。
今後私ほど開発に慣れていない人が入社するかは分かりませんが、トラブルメーカーの前例が存在するということで、その点に関してはご安心ください(?)。私自身も、詳しい人が見たら「常識では?」と思うかもしれないレベルでトラブル対応メモを充実させておこうと画策しています。
estie でのこれから
さて、そんなこんなでなんとか新しい仕事にも慣れてきたわけですが、今後やって行きたいことは主に 2 つあります。
1 つめは、新機能の実装をどんどん進めていくことです。入社してみて分かったのですが、estie で扱っているサービスの可能性は無限大で、これが出来たらもっといいんじゃないかという機能は山ほどあります。お客様からの期待も高く、自分の手で少しでも製品が良くなっていく、そしてそれが活用されているという経験はやはり面白いものでした。コードが直接価値に変換されうるこの場所で、これをもっともっと、加速させて行きたいと思っています。
そして 2 つめは、少し抽象的な話にはなるのですが、蓄積したデータの将来の活用や、新機能の追加などを見越して適切なデータ構造を整えることです。私の所属するチームが扱っているのは、現在主力となっているサービスではなく、新しく育てていこうとしているサービスです。そのため、可能性は無限大である一方で、無作為に機能を拡張すれば複雑怪奇な実装に陥ってしまう可能性も否定できません。それを防ぐために最適な方法を選ぶことは、簡単ではありませんが非常にやりがいのある仕事だと感じています。
epilogue
estie でのお仕事も、estie という会社自体も、今見えているものが全てではないでしょう。自分自身に関して言えば、思いもよらぬところで苦労することもあるのかもしれません。しかし、これからもっともっと面白くなっていくのだと、そんな予感がしています。
さて、ここまでお読みいただきありがとうございます。この記事を読んで、面白そうな仕事だな、と思った方はぜひご応募/カジュアル面談ください。記事で触れたようなことに一緒に取り組んでいただける仲間を募集しています!