1日1エントリにもがく中で見えてきたXPの「フィードバック」の価値

1日1エントリにもがく中で見えてきたXPの「フィードバック」の価値

Event:

XP祭り2024

Presented:

2024/09/28 nikkie

お前、誰よ(自己紹介)

../_images/uzabase-white-logo.png

毎日ブログを書いてます

1日1エントリ

  • 毎日テックブログ ではありません

  • 技術記事もそうでない記事(趣味・暮らし向き)も書いています

  • 割合としては技術記事の方が多いはず(7〜8割?)

1日1エントリの雰囲気

⚠️注意事項

  • 1日1エントリをオススメする気は ありません (超きついよ)

  • ブログを継続するコツは(XPとは関係ないと思っているので)お伝えしません

XPの価値

  • コミュニケーション

  • シンプリシティ

  • フィードバック

  • 勇気

  • リスペクト

価値、原則、プラクティス

見えてきたXPの「フィードバック」の価値

フィードバックサイクルをいかに高速に回すか

仕事で機械学習をする中で意識する

機械学習プロジェクトにおけるフィードバックサイクル?

  • 機械学習で提供する価値を高めたい(例:性能のより高い機械学習モデル)

  • 性能のよいモデルの作り方は あらかじめ分からない (案を試して、性能向上 or 効果なし)

  • 先が見通せない状況 でフィードバックを得て進む、とは??

お話しするのは、2トピック

  • ベイビーステップ(原則)

  • イテレーティブ

ベイビーステップ

大きな変更は、大きなステップでやりたくなるものである。

エクストリームプログラミング(第2版)』 5.13 書き出し

ブログ執筆に当てはめると

大きな記事は、大きなステップで書きたくなるものである(nikkie)

大きな記事を書くぞ!

  • ヒット(バズ)を狙って、大著な1記事💪

  • あれもこれも盛り込んでいく

  • IMO 1万字超えると私にはしんどい

再び『エクストリームプログラミング(第2版)

大きな変更が失敗してチームがムダに後退するよりも、小さなステップのオーバーヘッドの方が小さい。

ベイビーステップ(5.13)

毎日 の強制力で1つ1つの記事は小さくなった

小さな記事という考え方

計画の考え方(頻繁にリリースする)との関連

一度に1つのプロジェクト

../_images/aoad1_release_planning__multitasking.gif

アート・オブ・アジャイル デベロップメント』8.2.1 図の出典

一度に1つのプロジェクト

  • マルチタスク(図のシナリオA)をしない

  • 一度に1つだけのプロジェクト(図のシナリオB)で進めたほうが、届く価値(=対価)は大きい

早期にリリース、頻繁にリリース

../_images/aoad1_release_planning__multiple_releases.gif

アート・オブ・アジャイル デベロップメント』8.2.2 図の出典

早期にリリース、頻繁にリリース

  • 全部完成すると毎月 5 の価値が届くとする

  • シナリオAは6ヶ月目に一度だけリリースして、7ヶ月目に5の価値を届ける(=対価を得る)

  • シナリオBは 3の価値で3ヶ月目にリリース。届けている価値の総量はAより多い

頻繁にリリースするために

  • 機能を小さく する

  • 1日1エントリで記事が小さくなった経験から、わかりみが深い(Shoreさん、天才!)

  • IMO 小さいは正義!

継続的デリバリー』より

ソフトウェアの世界では、何か痛みを伴うものがあった場合にその痛みを軽減する方法は、もっとこまめに行うことだけだ。(Kindle版 p.62)

小さくするテクニック: 縦スライス

from ユーザストーリーの考え方

縦スライスと横スライス

../_images/aoad1_release_planning__horizontal_and_vertical_stripes.gif

アート・オブ・アジャイル デベロップメント』8.2.6 図の出典

横スライス(horizontal)の例

../_images/edited_aoad1_horizontal_stripes.drawio.png

James Shoreさん作成の図をnikkieが加工

横スライス(horizontal)の例

  • データ取得のストーリー

  • データ検証のストーリー

  • データベースへ書き込むストーリー

横スライス的な記事分割

  • Part 1, 2, ... のように分かれる

  • Part 1だけでは不完全。2は1がないと読めない

横スライスのストーリー(Shoreさん曰く)

  • 簡単に作れる

  • しかし、計画の柔軟性をなくす(3つで1つの大きな

そこで スライス!(vertical)

../_images/edited_aoad1_vertical_stripes.drawio.png

James Shoreさん作成の図をnikkieが加工

縦スライスの例

特定のデータ について、取得・検証・DB書き込みできる

  • 顧客データ

  • 送付先住所

  • 請求情報

縦スライスのストーリー(Shoreさん曰く)

  • 各ストーリーは 小さい価値を届けきって いる(途中で全く別の開発に移ってもよい)

  • =計画は柔軟性を得られる

  • 縦スライスできるようになるには、練習が必要

縦スライス的な記事分割

  • あるツールの 特定の用途 についてアウトプット

    • 1記事ですべての機能を網羅しない

  • 書いていてインストールだけでも難しいと分かったら、インストールの記事と用途記事(インストール記事を内包)に分けた

縦スライスの恩恵

  • nikkieは 超気分屋。続きが書けないことが多い

  • 「昨日書いてた続きよりも、今日はこのネタが書きたいんじゃ〜!!」

  • 縦スライスなら、後続記事を書かなくてもよい(横スライスは後続記事がマスト)

まとめ🥟 ベイビーステップ

  • 1日1エントリを継続する中で 小さな記事 に至った

  • 小さくすることで頻繁にリリースにつながる

  • 小さくするときは縦スライスにして、気分屋でも継続しやすく

イテレーティブ

iterative = 反復

機械学習プロジェクトをベイビーステップでやっていくぞ!

  • 雑に言うと、機械学習は データ から モデル を作る

  • 開発範囲:データまわりの自動化、モデルまわりの自動化

  • 開発すべきことは 全部やらねば とも思っていた(私は完璧主義)

小さく進みたいけれど

  • データもモデルもやろうとすると、 大きく なってしまう

  • 大きくなると、うまくいかなかった場合の手戻りは大きい

  • どう両立させる?

「常に次回がある」という考え方

  • 『アート・オブ・アジャイル デベロップメント』はふりかえりのトピックを コイン投げ で決める

アート・オブ・アジャイル デベロップメント』5.5.6

(※1つのカテゴリに人気が集中していなくても)、時間をかけすぎてはいけない。コインか何かを投げて 1 つのカテゴリを選ぼう。

Shoreさん、コイン投げで決めていいんですか?

来週もふりかえりをするんだ。重要な問題であれば、また出てくるだろう。(p.101)

トピックを話す方に時間を使う考え方、なるほどな〜

ブログでも「常に次回がある」

  • =1日1エントリ

  • 趣味や暮らし向きを書くことへの抵抗感が薄れた

  • 100%のものを毎回目指すが、 更新する次回 も常にある

内容への指摘は 追加の次回

  • 指摘やコメントはありがたい

  • 記事自体はリリース済み(リリースが否定されるわけではない)

  • 追記して修正(パッチ) or 対応する記事執筆(追加ストーリー

機械学習プロジェクトでも

  • 小さく進むことを優先するために、 次がある と考えられることに気づいた

  • 「一息にやらない完璧主義」(?)

次を前提に、今は最小限を

  • どうしてもいま必要な部分だけをやる

    • 例:モデルまわりだけまず自動化し、モデルに必要なデータは最初は手動で用意(次に自動化する)

  • 小さく進むのを 何度も繰り返し たら、やるべきことが全部できている状態で進む

まとめ🥟 イテレーティブ

  • 小さく進むのを繰り返す中で、次回がある ことに気づいた

  • 小さく進み続ける中で、少しずつシステムを作り上げていく

  • 手戻るかもしれないので、一度に全部を作りきらない

まとめ🌯 1日1エントリにもがく中で見えてきたXPの「フィードバック」の価値

  • ベイビーステップ:小さいがゆえの高頻度

  • イテレーティブ:繰り返す中で(少しずつ)近づく

1日1エントリ

  • 毎日(=高頻度)リリースする中で記事は 小さく なった

  • 常に次回 がある」ことを認識した(そのネタ、本当に全部書く?)

フィードバックサイクルをいかに高速に回すか、とは

性能のよいモデルの作り方は あらかじめ分からない からこそ

  • 一歩一歩は小さく して、進んでいる方向を確認しながら

  • 繰り返し小さく進み続ける中で機械学習システムが徐々に 作り上げられていく

小さく区切って絶えずやる (nikkie)

  • ベイビーステップ(小さく・頻度高く)

  • かつ、イテレーティブ(何度も反復)

NEXT? 小さな記事を つなげる

  • カンファレンス登壇へ活かす道を模索中

  • 試行錯誤中:小さな技術記事をつなげて、30分(程度)の発表を構成

ご清聴ありがとうございました

https://nikkie-ftnext.hatenablog.com/

余談『小さな習慣

  • 毎日たった1回の腕立て伏せ

  • 小さすぎて失敗しないので継続しやすい

  • 1回やると調子が出てきて超過達成できる