programmer

弟子がペアプログラミングで成長する 家庭教師と背後霊 #sgadvent

ペアプログラミング

この記事はソニックガーデン Advent Calendar 2015の15日目の記事です。 今回はソニックガーデンで私が行っているペアプログラミングについて書いていきます。

私は新卒2年目で技術的にもまだまだ未熟のため、ソニックガーデンの師匠レベルの人に毎週1時間だけ時間をもらって、ペアプロをしてもらっています。 たった週に1時間やるだけでも学べることが多かったのと、実は 「ふりかえり(※)」でもこの方式で進めていくと日々成長できる ということがわかりました。

\* ソニックガーデンではKPTと呼ばれる方式で「ふりかえり」をおこない、働き方を改善していっています。[自律的に現場を改善できるチームをつくるための「ふりかえり」の進め方 〜 KPTと進め方のノウハウ](http://kuranuki.sonicgarden.jp/2013/05/kpt.html)

ペアプログラミングは、普通はdriver(実装する人)とobserver(driverの実装を見ながら設計を考えたり、 リファクタできるところなどを考えながら進めていく人)に分かれますが、弟子と師匠のようにレベルの差が出てくると、 家庭教師と背後霊という方が合いそうなので、そう名付けました。それぞれについて見ていきます。

家庭教師(自分が実装する)

家庭教師はそのままです。私が実装していくのを見てもらいます。

ペアプログラミング内でやる内容は自由ですが、私はその週で実装をしていて、実装が複雑になってきて気になる場所を質問してどうリファクタしたらいいかや、 新しく見つけたライブラリが使えそうかなどを聞いたりしてます。

実装が複雑になり、書いてて気持ち悪いコードになっているのは理解しているけど、どうリファクタをすればいいかが思いつかないぐらいの部分がちょうど良いレベルの質問箇所です。

一度は自分で考えてたり、実装してて気になる所を、師匠レベルの人の答えを聞けるので、普通に学習するよりも記憶に残りやすい 気がします。 自分でもコードが書けてくるようになると、以前書いたコードのところが変だと気づけるようになってくるので、そこをどう直したらいいかも相談できます。

あと、実装中の無駄な動き(ショートカットがあるのに、わざわざGUI上で移動してる等)を指摘してもらったり、 デバッグの場合は師匠の人がどのようにバグを見つけているかを順序立てて追えるので作業の効率化ができます。

背後霊(師匠の実装を見てる)

家庭教師では、自分がプログラミングを行う方式でしたが、もう1つは師匠が実際にプログラミングをするところを見せてもらう方法です。

ペアプログラミングのobserverに求められる設計については行わずに、師匠レベルの人がどのように実装しているか、 どのようなツールやコマンドを使っているかをただ後ろから眺めているだけなので背後霊と名付けました。

その都度、気になった所を質問していきます。実装されたコードはあとで差分等は確認できるので、 書かれているコードを理解しながら追うよりも、どのように作業を進めているかを確認していきます

例えば、自分の知らないエディタの機能が使われていたり、どこの部分から実装に取り掛かるのか等を見ていき、自分だったらどうするかの比較をしてみたりするのも面白いです。

“ふりかえり"も基本はこの形でやる

プログラミングではこのやり方で成長を実感できていて、さらに普段の"ふりかえり"でも行えると技術面以外の所でも日々の成長ができていけると気づきました。

ソニックガーデンでは弟子は毎週個人の"ふりかえり"を行っています。 “ふりかえり"を小口化して、毎日自分だけで"ふりかえり"をしてみて、そこで行った内容を週毎の個人の"ふりかえり"で見てもらいます。

その習慣ができてくると、日々自分の働き方の反省と改善のサイクルができてきます し、週毎の個人の"ふりかえり"では、 家庭教師のように、師匠レベルの視点で見てもらいフィードバックがもらえます。

では背後霊はどうするのかというと、それは 現在師匠レベルの人達が過去に行った"ふりかえり"を見てみること です。 “ふりかえり"の資料は、過去の分も残ってることが多いと思うので、現在の師匠レベルの人達が成長するために行ってきた"ふりかえり"を見ることで、 どのような部分で悩んでいて、そこからどのように問題を解決してきたかの道筋が見えてきます。

以上のことを意識して技術だけでなく、働き方の部分でも日々成長していきたいです。

ソニックガーデン Advent Calendar 2015