Notes〜新たな"Wow"を生み出す〜TOPABOUTPROFILEPRODUCTRECRUIT閉じる2020-01-09ペアプログラミングを試してみたどうもこんにちは!web開発チームのしまねです。最近web開発チームでペアプログラミングに取り組んでみました。取り組んだ開発はまだリリースまでいっていませんが、どのように取り組んだのか・やってみた感想などを振り返ってみたいと思います。目的としては大きく3つありました。レビューが十分にできていない状況を変えたいコードレビューの依頼は来るのですが自分の開発業務もあるため、十分にできていないなぁという思いを少し前から抱えていました。ある機能を実装するとしてそれに関するコードをすべてレビューするとなると、まとまった時間が必要となるためついつい後回しにしてしまっていました。結局十分な時間がとれず深く見れずに終わってしまうという。ペアプログラミングで開発すればレビューせざるを得ないためレビュー不足な状況を変えることができるのではないかと考えました。新卒が入った時に研修で使えるかを検証したいワウテックでは新卒採用を始めていて近い将来新卒が入社します。新卒の研修の一環としてペアプログラミングはいいんじゃないかなと思っていたので、その効果を検証する必要がありました。テスト時のバグ改修の工数を減らしたい開発の工数は見積もりやすいのですが、テストに出したあとのバグ改修はバグの数によって工数が増減するため見積もりにくくスケジュールが押してしまうことがありました。テスト提出の時点で極力バグを少なくできればテスト工数の振れ幅も小さくなり見積もりやすくなるはずです。2人で1人分のコードしか書けないので開発スピードは遅くなりますが、2人で確認しながら進めるのでバグが減ってテスト時のバグ改修の工数では短くなるのではないかという期待がありました。Codeでソースコードを複数人で編集できるようになります。誰か1人がホストになり共同編集する人を招待し、招待された人はホストのファイルを編集できるようになります。他の人がどこを編集しているのかはカーソルで表示されてわかりやすかったです。招待したり招待されたホストに接続する際にMicrosoftアカウントかGitHubアカウントが必要です。調べてみるとペアの中でドライバーとナビゲーターという役割に分ける方法があったので参考にしました。・コードを書くその他にはルールとして次のことを決めました。今回は僕がナビゲーターでペアのメンバーがドライバーで進めていくことにしました。ナビゲーターの僕がコーディングの前に大まかな作りを説明し、処理をコメントで書いていきました。この間はドライバーはやることがなくなってしまうので最初だけでもこの作業はあらかじめやっておくべきでした。キリの良いところまで処理を書いてドライバーにコーディングを始めてもらいました。目の前でどんどんコードが書かれていくのが面白くてしばらく見ていたのですが、「いけない、いけない。次の処理のコメント書かなくちゃ」ということでいったん次に実装予定の処理をコメントでどんどん書いていきました。その後はドライバーの書いたコードを見たり、疑問点に答えたり、次の実装を書いたりと進めていって最初に目標にしていた部分まで実装してその日は終わりにしました。1回やってみた時点で、2人とも他の業務もあり今回ペアプログラミングを行ったプロジェクトだけやるわけにはいかないので週に何回か2~3時間くらいでやってみよう、また、ペアプログラミングをする部分はそのプロジェクトのコアになるようなロジックの部分にしてcssの設定等の見た目の部分は1人で進めていこうということになりました。その後何度かやってみて・・・ペアプログラミングした部分のソースコードについては考え方まで理解しているのでレビューする必要が全くなかった。ナビゲーターはあまりやることがないのではないかと思っていたがドライバーとのやり取りが多く発生して想定していたよりも忙しかった。1時間を目安に休憩と決めていたがついつい進めてしまって休憩を取りそこねることが多かった。どこまでやるかを毎回最初に決めておいてよかった。いうような感想をもちました。Shareはすごく便利1つのPCではなくそれぞれのPCでできるようになるのでナビゲーター側の自由度が高くなります。昔は1つのPCに2人がはりついてやっていたそうですが、それだとお互いにかなりストレスになると思います。どこまでやるかを毎回最初に決めておくことが重要ペアプログラミングをしていると1人でやるより疲れるので予めゴールを設定しておくと気が楽です。気が楽なだけですが続けていくには重要なことです。コードレビューの時間をとる必要はないペアプログラミングを行った部分に関してはドライバー側が書いたコードもナビゲーター側が設計しているし、議論しながら進めているためコードを書き終わった時点でもうレビューはしなくてもいい状態になっています。新卒の研修としてはとてもアリマンツーマンでしっかりコードの書き方から見ることができるので新卒の研修時には非常に有用だと思いました。研修の際には逆にナビゲーターをやってもらってプログラムの構成を考えてもらうのもありかもしれません。目的3についてはまだテストまで到達していないので検証できていないです。現時点の感想では、仮にペアプログラミングで開発した方が工数がかかったとしてもメンバー間の知識の共有や議論して進めることでの品質のアップと他に得られるものがあると思います。やってコードを書くのかについては体系的に説明するのは難しいため、書いているところを見てもらうのが一番早いです。慣れませんがもうしばらく続けてみたいです。今回はやりませんでしたがLiveShareを使えばリモートワーク中でもペアプログラミングできるかもしれないので近い将来チャレンジしてみたいです。我々ワウテック技術開発部はこのような環境で開発をしています。興味を持った方がいらっしゃればいつでもご連絡下さい。18:16ペアプログラミングを試してみたTweet関連記事2019-12-05大きなActivityは小さく分割したほうがいいお話こんにちは。ワウテックAndroidアプリ担当の岡野です。今回は...2019-10-041週間で作って社内リリースしたヘルプボットを性能改善した話お久しぶりです。WowTalkのAndroid開発担当している岡野です。~Storybook...こんにちは。Web開発チームの島根です。今回のテーマはReactと...2019-03-18ワウテック技術開発部の開発環境についてこんにちは(^o^)!web開発チームの島根です。はてなブログProWowTechエンジニアによる開発ブログです。社内チャットツールWowTalkの開発をしています。読者になるSERCHLINKはてなブログブログをはじめる週刊はてなブログはてなブログProNEW駆け出しエンジニア1年目で学んだ3つのことペアプログラミングを試してみた2020年もワウテックをよろしくお願いします大きなActivityは小さく分割したほうがいいお話1週間で作って社内リリースしたヘルプボットを性能改善した話ARCHIVEスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。