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

ペアプロで得られるもの

ペアプロで得られるもの

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

人事評価

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

まとめ


まとめ

  • ペアプロで得られるメリットは総じて大きい
  • 特に心理的ストレスからの開放は計り知れないほど大きい
  • 一方デメリットもあるので組織にアジャストする必要性はある

ありがとうございました