Slide 1

Slide 1 text

ハッシュタグ:#javado Kotlin練習編: モブプログラミングの方法 山川広人 (@gishi_yama)
 公立千歳科学技術大学 情報システム工学科 Javaエンジニアグループ北海道 Java Do 1

Slide 2

Slide 2 text

ハッシュタグ:#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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

ハッシュタグ:#javado A day Of Mob Programming 5 https://youtu.be/p_pvslS4gEI https://youtu.be/dVqUcNKVbYg スクラムの中にとりこんでもよい
 ⇒カイゼン・ジャーニー等を参考

Slide 6

Slide 6 text

ハッシュタグ:#javado モブプログラミング(モビング) 6 3人以上でグループを組み、
 同じ場所・同じ機材で同じプログラミングを行うチームワーク手法
 (≒ペアプログラミングの多人数化) 2012年頃にアメリカのHunter社が本格的に取り入れ、
 日本では楽天などの開発現場で実利用されていることが有名。
 日本でも書籍や実践事例が増えてきている。
 モビング(Mobbing), モブワーク(MobWork)とも。 図引用:TAKAKING22, Mob Programming Startup Manual(https://takaking22.com/2018/mobpro_manual/) ↑の本では、
 ドライバーとナビゲーターではなく
 タイピストとモブ と呼んでおり、
 この資料もそれに倣う

Slide 7

Slide 7 text

ハッシュタグ:#javado モブプログラミングに期待される効果 7 ? ! モブプログラミング: 複数人の質疑や議論の結果で進む ○ 難しい課題に複数人の知識・スキルで取り組める
 ○ 相互に異なる知識・スキルを共有・継承できる
 ○ 開発とレビュー、を兼ねられる
 ○ コーチ、マネージャ、レビュアー、プロダクトオーナー
 もモブの一員とし、フィードバックなども ペアプログラミング: 二人の質疑や議論の結果で進む ○ 難しい課題に二人の知識・スキルで取り組む
 ○ 知識・スキルを継承できる
 × 技術継承の方向性が一方向になりがち
 × ドライバーとナビゲーターの関係性やスキルの違いが
 パフォーマンスに影響しがち

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

ハッシュタグ:#javado モブプログラミングに期待される効果 9 技術・経験が深いメンバーによるモビング 技術・経験が浅いメンバーを含むモビング プロダクトマネージャー or オーナー、
 上司などを含むモビング 新入社員研修、
 新規配属時のスタートアップ、
 コードレビュー時など
  ・情報、知識、技術、文化の
   共有・継承・学習
  ・モビング手法の会得 難度や重要度の高の部分、
 (開発全体に適用してもよい)
 レトロスペクティブ時など
  ・知識・技術の一局集中
   ・ボトルネックの解消
   ・知識、技術の向上と浸透
  ・キーパーソンに変わる
    チームの組織性の向上 スプリントレビュー
 成果物レビュー、デモ時など
  ・認識の共有、軌道修正
  ・オーナーシップの育成
  ・チームやプロジェクトの改善

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

ハッシュタグ:#javado • 全員がタイピストによる操作・コーディングを確認できる大きなディスプレイ(プロジェクター) 
 1 or 2基 ※コーディングと調査用 • モブが考えをまとめるためのホワイトボード、ふせん(KJ法) • いくつかのアプリ(モブタイマー、IDE) ※私は Mobster というツールをよく使ってます モブプログラミングに推奨される環境 11 図引用: マーク・パール (著)、長尾高弘(訳)、 及部敬雄(解説):モブプログラミング・ベストプラクティス 使い慣れてないキーボードや
 マウスだと、若干手こずるが、
 個人差があって難しい....

Slide 12

Slide 12 text

ハッシュタグ:#javado 1. 3名以上で集まる 2. モブを行う時間と、時間内に到達を目指すゴール、役割交代のタイミング(10〜15分ごと)を決める
 〈モブ〉
 ・ 解決すべきプログラム上の課題や問題点に集中し、問題解決のための方法を考え・推測・提案する
 ・ 新たな問題が発生していないかを探す
 ・ わからないことはわかるまで質問して、学ぶ
 〈タイピスト〉
 ・モブの合意がとれた提案を、操作やコードの形にして入力する 3. 役割を交代しながら、一週したら休憩などを取る 4. ゴールが達成できたら、みんなで喜ぶ(ハイタッチ!) 5. モブ終了の時間がきたら、次回のモブにむけてふりかえりを行う
 (KPT: Keep, Problem, Try 、量的評価など) モブプログラミングの流れ 12 ※モブ側に、コーチやマネージャー、
   レビュアーやプロダクトオーナーが参加してもよい モブ タイピスト モブ モブ モブ モブ

Slide 13

Slide 13 text

ハッシュタグ:#javado 1. 〈全員〉内職禁止!
 ノートPCやデバイスが手元にあっても良いが、メモや簡易の検索に限る (なんなら閉じておく)
 割り込み仕事、時間がかかる調査はルールを定めて別に行う
 (例:短い感覚でこまめに休憩を取る or 席を外す、サイクルを一旦止めて調査専用の時間を作る) 2. 〈全員〉 分からないこと・確認しておきたいことを残してはいけない
 分からない事や不安・不明な点が出てくるのは当然であり、そのままにしておくことを恥じる
 どんな質問・確認であっても、容認し、受け止め、全員の不明点を解消する
 質問・確認を言い出しやすい雰囲気や工夫をする(心理的安全を作り出す) 3. 〈タイピスト〉 モブ全体の合意がない操作やコード化をしてはいけない
 特定の誰かの意見や指示だけに従ってPCの操作やコード化をしてはいけない
 モブ全体が合意していることだけに沿って、PCの操作やコード化をする(合意がとれているか確認する) 〈特に初期〉モビングをうまく進めるためのすべからず6箇条(案) 13

Slide 14

Slide 14 text

ハッシュタグ:#javado 4. 〈タイピスト〉 自分の想像や知識だけでコードを書いてはいけない
 モブの指示を勝手に解釈し、自らの知識だけで操作やコードを書かない
 どのようなPCの操作やコードが必要か、モブにつぶさに確認をして、PC操作やコードに反映する
 指示に納得できない点がある場合は、タイピストを交代し、モブとして自分の考えを合意に反映する 5. 〈モブ〉 攻撃や差別、ハラスメントをしない
 いうまでもないことですが...どんな場合も相手を傾聴し、チームの力になることが大事
 意見の衝突や感情的になりそうな時は、誰かが休憩を促す 6. 〈全員〉 時間や順番を守らずに進めてはいけない
 役割の交代や全体の時間の厳守、やらなくてはいけない事柄を厳守する
 役割は操作の途中でも交代。全体の時間オーバーの場合は潔く中断し、「ふりかえり」を犠牲にせず行う 〈特に初期〉モビングをうまく進めるためのすべからず6箇条(案) 14 べからず集は堅く見えますが、最初はしっかりと守り、アレンジをした方がモビングの効果が高まります

Slide 15

Slide 15 text

ハッシュタグ:#javado Kotlin Practice 
 with "Mob Programming" 15

Slide 16

Slide 16 text

ハッシュタグ:#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

Slide 17

Slide 17 text

ハッシュタグ:#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