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

実践エクストリームプログラミング / Extreme Programming in Practice

実践エクストリームプログラミング / Extreme Programming in Practice

00cbada6669966805d91061d5a234d3b?s=128

Kotaro Noguchi

June 24, 2022
Tweet

More Decks by Kotaro Noguchi

Other Decks in Programming

Transcript

  1. 実践エクストリームプログラミング 2022年6月24日 エクストリームプログラミングで見える開発風景 株式会社ユーザベース Product Division 野口光太郎(@enk_enk)

  2. 自己紹介 • 野口光太郎(@enk_enk) • 株式会社ユーザベース Product Division ◦ ソフトウェアエンジニア •

    好きな ◦ 価値: シンプリシティ ◦ 原則: 人間性 ◦ IDE: IntelliJ IDEA ▪ Visual Studioではない
  3. エクストリームプログラミング XP

  4. XP 5つの価値に対する 不断の注意と、 常に最高のあり方を 求め続ける姿勢 (※現時点の私の理解)

  5. XPの5つの価値 • コミュニケーション • シンプリシティ • フィードバック • 勇気 •

    リスペクト
  6. “「運転というのはね、車を正しい方向に 走らせることじゃないの。常に注意を 払って、こっちに行ったら少し戻して、 あっちに行ったら少し戻して、 そうやって軌道修正していくものよ」 これがXPのパラダイムだ。 注意して、適応して、変更する。” Kent Beck, Cynthia

    Andres, 角 征典(訳)『エクストリームプログラミング』オーム社、9ページ
  7. “XPのポイントは、改善によって ソフトウェア開発の高みを 目指すことだ。改善のサイクルでは、 明日をよりよくするために必要な 気づきや理解を追い求めながら、 今日できる最高のことをやる。” Kent Beck, Cynthia Andres,

    角 征典(訳)『エクストリームプログラミング』オーム社、26ページ
  8. XP 5つの価値に対する 不断の注意と、 常に最高のあり方を 求め続ける姿勢 (※現時点の私の理解)

  9. それを実践する チームの話をします

  10. 私たちのチーム(構成) • CTOが(組織図上の)リーダー、残り約100人がメンバー(役職なし) ◦ 「全員がリーダー」という言い方もよくする ◦ 自己組織化によるシェアド・リーダーシップ • 4つのロール ◦

    ソフトウェアエンジニア ◦ テストエンジニア ◦ データサイエンティスト ◦ SRE(s) • チーム全体として複数のB2B SaaSを開発・運用 ◦ ロールをミックスした3〜5人程度のサブチーム(以後「小チーム」)で主に活動
  11. 私たちのチーム(活動) • 全員同席(※今はオンライン) • 常時ペアプログラミング • 常時TDD(ATDD+TDD) • トランクベース開発と継続的デリバリー •

    ストーリー、週次サイクル、四半期サイクル • 運用も自分たちで行う • その他ふつうのアジャイルチームがやってそうなこと ◦ 朝会、ふりかえり……
  12. None
  13. チームon1 ペアプロ ペア+ソロ ペア+ソロ ペアプロ モブプロ 個人作業 ペアプロ ペット プランニング

    プロダクト マネージャ ペアワーク 同じ部屋で ソロワーク モブプロ
  14. チームon1 ペアプロ ペア+ソロ ペア+ソロ モブプロ 個人作業 ペット プランニング プロダクト マネージャ

    同じ部屋で ソロワーク モブプロ ペアプロ ペアプロ ペアワーク
  15. チームon1 ペアプロ ペア+ソロ ペア+ソロ ペアプロ 個人作業 ペアプロ ペット プランニング プロダクト

    マネージャ ペアワーク 同じ部屋で ソロワーク モブプロ モブプロ
  16. チームon1 ペアプロ ペアプロ モブプロ ペアプロ ペット プランニング プロダクト マネージャ ペアワーク

    モブプロ 同じ部屋で ソロワーク 個人作業 ペア+ソロ ペア+ソロ
  17. ペアプロ ペア+ソロ ペア+ソロ ペアプロ モブプロ 個人作業 ペアプロ ペット ペアワーク 同じ部屋で

    ソロワーク モブプロ プランニング プロダクト マネージャ チームon1
  18. ×4

  19. XP 5つの価値に対する 不断の注意と、 常に最高のあり方を 求め続ける姿勢 (※現時点の私の理解)

  20. どうやって?

  21. プラクティスから価値へ

  22. “プラクティスには、何かを始める きっかけになるという利点もある。 ソフトウェア開発を深く理解して いなくても、コードを変更する前に テストを書き始めることができるし、 そこから恩恵を受けることもできる。” Kent Beck, Cynthia Andres,

    角 征典(訳)『エクストリームプログラミング』オーム社、11ページ
  23. そして、価値を身体で 理解していくこともできる

  24. Kent Beck, Cynthia Andres, 角 征典(訳)『エクストリームプログラミング』オーム社、13ページ

  25. Kent Beck, Cynthia Andres, 角 征典(訳)『エクストリームプログラミング』オーム社、13ページ   プラクティスの実践を通じて価値の理解に至る 全員同席 テストファーストプログラミング ペアプログラミング

    ストーリー その他色々... コミュニケーション シンプリシティ フィードバック 勇気 リスペクト
  26. プラクティスから価値へ - コミュニケーション • (例)全員同席 ◦ 全員同じオフィスに出社(2019年まで) ◦ 全員同じGather(オンラインワークスペース)で活動(現在) ◦

    「ペアプログラミング」や「チーム全体」の礎
  27. プラクティスから価値へ - シンプリシティ • (例)テストファーストプログラミング ◦ シンプリシティ養成ギプス ▪ テストを成功させる最小限のコードだけを書く ▪

    リファクタリングし続ける
  28. プラクティスから価値へ - フィードバック • (例)ストーリー ◦ すぐにフィードバックが得られるよう、「顧客の言葉」にこだわる ▪ 「技術ストーリー」を避ける

  29. プラクティスから価値へ - 勇気 • (例)週次サイクル ◦ 現状をごまかさず、ありのまま顧客(ビジネスサイド)と共有する勇気

  30. プラクティスから価値へ - リスペクト • すべて! ◦ すべての活動の根底にはリスペクトがある

  31. ペアプログラミングは価値の学校 • ペアプログラミング ◦ ペアの相手と常にコミュニケーションを取り続ける ◦ お互いにシンプリシティに気を配り、注意し続ける ◦ ペア同士で継続的にフィードバックを与え合う ◦

    勇気を持って、常にその場に自分をさらけ出し続ける ◦ リスペクトなくしてペアプロなし https://tech.uzabase.com/entry/2020/12/14/121455
  32. Kent Beck, Cynthia Andres, 角 征典(訳)『エクストリームプログラミング』オーム社、13ページ   プラクティスの実践を通じて価値の理解に至る 全員同席 テストファーストプログラミング ペアプログラミング

    ストーリー その他色々... コミュニケーション シンプリシティ フィードバック 勇気 リスペクト
  33. 価値を知ることで 「不断の注意」に至る

  34. そして、 よりよいあり方を探求する

  35. 価値からプラクティスへ

  36. Kent Beck, Cynthia Andres, 角 征典(訳)『エクストリームプログラミング』オーム社、13ページ

  37. Kent Beck, Cynthia Andres, 角 征典(訳)『エクストリームプログラミング』オーム社、13ページ 原則を通じて、価値を体現するプラクティスを探す 全員同席 テストファーストプログラミング ペアプログラミング

    ストーリー その他色々... コミュニケーション シンプリシティ フィードバック 勇気 リスペクト
  38. 価値からプラクティスへ - コミュニケーション • 100人でチーム全体 ◦ 「多様性」をエクストリームに: 100人分の多様性 ◦ 100人の「チーム」をフル活用する

    ◦ 話したい(聞きたい)ことがあれば、「小チーム」内の人とも「小チーム」外の人とも話す ▪ いつでも話す、すぐに話す ▪ 小チーム内の人とも小チーム外の人とも、それぞれ1日10〜20回くらいは話す ▪ 他部署(いわゆるビジネスサイド)の人ともすぐ話す • 頻繁なペア交代(a.k.a. プロミスキャスペアリング) ◦ 「冗長性」をエクストリームに: みんなが関わる ◦ 1〜1.5時間に1回ペア交代することで、小チーム(3〜5名程度のチーム)の全メンバーとコ ミュニケーションを取り続ける ※小チーム: ロールをミックスした3〜5人程度のサブチーム
  39. 価値からプラクティスへ - シンプリシティ • 1時間デプロイ ◦ 「経済性」をエクストリームに: 究極のフロー効率 ◦ ストーリーを極限まで薄くスライスする

    ▪ バーティカルスライス(顧客の言葉を使う)にはこだわる ◦ 但書: まだ1時間には至っていません😂 ▪ 目指しているところ ▪ ものにもよるが、今はだいたい「半日デプロイ」くらい
  40. 価値からプラクティスへ - フィードバック • トランクベース開発 ◦ 「ベイビーステップ」をエクストリームに: 小さく、常に統合し続ける ◦ リリース可能な状態を保ちながら全員がメインブランチにpushし続けることで、最新のコー

    ドを常にフィードバック • 継続的デリバリー ◦ 「流れ」をエクストリームに: 価値を目的地に届け続ける ◦ ストーリー(数時間〜2日目安)の完了ごとにリリースすることで、最短時間でユーザや本番 環境からのフィードバックを得る(まだ公開できない機能にはフィーチャーフラグを使用)
  41. 価値からプラクティスへ - 勇気、リスペクト • チームの自己選択 ◦ 「責任の引き受け」をエクストリームに: 「誰と、どの製品に取り組むか」自体を引き受ける ◦ チームシャッフル:

    毎月、「小チーム」を選択(移動)できる機会がある ▪ リーダーやマネージャが決めるのではなく、責任ある大人として自分たちで決める • キーボードを「奪い合う」(a.k.a. マイクロペアリング) ◦ 「自己相似性」をエクストリームに: サイクルを極限まで細かく ◦ ドライバーとナビゲータを行き来するのがいいのなら、数秒ごとに行き来すればいいじゃな い ▪ ベースはピンポンペアリング ◦ 勇気とリスペクトを両立するからこそできる
  42. Kent Beck, Cynthia Andres, 角 征典(訳)『エクストリームプログラミング』オーム社、13ページ 原則を通じて、価値を体現するプラクティスを探す 全員同席 テストファーストプログラミング ペアプログラミング

    ストーリー その他色々... コミュニケーション シンプリシティ フィードバック 勇気 リスペクト
  43. Kent Beck, Cynthia Andres, 角 征典(訳)『エクストリームプログラミング』オーム社、13ページ 「理解」と「実践」を ずっと行き来し続ける フィードバック

  44. XP 5つの価値に対する 不断の注意と、 常に最高のあり方を 求め続ける姿勢 (※現時点の私の理解)

  45. ところで そもそも、なんで 「5つの価値に対する不断の注意と、 常に最高のあり方を求め続ける姿勢」 が大事なんだっけ

  46. ビジネスのニーズと 人(私)のニーズを 同時に満たせるから

  47. “XPは、私自身の ソフトウェア開発の実践のなかで 人間性と生産性を調和させ、 その調和を共有しようとする 試みである。” Kent Beck, Cynthia Andres, 角

    征典(訳)『エクストリームプログラミング』オーム社、3ページ
  48. “XPのプラクティスには、 ビジネスニーズと個人の欲求の 両方を満たせるものを選んでいる。” Kent Beck, Cynthia Andres, 角 征典(訳)『エクストリームプログラミング』オーム社、22ページ

  49. XPは「人」

  50. 人が人らしく、 最高の仕事をして、 最高の成果を出す。 そのための働き方  =XP 

  51. CM🙏

  52. 一緒にXPを探求してくれる仲間を探しています! ソフトウェアエンジニア テストエンジニア データサイエンティスト SRE(s)

  53. 『The Agile Leader』の翻訳が出ます! • 『SCRUMMASTER THE BOOK』(翔泳社)の著者である Zuzana Šochováさんの本 •

    組織をアジャイルにしていくリーダーシップの話 • ユーザベースの有志4名で翻訳し、現在制作中 ◦ 2022年内刊行予定!
  54. FAQ: 「なるほど、いいですね。 でも、できる気がしません」

  55. いろんな答え方が あるけど……。

  56. A(の一つ): 「かつて、Kent Beckの 言葉を信じて実践を始めた 一人のプログラマーが いました」

  57. https://agilejourney.uzabase.com/entry/2022/06/16/101000

  58. “どんな状況でも必ず改善できる。  どんなときでもあなたから改善を始められる。  どんなときでも今日から改善を始められる。” Kent Beck, Cynthia Andres, 角 征典(訳)『エクストリームプログラミング』オーム社、 「はじめに」

  59. “エクストリームプログラミングは ソーシャルチェンジである。” Kent Beck, Cynthia Andres, 角 征典(訳)『エクストリームプログラミング』オーム社、1ページ