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
【PhpStorm】モブプログラミングの実践と学び【結局はバランス?】
Search
y-tsuzaki
September 24, 2022
Programming
0
340
【PhpStorm】モブプログラミングの実践と学び【結局はバランス?】
PHPカンファレンス2022の登壇資料です
https://fortee.jp/phpcon-2022/proposal/911ccf1e-15b0-4465-a02e-f0e4e54aa2df
y-tsuzaki
September 24, 2022
Tweet
Share
More Decks by y-tsuzaki
See All by y-tsuzaki
PHPカンファレンス福岡2024 【超特急】SQLアンチパターン総おさらいLT
ytsuzaki
0
850
PHPカンファレンス北海道2024 リーダブルSQL
ytsuzaki
5
570
ある日PHPerがベンチャー企業のデータ基盤を作ることになったら
ytsuzaki
1
350
PHPerKaigi 2022 【Laravel】 サクッとN + 1問題を見つけて倒しチャオ!
ytsuzaki
1
2.7k
【超特急】「SQLアンチパターン」 総おさらいLT 【4分で25個】
ytsuzaki
2
740
Nuxt Composition API 使ってみた
ytsuzaki
0
160
Nuxt.js x Composition API x TypeScript
ytsuzaki
0
660
PHPerKaigi 2021 LT PHPで簡単コード生成! 同じようなコードをたくさん書くなら コード生成しチャイナ!
ytsuzaki
0
100
アクセス制御ライブラリ Casbinを使ってみた
ytsuzaki
2
1.3k
Other Decks in Programming
See All in Programming
Universal Linksの実装方法と陥りがちな罠
kaitokudou
1
220
Synchronizationを支える技術
s_shimotori
1
150
Sidekiqで実現する 長時間非同期処理の中断と再開 / Pausing and Resuming Long-Running Asynchronous Jobs with Sidekiq
hypermkt
6
2.6k
GCCのプラグインを作る / I Made a GCC Plugin
shouth
1
150
go.mod、DockerfileやCI設定に分散しがちなGoのバージョンをまとめて管理する / Go Connect #3
arthur1
10
2.3k
生成 AI を活用した toitta 切片分類機能の裏側 / Inside toitta's AI-Based Factoid Clustering
pokutuna
0
560
From Subtype Polymorphism To Typeclass-based Ad hoc Polymorphism- An Example
philipschwarz
PRO
0
160
Kotlin2でdataクラスの copyメソッドを禁止する/Data class copy function to have the same visibility as constructor
eichisanden
1
110
ECS Service Connectのこれまでのアップデートと今後のRoadmapを見てみる
tkikuc
2
200
Progressive Web Apps für Desktop und Mobile mit Angular (Hands-on)
christianliebel
PRO
0
110
Go言語でターミナルフレンドリーなAIコマンド、afaを作った/fukuokago20_afa
monochromegane
2
140
OpenTelemetryでRailsのパフォーマンス分析を始めてみよう(KoR2024)
ymtdzzz
4
1.5k
Featured
See All Featured
Bootstrapping a Software Product
garrettdimon
PRO
305
110k
jQuery: Nuts, Bolts and Bling
dougneiner
61
7.5k
Code Review Best Practice
trishagee
64
17k
Building Your Own Lightsaber
phodgson
102
6k
Being A Developer After 40
akosma
86
590k
A Modern Web Designer's Workflow
chriscoyier
692
190k
Statistics for Hackers
jakevdp
796
220k
Building Adaptive Systems
keathley
38
2.2k
[RailsConf 2023] Rails as a piece of cake
palkan
51
4.8k
Code Reviewing Like a Champion
maltzj
519
39k
Build The Right Thing And Hit Your Dates
maggiecrowley
32
2.4k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
504
140k
Transcript
Copyright© M&Aクラウド 【PhpStorm】モブプログラミングの実践と学 び【結局はバランス?】 PHP Conference Japan 2022 M&Aクラウド プロダクト開発部
つざき
Copyright© M&Aクラウド 2 自己紹介 つざき M&Aクラウド所属 Webアプリケーション開発 /データ基盤構築(最近) Twitter: 820zacky
Copyright© M&Aクラウド お品書き お品書き ・会社/開発チーム紹介 ・モブプログラミングとは ・なぜモブプロをやることにしたのか? ・毎日モブプロやってみた ・やり方 ・メリット
・デメリット ・モブプロ撤退 ・まとめ 3
Copyright© M&Aクラウド 会社説明 4
Copyright© M&Aクラウド 求人広告サイトのような M&Aダイレクトマッチング 5 買い手 ・案件報酬はM&A成功報酬のみ ・最低手数料なし ・売り手ソーシングのチャネルが増える ・M&Aニーズを発信するだけで売り手を集客
・仲介業者を介さずにダイレクトにやり取り可能 ・潜在層にもリーチが可能 手数料無料 ※プラットフォーム案件の場合 ※ 売り手 1.掲載する ・買い手のM&Aニーズを自ら調べることが可能 ・仲介業者を介さずにダイレクトにやり取り可能 ・買い手のM&A担当者に直接コンタクトをとれる ・仲介業者を使わないので手数料が無料 2.オファーする M&A・出資ニーズを掲載 買い手のメリット 売り手のメリット ・仲介業者を使わないので手数料が無料 〇〇領域の会社を 募集します この会社と一緒に やっていきたい! 5 PR
Copyright© M&Aクラウド M&Aクラウドの開発チーム 現在、エンジニア8名 Laravel, Nuxt.js, Svelte Kitを使って開発をしてます 6
Copyright© M&Aクラウド モブプログラミングとは 7
Copyright© M&Aクラウド モブプログラミングとは モブプログラミング(モブプロ、モビング) 3人以上のエンジニアで 1つのプログラムを書き、チームで成果物を完成させる、チーム作業のテクニック 「 効果的なモブプログラミングからは、チームによるすばらしいソフトウェアが生まれる。欠陥が減り、キー パーソンに頼る部分が少なく、堅牢でじっくり考え抜かれたプログラムが高いフロー効率で完成していく のである。」
モブプログラミング・ベストプラクティス より引用 8
Copyright© M&Aクラウド なぜモブプロをやることにしたのか? 9
Copyright© M&Aクラウド なぜモブプロをやることにしたのか? モブプロ導入前の生産性向上の試み ・PRレビュー時のペアプロ ・WIP制限 10
Copyright© M&Aクラウド なぜモブプロをやることにしたのか? PRレビュー時のペアプロ 11
Copyright© M&Aクラウド なぜモブプロをやることにしたのか? WIP制限 同時に作業する数を制限することで、各フェーズの問題点がわかりやすくなる。 マルチタスクがなくなって効率が上がる。 1人4ポイント以上同時に持ってはいけないルールにした。 12
Copyright© M&Aクラウド なぜモブプロをやることにしたのか? PRレビュー時のペアプロとWIP制限の成果 サイクルタイムが減少した 3.0日->1.8日 ベロシティとの負の相関( -0.76)があることも確かめられた 13
Copyright© M&Aクラウド なぜモブプロをやることにしたのか? PRレビュー時のペアプロとWIP制限の成果 → サイクルタイムが下がりベロシティが向上した → もっと共同作業してもっと WIPを減らすにはどうしたら? →モブプロをやってみよう!
14
Copyright© M&Aクラウド 毎日モブプロやってみた 15
Copyright© M&Aクラウド モブプログラミングやってみた モブプログラミング・ベストプラクティス 16
Copyright© M&Aクラウド モブプログラミングやってみた モブプログラミング・ベストプラクティス リソース効率よりもフロー効率 ←リソース効率を優先の例 道路をフルに使って大量に車を移動させる 渋滞が起こる ←フロー効率を優先 道路に余裕を持たせると渋滞が起こらない
17
Copyright© M&Aクラウド モブプログラミングやってみた モブプログラミング・ベストプラクティス ロール ・タイピスト(ドライバ) ・その他のモブ(ナビゲータ) タイピストはプログラマーではない タイピストが勝手にコードを書き進めてはいけない その他のモブがしてくれと言ったことを実現するスマートアシスタント
18
Copyright© M&Aクラウド モブプログラミングやってみた モブプログラミング・ベストプラクティス 進め方 ・10分でタイピスト交代 ・休憩 ・30分に一回: 5分 ・2,3時間に一回:
15~20分 ・停滞したら都度休憩 19
Copyright© M&Aクラウド - モブプロベストプラクティスでは物理オフィス、物理 PCを前提 - Code With Meを利用 -
PhpStormで使える共同編集機能 - SlackのHuddle(音声通話)との併用 - Slackで呼びかけてシームレスに作業開始 - Code With Meがよくフリーズするので音声通話は別がよい モブプログラミングやってみた リモートでのモブプロ 20
Copyright© M&Aクラウド • モブプロ参加者は3名(2チーム体制のうち1チームで実践) • 毎日やる • 基本的には10:00〜16:00のコアタイムで実施 • 進めるタスクは3人で1個
• 期間:2ヶ月弱 モブプログラミングやってみた 実践方法 21
Copyright© M&Aクラウド 毎日モブプロやってみてわかった メリット 22
Copyright© M&Aクラウド モブプログラミングやってみた メリット • 複数人で問題解決した方がより良い答えがでる • 未知領域、苦手領域のキャッチアップが楽に(属人性の改善)
• レビュー高速化 • 開発知識の平滑化 23
Copyright© M&Aクラウド モブプログラミングやってみた メリット: 複数人で問題解決した方がより良い答えがでる 体感として、話し合いの中でいいアイデアが浮かぶことが多い 1人でタスクを終わらせることばかり考えて実装していると、 つい安直で長期の保守性の悪い手法を選択しがち
複数人で話し合う方が、「このタスクの目的はなんだっけ?」というところからしっかり考えて堅牢なコー ドが実装できる →計測できていないが、バグや障害の 減少、リファクタリングコストの減少など、長期的なリターンがあ ると感じている 24
Copyright© M&Aクラウド モブプログラミングやってみた メリット: 未知領域、苦手領域のキャッチアップが楽に(属人性の改善) チームで一つのタスクに取り組むので「得意な人が得意なタスクを取る」みたいなことが 発生しない 開発の属人性が減りスキルアップにもつながる
25
Copyright© M&Aクラウド モブプログラミングやってみた メリット: レビュー高速化 モブプロをしていないとレビューに時間がかかる ・「これってどういうタスクなんだっけ?」というところからスタート
・チャットコミュニケーションの ラリー ・レビュー時にひっくり返る(作り直し) → 一緒にタスクをやっているのでPRのレビューは サラッと差分を見直すだけで大抵すむ 26
Copyright© M&Aクラウド モブプログラミングやってみた メリット: 開発知識の平滑化 「え? PhpStormってこんな便利な機能があったんですか!?」
「こんなショートカットキーがあったのか!」 「◦◦さんの仕事の進め方勉強になるな・・・ 」 など、一緒に作業してみると新しい発見がたくさん。 27
Copyright© M&Aクラウド 毎日モブプロやってみてわかった デメリット 28
Copyright© M&Aクラウド モブプログラミングやってみた デメリット ・ベロシティが下がった ・技術を深ぼる時間が取りづらい ・傍観者モードになってしま う ・人によって合う合わないがある 29
Copyright© M&Aクラウド モブプログラミングやってみた デメリット:ベロシティが下がった チームのベロシティが下がった(約 20%低下) 3人で1タスクなので、勤務時間や家庭の事情、個別の会議などで時間が取れない時はタスクが進めら れなかった 単純計算だと3倍時間がかかる(ベロシティ 66%低下)はずだが
20%に止まったのは、フロー効率の力を感じる まだまだモブプロのやり方に改善の余地があったので ずっと改善していけばベロシティは上がっていくかも・・・? 30
Copyright© M&Aクラウド モブプログラミングやってみた デメリット:技術を深ぼる時間が取りづらい 1人でやっている時にはタスク完了にはそこまで影響しないけど技術的に気になったことを深掘りする時 間が取りやすいが モブプロをしていると、他の人が理解しているとそのままスルーしてしまうことがある 強い気持ちで「ここの技術的背景をもうちょっと深掘りたい」とチームに提案することが必要 31
Copyright© M&Aクラウド モブプログラミングやってみた デメリット:傍観者モードになってしまう 気を抜くと、話についていけなくなったり、他人に考えることをおまかせしてしまう (とくに私。勤勉なエンジニアのみなさんには、この話は関係ないかもしれない) 集中が途切れないように休憩を提案したり、 流れを止めて「よく理解できなかったので詳しく教えてもらえますか」と質問する勇気が必要 32
Copyright© M&Aクラウド モブプログラミングやってみた デメリット:人によって合う合わないがある チームが変わって新メンバーがモブプロをやることになったが、 1日中ずっと通話しながら作業をするのが嫌という声があった 一日中通話しっぱなしで仕事をすることを強要されると強いストレスを感じるのもわかる モブプロの理念の浸透、チームの成熟度とか、人の気質の相性とかも大事 33
Copyright© M&Aクラウド モブプロの撤退 34
Copyright© M&Aクラウド モブプロの撤退 正式なモブプロ採用は見送りに • ベロシティ悪化 • 火付け役(つざき)が開発から抜けた • 新メンバーからの不評(非同期でやりたい)
35
Copyright© M&Aクラウド モブプロの撤退 部分的にモブプロ実施 • タスクの着手時(設計相談・コードの調査) • PRレビュー • 開発知識の平滑化をしたいとき
◦ 難しいタスク、よく知らない機能をやるとき ◦ チーム体制が変わった時 36
Copyright© M&Aクラウド 共同作業の量の変化 37
Copyright© M&Aクラウド M&Aクラウドにおけるエンジニア同士の共同作業量の時間変化 38
Copyright© M&Aクラウド M&Aクラウドにおけるエンジニア同士の共同作業量の時間変化 「タスクはチームの仕事」 という文化 39
Copyright© M&Aクラウド M&Aクラウドにおけるエンジニア同士の共同作業量の時間変化 「タスクはチームの仕事」 という文化 レビュー時のペアプロ WIP制限の導入 40
Copyright© M&Aクラウド M&Aクラウドにおけるエンジニア同士の共同作業量の時間変化 「タスクはチームの仕事」 という文化 レビュー時のペアプロ WIP制限の導入 モブプロ導入 41
Copyright© M&Aクラウド M&Aクラウドにおけるエンジニア同士の共同作業量の時間変化 「タスクはチームの仕事」 という文化 レビュー時のペアプロ WIP制限の導入 モブプロ導入 モブプロ撤退🥹 42
Copyright© M&Aクラウド M&Aクラウドにおけるエンジニア同士の共同作業量の時間変化 「タスクはチームの仕事」 という文化 レビュー時のペアプロ WIP制限の導入 モブプロ導入 モブプロ撤退🥹 部分的モブプロ
43
Copyright© M&Aクラウド M&Aクラウドにおけるエンジニア同士の共同作業量の時間変化 自分達のチームにちょうどいいモブプロ(共同作業)のバランスをみつける必要がある 44
Copyright© M&Aクラウド まとめ • 毎日モブプロしてみた ◦ ベロシティが下がったがベロシティには現れないメリットがある ◦ メンバーの気質によってモブプロとの相性がある •
部分的にモブプロすることにした • チームにとってちょうどいいバランスが大事 45
Copyright© M&Aクラウド 資金調達プラットフォーム 2022年冬提供開始 PR 昨今の資金調達ニーズ急増にあわせ、従来は M&Aクラウド内で提供していた 「資金調達の機能」を切り出し、資金調達に特化した新サービスを構築中です。 これにより、日本中のスタートアップ企業の資金調達をスムーズにし、よりスピード感を持った事 業成長に貢献してまいります。
46
Copyright© M&Aクラウド Thanks for watching this :) 47