毎日がもふもふ

新規事業に特化した渋谷の開発会社mofmof inc.を経営するエンジニア兼代表・原田敦のブログ

どういう意味で品質って言ってるの?システム開発の現場で品質おじさんと建設的に向かい合う方法

f:id:redhornet96:20171101113444j:plain

「わしはシステムの品質を妥協せんぞ!」って偉い人から議題があがるって経験したことありますか?

この「品質」って言葉が少々やっかいなヤツでして、それだけ言われても何のことを指しているか分からなくなくなくないですか?

じゃあこの偉い人にどういうことが詳しく聞けばいいじゃんって話なんですが、「品質ってなんスか?」とか聞いたら、「キサマ!『品質』って言葉も知らんのか?国語辞典で読んで小学生からやりなおせぃ!」ってブチ切れられて、焼き土下座とか強制地下労働とかさせられるのが関の山。そんなリスクを考えると、なかなか言い出しづらいですよね。

そんなあなたのために具体的にこの「品質」という言葉をどう扱うべきか考えて行きましょう。

品質という言葉は何を示しているのか?

ところで、アジャイル開発にはプロジェクトの目的やゴールを明確にするための「インセプションデッキ」というドキュメントが存在します。

その中の一つとして「トレードオフスライダー」というものがあり、スコープ・予算・時間・品質の4つから優先度をつけるというものです。

システム開発プロジェクトにおいて、それぞれ4項目はトレードオフの関係があって、何かを優先とした場合に、他の何かの優先度を犠牲にしなければならない、ということを示すことが出来る。

f:id:redhornet96:20171101113500p:plain

さてでは、「品質」とはどんな意味を持っているんだろうか。システムにおける「品質」とは例えばこのようなものがあるかと。

  • バグが少ないシステム
  • 画面デザインがキレイなシステム
  • 保守性が高いソースコードで実装されたシステム

どれも品質に当てはまる言葉だと思う反面、それぞれ向上させるためには力のかけ方が異なるため、別軸で考えるべきものであって、一緒くたに「品質」と呼ぶのは良くないんじゃないかと思う。

従って「品質」について議論したいときは、一体どの品質を指しているかを明らかにしてから議論する必要があると。

品質を無意味に追いかけてしまう病気

f:id:redhornet96:20171101113527j:plain

ぼくはこの「品質」という言葉をなるべく使用しないようにしていて、トレードオフスライダーからも削除していることが多いです。なぜかというと、上記のような問題を解決しないまま「品質」を重要視する方向にプロジェクトの舵を取ると、間違ったことに努力してしまいがちだからです。

例えば、「キサマら!もっと品質を高めるのじゃーーーー!」というオーダーがあった場合、 「そうか品質か、より完璧に近いものを作ればいいのだな?」と解釈して実行に移しちゃったりする。こういうのイクナイ。大変イクナイ。

偉い人は単に見た目がキレイなシステムをイメージしているだけかも知れないのに、デザインがモダンで超かっこいい、バグが一切なく、ソースコードも超絶美しいものを目指したらどうなるか。

延々と重要でもないことを頑張り続けてプロジェクトのリソースが圧迫していき、結果的にプロジェクトが破綻、あなたは責任をとらなければならず、偉い人の前で10秒間の手と足と額を地に付けた焼き土下座を披露することになり兼ねません。

本来システムとは、人の手間を減らして楽にするためのものであり、人を喜ばせることが目的のはず。最も重要視すべきは、その目的が満たせるかどうかであり、システムがとにもかくにも完璧であることを目指すのは妥当ではない。

品質という言葉を使うのをやめよう

まずはですね、システム開発のプロジェクトで「品質」という表現を使うのはやめよう。話はそれからだ。

品質について何か語りたい場合は、具体的な言い方をしよう。

  • バグの少ないシステムにしたい
  • 見た目の良いシステムにしたい
  • メンテナンス性が高く機能追加の工数が少ないシステムにしたい

もし偉い人が「品質じゃ!品質!!キエーーーー!!」と言って今にも襲い掛かってきそうなときは、「ちょ、ちょっと待ってください!!その品質という言葉は一体全体上のどの意味を指しているのでしょうか!」とぜひ問いかけてみてください。

もし「ばっかもーん!全部じゃ全部じゃ!!」と言われた場合「で、ではどれから取り組むか優先順位をつけましょう!」と言ってみると良いです。

なんでもかんでも容易に「品質」という言葉にひっくるめ、完璧にこなそうとしてしまうと、結果的に現実とのギャップを埋められずに苦しむことになります。

我々システム開発を生業とするものにとっては、限られた予算や人的資源の中で、人を助け、喜ばせることが出来るシステムを実現することが使命。

だから「品質」を求められたならどんな具体的にどんなポイントに力を入れるべきなのか、あるいは、今最重視すべきものが本当に「品質」であるのか。本質を問う必要があると、ぼくは思います。

おまけ

mofmof inc.では、新規事業におけるWEBサービス開発を得意分野としております。短いスパンで早くよりよいサービスをリリースすることを良しとしているのですが、かといって汚いソースコードでも良いとはしておりません。

mofmof inc.では各自がメンテナブルで良いコードを高速に書けるように成長する仕組みとして、コードレビュー文化を推進しております。

参考:コードレビューは技術力を伸ばし続けるための仕組み

www.mof-mof.co.jp