前職の友人と久しぶりに再開した。彼は過去に XP (eXtream Programming) を実践する会社に所属していたこともあり、会ったばかりの頃は XP のプラクティスのひとつであるペアプログラミングを会社に導入したがっていた。僕は彼より先に転職してしまったが、彼は今でも同じ会社に勤め続けている。
「ペアプログラミングは導入できた? “全社的に” とは言わずとも、チーム内とかで」と聞いたら、彼は「この会社でペアプログラミングをするのは諦めた」と言った。なぜなのか。彼が語った話は実に面白かった。内容は次の通りだ。
ペアプログラミングは単にペアでプログラムを書くという行為を指すわけではない。これはコンスタントなコードレビューでもある。つまり、ペアプログラミング中はレビュー目的のプルリクエストは必要ないし、そもそも Git でブランチを切る必要すらない。しかし、会社では main ブランチへの直接のプッシュは禁止されている。プルリクエストでレビューされていないコードをマージすることもできない。つまり、ペアプログラミングを導入するためには開発フロー全体を見直す必要がある。そこまでの労力は割けない。
なるほど、と思った。
僕は知らなかったのだが、これは「トランクベース開発」というものであり、これ自身もよく知られているプラクティスのようだ。
トランクベース開発では (略) マージリクエストの代わりにペアプログラミングやモブプログラミングの仕組みがよく採用されています。これらにおいては、開発期間中、継続的に他者の目でコードの内容が客観的に評価されるため、作業完了時に既に一定の品質が確保されるものと考えられます。
ペアプログラミング (ひいては XP のプラクティス全般) は、ボトムアップで導入する場合でも、開発戦略全体を統括する立場の人間を巻き込まないと実践は難しいのだなあ、と感じた。