こんにちは、ファインディでFindy Team+(以下Team+)を開発しているEND(@aiandrox)です。
私が入社したのが2023年2月だったのですが、気がついたら1年間が過ぎていました。
せっかくなので、自分がこの1年でやったこと、感じたことを通してファインディの開発組織について知っていただけたらと思います。
1年でやったこと
Team+の画面ベースで振り返る
入社から1年1ヶ月(2023/2/1~2024/2/29)のアウトプットについては以下のようになっています。
- プルリク作成数:1229件(4.8件/日)
- コミットからオープンまでの平均時間:4.2h
- オープンからマージまでの平均時間:10.3h
アウトプット量自体は、エンジニアの中では多めの部類だと思います。ただ、画像上部のアクティビティの推移を見るとわかる通り、とてもばらつきがあります。
開発の他にも下記業務を担当しているのと、外部連携サービスのAPI調査やQAなどのプルリクエストを伴わないタスクもあるためです。
- 問い合わせ対応
- アラート調査
- 障害対応
リードタイムに関しては以下のようになっています。
外れ値の影響を受けていますが、それ以外の箇所では入社当初より現在の方がリードタイムが減少しています。現在は、開発に集中しているときのリードタイムはある程度安定するようになりました。
日頃から開発のパフォーマンスを上げるために意識したのは以下の点です。
- 事前に設計レビューやタスクを見てもらうようにする
- descriptionでタスクの流れを書いておく
- レビュー後のリードタイムを短縮する
事前に設計レビューやタスクを見てもらうようにする
設計に関しては、イシュー内で確認することもあれば、事前にDraftプルリクを作成してレビューしてもらったりします。
これによって、手戻りを減らすことができました。また、事前に見てもらうことでレビュアーの負荷を下げることもできました。
descriptionでタスクの流れを書いておく
プルリクを細分化する関係上、descriptionを書く手間が増えます。レビュアーの負荷と自分の手間の間を取った結果、自分はよくこのフォーマットを使っています。
タスク1
↓
タスク2 ←イマココ
↓
タスク3
レビュー後のリードタイムを短縮する
基本的には、ファインディのエンジニアはレビュー依頼からレビューまでが爆速です。しかし、入社当初は自分がレビューを受けてから再レビュー依頼をするまでに時間がかかっていました。そのため、レビューされたときに別のプルリクで作業をしていたとしても、レビューへの対応を優先するようにしました。
また、プルリクをすぐにマージする必要がなかったとしても、レビュアーのカレンダーの予定を見てレビュー依頼を個別でメンションするようにしました。
ファインディでは爆速レビューis正義の価値観があるので、圧はあまりない……はず。
プロジェクトベースで振り返る
この1年で、主に以下のプロジェクトに関わりました。どれもTeam+の根幹の機能で、アーキテクチャの理解が深まりました。また、後半はプロジェクトのリードに挑戦できました。
- プルリクのレビューロジックの変更
- 多言語化対応のバックエンド全般とフロントエンド少し
- GitHub連携をOAuth AppからGitHub Appに移行
- Bitbucket Cloud連携のバックエンド
振り返ってみると、この1年は連携処理をメインで開発していたようです。
プロジェクトの中で、サービスに応じてどういうアーキテクチャにするかだとか、既存の設計だと無理がある箇所なども改修しつつ進められています。設計をどうするか考えるのは自分も好きなので、そういったことを任せていただき、壁打ちや相談させてもらえるのがとてもいい経験になりました。そして、すでに若干設計のつらみを感じています。これを次に活かすのだ……。
また、プロジェクトの進め方についても学びがありました。Team+では、大きめの開発は、PdMが企画を行う→エンジニアとすり合わせつつ仕様をまとめる→開発→QA→リリースという流れになっています。
そのため、調査段階からPdMと認識のすり合わせを行いつつ、開発着手後に出てきた懸念点などは適宜PdMに共有するようにしました。また、QAでも開発者QAとQAチームによるQAをどう担当していくかなどを調整するようにしました。結果として、それぞれのプロジェクトに反省点はあるものの、都度リカバリーできるような開発体制にはできました。
イベント参加
特に記憶に残っているのは以下のイベントです。今までは小規模のオフラインイベントに入ったことがあるものの、大規模なカンファレンスには参加したことがなかったです。
ファインディでは、エンジニア系イベントへのスポンサーや積極的に自社イベントを開催しているので、運営を手伝いつつ参加する機会やLTなど登壇させていただく機会を得やすいです。
RubyKaigi 2023
RubyKaigiはずっと気になっていたのですが、有給を取るのはハードルが高く、2023年に初めて参加しました。思っていたよりも技術的なハードルは低く、わからないとわかるの間を楽しめました。また、カンファレンス中のイベントも多く、たくさん交流ができたのが貴重な経験となりました。2024も行くので、出会った方はよろしくお願いします。
また、After RubyKaigiで初めてのLTをしました。初参加のパッションでやりましたが、次回は技術的なことを試してみた、みたいなのをやりたいです。
開発生産性カンファレンス
2023年、ファインディでは2回の開発生産性カンファレンスを主催しました。私はTeam+を開発しているのもあり、ドメイン理解を深めるために参加しました。特に役割もなく、一参加者として楽しませていただきました。
dev-productivity-con.findy-code.io
こちらのカンファレンスは、開発生産性に関する理論的なセッションが多かったです。書籍などでなんとなく頭にあることがつながったり、今まで友人のエンジニアに聞かれたことについての転換的な話もあり、「そういう考え方があるのか」と気付きを得たりしました。
特に、SLIを決めることで許容可能な不具合の量(エラーバジェット)が決まるので、それは通常の運用の障害ダウンタイムとして使ってもいいし、挑戦的な取り組みによってのダウンタイムとして使ってもいいという考え方が目から鱗でした。
こちらのイベントでは、具体的な取り組みを中心に聞きました。全社的に文化を根付かせるためにどうするか、といった啓蒙活動の取り組みが印象に残っています。
経営層・ビジネス部門への理解促進を促し、ステークホルダーを巻き込みつつ成果を出して価値を示すことを積み重ねていました。取り組みを泥臭くやっていくしかない中で、Team+は成果・価値を示すためのツールとして使われていることを感じました。
その他オフラインイベント
ファインディ主催のイベントを中心に、さまざまなオフラインイベントに参加しました。ホームなので安心感があり、気軽に行きやすかったです。
オフラインイベントのいいところは、オンラインでは話しづらい内容を聞けることと後半の交流だと思っています。イベントを通して、いろんなエンジニアの方と話すことができました。その中では、Team+を使っているエンジニアの方もおり、生の声を聞けたのがよかったです。機能の要望だったり、Team+への感謝などをいただけて、日頃の開発のモチベーションになりました。
1年で変わったこと
組織の拡大
入社時は社員数も120人くらいでしたが、現在は200人を超えました。エンジニアも増えて、今年からTeam+のエンジニアは2チーム体制になりました。チーム編成としては、外部サービス連携に注力するチームとその他の機能を開発するチームです。
また、Bizサイドの人数が増えていくに従って事業全体の勢いを感じています。メンバーがどんどん入社し、爆速オンボーディングですぐに立ち上がっていて本当に尊敬です。
そして、自分が作っているプロダクトの価値をたくさんの人に知ってもらえているのが純粋に嬉しいです。
組織の拡大に伴って課題も生まれた
単純に人数も増え、開発チームとしてできることも増えました。その中で、チームの構成や、プロジェクトの進め方については手探りの状態です。
現在、チームリーダーを中心に、いろんなやり方を試しつつよさそうなやり方を探っています。改善サイクルを回していきながら、その時々に適したチーム・開発体制で進めていけるようにしたいです。そのためにも、自分の視点からもたくさんアイデアを出していきたいです。
その他には、以下のような課題も出てきました。これは現在時間を取って対応しているところです。
- Bizサイドの増加に伴い、エンジニアへのプロダクトに対する技術的な質問が増加
- ドキュメントの不足 / 更新されてない
1年で変わらないこと
根本的な社風は変わっていないです。
前向き・誠実・チームワーク・スピード・No.1のバリュー通り、自分自身がやりたいと言ったことはどんどんチャレンジさせてもらえています。
- 他のメンバーにサポートしていただきながら、GitHub App, Bitbucket連携をリードできた
- 自分主導で連携周りの設計の刷新やGitHub ActionsによるOps改善にチャレンジできた
- 「ISUCONに出てみたい」と1on1で言ってみたところ、社内の有志チームで出場できた(レポ記事)
今後の1年に向けて
基本的には、爆速開発しながらプロダクトを成長させるのが一番の目標です。そのためにも、自分自身も成長したいと思っています。
自分ができる幅を広げていきたい
これは技術についてもそうだし、技術以外についてもです。ありがたいことに新しいことに挑戦することを歓迎されている組織なので、さまざまな挑戦をしていきたいです。技術的には、設計周りの引き出しを増やすこと、インフラやフロントエンドのタスクをもっとこなせるようになるのを目標にしています。
組織の拡大に伴って生まれてきた課題の解消もやりたい
開発生産性を高めるプロダクトを作っているからこそ、うちのチームは生産性が高いぞ!と胸を張って言える状態でいたいです。
他のメンバーはメインのプロジェクトを進めつつ課題解消の取り組みもしているので、自分もそんな風に動けるようになるのが目標です。現状は、プロジェクトがあるとそっちでいっぱいになっているのでさらなるレベルアップを目指します。
発信も頑張りたい
自分がやったことやそのときに考えたことを残しておきたい気持ちがあります。結果として、ファインディのことを知ってもらうことにもつながるので、三方Winにしたいです。
この記事もそうですが、テックブログを活用していろいろなことを発信していけたらいいなと思っています。なので、こんなことが気になるといったものがあればご意見いただけるとありがたいです。
最後に
現在、ファインディでは一緒に働くメンバーを募集中です!
興味を持った方は、ぜひカジュアル面談で話を聞きに来てください!
採用情報はこちら↓