[ノンプロ研]ようこそペアプロ部へ

ノンプロ研

どうも。つじけ(tsujikenzo)です。今日は2020年に起きた大きな出来事の一つ『ペアプロ』についてお話したいと思います。

いつもながら私の所属しているコミュニティノンプロ研内のお話でございます。しかし皆さんの職場でも使える内容だと思いますので是非。

プログラミング学習と社内勉強会

私が2019年の冬にプログラミング学習と出会って「まぁプログラミングは自分とは関係ない話かな」と感じていたのは「だって専門職だし、仕組みさえ分かれば誰かに発注すればいいかな」と判断したからです。

なので実際プログラミング学習を初めてすぐに、自分が講師となって社内勉強会を実施しました。GASの初級講座です。

「教えることは2度学ぶ」という言葉がありますが、社内勉強会は正に自分が学んでいることをアウトプットすることで、記憶や理解の定着に一役買っていたと思います。(余談ですがこの『プログラミングの仕組みさえ分かれば』という魔の言葉に後々引きずり込まれていくことになるのですが💦)

チームコーディング

そして社内勉強会を終えたのが2019年の年末ぐらいですが、徐々に「チームでコードを書きたいな」と思うようになりました。私自身も初級を終えて中級に差し掛かっているところで「よく使うコードのパーツ化ってどうやるんだろ」「コードの管理ってどうやるんだろ」などの授業では習わないネットにも書いてない技術の習得を欲していました。

リーダブルコード

ちなみにプログラミングは職種や現場によって最適解が異なるので、人によって書き方も組み立て方も千差万別です。プログラミングはまさに生き物と言えますね。

なので職種を問わずプログラミングを書く人が学ぶべき技術に「リーダブルコード」というものがあります。また別の機会にご紹介したいと思います。

ノンプロ研ペアプロ部誕生

「チーム書きやってみたいな」とノンプロ研で発言したところとある方から「いいねーペアプロ楽しいよね」とレスポンスをもらいました。私は「ペアプロ?何それ美味しいの?」って感じで、最初はその方との話が合わなかった(いつも最初は話が合わない)のですが、話が長くなるのでまとめると以下のような違いになります。

つじけのイメージ

  • Githubのような共同作業場を用意してメンバーで共有して書く
  • 書きたい人のタイミングでコードを編集する
  • クローズドな環境で書く(書くところは誰も見ていない)
  • etauさんの提案に対して→プログラミング超初心者だし恥をかくじゃないですか💦

etauさんのイメージ

  • 1つのエディタ画面を共有しながら書く
  • 時間を決めて集合して一緒にコードを編集する
  • オープンな環境で書く(見学者がいる)
  • つじけに対して→恥って感覚が無いから俺わかんないや

というギャップがありましたが、実は2019年のノンプロ研合宿で2人ペアになってコードを書くという催しがあったらしく、調べてみると「ペアプロ」という開発技法があることも知り、(正直嫌でしたが💦)思い切って船に乗っかってみることにしました。

「オンタイム・オンラインでペアになってコードを書く」ノンプロ研ペアプロ部の誕生です。2020年2月のことでした👏👏👏

【MEMO】

嫌だったのに船に乗った背景には、社会情勢による急激なオンライン化がありました。3月の部活紹介でペアプロ部の紹介LTをしていますが、ZOOMがめっちゃ流行っていて今や合コンもオンラインでやってるんだよーという笑いも交えましたが、『コミュニケーションが変わってしまった』という背に腹は変えられない深刻な内容でございました。

ノンプロ研的ペアプロ

ペアプロには色んなやり方がありますが、基本ルールはたった1つ『2人でペアになって10分交代でコードを書く』ということです。ペアのスキルレベルが違うことは当然です。大切なのは「相手と相談しながら書く」ということです。

レベル差なし

ペアのレベル差が丁度同じくらいでアイディアを出し合うなら「ナビゲーター」「タイピスト」の役割分担を厳密に行うのもテクニックです。

ナビゲーターは『変数に格納してfor文で回して下さい。後、for文の中でログが出るように。』と指示を出して、タイピストがタイプしている間に次の指示を考えます。設計士と大工さんで同時に家を建てるイメージです。もちろんタイピストが指示を理解できない場合は指示をやり直します。タイピストがタイプできないのはタイピストのスキルが足りないのではなく、ナビゲーターの指示が不明瞭だと思った方がいいでしょう。

上級者ほど「相手は全然理解していない」「自分がタイプした方が早い」「自分のロジックが正しい」という思いが出始めてストレスを感じますが「自分の考えが伝わらない時ほど相手の話を聞いていない」というコミュニケーションスキル不足によるものがほとんどです。(これ衝撃的ですよね💦)

大事なのは「声が大きい」「存在感がある」などの理由で片方のアイディアが通りやすくなる状況を避けるべきです。自分の実力を証明するのではなく「できるだけ相手から何かを引き出す」のがペアプロを楽しむコツです。

レベル差あり

講師と受講生のようなレベル差がある場合でも「ナビゲーター」と「タイピスト」に分かれて10分交代でコードを書きます。

ただし、レベル差なしと少し色が違うのは「タイピストがナビゲーターをナビしてあげる」要素が強くなる点です。

受講生がタイピストの時は、講師はタイピングが止まらないように丁寧にナビしてあげる技術(『〇行目をコメントアウトしてログを出力してみましょう』などの具体的な指示)が必要ですし、受講生がナビゲーターの時は、ナビが止まらないように講師自ら説明(処理をコメントアウトしてログを出力してみた方が良さそうですねなど)を加えて、ナビをエスコートしてあげる技術が求められます。(実際に『では〇行目をコメントアウトしてログを出力してください』という指示は受講生にさせる)

講師の「やるよ?見てて。分かる?」は厳禁です。レベル差のある相手はそこで「分からないです。。。」とは中々言えませんよね💦本当は分かっていないのに「分かります」と言わせてしまうことが、後々もっと大変な事態を招いてしまうことは皆さんも普段の業務で沢山経験していると思います。あはは。

ペアプロを通して個人的に気付いたこと

書籍『モブプログラミング・ベストプラクティス』からの引用ですが、

  • ひとりで仕事をするよりも協力して仕事をする方がいい
  • エキスパートになるよりも知識を共有する方がいい

これは「ブログの公開範囲を全世界に広げると教える人が増え責任が増す」という教えにも繋がります。「プログラミング」や「プログラミング学習」というものはどうしても個人の作業になりがちです。なのでペアプロは「誰かと作業を共有するアウトプット」としてとても有益なツールなのです。

私が2020年の後半に「もう独学やめようぜ」「個人で探求するのは自分が思ってる半分くらいにしようぜ」という考え方になってきたのも、ペアプロで得た経験が大きいと思います。来年は「何かを勉強しようとしてる時に恥なんてかかない。むしろ恥をかけるなら成長のチャンスが潜んでる」というコラムを書こうと思ってます笑

2020年の活動実績

2020年の3月に第一回ペアプロが行われてから、12月までに29回のペアプロが行われました。年度の途中ではその活動内容が認められ、ノンプロ研内で正式にコンテンツをアーカイブしてもらえることになりました。大変光栄です。

GAS・・・・・・・20回
Python・・・・・・6回
VBA(Excel)・・・・1回
その他・・・・・・2回

参加人数・・・・・延べ61名

アーカイブ動画・・23本(公開NGの回もある為)

運営を手伝って頂いた方、動画編集チーム、参加者の皆様に大変感謝申し上げます。ありがとうございました。

そして(マニュアルをもう少し整えたら)2020年を持ちましてペアプロ部部長卒業させていただこうと思います👏👏👏大変お世話になりました。

まとめ

さて、以上でノンプロ研ペアプロ部のご紹介となりましたが、最後に部長卒業宣言までしてしまいました。(まぁ遅かれ早かれ道を譲ってくださいとは言われていたので、いい機会かと思います)

ペアプロ、まじで最高です(語彙力)。皆さんも最初は勇気が必要かも知れませんが、参加した全員(過言ではありません)に「やって良かった」と言ってもらえてます。ノンプロ研メンバーは本当にecoで優しい人達の集まりです。こんなふわっふわな安全マット(スポンジ)が敷かれてる環境にダイブしない手はありません笑

是非#部活_ペアプロ部でお待ちしております。

タイトルとURLをコピーしました