ハロー、@seto_hi です。
バタバタしているうちに、DMM社に入社して4.5ヶ月経っていたのでまとめます。
何の仕事をしているか
CTO室の事業支援チームに所属し、事業の支援をしています。
支援先はDMMブックスというアプリで、電子書籍のビューワーです。
それなりに歴史があるアプリなのですが、途中でアプリ開発の歴史がぱったり切れていた時期があり、ほぼ無の状態だったAndroidチームを軌道に乗せることを任されています。
支援先のチームにがっつりと入り、勤務時間の95%くらいは支援先のチームの仕事をしています。
Androidチームのリーダーというポジションで、チームメンバーのマネージメントも任されています(かなり薄いですが)。
チームも立て直しつつ、プロダクトとしても発展させるために色々と行動しています。
アプリの改善点を洗い出したり、アプリの今後の方向性を考えたり、チーム内Android勉強会をやったり、チームとプロダクトのために何でもやるという感じです。
コードを書くのは最近は業務時間の20~30%くらいです。
ノハナ時代に手広くやっていたことがここで生きていて、伏線を回収している気がします(?)。
リファクタリング
チーム改善プロダクト改善と一緒にリファクタリングも進めており、いかに安全にリファクタリングをできるかという点を重視しています。
アプリの仕様についてはチームで誰も知らないことも多く、できるだけ動作を変更せずに実装を修正しています。
リファクタリングの手順は完全にドキュメント化し、誰が修正をしても同じコードになることを目指しています。
ちなみに元々のアプリの構成はなかなか荒々しさがあり、自分が初めてコードを見た際にはVolleyが入っていたり、サブスレッドがThread+HandlerとかAsyncTaskとかRxとか乱立していたり(しかも今はCoroutineも導入した)、Java率100%だったりしました(今は数%)。やりがいしかないです。
弊社には推奨アーキテクチャというものがあり、それを目指してひたすら手を動かしています。MVVM+CleanArchitectureの一般的なAndroidの設計です。
各種AACライブラリやDaggerやMulti moduleといったあたりもふんだんに使っており、モダンな設計になっていると思います。
テストも0だったのですが、リファクタリングする度にテストを書いて少しずつ増えてきました。UIテストも少しずつやっています。
チームメンバーもテストを書くのが当たり前になってきていて良い空気です。たまにテストを書くのをサボると怒られます。
このあたりではSWETでの経験が生きています。
ペアプロ
手順の細かい部分を伝えるためにペアプロを導入しています。
手順を説明しながらコードを書いた後に、コードを書いてもらうことにしています。
教えただけで覚えてくれるなんてことはなかなかないので、実際にコードを書かせることを意識しています。
「やってみせ、言って聞かせて、させてみせ、ほめてやらねば、人は動かじ」という言葉に近いことかなと思っています。
この仕組みはかなりうまく動いていると思っていて、自分が手を動かさなくても勝手にリファクタリングが進む状態になっていきています。
難しいところ
自分はずっと今のチームにいる訳ではなく、できるだけ早くチームを立て直してチームを離れることが仕事です。
自分の仕事を無くすことが仕事なので、複雑な気持ちがあります。
チームを改善するには仕組みを作ってチームを底上げする必要があり、コーディングとは違った頭を使います。
底上げの成果はなかなか分かりにくく、結果が欲しくなることがありますが強い気持ちで地道にこつこつと働いています。
最後に
We are hiring!
dmm-corp.comこんな感じのポジションになります。
瀬戸と一緒にチームとプロダクトとコードを直しませんか?
お気軽に連絡をいただければと思っています。
以上!