「TechBrew in 東京 〜mtx2sさんと考えるコード品質とビジネスインパクト〜」に参加してきました

ビジネスとエンジニアリングの接合点 ~ そしてコード品質がそこに及ぼす影響

  • LINEヤフー株式会社/松本 成幸@mtx2sさん

ビジネスとエンジニアリングの接合点

  • ビジネスからエンジニアリングへの相談からスタート
  • ビジネス
    • 計画づくりから始める
    • そのために見積もりしてもらう
    • 完成時期を早めたい
  • エンジニアリング
    • 見積もりをする
    • 計画をする
    • 完了する確率を高めたい
  • 両方が調整されて発足する

プロジェクトの成功に求められる要素と接合点

  • 成功は計画だけでなく価値の提供も含む
    • 期間
    • 予算
    • アウトカム
  • プロジェクトの進行中は様々な困難がある
    • プロジェクトプランニングとプロジェクトコントロールも必要
  • 価値があると信じていても顧客によって検証されるまでには仮説にすぎない
    • 実験と計測を回していく

コード品質がビジネスに与える影響

  • 低品質なコードだと
    • 見積もりが難しい
      • 予測可能性が低くなる
    • 欠陥が多い
      • 欠陥の修正に追われてしまう
      • 潜在的な不具合がどこかで顕在化する
    • 開発時間が長い
      • 期待する価値に到達するために何度も繰り返すことができないので価値がさがるか遅延する
  • => 成功に求められる要素のマイナス要因になる
    • ビジネスに悪影響を与えてしまう

対策の実例

  • 保守性の構成
    • テスト容易性
    • 変更容易性
    • 理解容易製
  • テストコードを書く過程でリファクタリングが進み品質が高まる
  • テストのカバレッジを評価軸に入れた
    • テストを書く文化を作りたかった
  • テストが目的とならなようにその他のメトリクスも評価に入れた
  • ジュニアとシニアでペアプロでテストを書いていく

開発者に感謝される品質チームであるために

内部品質チーム

  • 外部品質(QA)とは別動
  • 機能開発を安心して高速に行える基盤づくり
  • 社内標準を磨きプロダクトに反映

品質向上と標準化

  • 煙たがられるのでは
    • 新機能をはやく作りたい
    • お作法を押し付けることになってしまわないか
  • 実際は感謝されていた

やっていること

安心と高速化

  • 注力領域の妨げになる箇所を先んじてリファクタ
  • モノレポのハマりどころの対応
    • ライブラリや言語のVUP
  • CIの安定化高速化

標準化

  • 共通機能のミドルウェアの提供など
  • 使い勝手に敏感であり続ける
    • ライブラリのアップデートで足かせになっていないか
    • 機能は十分か
    • トラブルシュートで困らないか
    • changelogが読めるものになっているか

コード品質向上タスクの優先順位を判断するために必要な観点を探究する

コード品質

  • 内部品質/外部品質
  • コードは内部品質
  • 内部品質は外部品質に依存し外部品質は利用品質に依存する
  • コード品質は内部品質の中でもメンテナビリティ
    • 理解容易性
    • 変更容易性
    • テスト容易性

なぜ改善タスクが進まないか

  • なぜ進まないか
    • 変化が怖い
    • 知識の孤立
    • ビジネスが止まる
    • 終わりが見えない
  • ビジネスメンバーが判断できない

ビジネスへの説明

  • ゴールを決める
    • いろんな指標があるからそれを使う
    • 基準をどうするかはビジネスドメインによる