by shigemk2

当面は技術的なことしか書かない

アジャイルリーダーシップと組織改革 〜楽天のアジャイル開発というリアル〜

アジャイル開発の失敗と成功の体験

楽天
プログラマリーダーコーチ

開発の立ち位置
カンパニー制で、開発部はそれぞれ一つ

開発を支援する部隊(標準化、ツール、アジャイル)
アジャイルのプロセス改善など

エンジニア: 1000+
グループ: 70+
プロジェクト: 1000+

ウォーターフォールが基本(ただし納期厳守ではない)
アジャイルリーダーシップと組織改革
(大きい規模での開発をどうしたらよいのか)

アジャイルで導入してみて、
現場に行きリーダーシップと組織改革を
考えて一番伝えたいこと

MTGでもすごくネガティブな意見ばかり

XP(エクストリームプログラミング)入門
実際にどうやるのか?

pear programing(3人で交互にペアでプログラミングをする、ナレッジの共有)
CI (テストのないコードを改善する)
テストによってリリースが延びてしまうので、上司には
理解されづらい

規律
任せる
チェックはする(朝1回は朝礼、週1回はチェックするように)
攻めの選択をする(正しい判断は複数存在するけど、リスクやデメリットは二
の次にする)

ネガティブな意見をするのは簡単。

結果として、成果が見えた
100h バグ、調査、トラブル…
開発と並行して、運用も考える
開発の時間が増えるようになった

開発の時間が増えると単純に成果も出る
ライブラリの数もどんどん増えていった

テストをどのくらいするのか?(UTの効果)
テストコスト(プログラミング:テスト=60:40)
初期のリリースは遅いが、開発のスピードはどんどん上がっていた。

リリースで終わらないのがサービス開発
スタートダッシュは遅いが、運用を長く続けていけば分かりやすい

課題は徐々に減っていった。



アジャイルの展開
アジャイル
CI
自動化

アジャイル開発の啓蒙
CI
手作業の多いところは自動化する

自動化した部分のところを、開発に回す

失敗したプロジェクト
アラートが止まらない→運用を止めてしまう=CIを導入できない

手作業を自動化すると、手作業のリスクはどんどん減る
自動化の広がり
自動化するためのアプリケーションのリファクタリング
興味はあるけど適用できない→結局自動化が浸透しない

伝わらない
始まらない

新人研修でアジャイルをやると…→できちゃった
フロントエンドのテストの自動化

もしかして老害…?
忙しい…?

テストは大切だけど、GS要求が強かったり、
時間を作る時間がなかったり…

どのようなアプローチがあるのか?

他部署との連携
QAにCIを注入
プロセス改善
育成協力

結果
やっぱり浸透しない
最初は「さあやりましょう」ってなるけど、結局頓挫してしまう
感覚
一緒にやってる感がない

レポートラインが違う
一緒に働くということはかなり難しい

プロセスや標準化
同じ作業を選択してしまう(GS要求や、新技術の導入が難しい、例外に弱い)
みんなウォーターフォールから始めてしまう(なぜか大手の真似をする)

ソフトウェア開発とは、ユーザーのニーズや、マーケティングの目標を
ソフトウェア製品に変換する作業である

工場 vs 創造

技術的負債の返済

  • レガシーコード
  • 古い技術
  • ヘビーな運用

エンジニアにしたら恐怖でしかない

乱立Agile

軽い気持ちで導入して結局だめになって
アジャイル使えない」ってなるのは避けたい

成功体験を作る
今の「普通」を全否定する
「動いているから正しい」のか?
何のためにやっているのか分からない承認手続きとかもうざい

楽天主義

新技術

啓蒙活動では伝わらない
見えないなら見に行かないといけない
現場を見にいけばいい。

現場の課題
エンジニア急増
育成不足
レガシーコード

開発力とチーム力
「朝礼」 話し合って確認
見える化」 視覚的に確認する
「イベントにも参加させる」 刺激を貰う。そのギャップを話す

よかった
スピード感
楽しかった
みんなで解決

一体感が得られた
どのくらい生産性が上がったのか、
定量的に確認してみた

開発時間は6倍に....
優先順位を決めたのが大きな原因

プロジェクトに集中する
「ちょっとくらいならいいよね」がすごく邪魔
カバレッジ98%
Bug: 0.02%

いまいち
3ヶ月の準備期間
ビジネスへの展開

Agileが善、それ以外が悪になってしまった」
コーチはいつかいなくなる
そしていなくなったあとは元に戻ってしまった。

元に戻せばいいのか?

改善をやらなくなったのがすごく残念だった

一人の男が諦めずにやってみた。
失敗から学ぶ
チャレンジする

諦めずにやり続けたら周囲に影響を与える

マネージャーとの関係
介入してくるマネージャのいるプロジェクトは失敗する

チームで決めた決定がマネージャによってひっくりかえるので、
チームのモチベーションが下がる

悪い上司は、開発のことを理解していないことが多い

人は変わるが、時間がかかる(しかもその間にも時代と事情は変わる)

共感出来る人間が20人くらいいた。
この20人をメンターにしたら、20*20で共感者が400人くらいになる…はず

共通認識を作る、一体感を出す
もっと大きな力をうみだす

ファシリテーションスキル
Agile Japan

チームを勇気づけて、やるきを出させる
自己組織化されたチームを作る
仲間が出来る

責任がある
自己管理ができる
メリットベース

チームを勇気づけるリーダーシップが大切

「客員一層奮励努力せよ」