Kotlin入門:Kotlinらしい書き方をモブプログラミングで学ぼう! https://javado.connpass.com/event/147516/
ハッシュタグ:#javadoKotlin練習編:モブプログラミングの方法山川広人 (@gishi_yama) 公立千歳科学技術大学 情報システム工学科Javaエンジニアグループ北海道 Java Do1
View Slide
ハッシュタグ:#javado公立千歳科学技術大学 情報システム工学科 専任講師R&D: Experimental Development of ICT (ex:City-Bus Tacking System) Computer in Education, Programming and Programmer's Learning Community:Hiroto Yamakawa, @gishi_yama2
ハッシュタグ:#javado大学の研究開発やIT勉強会でモブプログラミングを取りいれています!3
ハッシュタグ:#javadoWhat is "Mob Programming"?4
ハッシュタグ:#javadoA day Of Mob Programming5https://youtu.be/p_pvslS4gEI https://youtu.be/dVqUcNKVbYgスクラムの中にとりこんでもよい ⇒カイゼン・ジャーニー等を参考
ハッシュタグ:#javadoモブプログラミング(モビング)63人以上でグループを組み、 同じ場所・同じ機材で同じプログラミングを行うチームワーク手法 (≒ペアプログラミングの多人数化)2012年頃にアメリカのHunter社が本格的に取り入れ、 日本では楽天などの開発現場で実利用されていることが有名。 日本でも書籍や実践事例が増えてきている。 モビング(Mobbing), モブワーク(MobWork)とも。図引用:TAKAKING22, Mob Programming Startup Manual(https://takaking22.com/2018/mobpro_manual/)↑の本では、 ドライバーとナビゲーターではなく タイピストとモブ と呼んでおり、 この資料もそれに倣う
ハッシュタグ:#javadoモブプログラミングに期待される効果7?!モブプログラミング: 複数人の質疑や議論の結果で進む○ 難しい課題に複数人の知識・スキルで取り組める ○ 相互に異なる知識・スキルを共有・継承できる ○ 開発とレビュー、を兼ねられる ○ コーチ、マネージャ、レビュアー、プロダクトオーナー もモブの一員とし、フィードバックなどもペアプログラミング: 二人の質疑や議論の結果で進む○ 難しい課題に二人の知識・スキルで取り組む ○ 知識・スキルを継承できる × 技術継承の方向性が一方向になりがち × ドライバーとナビゲーターの関係性やスキルの違いが パフォーマンスに影響しがち
ハッシュタグ:#javadoモブプログラミングに期待される効果8分業によるアウトプット量よりもモブによるアウトカムの向上を重視する図引用:TAKAKING22, Mob Programming Startup Manual(https://takaking22.com/2018/mobpro_manual/)https://twitter.com/t_wada/status/1155691342560808965
ハッシュタグ:#javadoモブプログラミングに期待される効果9技術・経験が深いメンバーによるモビング技術・経験が浅いメンバーを含むモビングプロダクトマネージャー or オーナー、 上司などを含むモビング新入社員研修、 新規配属時のスタートアップ、 コードレビュー時など ・情報、知識、技術、文化の 共有・継承・学習 ・モビング手法の会得難度や重要度の高の部分、 (開発全体に適用してもよい) レトロスペクティブ時など ・知識・技術の一局集中 ・ボトルネックの解消 ・知識、技術の向上と浸透 ・キーパーソンに変わる チームの組織性の向上スプリントレビュー 成果物レビュー、デモ時など ・認識の共有、軌道修正 ・オーナーシップの育成 ・チームやプロジェクトの改善
ハッシュタグ:#javadoHow to try "Mob Programming"?10
ハッシュタグ:#javado• 全員がタイピストによる操作・コーディングを確認できる大きなディスプレイ(プロジェクター) 1 or 2基 ※コーディングと調査用• モブが考えをまとめるためのホワイトボード、ふせん(KJ法)• いくつかのアプリ(モブタイマー、IDE) ※私は Mobster というツールをよく使ってますモブプログラミングに推奨される環境11図引用: マーク・パール (著)、長尾高弘(訳)、 及部敬雄(解説):モブプログラミング・ベストプラクティス使い慣れてないキーボードや マウスだと、若干手こずるが、 個人差があって難しい....
ハッシュタグ:#javado1. 3名以上で集まる2. モブを行う時間と、時間内に到達を目指すゴール、役割交代のタイミング(10〜15分ごと)を決める 〈モブ〉 ・ 解決すべきプログラム上の課題や問題点に集中し、問題解決のための方法を考え・推測・提案する ・ 新たな問題が発生していないかを探す ・ わからないことはわかるまで質問して、学ぶ 〈タイピスト〉 ・モブの合意がとれた提案を、操作やコードの形にして入力する3. 役割を交代しながら、一週したら休憩などを取る4. ゴールが達成できたら、みんなで喜ぶ(ハイタッチ!)5. モブ終了の時間がきたら、次回のモブにむけてふりかえりを行う (KPT: Keep, Problem, Try 、量的評価など)モブプログラミングの流れ12※モブ側に、コーチやマネージャー、 レビュアーやプロダクトオーナーが参加してもよいモブタイピストモブ モブモブモブ
ハッシュタグ:#javado1. 〈全員〉内職禁止! ノートPCやデバイスが手元にあっても良いが、メモや簡易の検索に限る (なんなら閉じておく) 割り込み仕事、時間がかかる調査はルールを定めて別に行う (例:短い感覚でこまめに休憩を取る or 席を外す、サイクルを一旦止めて調査専用の時間を作る)2. 〈全員〉 分からないこと・確認しておきたいことを残してはいけない 分からない事や不安・不明な点が出てくるのは当然であり、そのままにしておくことを恥じる どんな質問・確認であっても、容認し、受け止め、全員の不明点を解消する 質問・確認を言い出しやすい雰囲気や工夫をする(心理的安全を作り出す)3. 〈タイピスト〉 モブ全体の合意がない操作やコード化をしてはいけない 特定の誰かの意見や指示だけに従ってPCの操作やコード化をしてはいけない モブ全体が合意していることだけに沿って、PCの操作やコード化をする(合意がとれているか確認する)〈特に初期〉モビングをうまく進めるためのすべからず6箇条(案)13
ハッシュタグ:#javado4. 〈タイピスト〉 自分の想像や知識だけでコードを書いてはいけない モブの指示を勝手に解釈し、自らの知識だけで操作やコードを書かない どのようなPCの操作やコードが必要か、モブにつぶさに確認をして、PC操作やコードに反映する 指示に納得できない点がある場合は、タイピストを交代し、モブとして自分の考えを合意に反映する5. 〈モブ〉 攻撃や差別、ハラスメントをしない いうまでもないことですが...どんな場合も相手を傾聴し、チームの力になることが大事 意見の衝突や感情的になりそうな時は、誰かが休憩を促す6. 〈全員〉 時間や順番を守らずに進めてはいけない 役割の交代や全体の時間の厳守、やらなくてはいけない事柄を厳守する 役割は操作の途中でも交代。全体の時間オーバーの場合は潔く中断し、「ふりかえり」を犠牲にせず行う〈特に初期〉モビングをうまく進めるためのすべからず6箇条(案)14べからず集は堅く見えますが、最初はしっかりと守り、アレンジをした方がモビングの効果が高まります
ハッシュタグ:#javadoKotlin Practice with "Mob Programming"15
ハッシュタグ:#javado1. TechFulで、プログラミングの演習問題をKotlinで解く https://techful-programming.com/ 2. 渡部さんの「年賀状の宛名をKotlinで出力するプログラム」をKotlinで改良する https://github.com/susan335/Javado-NewYearCard > src/main/kotlin/Main.kt 3. フリー課題(グループごとに作るものを決める) 前回(Java回)の例 : じゃんけんゲーム今日の練習内容 どれか一つをグループで選んでください16
ハッシュタグ:#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