Upgrade to Pro — share decks privately, control downloads, hide ads and more …

モブプログラミングの方法 / JavaDO #16

モブプログラミングの方法 / JavaDO #16

Kotlin入門:Kotlinらしい書き方をモブプログラミングで学ぼう!
https://javado.connpass.com/event/147516/

Hiroto YAMAKAWA

October 19, 2019
Tweet

More Decks by Hiroto YAMAKAWA

Other Decks in Programming

Transcript

  1. ハッシュタグ:#javado
    Kotlin練習編:
    モブプログラミングの方法
    山川広人 (@gishi_yama)

    公立千歳科学技術大学 情報システム工学科
    Javaエンジニアグループ北海道 Java Do
    1

    View Slide

  2. ハッシュタグ:#javado
    公立千歳科学技術大学 情報システム工学科 専任講師
    R&D: Experimental Development of ICT (ex:City-Bus Tacking System) 

    Computer in Education, Programming and Programmer's Learning 


    Community:
    Hiroto Yamakawa, @gishi_yama
    2

    View Slide

  3. ハッシュタグ:#javado
    大学の研究開発やIT勉強会でモブプログラミングを取りいれています!
    3

    View Slide

  4. ハッシュタグ:#javado
    What is "Mob Programming"?
    4

    View Slide

  5. ハッシュタグ:#javado
    A day Of Mob Programming
    5
    https://youtu.be/p_pvslS4gEI https://youtu.be/dVqUcNKVbYg
    スクラムの中にとりこんでもよい

    ⇒カイゼン・ジャーニー等を参考

    View Slide

  6. ハッシュタグ:#javado
    モブプログラミング(モビング)
    6
    3人以上でグループを組み、

    同じ場所・同じ機材で同じプログラミングを行うチームワーク手法

    (≒ペアプログラミングの多人数化)
    2012年頃にアメリカのHunter社が本格的に取り入れ、

    日本では楽天などの開発現場で実利用されていることが有名。

    日本でも書籍や実践事例が増えてきている。

    モビング(Mobbing), モブワーク(MobWork)とも。
    図引用:TAKAKING22, Mob Programming Startup Manual(https://takaking22.com/2018/mobpro_manual/)
    ↑の本では、

    ドライバーとナビゲーターではなく

    タイピストとモブ と呼んでおり、

    この資料もそれに倣う

    View Slide

  7. ハッシュタグ:#javado
    モブプログラミングに期待される効果
    7

    !
    モブプログラミング: 複数人の質疑や議論の結果で進む
    ○ 難しい課題に複数人の知識・スキルで取り組める

    ○ 相互に異なる知識・スキルを共有・継承できる

    ○ 開発とレビュー、を兼ねられる

    ○ コーチ、マネージャ、レビュアー、プロダクトオーナー

    もモブの一員とし、フィードバックなども
    ペアプログラミング: 二人の質疑や議論の結果で進む
    ○ 難しい課題に二人の知識・スキルで取り組む

    ○ 知識・スキルを継承できる

    × 技術継承の方向性が一方向になりがち

    × ドライバーとナビゲーターの関係性やスキルの違いが

    パフォーマンスに影響しがち

    View Slide

  8. ハッシュタグ:#javado
    モブプログラミングに期待される効果
    8
    分業によるアウトプット量よりもモブによるアウトカムの向上を重視する
    図引用:TAKAKING22, Mob Programming Startup Manual
    (https://takaking22.com/2018/mobpro_manual/)
    https://twitter.com/t_wada/status/1155691342560808965

    View Slide

  9. ハッシュタグ:#javado
    モブプログラミングに期待される効果
    9
    技術・経験が深いメンバーによるモビング
    技術・経験が浅いメンバーを含むモビング
    プロダクトマネージャー or オーナー、

    上司などを含むモビング
    新入社員研修、

    新規配属時のスタートアップ、

    コードレビュー時など

     ・情報、知識、技術、文化の

      共有・継承・学習

     ・モビング手法の会得
    難度や重要度の高の部分、

    (開発全体に適用してもよい)

    レトロスペクティブ時など

     ・知識・技術の一局集中

      ・ボトルネックの解消

      ・知識、技術の向上と浸透

     ・キーパーソンに変わる

       チームの組織性の向上
    スプリントレビュー

    成果物レビュー、デモ時など

     ・認識の共有、軌道修正

     ・オーナーシップの育成

     ・チームやプロジェクトの改善

    View Slide

  10. ハッシュタグ:#javado
    How to try "Mob Programming"?
    10

    View Slide

  11. ハッシュタグ:#javado
    • 全員がタイピストによる操作・コーディングを確認できる大きなディスプレイ(プロジェクター) 

    1 or 2基 ※コーディングと調査用
    • モブが考えをまとめるためのホワイトボード、ふせん(KJ法)
    • いくつかのアプリ(モブタイマー、IDE) ※私は Mobster というツールをよく使ってます
    モブプログラミングに推奨される環境
    11
    図引用: マーク・パール (著)、長尾高弘(訳)、 及部敬雄(解説):モブプログラミング・ベストプラクティス
    使い慣れてないキーボードや

    マウスだと、若干手こずるが、

    個人差があって難しい....

    View Slide

  12. ハッシュタグ:#javado
    1. 3名以上で集まる
    2. モブを行う時間と、時間内に到達を目指すゴール、役割交代のタイミング(10〜15分ごと)を決める

    〈モブ〉

    ・ 解決すべきプログラム上の課題や問題点に集中し、問題解決のための方法を考え・推測・提案する

    ・ 新たな問題が発生していないかを探す

    ・ わからないことはわかるまで質問して、学ぶ

    〈タイピスト〉

    ・モブの合意がとれた提案を、操作やコードの形にして入力する
    3. 役割を交代しながら、一週したら休憩などを取る
    4. ゴールが達成できたら、みんなで喜ぶ(ハイタッチ!)
    5. モブ終了の時間がきたら、次回のモブにむけてふりかえりを行う

    (KPT: Keep, Problem, Try 、量的評価など)
    モブプログラミングの流れ
    12
    ※モブ側に、コーチやマネージャー、

      レビュアーやプロダクトオーナーが参加してもよい
    モブ
    タイピスト
    モブ モブ
    モブ
    モブ

    View Slide

  13. ハッシュタグ:#javado
    1. 〈全員〉内職禁止!

    ノートPCやデバイスが手元にあっても良いが、メモや簡易の検索に限る (なんなら閉じておく)

    割り込み仕事、時間がかかる調査はルールを定めて別に行う

    (例:短い感覚でこまめに休憩を取る or 席を外す、サイクルを一旦止めて調査専用の時間を作る)
    2. 〈全員〉 分からないこと・確認しておきたいことを残してはいけない

    分からない事や不安・不明な点が出てくるのは当然であり、そのままにしておくことを恥じる

    どんな質問・確認であっても、容認し、受け止め、全員の不明点を解消する

    質問・確認を言い出しやすい雰囲気や工夫をする(心理的安全を作り出す)
    3. 〈タイピスト〉 モブ全体の合意がない操作やコード化をしてはいけない

    特定の誰かの意見や指示だけに従ってPCの操作やコード化をしてはいけない

    モブ全体が合意していることだけに沿って、PCの操作やコード化をする(合意がとれているか確認する)
    〈特に初期〉モビングをうまく進めるためのすべからず6箇条(案)
    13

    View Slide

  14. ハッシュタグ:#javado
    4. 〈タイピスト〉 自分の想像や知識だけでコードを書いてはいけない

    モブの指示を勝手に解釈し、自らの知識だけで操作やコードを書かない

    どのようなPCの操作やコードが必要か、モブにつぶさに確認をして、PC操作やコードに反映する

    指示に納得できない点がある場合は、タイピストを交代し、モブとして自分の考えを合意に反映する
    5. 〈モブ〉 攻撃や差別、ハラスメントをしない

    いうまでもないことですが...どんな場合も相手を傾聴し、チームの力になることが大事

    意見の衝突や感情的になりそうな時は、誰かが休憩を促す
    6. 〈全員〉 時間や順番を守らずに進めてはいけない

    役割の交代や全体の時間の厳守、やらなくてはいけない事柄を厳守する

    役割は操作の途中でも交代。全体の時間オーバーの場合は潔く中断し、「ふりかえり」を犠牲にせず行う
    〈特に初期〉モビングをうまく進めるためのすべからず6箇条(案)
    14
    べからず集は堅く見えますが、最初はしっかりと守り、アレンジをした方がモビングの効果が高まります

    View Slide

  15. ハッシュタグ:#javado
    Kotlin Practice 

    with "Mob Programming"
    15

    View Slide

  16. ハッシュタグ:#javado
    1. TechFulで、プログラミングの演習問題をKotlinで解く

    https://techful-programming.com/

    2. 渡部さんの「年賀状の宛名をKotlinで出力するプログラム」をKotlinで改良する

    https://github.com/susan335/Javado-NewYearCard

     > src/main/kotlin/Main.kt

    3. フリー課題(グループごとに作るものを決める)

    前回(Java回)の例 : じゃんけんゲーム
    今日の練習内容 どれか一つをグループで選んでください
    16

    View Slide

  17. ハッシュタグ:#javado
    • モブプログラミング・ベストプラクティス

    https://www.amazon.co.jp/dp/B07NW2S2XV/
    • Mob Programming Startup Manual

    https://takaking22.com/2018/mobpro_manual/
    • モブプログラミング 60分間1本勝負

    https://fukabori.fm/episode/6
    • モブプログラミング Advent Calendar 2018

    https://qiita.com/advent-calendar/2018/mobprogramming
    参考資料
    17

    View Slide