タベリーという、料理と買い物の負担を肩代わりするモバイルアプリをつくっています。最近、オンライン注文機能をリリースして、いよいよ買い物の領域にも本腰を入れ始めました。また、会社の資金調達も同時に発表しており、このタイミングで仲間になってくれるソフトウェアエンジニアも募集しています。

会社が取り組んでいる課題や市場、文化については下記のスライドにまとまっています。

どんな人を求めているか

一言で言えば、チームの可能性を広げられる人を求めています。いまは7名の小規模チームでなんとか市場にエントリーできる場所に漕ぎ着けました。しかし、あるべき体験に到達するためには、解決しなければならない問題がたくさんあります。チームに新しいメンバーを迎えることで、これまでのチームでは出来なかったことを出来るようにしたいと考えています。

チームの可能性を広げられる人とは、滑らかな体験をつくるフロントエンドエンジニアなのかも知れませんし、安定した稼働を支えるバックエンドエンジニアなのかも知れません。個人に合った意思決定を支援するアルゴリズムをつくる機械学習エンジニアかも知れませんし、僕らがまったく手をつけられていない領域を得意とするエンジニアかも知れません。

技術を使って主体的に課題解決に向かえる人を集めて、様々な面でプロダクトを良いものにしていきたいと考えています。

アーキテクチャ

メンバーの@wapa5powがまとめてくれました。

ざっくり言えば、サーバーは主にGoogle Cloud Platform上に構築されています。アプリケーションはGoで書かれていて、クライアントとの通信にはgRPCを使っています。iOSアプリとAndroidアプリは普通にネイティブのSDKを使って開発していて、言語はSwiftとKotlinです。また、クライアントの一部の処理にTypeScriptを使っています。

開発の文化

今のところ、チームは自走できる少人数のメンバーで構成されていて、書かれるコードの水準も安定しています。この構成がチームの特徴に繋がっているので、いくつか紹介しようと思います。

生産性重視の担当割り振り

チームが少人数ということもあり、色々な領域の開発をすることがあります。1つのイシューの解決にサーバーとiOSアプリとAndroidアプリの開発が必要な時に、1人がそのすべてを担当することもあります。この方式では1人で開発を完結できるので、開発の並列度が高い、コミュニケーションコストが小さいなどのメリットがあります。

とはいえ、自分が担当したことがない領域の開発を強制するつもりは全くありません。ただ、チームの生産性を上げるための手段の1つとして、この方式をとっているだけです。得意な領域に偏ることで高い生産性を発揮できる時には、偏らせるのが良いと思います。

例えば、自分は元々iOSエンジニア出身ですが、これまでサーバーサイドでもかなりの量のコードを書いてきました。メンバーが増えてくるにつれて、自分よりも良いサーバーサイドエンジニアが増え、最近はイシューの解決に必要な最小限のコードしか書いていません。その分、元々得意としているクライアントサイドの設計や、UIの改善に時間を割くようになりました。

逆に、はじめはサーバーもiOSアプリもAndroidアプリも担当することがあったものの、最近はサーバーサイドの大きなイシューの解決に専念しているというメンバーもいます。

コードレビューに掛かる時間が短い

先にも書いたように、コードの水準は安定しています。なので、コードレビューにおける主な関心は、アプローチの妥当さ、データの持ち方、命名あたりの「後戻りがしにくいもの」が中心です。それ以外のことはそれほど細かく見ないため、結果的にコードレビューに掛かる時間は短くなっています。

この辺りのことは、メンバーの@hisaichi5518がまとめてくれています。

待遇

冒頭のスライドでも説明していますが、基本的には以下のような方針をとっています。

  • 会社の残金・事業進捗を勘案して最大限可能な報酬を設計する。
  • 会社の成功を全員のものにするため、生株・ストックオプションを付与する。
  • ライフイベントとトレードオフになる不安を可能な限り取り除く。

応募方法

もし我々のチームとフィットしそうだ思ってくれた方がいれば、下記のフォームから応募してください。もう少しカジュアルに話を聞いてみたいなという方は、自分にDMしてもらってもOKです。