銀行員からのRailsエンジニア

銀行員からのRailsエンジニア

銀行員から転身したサービス作りが大好きなRailsエンジニアのブログです。個人で開発したサービスをいくつか運営しており、今も新しいサービスを開発しています。転職して日々感じていること、個人開発サービス運営のことなどを等身大で書いていきます。

当ブログではアフィリエイト広告を利用しています

【読書まとめ28】アジャイルサムライ 達人開発者への道

勤務している会社のPJでアジャイル開発を取り入れはじめました。

ただ雰囲気でやっている部分も多く、より効果的にアジャイルを活用するため、まずは体系的に学びたいと思いこの本を読みました。

これから実践していく際にこの本に立ち返りやすいよう、ポイントをまとめました。

f:id:ysk_pro:20210228104556p:plain

 

プロジェクト全般

  • ソフトウェア開発の3つの真実
    • プロジェクトの開始時点に全ての要求を集めることはできない
    • 集めたところで、要求はどれも必ずといっていいほど変わる
    • やるべきことはいつでも、与えられた時間と資金よりも多い
  • ソフトウェアの64%の機能は、ほとんどあるいは全く使われていない。このことからも、本当に重要なことだけに集中すべき
  • アジャイル開発の原則として、ビジネス側の人と開発者は、プロジェクトを通じて日々一緒に働かなければいけない

プロジェクト開始時

  • チームメンバーが誰もいないところで合意したことを前提にすると、プロジェクトはダメになる。プロジェクトの開始時点で関係者の認識が揃っていないのは当然なので、プロジェクト開始前に関係者全員でプロジェクトについて話し合うべき。そんな時にインセプションデッキが有効
  • インセプションデッキについて
    • プロジェクトを開始する前に聞いておかなければならない10個の質問で構成されている
    • プロジェクトを核心まで煮詰めて抽出した共通理解を、開発チームだけでなくプロジェクト関係者全員へ手軽に伝えるためのツール
    • 仕事場の壁に貼り出しておき、何を作ろうとしているのか、そしてそれはなぜなのかを時々眺めて思い出すとよい
    • プロジェクトの真のゴールは、よくよく話し合い、議論を重ねて理解を深めることでしか浮かび上がってこない
    • プロジェクトの基本的な考え方やスコープ、存在意義が変化してしまったら、全員でもう一度インセプションデッキを見直して、チームの向いている先と、プロジェクトへの理解が揃っていることを確認すべき

プロジェクト運営

  • 良いユーザーストーリーの6つの要素(英語の頭文字をとって INVEST と呼ばれる)
    • 独立している(Independent):ストーリーが互いに独立していると、必要に応じてスコープを柔軟に調整しやすい
    • 交渉の余地がある(Negotiable):予算などに応じて実現方法を選択することができる
    • 価値がある(Valuable):顧客が対価を払っていいと思えるもの
    • 見積もれる(Estimatable)
    • テストできる(Testable):完了の基準が明確になる
  • ユーザーストーリーのテンプレート
    • 〈ユーザーの種類〉として、〈達成したいゴール〉をしたい。なぜなら〈理由〉だからだ
    • テンプレートを使うことで、誰が、何を、なぜ、という重要な疑問を明確にできる
  • ベロシティはチームとしての生産性を計測する。個人の生産性を測るのは良くない。個人の生産性を測ると、協調しようとか知見を共有しようという気持ちがなくなり、各人が何としても自分自身の生産性を確保しようと躍起になってしまう
  • プロジェクトの完了時期の見通しを立てるにはバーンダウンチャートが便利。ただ、バーンダウンチャートだと途中でのストーリー追加がわかりづらいので、途中でのストーリー追加をわかりやすくしたければバーンアップチャートが便利

開発関連

  • アジャイルプログラマが当然のように実践していること
    • テストをたくさん書く。設計のためにテストを活用することも多い
    • プロジェクトの進行中にも、アーキテクチャの設計と改善に継続的にり組む
    • コードベースをいつでもリリースできる状態にしておく
  • バグを見つけたら、修正する前にバグが原因で失敗するユニットテストを書く。こうすることで、同じバグが2度と現れないことを保証できる
  • TDD(テスト駆動開発):以下の短いサイクルを繰り返しながら少しずつソフトウェアを設計していく手法
    • レッド:必要なコードが既にあると考えて、失敗するユニットテストを書く。設計についてしっかり考え、コードの意図をテストで示す
    • グリーン:とにかくテストに成功するコードを書く

おわりに

ここまでお読みいただきありがとうございます。

本書は翻訳本に関わらず読みやすく、アジャイル開発の考え方を理解するのに最適だと思ったので、ご興味ある方は是非読んでみてください。

 本書で学んだことを、明日から1つずつ業務で実践していこうと思います。

以下の記事を合わせて読むことでアジャイル開発、アジャイル開発の1つであるスクラムについての理解がさらに深まると思うので、ご興味ある方は是非ご覧ください。

ysk-pro.hatenablog.com

ysk-pro.hatenablog.com

ysk-pro.hatenablog.com