デザイナーだけど開発に参加するためにペアプログラミング受けてみた。
こんにちは。KAI-YOU開発部のデザイナーCKSです。
毎日デザインをカリカリとしているぼくですが、実はコードベースの開発に興味があるデザイナーです。
ぼくはプロダクト科出身で、そこで培ったバウハウスの流れを汲んだ「デザインは構造から成る」という思想を信仰しています。なので、ビジュアルだけでなくコーディングからのデザインで開発に参加したいと思っていました。
これを叶えるべく、現在、席の近いKAI-YOUのシステムを管理するエンジニアのキャベツこうべさんにペアプログラミングという手法を用いて教えてもらっています。
ペアプログラミングとは
ペアプログラミングというのは、簡単に言えば一台のパソコンを使って2人で共同して開発する手法のことです。
2人で一台のパソコンを同時に操作する・・・なんてことはもちろんせずに、一人がキーボードを実際に触ってコーディング、その他実作業を行い、もう一人がそれを眺めながら設計を吟味したりエラーを発見したりします。
作業する側をドライバー、眺める側をナビゲーターと呼びます。
ペアプログラミングのメリット
ペアプログラミングは一つの作業に2人で取り掛かることで以下のようなメリットが生まれます。
- 知識が共有・補填されあって効率的。わからないところを話し合って解決できる。
- 2人で一つのコードを見ることができるので間違いが少ない
- 間違いが少なくなるのでデバックなどの時間が減り、結果的に早い(上手くいけば)
- 同時に一緒に開発するので開発構造の認識の同期が図れる
- サボりにくい
- ぼくの場合楽しい
2人の人間で取り掛かるので非効率だという意見もありますが、逆に検証性が高まったり、アイディアを共有しやすいという面で、2人分以上の成果を出せるという意見もあります。
今回は作業効率や正確さを上げるためではなく、技術向上を目的にこの手法を借りて僕がドライバー、こうべさんがナビゲーターとなり、僕の作業を監督してもらう形をとってもらいました。ワンツーマン特訓みたいです。
ペアプログラミングの様子・環境
実際は一日ずっとやってるのではなく、小さな作業をサクっと一時間チョイでといった感じでやっています。特訓と表現しましたが、そんな過酷なノリではないです。
- ペアプログラミングの環境の様子。会議室が空いてる時間に大きなモニタを利用してやってる。
ドライバーCKSはラップトップで作業して、ミラーリングしたモニタでナビゲーターこうべがチェックしてくれています。
事故りそうになったときや道に迷ったときはナビゲーターが正しく教えてくれたり、自分の手元にあるパソコンで調べてアドバイスを貰えたりします。
一つのラップトップを2人で覗き込むのはなかなか苦しいので、外部に共有用のモニタがあるとだいぶ楽です。
実際やってみていかがか
実際やってみてどんな感じだったのかというと、良い感じだと思いました。
ぼくは実装するにあたって、どう書くのが適切なのかを調べることに時間がかかって、最終的に書いたものも結局正しいのかイマイチ判然としない・・・ということがあります。MDNに通っています。
しかしペアプログラミングの場合、そばに詳しい人がいて見ていてくれているので、ガンガン質問できます。普段の業務中、相手の作業を止めて質問するのはなかなか躊躇われますがそんなこともありません。間違いもその場で即修正です。
実際に最中、こんな実装がいいかなと思って提案したら、知らなかったさらに適した実装を教えてもらえました。一人だとなかなか気づきにくかったり知り得ない調べにくい、作法やニュアンス的なことも知ることができました。
これから
ペアプログラミングは開発の訓練に有効だということがわかったので、本番環境の第一線で参加できるようになるまではこうべさんの隙を見てお願いして、以降も続けていきたいと思います。
ペアプログラミングはナビゲーターのエンジニアさんのリソースを少し拝借する形になりますが、その分貴重で濃密な時間になり、短時間で学習できます。1人だとなかなか二進も三進もいかないことが多い場面でも、サクサクと進むことができます。
やはり最初の最初は、人に集中的に教えてもらって一気にレベルを上げたほうが迷いもなくて効率的です。もしメンバーのレベルアップを集中的にしたいとき、ペアプログラミングには一考の価値ありです。
エンジニアリングしたい人募集中
KAI-YOUは、デザイナーだけどコーディングもやってみたい! というようなぼくみたいに何かやりたいことを積極的に勉強したり、また自由に取り入れたりしてお仕事ができる会社です。
なにかこれやってみたい! というチャレンジしたいエンジニアさんを募集しています。一緒に働いてみませんか?
エンジニア | 株式会社カイユウ - KAI-YOU inc.
カイユウ開発部デザイナー、CKSでした。