SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

【デブサミ2020】セッションレポート

ソフトウェア開発の「品質vs.スピード」、本当は何を犠牲にしているのか【デブサミ2020】

【13-B-4】質とスピード

  • X ポスト
  • このエントリーをはてなブックマークに追加

コードの品質を高く保っていたからこそスピードは速くなる

 では、品質とスピードの本当の関係は、どうなっているのだろうか?

 和田氏は、書籍『エクストリームプログラミング』を引用して、「むしろ品質を高めることで、デリバリーが高速になることが多い。低品質を受け入れることで、プロジェクトが速くなることはない。高品質を要求することで、プロジェクトが遅くなることもない。 むしろ品質を高めることで、デリバリーが高速になることが多い。品質基準を下げてしまうとデリバリーが遅くなり、予測できなくなってしまう」と述べた。

 つまり、コードの品質を高く保っていた「からこそ」速くなると言えるのだ。

 そして、品質が劣化すれば、リードタイムが増加する。品質は悪いと基本的に手戻りを生むからだ。手戻っている時間は学びを生まない時間となる。だから、品質を下げるという判断が、学びの速度低下を許すことになる。

 従来、鉄板だと誤解されていた「品質を捨てて速度を上げよう」は、品質が劣化して手戻りが発生するだけで、結局はリードタイムの増加に跳ね返る。そして、リードタイムが増加すると仮説検証プロセスも回らなくなる。

 ここまで見てきたものを整理すると次のようになる。そして、「『質vs.スピード』という二律背反の関係は、局所的なものでしかない。大域的には、片方を犠牲にした場合、知らぬうちにもう一つも犠牲にしている」という、Facebookの元エンジニアであるEvan Priestley氏の言葉を紹介した。

 品質とスピードを上げる方法が、個人のレベルに依存しているとしたら、どうやって個々人の品質とスピードを上げていくのだろう。これには正解はないが、「ソフトウェアの開発に最初から最後まで関わるという経験がとても重要だ」と、再度Evan Priestley氏のコメントを取り上げた。そして、いろいろなフィードバックを自分で受け止めて、設計者として能力を上げることが決定的に重要だと思うと述べた。

品質の効果は、1か月以内にあらわれる

 保守性を犠牲にすれば、短期的にはスピードが得られるが、中長期的にはダメージにつながる。内部品質に投資すれば中長期的にスピードが上がり、その結果として競争力と売り上げの向上につながる。だとすると、短期と中期の境目は、どこにあるのだろうか。

 この疑問について和田氏は、テストの自動化を例に説明した。

 諸説あるが、書籍『Experiences of Test Automation』によると、およそ4回で手動テストと自動テストのコストが逆転するという。また、マーティン・ファウラーは「内部品質への投資の損益分岐点は1か月以内に現れる」と紹介した。

 1か月以内であれば、内部品質への投資の受益者は自分たち自身である。つまりエンジニアとしてのプライドやモラルのために品質に投資するのではなく、自分たちの損得の話になるのだ。

 結局、品質と速度についてトレードオフを意識するとき、実際には何と何を天秤にかけているのだろうか。和田氏は、このセッションを何回か行ってきて、寄せられたフィードバックとして「若者が育つ機会」「新技術の調査」「多様性の確保」が犠牲になっているのではないかと紹介して、セッションをしめくくった。

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
【デブサミ2020】セッションレポート 連載記事一覧

もっと読む

この記事の著者

可知 豊(カチ ユタカ)

フリーランスのテクニカルライター 興味の対象はオープンソースの日常利用、ライセンス、プログラミング学習など。 著書「知る、読む、使う! オープンソースライセンス」。https://www.catch.jp

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

和田 卓人(ワダ タクト)

 タワーズ・クエスト株式会社、プログラマ、テスト駆動開発者 学生時代にソフトウェア工学を学び、オブジェクト指向分析/設計に傾倒。執筆活動や講演、ハンズオンイベントなどを通じてテスト駆動開発を広めようと努力している。 『プログラマが知るべき97のこと』(オライリージャパン、2010)監修。『SQLアンチパターン』(オライリージャパン、2013)監訳。『テスト駆動開発』(オーム社、2017)翻訳。 power-assert-js 作者。 ...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/12245 2020/07/03 11:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング