Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
心理的安全性とリファクタリングステップでモブプログラミングはめっちゃ輝く
Search
eiji.ienaga
June 25, 2021
Programming
4
2k
心理的安全性とリファクタリングステップでモブプログラミングはめっちゃ輝く
Scrum Fest Osaka2021のAgile Studio(永和システムマネジメント)のスポンサーセッション、前半で利用した資料です。
一部修正済み。
eiji.ienaga
June 25, 2021
Tweet
Share
More Decks by eiji.ienaga
See All by eiji.ienaga
テストオートメーションと末長くお付き合いするための17のこと
haru01
3
460
20240913知識ポートフォリオ
haru01
0
19
Agile Studioウェビナー~モブプログラミング&テスト駆動開発はじめの一歩~
haru01
0
220
XP祭り2022 xUnit Test Patterns勉強会
haru01
0
710
agile459-feedback
haru01
1
1.8k
書籍『テスト駆動開発』の紹介(みんなのPython勉強会#37 の発表資料)
haru01
2
7.6k
書籍『テスト駆動開発』7つの魅力のご紹介
haru01
1
1.1k
いえぴょんによる弾丸特急フィードバック講座
haru01
5
600
アプレンティスシップ・パターンの紹介
haru01
0
330
Other Decks in Programming
See All in Programming
PHPで作るWebSocketサーバー ~リアクティブなアプリケーションを知るために~ / WebSocket Server in PHP - To know reactive applications
seike460
PRO
2
150
rails statsで大解剖 🔍 “B/43流” のRailsの育て方を歴史とともに振り返ります
shoheimitani
2
930
CSC305 Lecture 26
javiergs
PRO
0
140
フロントエンドのディレクトリ構成どうしてる? Feature-Sliced Design 導入体験談
osakatechlab
8
4.1k
責務を分離するための例外設計 - PHPカンファレンス 2024
kajitack
1
540
開発者とQAの越境で自動テストが増える開発プロセスを実現する
92thunder
1
180
Keeping it Ruby: Why Your Product Needs a Ruby SDK - RubyWorld 2024
envek
0
180
Cloudflare MCP ServerでClaude Desktop からWeb APIを構築
kutakutat
1
540
MCP with Cloudflare Workers
yusukebe
2
220
menu基盤チームによるGoogle Cloudの活用事例~Application Integration, Cloud Tasks編~
yoshifumi_ishikura
0
110
KubeCon + CloudNativeCon NA 2024 Overviewat Kubernetes Meetup Tokyo #68 / amsy810_k8sjp68
masayaaoyama
0
250
なまけものオバケたち -PHP 8.4 に入った新機能の紹介-
tanakahisateru
1
120
Featured
See All Featured
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
2
170
Producing Creativity
orderedlist
PRO
341
39k
Intergalactic Javascript Robots from Outer Space
tanoku
270
27k
Building an army of robots
kneath
302
44k
StorybookのUI Testing Handbookを読んだ
zakiyama
27
5.3k
A better future with KSS
kneath
238
17k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
44
6.9k
Side Projects
sachag
452
42k
Why You Should Never Use an ORM
jnunemaker
PRO
54
9.1k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
247
1.3M
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
59k
The World Runs on Bad Software
bkeepers
PRO
65
11k
Transcript
© 2021 ESM, Inc. ⼼理的安全性とリファクタリングのステップ で、モブプログラミングはめっちゃ輝く 1 2021年6月26日 株式会社永和システムマネジメント Scrum
Fest Osaka 2021 スポンサーセッション
© 2021 ESM, Inc. 今⽇のメンバー いえぴょん くんみほ ふじみ たくみ
© 2021 ESM, Inc. 宣伝 3
© 2021 ESM, Inc. 永和システムマネジメント 4 福井本社 東京支社/神田 沖縄事務所 •
金融、医療、組込み(自動車) • Web/Cloud、アジャイル開発 • 社員 220名エンジニア集団
© 2021 ESM, Inc. アジャイルジャーニーに伴走する、8つのサービス 5 アジャイルの知識を身につける アジャイル研修 アジャイルチームをはじめてみる アジャイルチーム立ち上げ
アジャイル内製チームを実現する 内製化支援 モダンエンジニアへの技術転換 技術転換支援 フルリモートでのアジャイル内製化支援 リモートアジャイルBoot Camp モダンエンジニアとアジャイルチームを組む リモートアジャイル開発 経営層やマネジメント向けのセミナーを実施 組織の方向付け マインドチェンジ 組織への横展開や定着を支援する アジャイル推進・定着支援
© 2021 ESM, Inc. Agile Studio 見学のご案内 6 Zoomによるスタジオ⾒学は100社500名の実績︕お気軽にお申込みください。 https://www.agile-studio.jp/tour
© 2021 ESM, Inc. ”⼈間性尊重と技術的卓越 の両⽅を⼤切にした 躍動感みなぎるチームを つくりたい︕” コーチングのご相談はこちらまで https://www.agile-studio.jp/ienaga
いえぴょんXPコーチへのご相談
© 2021 ESM, Inc. 宣伝終了︕ 8
© 2021 ESM, Inc. ミニ講義 x リファクタリング& モププロの練習⾵景の⾒学会 9
© 2021 ESM, Inc. リファクタリング ⼼理的安全性 モブプログラミング 後でリファクタリングx モブプロの練習⾵景の⾒学 10
© 2021 ESM, Inc. リファクタリングとは︖ 11
© 2021 ESM, Inc. リファクタリング(名詞)とは︖ ”外部から⾒たときの振る舞いを保ちつつ、 理解や修正が簡単になるように、 ソフトウ ェアの内部構造を変化させること
© 2021 ESM, Inc. リファクタリングを ⾏う理由は︖ 13
© 2021 ESM, Inc. “リファクタリングの⽬的は、 少ない労 ⼒で多くの価値を⽣み出すべくプログラ ミングの速度を上げることにある。
© 2021 ESM, Inc. ソフトウェア設計を改善する ソフトウェアを理解しやすくする バグ発⾒を助ける プログラミングを速める (デザインスタミナ仮説) リファクタリングを⾏う理由は
© 2021 ESM, Inc. 時間 まずい設計 すぐれた 設計 デザインスタミナ仮説 累積した
機能の量
© 2021 ESM, Inc. ビジネスインパクトが 出しづらくなる。 影響範囲調査に時間がかかる。。。 変更コストが⾼く⾼くなる。。。 意図せずバグ混⼊で対応に⼿間取る。。。 Aさんが抜けて、誰も⼿をつけられなくなった。。。
etc.. リファクタリングや継続的イン テグレーション等の内側ループ 活動が⽋けると, 技術的負債の 重みを背負い、やがて。。。
© 2021 ESM, Inc. 技術的負債の放置はシステムのメンテナンス費⽤の⾼額化等を招き、後で⼿痛い経営課題となる DXレポート 〜ITシステム「2025年の崖」克服とDXの本格的な展開〜 経済産業省 https://www.meti.go.jp/shingikai/mono_info_service/digital_transformation/20180907_report.html 技術的負債と経営課題
© 2021 ESM, Inc. リファクタリング実施理由 の危険な罠
© 2021 ESM, Inc. ”しかし、 私が最も危険な罠と思うのは、 「美しいコード」、 「す ばらしいエンジニアリングのプラクティス」 といった道徳的理由に
より、 リファクタリングが正当化される状況です。 リファクタリン グは、 コードベースがどれだけ美しいかではなく、 純粋に経済的な 基準で測られるものです。 リファクタリングするのは、 あくまでも スピードを上げるため、 新機能の追加やバグの修正を速めるためで す。 そのことを常に⼼にとどめるべきですし、 メンバにもその観点 を持って接していく必要があります。
© 2021 ESM, Inc. はい。 マーチン・ファウラー先⽣、 危険な罠に気をつけます︕
© 2021 ESM, Inc. リファクタリングを ⾏うタイミングは︖ 22
© 2021 ESM, Inc. 私のアジャイルチームではプログラミング中に A: 少なくとも10分に1回リファクタリングしている B: 少なくとも1時間に1回リファクタリングしている C:
少なくとも1⽇に1回リファクタリングしている D: 少なくとも1週間に1回リファクタリングしている E: リファクタリングは実施していない。知らない。 リファクタリングの実施頻度アンケート
© 2021 ESM, Inc. ”プログラミング中は、1時間に1回は リファクタリングしていると思います。
© 2021 ESM, Inc. 機に応じてリファクタリング(⼤半) 計画したリファクタリング(まれ) 機能追加の準備にリファクタリング コード理解の際にリファクタリング コードレビュー時のリファクタリング ゴミ拾いのリファクタリング
⻑期のリファクタリング いつリファクタリングをする︖
© 2021 ESM, Inc. テスト駆動開発とリファクタリング 1.RED 2.Green 3.Refactor テストを書いて実⾏する =>
ビジネス仕様の具体例を明確にする => テスト対象をテストしやすい設計に導く => 安⼼してリファクタリングできる⾜場をつくる ソフトウェア開発は分析-設計-実装-テストレビュー、 結合、デプロイの複雑なダンス。 複雑なダンスをテストを使って駆動させる開発技法 テストがGreen状態のときのみ、リファクタリング する。意図せず壊れたらGreen状態に戻る
© 2021 ESM, Inc. TDD⽂脈なら1時間よりもっと短いサイクルで 頻繁にリファクタリング テストがGreen状態のときのみ、 リファクタリングする。 意図せず壊れたらGreen状態に戻る。 安⼼安全⼤事
© 2021 ESM, Inc. リファクタリング ⼼理的安全性 モブプログラミング 後でリファクタリングx モブプロの練習⾵景 28
© 2021 ESM, Inc. ⼼理的安全性とは︖ 29
© 2021 ESM, Inc. ”⼼理的安全性とは、⼤まかに⾔えば「みん なが気兼ねなく意⾒を述べることができ、⾃ 分らしくいられる⽂化」のことだ。 心理的安全性とは? 率直に意⾒を述べても⾮難されない確信 ⾔ったもの負けにはならない
わからないことがあれば恥ずかしがらずに質問できる 同僚との信頼、尊敬 ...
© 2021 ESM, Inc. 5テップの1つ⽬に⼼理的安全性 「効果的なチームとは何か」を知る https://rework.withgoogle.com/jp/guides/understanding-team-effectiveness/steps/introduction/ 1. ⼼理的安全性 2.
相互信頼 3. 構造と明確さ 4. 仕事の意味 5. インパクト Googleのチーム調査。
© 2021 ESM, Inc. ⼼理的安全性とは︖ “...つまり、複雑かつ絶えず変化する環 境で活動する組織において、⼼理的安全 性は価値創造の源として絶対に⽋かせな いものなのである。
© 2021 ESM, Inc. ⼼理的安全性についての誤解 33
© 2021 ESM, Inc. ⼼理的安全性は、 感じよく振る舞うこととは関係ない 性格の問題ではない 信頼の別名ではない ⽬標達成基準を下げることではない ⼼理的安全性についての誤解
© 2021 ESM, Inc. ⼼理的安全性と基準 35
© 2021 ESM, Inc. ⼼理的安全性x業績基準が⾼い 基準の⾼い≒ スクラムで表現しなおすなら、プロダクトゴール、スプリント ゴール、完成の定義への確約(コミットメント)
© 2021 ESM, Inc. アンケート A B C D 今の職場やチームは、A,
B, C, D の どれに近そうですか︖
© 2021 ESM, Inc. ”エクストリーム・プログラミングは最も古くからあるアジャイル開発⼿法[mf- nm] の⼀つであ り、 アジャイルの牽引役でした。 今やアジャイル開発⼿法を
⽤いているプロジェクトはかなり多くなり、 アジャイルな考え⽅は⼀般に受け⼊ れられ主流になったと⾔えます。 しかし現実的にはほとんどの 「アジャイル」 プロジェクトは名ばかりのものです。 真にアジャイルなやり⽅を実践するには、 チームメンバはリファクタリングの技能を持ち、 かつ熱⼼に取り組む⼈たちでな ければなりません。 そのために、 開発プロセスの多くは、リファクタリングが 通常の作業の⼀部になることに適合する必要があります。
© 2021 ESM, Inc. はい。 マーチン・ファウラー先⽣、 名ばかりにならないよう 精進します︕
© 2021 ESM, Inc. リファクタリング ⼼理的安全性 モブプログラミング 後でリファクタリングx モブプロの練習⾵景 40
© 2021 ESM, Inc. モブプログラミング︖ 41
© 2021 ESM, Inc. 3⼈以上の⼈々がコンピュータに 集まって問題を解決していく活動 モブプログラミング https://www.youtube.com/watch?v=dVqUcNKVb Yg https://www.youtube.com/watch?v=p_pvslS4gEI
© 2021 ESM, Inc. ⼼理的安全性を保ちながらモブプログラミング ≒ 過去のリリース結果の傾向、ユーザニーズの有無、 ニーズに応える解決案A,B,Cのトレードオフ、仕様の 抜け漏れや⽭盾、コードの不吉な臭い等を、チーム メンバー同⼠が気兼ねなく意⾒し合う状態を保つこ
とで相互学習を促進し、仕事の質の基準を引き上げ て、インパクトを⽣成し続ける活動
© 2021 ESM, Inc. なぜモブプログラミング︖ 44
© 2021 ESM, Inc. 素早く1つの問題を解決しリリースするため (フロー効率>リソース効率) 外部品質・内部品質UPのため (顧客やユーザ&メンテナンスする⼈にとっての嬉しさUP) 相互学習によるスキル熟達のため (ニーズを理解する、複数の実現⼿段から選ぶ等は難しい作業)
なぜモブプログラミング︖
© 2021 ESM, Inc. モブプログラミングの 最低限の原則 46
© 2021 ESM, Inc. 優しさ、思いやり、尊敬 多様なメンバーで⾒解が⼀致しない対話が続くことが”ふつう”だからこそ、⼤切にする原則 https://github.com/kawaguti/mobprogramming-woodyzuill-ja/blob/master/mobprogramming-ja.md
© 2021 ESM, Inc. モブプログラミングの よくあるパターン・コツ 48
© 2021 ESM, Inc. https://www.agilealliance.org/resources/experience-reports/harvesting-mob-programming-patterns-observing-how-we-work/ https://github.com/michaelkeeling/mob-programming-patterns チームでパターンを読み合わせて試してみるはお勧め
© 2021 ESM, Inc. 本家モブは実務で学びのほかに 1⽇1時間スキルラーニングセッション
© 2021 ESM, Inc. スキルラーニングセッション 練習お題を使って リファクタリング X モブ の練習しましょう。
51
© 2021 ESM, Inc. 今⽇のルール
© 2021 ESM, Inc. 優しさ、思いやり、尊敬 タスクリスト(Punch List) ナチュラルスワップ うまくいったら喜び表現150%増々 ⻑考RedになったらGreenに戻す
今⽇のルール