新卒AndroidエンジニアがAndroidのチームリーダーをやった話

この記事は「DMMグループ Advent Calendar 2019」の7日目の記事です。

qiita.com

今年新卒でDMMに入社いたしましたスルメです。
僕は今新規事業系の部署に配属となり四ヶ月くらいが経ちました。
現在AQUIZっていうアプリを作ってます。

aquiz.jp

自分がチームに対して何を思ってどう行動したか時系列順に書いていきます。

  • 初期リリース
  • 大型アップデート
  • その後
  • これから

チームリーダーになった経緯

チームリーダーになった経緯を軽く説明します。
もともと自分が配属になったチームは、横断支援チーム的な人にがっつり依存して開発されていました。そのため事業部としてはそことの依存を切って事業部の人にチームリーダーをやって欲しいという意図があり自分がやることになりました。実は配属2日目に「チームリーダーをやって欲しい」と言われて当時は戸惑いしかなかったですが、「挑戦するだけするか」的な精神で取り合えず承諾しました。経緯も何もないですねw

ちなみに弊社はDMM.ESSENCEというのを掲げています。

inside.dmm.com

特に

  • 本気の失敗を肯定する
  • 好奇心を忘れない

あたりを意識した挑戦になったので、良い挑戦だなと思いました。

初期リリース

先ほども言った通り、もともと自分が配属になったチームは横断支援チーム的な人にがっつり依存して開発されていました。そのためこのフェーズに関しては新規実装を支援部隊の方に任せてコードの理解や細かいバグ修正などをメインに行っていました。さらにiOS版がAndroidリリース予定日より一カ月早くリリースしているので現行のiOS版が初期リリースから先行して実装してある機能も並列で実装する必要がでてそこら辺の実装なんかも担当したりしました。
このフェーズは自分の実装担当のほかに(横断支援チーム含む)チーム全体のタスク管理、テストケースの作成、申請周りなどなどやることが多く一番忙しかったです。
この段階だと正直チームの成熟度などはわからないため個々のチームメンバーの力を見ると同時にリリース最優先で動いたため、特にこれといった行動はしてないです。

大型アップデート

初期リリースが終わり一段落かと思ったらそうでもなくて、次の大型アップデートの準備が始まってました。支援部隊の方も初期リリース後は極力関わらないようになり、初期リリースという一つの山を超えたので自分が最低限必要だなと感じたものだけ作りました。

  • PRのテンプレート
  • issueのテンプレート
  • branch運用

あたりです。
開発方針やフローに関しては支援部隊の人が既に作ってくれていたので、自分が初期リリースで足りないと感じていたPR, issueのテンプレ作成を行いました。まだ自分含めて開発メンバーが未熟なのでテンプレを作っておかないと記述漏れが発生することが多々あったためです。実際ここら辺がテンプレ化することで記述漏れはなくなりスムーズにレビューができたりできました。特によかったのはセルフレビューという文化です。もともと支援部隊の人が入れてくれていた文化なのですが、自分で再度読み直すことで単純なミスコードがなくなり指摘箇所が減るのでコストが減ります。概要はこんな感じです。

f:id:slme9364:20191203100141p:plain

どの項目もPR出す前に当たり前にやっていないといけないことですが急いでたりすると忘れてしまうこともあるのでPRのテンプレに入れておくには良い文化だなと思いました。

issueのテンプレに関しては「どのPBIと関連しているか」や「解決策はどんな感じか」、「アラートライン」などをテンプレートとして提供しています。各々が未熟なのでここら辺を明示することで「なにも声があがらない」といった問題に対処しやすくなります。
プログラミングをする前に徹底的に考えてから実装する」といった文化が根付いてないのもあるので解決策をこの段階からある程度提示してもらうようにもしています。

ただこれらのテンプレ作成などは、所詮自分の暗黙知を表出化させて形式知に変えただけです。

f:id:slme9364:20191203100800p:plain

大型アップデートを終えて、そしてこれから

大型アップデートを終えて

大型アップデートを終えて上記の文化はチームに馴染み色々と改善していきました。この大型アップデートを通してチーム全体の成熟度を把握したので次は「最低限守って欲しいルール」を作りました。ただここら辺のルールは本当に最低限のことしか書いてないので今後チームに合わせてどのレベルまでルール化していくかは検討中です。

これから

僕自身はチームに一番必要なのはルールや文化だと思っています。
先ほど言った通り、まだ自分は最低限守って欲しいことしかルール化してないです。 なのでここから、チームがもっと良くなるためには、あるいは各々の力を最大化していくためにはどうしていけば良いかを考えていかなくてはなりません。
そこで恩恵があるのが新卒やインターン生です。ここの層はあまり特定の会社に染まってなくて色んな会社を見ていることもあり思考も新鮮なので鋭い疑問を投げかけてくれます。 実際、弊Androidチームではインターン生が投げてくれた疑問から新しく文化として定着したものもあります。ライブラリのアップデート自動検知であったり、実装に関する別アプローチの提案だったり色々あります。こういった疑問をちゃんと受け止めてパワーを持ってる人が検討するのが一番健全です。

まとめに入りますが、今回自分はAndroidチームリーダーをやって学んだことは色々あります。
そもそもAndroidでちゃんと開発するのは初めてなのでマルチモジュールやDagger、Androidチーム開発も学びになりましたし、Android以外にもAPI設計やデザインレビューもあるのでそういったところも勉強する良いきっかけになりました。また今までこういったチーム開発もはじめてなので、スコープが大きくなって取り組むことも変わってきたのも一つの変化ですね。

まだまだ未熟なところがありますが、これからも頑張っていきたいです。

参考リンク

以下自分が色々と参考になったリンク集です

プログラミングの前に、徹底的に考えよう - ボクココ

Google エンジニアリング・プラクティス ドキュメント | eng-practices