フルリモート環境下のペアプログラミングでチームの開発スピードを維持する工夫 #yjtc / YJTC21 C-6

1.2K Views

January 15, 21

スライド概要

ヤフーでは働く場所がオフィスからオンラインに変わり、従来行っていたペアプログラミングもリモート環境に移行しました。その際に使用しているツールやチーム内でのペアプログラミング手法についてご説明させていただきます。
また、8月にはフルリモート環境下で学生向けのインターンシップを行いました。初対面の人とのリモートペアプログラミングの課題と成果についてお話しします。

Yahoo! JAPAN Tech Conference 2021 は2021年1月22日に開催しました。
https://techconference.yahoo.co.jp/2021/

profile-image

2023年10月からSpeaker Deckに移行しました。最新情報はこちらをご覧ください。 https://speakerdeck.com/lycorptech_jp

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

(ダウンロード不可)

関連スライド

各ページのテキスト
1.

フルリモート環境下のペアプログラミングで チームの開発スピードを維持する工夫 ヤフー株式会社 ヤフオク! 統括本部 PayPayフリマ本部 續橋 涼 ©2021 Yahoo Japan Corporation All rights reserved.

2.

續橋 涼 ヤフオク!統括本部プロダクション1本部 2019年ヤフー新卒入社。 PayPayフリマiOSアプリの開発に加わる。 趣味は個人アプリ開発、これまでにiOSアプリを12 個リリース。 Copyrights 2019 Yahoo Japan Corporation. All Rights Reserved.

3.

このセッションについて • ヤフーでは働く場所がオフィスからオンラインに変わり、従来行っていたペアプログ ラミングもリモート環境に移行しました。その際に使用しているツールやチーム内で のペアプログラミング手法についてご説明させていただきます。 • 8月にはフルリモート環境下で学生向けのインターンシップを行いました。初対面の 人とのリモートペアプログラミングの課題と成果についてお話しします。

4.

アジェンダ 1. ペアプログラミングとは 2. リモートペアプロのやり方 3. 開発スピードを維持する工夫 4. リモートペアプロのメリット 5. 初対面の人とのリモートペアプロ

5.

アジェンダ 1. ペアプログラミングとは 2. リモートペアプロのやり方 3. 開発スピードを維持する工夫 4. リモートペアプロのメリット 5. 初対面の人とのリモートペアプロ

6.

フルリモート環境下のペアプログラミングでチームの開発スピードを維持する工夫 ペアプログラミングとは • 2人のエンジニアが共同で プログラムを書いていく開発スタイル • コーディングだけでなく、設計・調査なども • ナビゲーターとドライバー • テスト駆動開発 • ペアローテーション ペアは毎日入れ替わる

7.

フルリモート環境下のペアプログラミングでチームの開発スピードを維持する工夫 ペアプログラミングとは 〜メリット〜 • メンバー同士での知識の共有 • 知識の属人化を防げる • プロダクトの品質向上 • コードが完成するまでのプロセスを共有 • チーム内の技術力を底上げ

8.

アジェンダ 1. ペアプログラミングとは 2. リモートペアプロのやり方 3. 開発スピードを維持する工夫 4. リモートペアプロのメリット 5. 初対面の人とのリモートペアプロ

9.

フルリモート環境下のペアプログラミングでチームの開発スピードを維持する工夫 リモートペアプロのやり方 • 画面や入力装置の共有ツール「TUPLE」 • https://tuple.app/ • macOSで動作するリモートペアプログラミングアプリ • なぜTUPLEなのか? • 画面、キーボード、マウスの共有ができる • 画質の選択ができる • 開発チームのレスが早い

10.

フルリモート環境下のペアプログラミングでチームの開発スピードを維持する工夫 リモートペアプロのやり方 Max (Ludicrous Mode) ✓ Very high (4K) High (15" Retina) Medium (1080p) Low (720p) タグチームモード ペイント ショートカットの有 効化 ハイライトクリック キーボード 紙吹雪が舞う クリップボートの貼 り付け デュアルカーソル https://docs.tuple.app/article/9-quest

11.

フルリモート環境下のペアプログラミングでチームの開発スピードを維持する工夫 リモートペアプロのやり方 • ペアローテーション • Slackボット • データをgitで管理 • ペアがかぶらないように調整 • 休みの人、ソロの人が選択可能 10:14 @chabot sekigae 席替え 席替えくん アプリ 10:14 くん 1番目のペア: 2番目のペア: 【調査ペア】

12.

アジェンダ 1. ペアプログラミングとは 2. リモートペアプロのやり方 3. 開発スピードを維持する工夫 4. リモートペアプロのメリット 5. 初対面の人とのリモートペアプロ

13.

フルリモート環境下のペアプログラミングでチームの開発スピードを維持する工夫 優先度を徹底的につける • 相手の表情が見えない為、自然と妥協が発生してしてしてしまう可能性がある • 優先度を可視化する • 何事にも優先順位をつけることで、注力すべきタスクに取り組む • 優先度が徹底されているか、常に問い続ける必要がある

14.

フルリモート環境下のペアプログラミングでチームの開発スピードを維持する工夫 相手の環境を理解する 当たり前ですが、自分の環境と相手の環境は異なります! • フォントサイズ • 開発サポートツール • gitのエイリアス • etc..

15.

フルリモート環境下のペアプログラミングでチームの開発スピードを維持する工夫 フォントサイズ • 相手と自分が同じ画面サイズ とは限らない • 文字を大きくして見やすく • 相手に見やすいかどうか意見 をもらう

16.

フルリモート環境下のペアプログラミングでチームの開発スピードを維持する工夫 開発サポートツール • クリップボード管理 • ウィンドウ分割 gitのエイリアス • Makefile • チームで統一したエイリアスを設定 1 git config --global alias.st status 2 git config --global alias.br branch 3 git config --global alias.co checkout 4 git config --global alias.dc duet-commit

17.

フルリモート環境下のペアプログラミングでチームの開発スピードを維持する工夫 ネットワークの影響を考慮する • ネットワークが速くない環境 • 時間帯によって遅くなったりする • tupleの解像度を落とす • ZOOMの画面共有(コミット単位で切り替える) • 無理にペアプロをしない

18.

フルリモート環境下のペアプログラミングでチームの開発スピードを維持する工夫 ペアのスケジュールに合わせて調整をする • オンラインに移行してMTG数が増加 途中でペアプロが中断すると、生産性の低下 • まとまった時間を確保することが生産性の向上につながる • 変更できないスケジュールはいくつかありますが、そうでない部分に対しては ペアのスケジュールに合わせて調整を行う (例:お昼の時間を合わせる、同じ時間帯にMTGが重なるようにする)

19.

フルリモート環境下のペアプログラミングでチームの開発スピードを維持する工夫 考えや感情をより表現する • リモートでは伝わらない動作や表情をペアに適切に伝える必要がある • 少しオーバーなくらいに表現するのが良い • 沈黙も問題ない → 考えいたことを説明する

20.

フルリモート環境下のペアプログラミングでチームの開発スピードを維持する工夫 考えや感情をより表現する • ナビゲーターはちゃんと聞いていることをアピールする必要がある • 相槌を打ったり、レビューを行う • 何か作業を行う際は、ドライバーに伝えてから行うと良い • ドライバーは安心してコーディングに集中できる

21.

フルリモート環境下のペアプログラミングでチームの開発スピードを維持する工夫 ペア以外の人とのコミュニケーションがとりづらい • ペアの人とは会話はいつでもできるが、それ以外の人からしたらコミュニ ケーションがとりづらい • チームの人が常に入っているZOOMの部屋を作る • いつでも声をかけて、ブレイクアウトルームなどで1on1で話す • Slackで一度声をかけるという手間を減らすことができる

22.

フルリモート環境下のペアプログラミングでチームの開発スピードを維持する工夫 休憩を忘れない ペアプロは非常に体力を消耗する ある程度こなすと疲労は軽減するが、休憩は必要 最低でも2時間に一度は休憩を入れる (例:コーヒー休憩、お菓子休憩、トイレ休憩など)

23.

アジェンダ 1. ペアプログラミングとは 2. リモートペアプロのやり方 3. 開発スピードを維持する工夫 4. リモートペアプロのメリット 5. 初対面の人とのリモートペアプロ

24.

フルリモート環境下のペアプログラミングでチームの開発スピードを維持する工夫 リモートペアプロのメリット • 孤独感を感じない 一人でリモートワークをしていると喋る機会がMTGぐらいになってしまう • 隙間時間に雑談をすることもできる • コミュニケーションの量が増え、心理的安全性が高まる

25.

フルリモート環境下のペアプログラミングでチームの開発スピードを維持する工夫 リモートペアプロのメリット • 分担作業がしやすい • 2台のPCを使っている • 1台のPCで作業を行わないので、コードを書く際にうろ覚えな箇所を片方がコードを書 いている間に、もう一方が調べることができる

26.

フルリモート環境下のペアプログラミングでチームの開発スピードを維持する工夫 リモートペアプロのメリット • 長時間労働を防げる - リモートで一人で仕事をしていると時間を忘れて作業してしまう - メリハリがつかない • ペアなら交代のタイミングなどで気分がリセット • 仕事とプライベートの切り替えが曖昧になりにくい!

27.

アジェンダ 1. ペアプログラミングとは 2. リモートペアプロのやり方 3. 開発スピードを維持する工夫 4. リモートペアプロのメリット 5. 初対面の人とのリモートペアプロ

28.

フルリモート環境下のペアプログラミングでチームの開発スピードを維持する工夫 初対面の人とのリモートペアプロ • 夏のインターンシップ • 2週間 インターン生2名 • インターン生のレベルは高くチーム開発の経験あり • 予めペアプロへの理解がある

29.

フルリモート環境下のペアプログラミングでチームの開発スピードを維持する工夫 初対面の人とのペアプロ 〜課題〜 • 業務以外の話の場がない • インターン生同士の交流の場がない • ZOOMランチを開催 インターン生と新卒2年目のメンバー少数 • チーム内の勉強会でこれまで関わったアプリなど話してもらう

30.

フルリモート環境下のペアプログラミングでチームの開発スピードを維持する工夫 初対面の人とのペアプロ • 最初は緊張していたが、ペアプロを通してコミュニケーションが活性化 • 質問がしやすい為、独自の型やクラスについて理解が早まる • テスト駆動開発のリズムを身につけた • インターン生同士でペアを組んで開発ができるレベルまで上達 → お互いの良い刺激になっていた

31.

フルリモート環境下のペアプログラミングでチームの開発スピードを維持する工夫 まとめ • リモートペアプロでも相手を敬う気持ちが大事 • 物理的な距離は技術で解決できる • 明確な目標を決めて取り組むことが重要 • 初対面の人とこそペアプロの効果が良い

32.

Yahoo! JAPAN Tech Conference 2021 ©2021 Yahoo Japan Corporation All rights reserved.