技術的負債返しますか?それとも開発辞めますか(dev love広島 20150428)

Post on 13-Aug-2015

693 Views

Category:

Documents

1 Downloads

Preview:

Click to see full reader

TRANSCRIPT

技術的負債返しますか?それとも開発辞めますか

〜 DevLove 広島 〜「 DevLove 甲子園勝手にプレイバック Ver. 西 + α 」

BMC 西 秀和

自己紹介

• 西 秀和(33歳)

• 経営管理センター所属 主任

• 仕事先: BIGLOBE

( 月曜〜金曜は東京にいます )

• 業務システム設計・開発

DevLove 甲子園お邪魔してきました

DevLove 甲子園発表内容

(ダイジェスト)

中間管理職がいなくなったらプロジェクトが

うまく進みだしたよ♪

経営管理センター (BMC)  西 秀和

隊トラック

みなさん!!管理されてますかー?

お客様

1次

2次

常駐

常駐

担当

主任

主任

M

お客

発注

API設計部門

API製造部門

担当 画面部門

担当M

発注

東京

広島 広島愛媛

S-in 日までに完成した画面

107画面中

7画面

お客様

1次

2次

担当

主任

主任

M

お客

API設計部門

API製造部門

担当 画面製造部門

担当MGM

S-in するまで、   帰ってくるな!!

■ 命令

無事に S-in できた

全員でゴールを共有

WHY?

WHAT?

HOW?

現場では逆走不可

← ココを与える

現場を変える可能性を

一番持っているのは、現場のエンジニア

発表内容ここまで。

中間管理職いたらダメなのか?

数値化して管理

数値化が難しいことに弱い

現場の全てを把握できない

数値化が難しいこと

現場のエンジニアが解決するしかない!

技術的負債

ウォード・カニンガム最初のコードを出荷することは、借金をしに行くことと同じである。小さな負債は、代価を得て即座に書き直す機会を得るまでの開発を加速する。危険なのは、借金が返済されなかった場合である。品質の良くないコードを使い続けることは借金の利息としてとらえることができる。技術部門は欠陥のある実装や、不完全なオブジェクト指向などによる借金を目の前にして、立ち尽くす羽目になる

技術的負債とは?

今後の開発・運用に悪影響のあるコード

Reckless( 無鉄砲 )

Prudent( 計画的 )

Deliberate( 意図的 )

設計する時間がない品質を犠牲にして作れ!!

問題は認識しているが、リスクは承知の上でリリース

Inadvertent( 無意識 )

負債が溜まっていく事に気づいてない

最善を尽くしたが、のちに最善の方法が分かる

技術的負債 (四象限 )

保留!!

技術的負債とはどのレベルの問題を言っているのか?

• 処理の共通化(共通化)

• 単体テストが可能(テストの容易性)

メソッド抽出<- 生産性の UP

<- 品質の向上

実例

Reckless( 無鉄砲 )

Prudent( 計画的 )

Deliberate( 意図的 )

設計する時間がない品質を犠牲にして作れ!!

問題は認識しているが、リスクは承知の上でリリース

Inadvertent( 無意識 )

負債が溜まっていく事に気づいてない

最善を尽くしたが、のちに最善の方法が分かる

技術的負債 (四象限 )

技術的負債が発生する原因

技術的負債の分類

技術的負債 (四象限 )

1.短納期2.未熟なチーム3. 業務知識不足

原因の発生元は?

1.短納期

Reckless( 無鉄砲 )

Prudent( 計画的 )

Deliberate( 意図的 )

設計する時間がない品質を犠牲にして作れ!!

問題は認識しているが、リスクは承知の上でリリース

Inadvertent( 無意識 )

負債が溜まっていく事に気づいてない

最善を尽くしたが、のちに最善の方法が分かる

技術的負債 (四象限 )

「短納期」弊害

• 設計・レビューの時間が十分に取れない

• 最善の手法では間に合わない

• 似た処理をコピー &ペースト

• 仕様変更に柔軟に対応できない

2.未成熟なチーム

Reckless( 無鉄砲 )

Prudent( 計画的 )

Deliberate( 意図的 )

設計する時間がない品質を犠牲にして作れ!!

問題は認識しているが、リスクは承知の上でリリース

Inadvertent( 無意識 )

負債が溜まっていく事に気づいてない

最善を尽くしたが、のちに最善の方法が分かる

技術的負債 (四象限 )

「未成熟なチーム」の弊害

• チームの設計方針が安定しない

• 実装方法に統一性がない

• 後戻りが多い

• 打ち合わせ・議論が長い

3. 業務知識不足

Reckless( 無鉄砲 )

Prudent( 計画的 )

Deliberate( 意図的 )

設計する時間がない品質を犠牲にして作れ!!

問題は認識しているが、リスクは承知の上でリリース

Inadvertent( 無意識 )

負債が溜まっていく事に気づいてない

最善を尽くしたが、のちに最善の方法が分かる

技術的負債 (四象限 )

「業務知識不足」の弊害

• データの変換している処理が多い

• データ構造が業務に合っていない

• ST などプロジェクト後半で問題が多い

最近、関わっている

プロジェクトの話

プロジェクト状況

• 7人チーム( バラバラのチームからかき集めた )

• 10月に結成して2月リリース

• 初めてのビジネスモデル

直ぐに問題が発生

チームの中心になる共通認識がない

技術的負債が増えている事は

エンジニアが一番理解している

レビューで設計方針の討論が起きる

コレは良いこと( 時間があれば)

議論が発散

レビュー時間が長時間化

技術的負債を生む原因

作業時間を圧迫

一旦、議論禁止

代わりにやった事

共通認識を作る

ドメインモデル

1400クラス100テーブル

技術的負債を共有する

←議論したい事

←議論はして取組でいる事

チームの方針

• 毎日、16:00から1時間だけ開催

• 1回で1議題

• ファシリテーターは持ち回り

• 朝会で今日の議題を発表

• ファシリテータが初めに問題提起と改善案を提示

議論中…

議論する時間を設ける利点

• 1つの議題に集中して討論できる

• もめた時の受け皿になる

• みんなで決めたという納得感

• やりたい事を提案する準備の期間がある

技術的負債を見逃さない

KPT では残った Problem を捨てたらダメ

まとめ

技術的負債の返済はチームで挑め!!

なぜか?

技術的負債の発生はエンジニアの

スキルではなく状況に左右されやすい

誰か一人でリファクタを実施

未熟なチーム業務知識が乏しいメンバは新たな技術的負債を生む

技術的負債の返済が終わらない…

技術的負債の返済と共にチームが

成長すること

大切な事

技術的負債の返済はチームで挑め!!

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

top related