ペアプロ
ペアプログラミング

ペアプロで得られるもの

More than 1 year has passed since last update.


ペアプロで得られるもの

2017/08/27 Symfony meetup #17

@okapon_pon


  • 日本Symfonyユーザー会

  • Symfony歴6年



今日お話すること


  1. ペアプロで得られるもの(メリット)

  2. ペアプロの難しいところ(デメリット)



今日お話したいこと


  1. ペアプロで得られるもの(メリット)

  2. ペアプロの難しいところ(デメリット)

※ よって、Symfony関係ありません



今日お話しないこと

ペアプロのやり方は話しません

ペアプロにおける開発環境



ペアプロで得られるもの


月並みですが


  • 成果物の品質向上が期待できる

  • コードの共有所有のが進む

  • 新メンバー(中途採用や別チームの人)の立ち上がりが早い

  • ジュニアの教育として有効

  • 開発tipsの共有(環境、ツール)



成果物の品質向上が期待できる

相談しながら開発するので良いものが生まれやすい


  • 機能やUI

  • システムの設計

  • ネーミング



コードの共有所有のが進む


  • 一緒にコードを書くので単にレビューするだけよりも深く理解することができる

  • エンジニアの冗長化


    • 1人が休んだとしても安心(ビジネス目線)





新メンバーの立ち上がりが早い


  • システム構成が分かる

  • コードだけでは読み取れないビジネス背景が分かる



ジュニアの教育として有効


  • 直接教えられるのは得られるものが大きい

  • PRベースで「直してください」とやり取りしたらコメントだらけ・・・



実際やってみて分かったこと



実際やってみて分かったこと

意外と開発効率は落ちない


  • 開発はコーディングそのものより考えている時間の方がほとんど

  • タイピング中は手元に集中しがちで考えることが難しいが、ナビゲーターはその間も考え続けることができるので次にやるべきことにスムーズに着手できる

  • ナビゲーターはミスにもすぐ気が付いてくれる



やってみて感じた最大のメリット



やってみて感じた最大のメリット

PRにおける心理的ストレスからの開放(主観です)

レビュアー、レビュイーどちらの立場でもストレスから開放されます。



レビュアーの立場



レビュアーの立場として辛いこと1

たくさんのレビューをしないといけない


  • 特定の人にレビューが集中する(レビュー地獄で開発できない)

  • 変更内容の保証まではできない


    • 本当にこれでよいのか判断がつかない

    • どこまで考えられて作られたのか、コードだけで汲み取るのは難しい

    • 下手すると変更の背景自体が良く分からない





レビュアーの立場として辛いこと2

github上のやり取りが辛い

(コミュニケーションコスト)


  • コードは直して欲しいけど、それを伝えるのが大変

  • PRが巨大化する前に設計相談して欲しかった


    • できれば全部書き直して欲しい(でも今更そこまで言えない)





ペアプロはレビュアーの負担が軽くなる

ペアプロしたものに関しては変更背景が分かっている = レビユー時間が短縮できる


  • 実装方針にズレが出ない

  • どこまで考えて作て作ったのか、妥協点はどこだったのか

  • 特に効果が大きいのはリファクタリング


    • コードのdiffだけで読み解くのは辛い

    • 思考過程が追えるので変更漏れがないか確認も簡単





ペアプロはレビュアーの負担が軽くなる


  • 複雑なものほどレビューコストが下げられるし安心

  • 書き終わったコードに対して、「こうして欲しい」と後から言う必要がない

  • なにより一緒に開発することで、自分の開発時間も確保できている

⇒ 心の健康



レビュイーの立場



レビュイーとして辛いこと1

何度も手戻りが発生してしまう(特にジュニア)


  • レビューで何度も差し戻しされて一向にリリースできない



レビュイーとして辛いこと2

動くものはできたけどこれで良いか自信が持てない


  • クラス設計、ディレクトリ設計

  • URLやネーミング等の簡単なことも含む

  • 言語やフレームワークなどのお作法



ペアプロはレビュイーの心理的負担も軽くなる

これから書くコードに自信が持てる = 安心して開発できる

e.g.

* 今回実装すべきこと

* 実装方針

* ネーミング

* テスト



ペアプロはレビュイーの心理的負担も軽くなる

書き終わった時が完成 = 即リリースできる



その一方で



ペアプロの難しいところ



ペアプロの難しいところ1

達成感は得づらい


  • 自分で1人でやり遂げたわけではない

ペアでやると窮屈に感じる時もある


  • もちろん1人で書きたい時もある

  • いいアイデアを思いついたときは一気に書き上げたい

ペアプロは苦手という人はどうしてもいる



ペアプロの難しいところ2

人事評価


  • 誰の成果なのか?

  • 目標もチームのエンジニア皆同じになりがち・・・



まとめ



まとめ


  • ペアプロで得られるメリットは総じて大きい

  • 特に心理的ストレスからの開放は計り知れないほど大きい

  • 一方デメリットもあるので組織にアジャストする必要性はある



ありがとうございました