目指したいエンジニア組織文化とそれをどのように作ろうとしているか
こんにちは、Sansan株式会社 技術本部Strategic Products Engineering Unit Contract One Devグループの山邊です。私は2020年にSansanに新卒(高専中退)で入社し、インボイス管理サービス「Bill One」の開発に約3年間携わってきました。その後、「Order One」を経て、現在は契約データベース「Contract One」の開発に取り組んでいます。
私はエンジニア組織の文化について考えることが好きで、良い文化があればチーム全体として成長し、素晴らしいプロダクトを作れると信じています。
今回は私が思う「良いエンジニア組織文化」とそれをメンバーとしてボトムアップで浸透・醸成していくために何をしているかを書きたいと思います。
組織文化を醸成するためにはまず「浸透」から
組織文化は一人では作れません。誰か一人が「これが良い」と思っても、それがチーム全体に受け入れられるわけではありませんし、メンバー間で価値観がすり合わせられる中で、互いの価値観がアップデートされ、形作られていくものだと考えています。
そのためには個人の価値観を相互に知っておく必要があります。
しかし、文化を言葉だけで伝えることは難しいため、行動で示すことが非常に重要だと感じています。
浸透のためにしていること
良いと思うことを体現し、コミュニケーションする
まずは、自分が良いと思う行動をひたすら実行するようにしています。行動に移すことで、言葉で伝えるよりも簡単に価値観を伝えられます。
また、その行動を他のメンバーに分かりやすく共有することも大事にしています。例えばSlackに投稿したり、振り返りの場で話題に挙げるなどしています。ほぼ自慢ですね。
共有するときは、単に「自分がこれをやった」という結果を伝えるのではなく、「なぜそれをやったのか」「どのような意図があったのか」という背景も含めて共有しています。それを発端にコミュニケーションを取り、より深ぼって価値観を伝えるように心がけています。もちろんその過程で他の人の価値観を知ることもできます。
単に行動だけにとどめず、コミュニケーションをしっかりと行うことで、互いに深く理解し合い、自然と文化が浸透していくと思っています。
他の人を称賛する
次に、他のメンバーが良い(と思う)行動をしたときは、それを積極的に称賛することを大切にしています。称賛は、努力を認めるだけでなく、その行動が「良いものである」というメッセージを周囲に伝えることができます。これにより、良い行動がより多くの人に伝わり、結果的に組織全体の文化が浸透していきます。
Sansanでは「Unipos」というサービスを導入しており、このサービスを通じてメンバー間で感謝や称賛の気持ちを表現することができます。例えば、良い行動をしたメンバーに対してUniposを送ることで、全社員がその行動を知ることができますし、受け取った人はちょっとした報酬を得ることができます。(参考記事:https://www.zaikai.jp/articles/detail/1217/1/1/1)
投稿した内容をSlackでも共有するようにしています(UniposのSlackアプリを使うと自動で投稿してくれます)。これにより、私がどんな行動を「良い」と捉えているかを共有することができます。これによってメンバー同士が互いの良い部分を認め合いながら文化的視点を共有できると思います。
大事にしたい文化
ここからは私が個人的に思う大事にしたい文化と具体的な行動を紹介します。
私の文化的視点の基礎は初期のBill Oneの文化を作った大西の価値観に影響を強く受け、そこから自分なりにアップデートしてきたものになります。
(参考記事:Bill Oneのエンジニア組織の目指す文化について)
相談を重ねて、自らが最終判断をする
意思決定を各メンバーが行うこと、行えるようにすることが重要だと思います。これはチームとしてのスピード感を持ちながら、各メンバーが主体的に行動するために重要な要素です。もちろん、全てを個人で決めるというわけではなく、チームに相談し、必要な情報を集めることを前提にしています。
特に、可逆性のある判断については個人で決められると思います。たとえ結果が良くなかったとしても、後から修正ができるからです。個人で意思決定することによってスピーディに物事を進められますし、個人の意思決定の精度が高まれば、チームとしての意思決定の精度も向上するでしょう。
一方で重要度の高い、不可逆でリスクのある判断については、然るべき人に判断を委ねる必要があります。
実際の例
コードレビューでは致命的でない限り実装者本人に任せるようにコメントしてます。任せるときは明確に伝えるように心がけています。 特に最近では [should (変更してほしい)] [imo (私はこう思う)] [tweet (修正の必要はない程度)]のようなラベルをコメントの最初につける事が増えてきています。これによって同じコメントでも温度感を正しく伝え、最終判断を実装者に任せやすくなります。
実装の方針は大枠はチーム全員で検討しています。その後の部分は実装者が意思決定をしています。その際に他のメンバーに意見を求め、他のメンバーは意見を伝えるようにしています。(画像1)
アウトプットを大切にする
個人の知識、学び、経験や成果をチーム内外に共有することを大切にしたいと思っています。アウトプットすることによって個人の知識や学びがチームの知識や学びにつながり、チームの成長を促進します。個人にとっても嬉しいことがあります。メンバーの中により詳しい人がいれば、より深く教えてもらえる機会が増えるのです。
チーム外に共有するとチームについて知ってもらうきっかけになります。知ってもらうことで採用力を高めることにつながり、チームに新しい人を迎えることができるようになります。
実際の例
チームとしての学びを蓄積できるSlackチャンネルがあります。小さな気づきもそこに投稿するようにしています。(画像2)
Sansanの技術ブログがあり、そこに寄稿しています。
Sansan Tech Blog(Strategic Products Engineering Unit)社内のエンジニアによるLT会への参加も推奨しています。毎回1人くらいは所属する部署から登壇してくれています。(画像3)
部署内で技術や知見を共有する場が最近できました。まだ始まったばかりですが、隔週持ち回りで技術知見を共有するようにしています。
小さな行動はすぐにやる
仕事をしていると、「こうした方が良さそう」と思うことがたくさんあります。全てを改善するのは難しいですが、その中にはすぐにできそうな小さなことがあるはずです。そういった小さな改善を重ねていくことで、仕事の効率を少しずつ上げていけるはずです。もちろん快適に仕事ができるようにもなります。
実際の例
CI/CDと呼ばれる自動化された仕組みをより早く出来ないかという課題がありました。時間がかかるものからすぐに出来そうなものまで解決のための色々なアプローチがあります。その日オフィスに出社していた何人かで何が出来そうか雑談している中で、使っているマシンの選択肢が最近増えたと知りました。(エンジニア向け:Github Actionsで Arm64が使えるようになった話です)その足ですぐにマネージャの元へ行き(設定の権限をマネージャが持っていたため)すぐに技術検証を行いました。*結果としては早くなりませんでした。もちろんチューニングすれば早くなるかもですが、それには時間がかかるので実施していません。
スタイルガイド(コードの書き方のガイドライン)があるのですが、更新を忘れられていたり、より良い書き方があったりします。変更自体は簡単にできるのですが、忘れがちです。そんな中、スタイルガイドを修正しているメンバーがいたので、Uniposを送りました。(画像4)
枠にとらわれない
エンジニアとしての枠にとらわれず、幅広い視点からプロダクトに関わることも重要だと思っています。エンジニアの仕事はコードを書くことがメインです。そのほかにも設計、運用は多くの人がやっていると思います。そのほかにもプロダクト企画、ユーザー体験の設計、フィードバックの収集や営業活動など幅広く関わる方が普段の開発の解像度が一段上がると思っています。
もちろん、各分野にはプロフェッショナルがいるので、その方に任せるべきところは任せます。その上で、エンジニアでもできることは率先してやっていく方が開発速度の向上やプロダクトの品質向上につながると思います。
実際の例
プロダクトについて考える「プロダクト企画会議」があり、エンジニアも参加しています。詳しくは中川の記事で触れられているのでそちらを読んでいただければと思います。
(参考記事:開発マネジャーが語るContract One開発の魅力)展示会というプロダクトを紹介するイベントにエンジニアも行ってきました。私がCOにJoinする前にも行ったとのことで、それに勇気をもらって同じエンジニアの井上とマネージャーの中川と行ってきました。(画像5)
互いの成長を支援し合いながらチームで成長する
個々の成長を支援し合いながら、チーム全体として成長することも大切にしたいです。メンバーそれぞれが持つ強みや弱みを理解し合い、お互いの成長をサポートし合うことで、チーム全体がより強く、しなやかに成長していくことが可能です。
そのためには、メンバーが互いに自己開示し、「何をやりたいのか」「将来どうなりたいのか」を知る必要があります。その上で学びになりそうな本を提案したり、時には背中を押すことで成長を促していきたいと思います。
実際の例
メンバー全員が四半期ごとに目標をたて、それをチーム内で共有しています。お互いの興味関心、やりたい事を知っておく事でタスクのアサインなどを適切にすることができます。
チームの中で「こうした方がいいかも?」という話が何度か上がっていました。私もその意見に賛同していたので、それを組織として統一したいと思いました。そこでその方の背中を押して進めてもらうことにしました。(画像6)
成長のためになりそうな本や記事を紹介することも多いです。自分が参考になった記事を共有している人もいます。(画像7)
まとめ
組織文化は、一人で作るものではなく、チーム全体で作り上げていくものです。私は、良いと思う行動を率先して実践し、それを共有し、他のメンバーを称賛し、文化を少しずつ浸透させていくことを心がけています。また、他者を支援し合いながら、それぞれが個々の成長に責任を持つことで、チーム全体としてより強固な文化を育てることができます。
エンジニアとして、そしてチームの一員として、互いに成長し合える文化を作り上げることが、最終的にはより良いプロダクトを生み出すための強固な土台となります。これからも、チーム全体で良い文化を育てていきながら、素晴らしいプロダクトを世の中に提供していきたいと考えています。
採用情報
Sansan株式会社では、ContractOneをはじめとしたプロダクト開発に一緒に取り組んでくれる仲間を募集しています。文化を育てながら、世の中に新しい価値を提供していきたい方は、ぜひ採用情報をご確認ください。一緒に未来を作りましょう!