構造化・数理最適化・ソフトウェア、 3人のAIエンジニアが試してわかった「チーム制」の未来とは。
こんにちは、エクサウィザーズで機械学習エンジニア(以下:MLE)をしている小野です。
今回、構造化データ処理ギルドの私、数理最適化ギルドの河野さん、ソフトウェアエンジニア(以下:SWE)のKhajaさんの3名で「MLEのチーム制」をテスト的に導入したので、その取り組みについてご紹介したいと思います。
エンジニアにとって「チームで働くこと」とは当たり前!?
「チームで働く」というテーマを見て、「なぜ当たり前の事を」と思った方もいらっしゃるのではないでしょうか。特に、企業のビジネスサイドで働く方にとって、チームで仕事をすることは当然と考える方が多いと思います。
しかし、エンジニアの世界、特にMLEは1つの案件に1名がアサインされることも多く、エクサウィザーズでも、これまではビジネス担当者とMLEの二人三脚で案件を担当することが基本でした。ただし、この体制では、プロジェクトの質・開発速度はMLE個人の能力・努力に依存してしまいます。
そこで、MLEの相互補助と育成を目指しデータドメイン、技術領域ごとに緩い組織化をした「ギルド制」を導入したのが、少し前のことです。ギルド内でレビューチェックなどを行うことで、個人の責任や心理的不安を取り除くことや、プロジェクトのクオリティ担保を可能としました。
一方で、ギルド制では大きな枠組みでアルゴリズムをチェックできても、再利用性を踏まえたロジックやコードの詳細なチェックまではできません。
プロジェクトの質や速度をさらに上げるためには、よりシステマティックな解決策が必要だと感じていました。ちょうどその頃、1人では担い切れない大きなプロジェクトに直面し、手伝ってくれていたメンバーとイレギュラーで「チーム」結成に至りました。
全員オーナーシップで、個々の能力を発揮できる仕事を作る
我々のチームは、個人ではできない、個々の能力を最大限発揮することで開発できるエクサウィザーズならではのプロダクトを生み出すことに重点を置き、「3名のメンバー」と「MLEとSWEの混合チーム」にこだわりました。
チームは「ノンリーダー制」を取り入れ、自発的なオーナーシップの育成を目指しています。「どんな案件・プロダクトに関わりたいか」という意思決定をはじめ、チームとしての目標やOKR設定もチーム全員で行います。
MLEの仕事は直列的な業務が多く、データ解析など、顧客のデータを深く理解する必要があるフェーズでは、複数人でプロジェクトを回すことが非効率になる場合もあります。
そのため、例えば探索的データ解析は主担当が1人で実施し、アルゴリズム検討段階では複数のアルゴリズムを全員で試すなど、業務で何を並列化できるかを常に考えています。また、主担当ではないプロジェクトの打合せにも必ず参加することで、全員が主担当と同じレベルでプロジェクトを理解することを大切にしています。
チームは家族、ギルドは祖父母。チーム制で生まれた5つの変化
チーム制を導入して様々な気づきを得ましたが、特に大きな5つ変化を紹介します。
1、親密な関係性の構築により、心理的負担が軽減
一番良かったことは、業務負担の軽減だけでなく心理的負担の軽減により、個々の能力を存分に発揮できたことです。
これまで1人で1案件を担うことが多かったため、仕事で壁にぶつかったとき、細かな相談や悩みを共有できる相手が少なく、1人で抱えることも少なくありませんでした。
しかし、今回はチームで同じ案件に取り組むことができました。悩みに共感し、細かなロジックなど相談しながら進められる仲間がいるということが、これまでにない大きな支えとなりました。これは私だけでなく、河野さんやインドに長期滞在していたKhajaさんも同様で、チーム制で親密な関係を築けたから言えることだと嬉しく思っています。
関係性を例えるなら、チームは家族、ギルドは祖父母の距離感といったところでしょうか。定例ミーティングを例にあげると、ギルドは週1実施に対してチームは2日に1回実施していたので、チーム外のメンバーよりも早く腹を割って話せる関係性になるなど、チーム制はメンバーの心理的距離を近づけることに役立ちました。
2、プロジェクトの成功確率が高まる
2つめに、複数人で個々の突出した能力を補い合うことによって、プロジェクトを成功させやすいことです。
特に、MLプロジェクトの難解な特徴として、開始前は輪郭が曖昧でアサインが難しいことや、開始後にプロジェクトの形が変わることがあります。今回のチームでは、求められるレベルが個人の能力を超えた場合でも、3人の能力を補い合うことで臨機応変な対応が可能になり、結果、個人で対応するよりも早く、確実にプロジェクトを成功に導くことができました。
3、新たな気づきや技術を獲得
3つめは、自分の通常業務だけでは触れられない体験、新しい気づきや技術を獲得できたことです。特に、サービスのデプロイメントなどのSWEの領域は、MLEとして非常に有用な経験になりました。今後、プロジェクトの品質を担保しながらスピーディに実現することにつながると感じています。
4、エンジニア間連携の強化
4つめは、エンジニア間の横連携を強化できることです。
ギルド制導入前は案件を一人で対応することも多く、他プロジェクトのレビューを行う機会も少なかったため、同じオフィスで仕事をしていても、隣の人が何をやっているのか知らないことも多かったです。しかし、チームで仕事をすることで、自分の所属するギルド以外の人がどんな仕事をどんな風にしているかを知ることができ、その情報共有が標準技術作りにもつながると感じました。
他にも、ライブラリの選定に役立ったり、「あの人と一緒にこんな仕事ができそう」といった自発的なコラボレーションが生み出されるきっかけにもなると感じています。
実際に、今回のチームでアイデアを出し、「エンジニアが使いたくなる情報共有ツール」を開発しました。このnoteを公開する頃には社内実装できているはずです!
(イメージ:社内のプログラミング言語割合)
5、チャレンジ時間の創出
そして最後は、チームとしてミッションを持つことで、個人として新たなチャレンジに取り組む時間を創出できたことです。
その隙間時間を使って新たなアイデアを提案・実装したり、個人学習として、例えばKaggleや競技プログラミングにチャレンジするなどスキルアップに時間を使うことができます。結果、チャレンジの芽がたくさん積み上がることで、会社としても新しい社会実装につながる開発を生み出せるのではないでしょうか。
私たちが考える「チーム制の未来」
今回は3名チーム・ノンリーダー制でしたが、今後に向けて、主担当がプロジェクトをリードする「リーダー交代制」や、チーム人数を増員した大きなプロジェクトの取り組みなどを検証し、「この案件にはチーム制を導入すべき、どのチーム制度を採用すべきか」の判断基準を構築できるように展開していきたいと考えています。
また、今回のチーム運営においては、「意見しやすく実行しやすいチームづくり」を特に意識していましたが、最終的にはリーディングスキルに依存しないチーミングシステムを今後つくっていきたいと考えています。
その際チームに求められるのは、「個人の専門性」と「コミュニケーション力」です。この人にこの分野を任せたら必ず期待以上に仕上げてくれるという「専門技術」が明確であるとチーム編成を行いやすいです。
また、チーム運営には論理的かつ建設的なコミュニケーションは欠かせません。人を責める意見ではなく、どうしたらより良い方向に向かうか建設的な意見を言い合える関係性を構築できるチーム作りこそ、リーディングに必要なスキルセットではないでしょうか。
今回、チームでいくつかのプロジェクトを経験し、「個人ではできない大きな案件を、個々の能力を最大限発揮することで品質を担保しながらスピーディに開発し、エクサウィザーズならではのプロダクトを生み出すこと」には大きな可能性を感じています。
その一方で、「チーム制」が全ての答えではないと思うのです。すべてのギルドにチーム制を広げていくことを目標とするのではなく、1人1人がやりたいことを実現できる職場環境づくりを目指して「ギルド制」「チーム制」などを上手く活用していきたいと思っています。
会社を一つの「実験」の場と考えるマインドを全社員が持っている、そんなエクサウィザーズを目指していきたいです。