@ledsun blog

Hのキーがhellで、Sのキーがslaveだ、と彼は思った。そしてYのキーがyouだ。

チーム開発で気をつけていること

この日記は同僚が読んでいないことを前提に書いています。もし読んでしまった同僚の方は絶対に感想を伝えないでください。

日に二度のオンラインミーティング

4月に在宅勤務が始まって以降、一日2回zoomを使って開発チームでオンラインミーティングをしています。 そこではチームメンバーが担当するタスクを話しています。

いわゆる朝会に近いです。 ただし、時間を区切った朝会と違い、目指す仕様や実装方法に疑問があるときはその場で相談しています。 ですので、一回のミーティング時間は15分〜1時間半までバラツキがあります。

その間、相談してないメンバーもミーティングに参加しています。 これが良いのか悪いのかは判断がついていません。 よくある朝会の手引では、「会は一定時間で打ち切り、個別の相談事はあとで行う」を勧めていると思います。 反しています。 3人チームなので、無駄にする時間がx1でレバレッジが効いていないので、そのままにしています。 人数が増えたら、考えるかもしれません。

オンラインミーティングは、退席すると「どんなことを話しているのか」わからなくなることを懸念しています。 オンサイトであれば、会議に参加していなくても、「ずいぶん長いこと話しているな」レベルのフィードバックが得られます。 オンラインでは何もわかりません。結論をチャットで共有してもいいのですが、それはそれで手間です。

「チームでお仕事をしている感」の演出になればと思っています。 チームメンバー間で、勝手にオンラインミーティングで相談し合うなら気にしなくてもいいのかもしれません。 それはそれで、問題が速く解決する方法なのか、という問題があるかもしれません。

日に二回のオンラインミーティングで、詰まっている点を確認して都度解決しています。 質問で割り込まれることはほとんどありません。 在宅勤務作法の教育上は、よくないかもしれません。 いまのところは、そこまで先は考えていません。

オンラインミーティングで決めていること

オンラインミーティング中に、次のことを決めています。

  1. おおまかな実装方針
  2. MergeRequest(いまGitlabを使っています)を作成するまでの目標タイム
  3. 画面の見た目

目標タイム

タスクのざっくりした実装方針を決めています。 が、大抵は仕様を見落としています。

最近、大きすぎるタスクを振って、大きなMergeRequestをレビューするはめになりました。 自業自得です。 一番の要因は、仕様を見落としていました。 大きなタスクであることに気がつかなかったのです。

目標タイムを設定するようにしました。 原則、当日中にMergeRequestを出せるようにタスクを調整します。 ちょっと無理そうな場合は、なるべくタスクを分割します。 ストーリーの単位より小さくわけます。 例えば、編集画面が大きすぎれば「編集画面に現在値を表示するまで」と「値を更新する処理」にわけます。

見た目

新規の画面では、見た目を相談することもあります。 オンラインミーティングで画面共有して確認しています。 あるいはスクリーンショットをとって、加工してコミュニケーションを取ることもあります。

話していないこと

逆に話していないのは、ソースコードの細かい実装方針です。 既存コードの追い方がわからない場合は、一緒に見ています。 既存コードの真似して書ける部分は、コピペでもよく、動作が機能を満たしていれば良いです。

ソースコードの細かい指摘は、MergeRequestのレビューで行っています。 共通関数の抽出やスタイルの修正などは、全部MergeRequestで行います。 なるべく理由は説明して指摘するようにしています。

言葉で伝わらなさそうなときは、コメントにソースコードを書きます。 この辺はスラスラ、プログラミングできるスキルがあってよかったと思います。

最初に「動作する」に取り組み、その後で「きれいな」に取り組む

動作するきれいなコード: SeleniumConf Tokyo 2019 基調講演文字起こし+α - t-wadaのブログ

動作確認

機能を動かしてからわかる、妙な動作は、マージ後に確認しています。 1つの開発ブランチに対してチームで開発しています。 開発ブランチですので、ストーリー単位までいく前にどんどんマージします。 マージした開発ブランチを、手元のPCで動かして、意地悪なテストをします。

明確な不具合を見つけたらIssueを作成します。 動かしながら、仕様の理解を深めて、仕様の矛盾点がないか探り出します。 疑問点を洗い出したり、仕様を確認する作業までは一人でやっています。

最終的な決定は、オンラインミーティングで誰かと喋りながらのほうが決めやすい気がします。

スケジュール管理

単純な線形予測では、微妙に遅れています。 見積もりの不確実性コーンをぶっちぎる程は遅れていないので、気にしないようにしています。 内心ビビってますが「教育の投資効果で取り戻せるはず」と、自分に言い聞かせています。 焦ってした雑な仕事が、あとで自分の首をしめるのは目に見えています。