2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

約1年でペアプロ信者になった僕が、物語のすべてを語ってみる

Posted at

少なくとも、僕は約1年前まで「ペアプロなんてクソくらえ!」と思っているペアプロアンチでした。

そんな中、参画した現場で言い渡される**「今から君たちには、ペアプログラミングをしてもらいます」というセリフ。
いきなりの話で戸惑いつつも、僕の
「ペアプロを理解する」**という長い旅が始まる。

  • 登場人物(開発経験年数)
    • 僕(10年)
    • A君(3年)
    • B君(3年)
    • Cさん(12年)

ペアプロ1日目

ペアプロというのは、「ナビゲーター」役の人と、「ドライバー」役の人に分かれて行う事を教えられる。
ドライバーが基本手を動かし、ナビゲーターがドライバーへの指示(アドバイス等)を行うという具合。

僕は「Aくん」とペアを組むことになった。

もちろんプログラミング大好きな僕は「ドライバー」を熱望した。
だが無常にも「ナビゲーター」を言い渡される。

何故。

基本的に**ペア間に知識、経験の差がある場合、
より経験の多い方が「ナビゲーター」**をやることになるそうだ。

僕は経験10年、相手は3年なので僕がナビゲーターなのだろう。

いつになったらプログラミングをさせてもらえるんだ。。。
僕は心が折れた。

ペアプロ2日目

よくわからないまま、「ナビゲーター」を行う。
A君が楽しそうにプログラミングしているのを、僕は後ろからただ見ているだけ。

暇だ。。。

今日行っている作業は簡単だから、特に教えることもなければ、聞かれることもない。
「やっぱりペアプロなんて無駄じゃないか。。。」そんなことを思いながら、ただ見守っていた。

変数名のつけ方を1箇所アドバイスした。

ペアプロ3日目

今日はやたらと仲間Aから質問を受ける。
何故なら今日の作業は、A君が経験したことの無いAzureでの作業なのだ!

僕は水を得た魚のように、Azureの知識をひけらかす
それを聞きながら、A君はゆっくりだが着実に作業をこなしていく。

そんな中、僕は頭の中で「これ僕がやった方が数倍早いし、やっぱりペアプロはダメだな」そんなことを考えていた。

ペアプロ7日目

現場の偉い人と喧嘩する。

その人が言うには**「ソロとペアで作業にかかる工数は変わらない」そうだ。
(例:2人日のタスク ソロ→2日 ペア→
1日???**)

そんなわけあるかい!
むしろ、僕が1人でやった方が早いですけど!?
その間にA君が別のタスクをやってくれた方が工数稼げますけど!?

という具合で話は平行線。

ただでさえ嫌いだったペアプロがさらに嫌いになった。

ペアプロ8日目

今日からはペアの入れ替えで、B君と組むことになった!

相変わらず僕はナビゲーター。

業務でプログラミングが出来ないので、業後に自宅でプログラミングを始めた。
楽しすぎて深夜2時までやってしまった。

明日仕事行きたくねぇ。。。

ペアプロ9日目

今日もB君は楽しそうにプログラミングをしている。

特に難しそうな部分もないし、、、
ということで、僕は裏側で別作業を進める。

「これで工数が上がれば、みんなペアが無駄だってことに気づくだろう」
そんな計画を考えていた。

ペアプロ10日目

B君が先日作成したプログラムを確認すると、
エラー処理が甘い箇所、仕様通りになっていない箇所、不要処理の消し忘れ等々、、、問題箇所が大量に見つかった。

これじゃあ昨日僕が裏側でやって稼いだ工数がパーじゃないか。。。

失意の中、B君が書いたコードの大半を削除し、2人で修正作業を行った。

ペアプロ20日目

かれこれ1カ月くらい業務でプログラミングをしていない気がする。。。

A君とB君が作業に慣れるまでは、Cさんとのペアはお預けとなっていた。
なので、行く日も来る日もナビゲーター。

プログラミングのしかたを忘れてしまいそうである。

ペアプロ30日目

今日はA君とのペア。

前回苦戦していたAzureでの作業だったが、
たまに「これどうやるんでしたっけ?」といった質問は来るものの、
大きな問題もなくスムーズに作業が進んだ

「やっぱ人から教わるのは重要なんやなぁ」としみじみ思った。

ペアプロ40日目

とうとうA君、B君のナビゲーターが解禁される。

ナビゲーターとは言いつつも、ドライバーの僕が説明しながら作業を行い、
それを見ていて理解できなかった部分をナビゲーターのA君、B君が「それってどういう意味ですか?」とか聞いてくるだけ。

ナビゲーターとはいったい。

ペアプロ50日目

今日はA君とのペア、のはずだったが僕は風邪をひいて仕事を休んだ。

「昨日やりかけだったプログラムを完成させたかった。。。」
「今日休んだ分、明日取り戻さないとだなぁ。。。」

風邪薬の睡魔に襲われ薄れゆく意識の中、僕はそんなことを考えていた。

ペアプロ51日目

昨日の風邪はどこへやら。
僕は全快していた。

出勤して、恐る恐る昨日の進捗をA君に確認する。

A君「予定通り進みましたよ」
僕「え?まじで?」

結構難しい部分、それも他人が組んだコードを理解して進捗通り?
僕は耳を疑たったが、本当に順調に進んでいた。

「ペアプロをしていたおかげか・・・」
僕はほんの少しだけ、ペアプロをありがたみを知った。

ペアプロ60日目

この頃には、ペアプロについて特に不快感は感じなくなっていた

A君やB君もある程度知識が付き、
ナビゲーターをしていても、「修正する」というよりも「改善する」的なコメントが増えていった

逆に僕がドライバーの時に、
「こうした方が良くないっすか?」とツッコミを入れられる事さえある

ちょっとイラッとした
自分のコードを指摘されることに不快感を感じることを知り、自分も気を付けよう。と心に留めた。

ペアプロ80日目

Cさんとのペアが解禁される。

経験年数が近い事もあり、技術力にあまり差はなかった。
僕がドライバー、Cさんがナビゲーターをすることになった。

僕「ここの処理はこうでいいっすかね」
Cさん「うーん、こっちの方が良いんじゃない?」
僕「でもそれだとここが・・・」

議論を繰り返しながら組まれたコードは、とても美しく洗練されたものになっていた

「お互いの全力をぶつけ合って出来上がった最高のプログラムだ。。。」
より良い選択肢を模索しながら1つのものを作り上げていく快感に、僕は魅了された。

ペアプロ81日目

僕はCさんとのペアを楽しみながら、頭の片隅にどうしても拭えない不安を抱えていた。

そう、A君とB君のペアだ。
彼らはちゃんと作業を進められているのだろうか。。。

朝の進捗共有で、A君とB君の進捗報告を聞くと、順調との報告。

どうやらペアを交代しながらいろいろなプログラムを触っていたおかげで、
プロジェクト内のコードはあらかた理解できているそうだ。

「あれ?ペアプロ優秀?」
僕はペアプロを好きになりかけていた。

ペアプロ150日目

誰も経験したことのない技術を扱うことになった。

工期もそんなにないということで、僕とCさんのペアで作業を行うことにした。

ところどころ詰まりながらも、2人で何とか1歩ずつ進んでいく。

僕「こんな情報ありました!」
Cさん「こんなんもあったけどどう?」
僕「両方ダメでした!」
Cさん「あーここをこうしたらいけない?」
僕「いけました!」

何とか工期中に完成させることが出来た。
僕1人では無理だっただろう。。。

ペアプロって良いものなんだろうなぁ~とは思いつつ、まだ確信は持てないでいた。

ペアプロ250日目

ペアプロをやめよう、という話になった。
全てのペアプロをやめるという話ではない。

どちらかといえば、**「すべての作業をペアプロで行う必要があるのか」**という観点から、
ペアで行う必要のない作業はソロでも良いのでは?という結論に至ったのである。

これにはA君B君Cさん全員賛成で、ソロ作業を許すルールを決めることになった。

  • 1タスクの開始から終了までの全ての作業をソロで行える事(アドバイスを求めるなど、相談はOK)
  • 方針等が全て決まっており、作業者間で完成物のズレが発生しないもの
  • 相手に100%任せて良いと言い切れるもの

この3点を満たすタスクのみ、ソロでの作業を許容することとした。
適用は明日から。

ペアプロ260日目

ソロでの作業が許容されて早10日。
僕らのチームでソロ作業を行った人はいなかった。

何故か。

それはきっと、全員がペアプロの重要性を理解していたからだと思う

僕は、**ペアプロって良いものだよ!**そう自信をもって言える事を確信し、Qiitaに記事を投稿することを決めた。

ペアプロのメリット、デメリット

・メリット

  • チーム内の技術力が高まる

  • 経験の浅い開発者の人は、先輩プログラマーに教わることで技術力が高まり、先輩プログラマは人に教える事の難しさを知ることができます。


    また仲間同士での知識の共有など、チーム全体の知識、技術力が底上げされます。

  • コードの属人化が解消される

  • 今までのプロジェクトで、「〇〇さんがいないとここ分からない」なんてことありませんでした?


    ペアプロでは、ペアで作業をしてることで、少なくとも1つのコードを2人が理解しています。

    なので、**1人休んだから作業が進まない!**なんてことが起こらなくなります。

  • コードの品質向上

  • ナビゲーターは、ドライバーが書いているコードを常に見て(レビューして)います。

    気になった箇所はその場で指摘できるため、手戻りも少なく済み「もう納期前だから処理微妙だけどリリース」なんて事が無くなります!


    また、どうしても1人では見落としてしまうような小さなバグ
    でも、複数人で見ていると意外とトラップできることが多いです。

・デメリット

  • 初期コストが掛かる

  • ペアプロ7日目にも書きましたが、「ソロとペアで作業にかかる工数は同じ」は嘘です。

    正しくは、「チーム全体のレベルが上がってこれば、作業にかかる工数は同じ」が正解だと思っています。


    最初はどうしても経験の浅いプログラマに、経験の豊富なプログラマが育成コスト
    をかけることになるため時間を取られます


    ただ、ある程度育成が進んでしまえば「コードの品質向上」でも説明した通り、バグが減ったり、コードレビューが不要になることでコストは抑えられます。

  • ペア間の技術レベルの差が激しい場合、楽しくない

  • これは書いた通りです。

    最初のうちは「こんな事まで説明せにゃならんのか」と何度思ったか知れません。


    でもそれがゆくゆくのプロジェクトの為、ひいては自分のためになります。

    頑張って我慢しましょう!

まとめ

100%ペアプロが優れているとは言いません。

過去の僕のように、ペアプロを毛嫌いしている方に、
ペアプロって意外といいんだぜ!ってことが伝わればなぁと思っています。

ただ、やはり良いところ、悪いところがあるので、
ちゃんとそこを理解した上で、良いペアプロライフを送っていただければ幸いです!

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?