見出し画像

テスト駆動開発って経営者マターじゃね?という話

本稿もやや本来のテーマとはズレますが、ちょっと待ち時間が発生したので書いてみます。

筆者が技術者に呆れた鉄板のネタとして以下のような話があります。

(筆者)
ユニットテストはどう行いますか?因みに弊社ではiOSではGHUnit、AndroidではRobolectricを使って自動化しています。

(ブログでブイブイいわせている技術系某経営者の会社のSE)
ブレイクポイントを設定して目視で確認します(ドヤ)。

分かる人であれば分かるとんでもない話ですが、IT系ベンチャーの経営陣延べ数十人にこの話をしたところ、ほぼ100%の経営者が意味すら分からないらしく、きょとんとされるということを繰り返してきました。いわゆるビッグデータ()系技術ベンチャーですらそうでした。

なお、別に短納期の小さいプロジェクトで上記のような話を振ったわけではなく、以下のようにテスト自体が目的と言ってもよい状況での会話でした。

・年間数千万円(桁の中では中間くらいの数字)の予算でのiOS/Androidアプリケーション受託開発(業務系アプリではないため比較的潤沢な予算だと思います)

・筆者の会社は受託開発は基本行っていなかったため、上記会話の相手の会社を紹介

・プロダクトをリリースしたフェーズ1(一切ユニットテストを行わなかった)に次ぐ、リファクタリングのみが目的のフェーズ2

・ユーザインタフェースではない部分で刻々と変化するデータに基づいて相転移が起きるアプリケーションであったため、品質担保のためにロジカルなテストが必須

上記のような状況でしたので、筆者はクライアントに筆者の会社ごと案件から外してもらうことを依頼したのですが、予算執行スケジュール的に厳しく、「プロジェクトを進める中で勉強してもらおう」という意図で委託し、結果、案の定、炎上しました。

(この会社は、2014年時点でGitも使いこなせず、サーバサイドに特に適性の検討もなくLAMPを採用した上で、ChefやAnsible、VM等を用いず手作業での設定を行い納入先で設定を再現できず大問題を惹き起こすなど、色々とありましたが、それはまた別の話)

現状は技術者の意識の高低に依存

テストというものは、それ自体が直截的に売上や効率(あくまで直截的にです)を向上するものではないため、実施するしないは技術者の意識の高さに依存します。

「オレは経営者だから技術のことは技術のトップに全部任せているんだ」という経営者をよく見かけますが、その任せている技術トップの意識が低い場合、ほぼ確実にテストは行われません。何故なら技術トップの評価者たる経営者がテストを評価していない場合、基本的にタダ働きになってしまうからです。

テストが行われないとどういう問題が発生するか、また、どのような解決策があるかという点に関しては、以下の事例が参考になります。

現場は障害対応に追われ、イベントドリブンな仕事しかできてなかったという。また、売り上げに貢献しなかったこともあり、新規投資がないという諦め感もただよっていた。そのため「障害対応、運用業務、空いた時間に開発業務という優先順位でみんなが動いていた」(山下氏)という。(引用者中略)「開発者ってうぬぼれが強い。自分が作ったモノは絶対にトラブらないと思っているので、テストしない」(山下氏)ということで、テスト部隊を組成。開発者ではなく、運用部隊がテストを行なうことで、実利用に耐えるかどうかをきちんと見極めるという。

開発運用現場をいかに変えたか?GMOの豪腕マネージャが語る

要は、テストを行わないことでのシステムの信頼性低下による障害多発、それが故に売上に繋がる商品開発が出来ないという機会損失という問題が発生し、結局、テスト部隊というテストを目的とした部隊を設けることで解決したとのことです。

このGMOさんの取組自体は素晴らしいと思いますが、語弊を承知で言えば、「後ろ向き」のアプローチです。これから起ち上がるスタートアップが同じ轍を踏む必要はないかと思います。

ソフトウェアテストは経営者主導で導入すべき

要は経営者がソフトウェア品質に対しての意識を持つこと、そしてその品質向上に資するテストのカバレッジや自動化についての評価を怠らないことということが重要です。

このような一見直接財務指標に貢献しない企業内の活動をどう経営に取り込んでいくかということに関しては、バランススコアカード(Balanced Scorecard、BSCと略します)という経営フレームワークが役に立つと思います。

やや話はズレますが、「バランススコアカード 間接部門」というワードで検索してみると色々と興味深い、目からウロコというような話が見つかると思います。

この記事が気に入ったらサポートをしてみませんか?