アジャイル開発の失敗と成功の体験
楽天
プログラマリーダーコーチ
開発の立ち位置
カンパニー制で、開発部はそれぞれ一つ
開発を支援する部隊(標準化、ツール、アジャイル)
アジャイルのプロセス改善など
エンジニア: 1000+
グループ: 70+
プロジェクト: 1000+
ウォーターフォールが基本(ただし納期厳守ではない)
アジャイルリーダーシップと組織改革
(大きい規模での開発をどうしたらよいのか)
アジャイルで導入してみて、
現場に行きリーダーシップと組織改革を
考えて一番伝えたいこと
MTGでもすごくネガティブな意見ばかり
XP(エクストリームプログラミング)入門
実際にどうやるのか?
pear programing(3人で交互にペアでプログラミングをする、ナレッジの共有)
CI (テストのないコードを改善する)
テストによってリリースが延びてしまうので、上司には
理解されづらい
規律
任せる
チェックはする(朝1回は朝礼、週1回はチェックするように)
攻めの選択をする(正しい判断は複数存在するけど、リスクやデメリットは二
の次にする)
ネガティブな意見をするのは簡単。
結果として、成果が見えた
100h バグ、調査、トラブル…
開発と並行して、運用も考える
開発の時間が増えるようになった
開発の時間が増えると単純に成果も出る
ライブラリの数もどんどん増えていった
テストをどのくらいするのか?(UTの効果)
テストコスト(プログラミング:テスト=60:40)
初期のリリースは遅いが、開発のスピードはどんどん上がっていた。
リリースで終わらないのがサービス開発
スタートダッシュは遅いが、運用を長く続けていけば分かりやすい
課題は徐々に減っていった。
アジャイル開発の啓蒙
CI
手作業の多いところは自動化する
自動化した部分のところを、開発に回す
失敗したプロジェクト
アラートが止まらない→運用を止めてしまう=CIを導入できない
手作業を自動化すると、手作業のリスクはどんどん減る
自動化の広がり
自動化するためのアプリケーションのリファクタリング
興味はあるけど適用できない→結局自動化が浸透しない
伝わらない
始まらない
新人研修でアジャイルをやると…→できちゃった
フロントエンドのテストの自動化
もしかして老害…?
忙しい…?
テストは大切だけど、GS要求が強かったり、
時間を作る時間がなかったり…
どのようなアプローチがあるのか?
他部署との連携
QAにCIを注入
プロセス改善
育成協力
結果
やっぱり浸透しない
最初は「さあやりましょう」ってなるけど、結局頓挫してしまう
感覚
一緒にやってる感がない
レポートラインが違う
一緒に働くということはかなり難しい
プロセスや標準化
同じ作業を選択してしまう(GS要求や、新技術の導入が難しい、例外に弱い)
みんなウォーターフォールから始めてしまう(なぜか大手の真似をする)
ソフトウェア開発とは、ユーザーのニーズや、マーケティングの目標を
ソフトウェア製品に変換する作業である
工場 vs 創造
技術的負債の返済
- レガシーコード
- 古い技術
- ヘビーな運用
エンジニアにしたら恐怖でしかない
乱立Agile
軽い気持ちで導入して結局だめになって
「アジャイル使えない」ってなるのは避けたい
成功体験を作る
今の「普通」を全否定する
「動いているから正しい」のか?
何のためにやっているのか分からない承認手続きとかもうざい
楽天主義
新技術
- アジャイル
- クラウド
啓蒙活動では伝わらない
見えないなら見に行かないといけない
現場を見にいけばいい。
現場の課題
エンジニア急増
育成不足
レガシーコード
開発力とチーム力
「朝礼」 話し合って確認
「見える化」 視覚的に確認する
「イベントにも参加させる」 刺激を貰う。そのギャップを話す
よかった
スピード感
楽しかった
みんなで解決
一体感が得られた
どのくらい生産性が上がったのか、
定量的に確認してみた
開発時間は6倍に....
優先順位を決めたのが大きな原因
プロジェクトに集中する
「ちょっとくらいならいいよね」がすごく邪魔
カバレッジ98%
Bug: 0.02%
いまいち
3ヶ月の準備期間
ビジネスへの展開
「Agileが善、それ以外が悪になってしまった」
コーチはいつかいなくなる
そしていなくなったあとは元に戻ってしまった。
元に戻せばいいのか?
改善をやらなくなったのがすごく残念だった
一人の男が諦めずにやってみた。
失敗から学ぶ
チャレンジする
諦めずにやり続けたら周囲に影響を与える
マネージャーとの関係
介入してくるマネージャのいるプロジェクトは失敗する
チームで決めた決定がマネージャによってひっくりかえるので、
チームのモチベーションが下がる
悪い上司は、開発のことを理解していないことが多い
人は変わるが、時間がかかる(しかもその間にも時代と事情は変わる)
共感出来る人間が20人くらいいた。
この20人をメンターにしたら、20*20で共感者が400人くらいになる…はず
共通認識を作る、一体感を出す
もっと大きな力をうみだす
チームを勇気づけて、やるきを出させる
自己組織化されたチームを作る
仲間が出来る
責任がある
自己管理ができる
メリットベース
チームを勇気づけるリーダーシップが大切
「客員一層奮励努力せよ」