アジャイルな受託開発を3年間やってみて
by
Kentaro Matsumoto
×
Copy
Open
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Slide 1
Slide 1 text
アジャイルな受託開発を 3年間やってみて 松本健太郎 @matsu7874
Slide 2
Slide 2 text
私のチームでやっている スクラムっぽいアジャイルの話をします
Slide 3
Slide 3 text
松本健太郎(26) @matsu7874 ● フォルシア株式会社 ● 新卒4年目 ● エンジニア ● Rust, SQL, JS, Python, etc
Slide 4
Slide 4 text
フォルシア株式会社 ● 「見つからなければ、始まらない。」 ○ 「見つからない」に起因する様々な課題を、フォルシアは解決します。 ○ 検索を中心に意思決定をサポートする ● Webアプリの受託開発 ○ 新規開発もやるし ○ 追加提案・追加開発もやるし ○ 保守運用もやります ○ 顧客サービスを一緒に育てていく楽しさ ● 旅行・EC/MRO・福利厚生業界 ● 最近はダイナミックプライシング・データクレンジングも
Slide 5
Slide 5 text
アジャイル開発ってなに?
Slide 6
Slide 6 text
アジャイルソフトウェア開発宣言 ● プロセス・ツール ● 包括的なドキュメント ● 契約交渉 ● 計画に従うこと ● 個人と対話 ● 動くソフトウェア ● 顧客との協調 ● 変化への対応 <
Slide 7
Slide 7 text
アジャイル宣言の背後にある原則 = 目的 1. 顧客満足を最優先し、 価値のあるソフトウェアを早く継続的に 提供します。 2. 要求の変更はたとえ開発の後期であっても歓迎します。 変化 を味方につけることによって、お客様の競争力を引き上げま す。 ⇒受託開発をするにあたって、我々が実現したいこと
Slide 8
Slide 8 text
で、実際どうなの?
Slide 9
Slide 9 text
プロジェクト説明 ● ECサイトの追加開発・保守・運用 ○ 営業1~2人 + エンジニア2~3人体制 ○ 営業は提案・契約・PjMまで ○ エンジニアは提案・実装・運用 ● 2015年リリース後、サイトを段階的に拡大 ● 私は2016年7月から参加 ● 1つのコードで複数環境を動かしている ○ 社内版・社外版みたいな
Slide 10
Slide 10 text
メンバー紹介 私 スクラムおじさん アジャイル好き お兄さん
Slide 11
Slide 11 text
根性アジャイル 2016/07 - 2017/05
Slide 12
Slide 12 text
2016/07-2016/10 ● スマホサイトリリース ● これまでエンジニア1人担当チームだった ○ お客さんと調整しながら、いい感じに開発を進めていた ○ エンジニアの根性次第でめっちゃ効率よく開発できる ● 新人の私、アサイン!(実は次の担当者として育成)
Slide 13
Slide 13 text
2016/07-2016/10 ● スマホサイト作ったエンジニア別プロジェクトへ ● 私がメインの担当者として追加開発・保守をやる ○ 頼まれたらやりますって言っちゃう(新人なので) ○ 夜遅くなることもしばしば ● スクラムおじさんが英語サイトを作る ● 単体テストが無いね ● 引継用の仕様書はちょっとあるね
Slide 14
Slide 14 text
スクラムの時代 2017/05 - 2018/10
Slide 15
Slide 15 text
2016/07-2016/10 ● 英語サイトリリース ● スクラムおじさん「しっかりスクラムやりましょう!」 ○ 毎週の進捗をポイントで測れるんですって? ○ 持続可能な開発の見通しが立てられるんですって?
Slide 16
Slide 16 text
バックログとストーリーポイントの導入 ● すべてのタスクに優先度とコストを付ける ○ 優先度は営業さんがつけた ○ コストは技術の私がつけた ○ スクラムマスターは私がやる ● 結構面倒くさかったがベロシティを計測する事ができた
Slide 17
Slide 17 text
2週間スプリントの導入 ● メリハリが利いて良い ○ 初期開発と違って明確な終わりが無いので、区切りは大切 ● リリースサイクルとのギャップがあった ○ 2週間固定ではなかった ○ リリース作業分のポイントを確保
Slide 18
Slide 18 text
2016/07-2016/10 ● スクラムおじさんチーム移動! ○ 回り始めはサポートするけど ● 新卒1年目の営業・エンジニア追加 ○ リリースするコードは私がレビューする
Slide 19
Slide 19 text
2016/07-2016/10 ● 同期のエンジニア追加(当時2年目) ○ 2年目(専任), 1年目(専任), 2年目(サポート)のエンジニアチーム ● ストーリーポイントやめた ○ 大変な割にベロシティが分かる恩恵が少ない(チケット数とかで近似可能) ● デイリースクラム(夕会)の実施 ○ 情報共有と気軽に質問するためにあったほうがよい ● 全てのMRを相互レビュー ○ 各機能のリリース許可をもらってからコードレビューしていた
Slide 20
Slide 20 text
2016/07-2016/10 ● 立て続けに退職が発生 ● 属人化を減らせ ○ いつでも引継げるようにドキュメント書く ○ 環境構築しやすくする ● リリース頻度を2週間に1回
Slide 21
Slide 21 text
リリース頻度を2週間に1回に ● 顧客と相談 --> 双方にメリット ○ リリースには受け入れ体制が必要 ○ リリース作業は大変なので予測可能にしたい
Slide 22
Slide 22 text
継続的に価値を届けるために 2018/10 -
Slide 23
Slide 23 text
2016/07-2016/10 ● エンジニア(当時新卒2年目)がアサイン ● メンバーに合わせた調整を行った
Slide 24
Slide 24 text
夕会はやめた ● 困ったら即質問 ○ 過去の経緯を調べるのは難しいので知ってる人に聞く ○ 技術的な事も調べて分からないなら相談する ● 進捗はSlackで共有 ○ 大きめの作業について着手、完了は共有する ○ commitとテスト結果はslackに流れる ○ コンフリクトしないように開発時期や担当を決めれば十分 ● 3,4年目で構成されているので場を強制しなくてもよい
Slide 25
Slide 25 text
リリースのコストを下げる ● UIテストの一部自動化 ○ 環境が多いので影響範囲が広すぎる ● 単体テストの追加 ○ 自分が居なくなって困りそうなところは絶対書く ○ 未来の担当者のために書く ● コードの分離 ○ 顧客の担当部署に合わせて分離した ○ サイトが成熟期に入ったので、それぞれに最適化
Slide 26
Slide 26 text
結果: まあまあいい感じ
Slide 27
Slide 27 text
顧客満足のためのアジャイルな受託開発 ● サイトとチームの段階に応じて開発スタイルを調整する ● 未熟なエンジニアが無理・無茶できない仕組みを作る ○ 相互レビュー ○ デイリースクラム(夕会) ● 属人化防止とコストカットのために自動テストを書く ● スクラムっぽいもの ○ 2週間のスプリント ○ デイリースクラムは自発的に非同期にslackで行う