「アジャイルサムライ」の著者が語る、技術志向の企業が世界をどう見ているのか? そしてソフトウェアテスト自動化を進化させる方法について(前編)。JaSST'22 Tokyo基調講演

2022年4月11日

Jonathan Rasmusson(ジョナサン・ラスムッソン)氏はアジャイル開発における著名人の一人であり、さまざまな先進的ソフトウェア企業において開発やテストに携わってきました。

日本ではアジャイル開発の入門書として話題となった書籍「アジャイルサムライ」(オーム社,2011)や「初めての自動テスト」(オライリー,2021)、「ユニコーン企業のひみつ」(オライリー,2017)の著者としても有名です。

そのラスムッソン氏が2022年3月10日と11日の2日間、ソフトウェアのテストに関わる国内最大のイベント「ソフトウェアテストシンポジウム 2022 東京」(JaSST'22 Tokyo)の基調講演に登壇しました

講演のタイトルは「COMPETING WITH UNICORN」(ユニコーン企業と戦うには)。講演の前半では、GoogleやFacebook、Spotifyなどに代表されるテック企業やテクノロジー志向の企業を理解するために、彼らは世界をどのように見て、ビジネスやソフトウェア開発を進めているのかを解説しています。

そして講演の後半では先進的な音楽配信企業であるSpotifyにフォーカスを当て、初歩的なマニュアルテストからスタートした同社がどのようにしてソフトウェアテストのプロセスを成熟化させ、高いレベルのソフトウェア開発へと進化できるようになったのか、その秘密を解説していきます。

この記事では、その基調講演の内容を紹介していきましょう。この記事は、前編中編後編の3つに分かれています。いまお読みの記事は前編です。

COMPETING WITH UNICORN(ユニコーン企業と戦うには)

日本のみなさま、ジョナサン・ラスムッソンと申します。今日は皆さんにお会いできて大変嬉しく思っております。

fig

今日は「Competing Unicorn」(ユニコーン企業と戦う)というテーマで、私がソフトウェアテストにおいて重要だと思ってる、ふたつのことについてお話をしようと思っています。

fig

まず講演の前半、パート1では、本当に信じられないような素晴らしいことをソフトウェアで実現する会社、皆さんご存じのGoogleやAmazon、Facebookといった会社は、それ以外の会社となにが違うのか、どうやって他社と違うことを実現しているのか、それだけではなくどういう考え方をしているのか。

他の会社とは異なる視点でどのように世界を見ているのか、という話をします。

そしてパート2では、Spotifyのような会社がソフトウェアのテストでどのようなことをしているのか。テストの仕方などについて、他社となにが違うのか、という話をしたいと思います。

テック企業とそれ以外の企業では一体何が違うのか?

本論の前に、まずスタートアップやいわゆるテック企業が世界をどのように見ているのか、そして彼らとそれ以外の企業では一体何が違うのかについて、お話ししようと思います。

実はこれはとても重要なことです。

fig

GoogleやFacebook、そしてSpotifyなどの企業はすべてスタートアップとして始まりました。

彼らはそのとき、多くの疑問に答える必要がありました。

それは私が「Unknowns」と呼ぶものです。例えば、本当に誰もが求めている課題の解決をしようとしているのか? お客様はそこにいるのか? お客様に価値を提供できるような製品を作っているのか? ビジネスモデルはこれでいいのか?

スタートアップはつねにこれらの疑問に答えていかなければなりません。

fig

彼らがここで考えているのは、製品とマーケットの間のフィットです。

製品と市場とがフィットするということは、あるお客様にとって完璧な製品を作ることができる、という意味です。

多くの人々がその製品を本当に欲しいと思い、作るのが間に合わないくらいの需要が生まれる。こういった製品と市場との間のマッチングがなければ、もうそれはゲームの終わりです。

ということはスタートアップとは、ある課題があって、それを解決するためのソフトウェアをどうやって作り出せばいいのか、というふうに世界を見ている。つまり、他の会社とは違う方法で世界を見ているということです。

そして彼らはラーニングマシン、学び続けるマシンです。いろんなことを学び、それをいろいろ試してみる。お客様について、製品について、何を作るべきか、これらについて学び、試す、ということを短時間で時間でどんどんとやります。

fig

たくさん失敗するスタートアップは失敗を気にしない

スタートアップというのは非常に反復的なアプローチをとります。最初に1バージョン作ってみて、それを改善しながら、本当にパーフェクトなものになるまで何回でもバージョンアップを繰り返します。

ある機能を作ってみる。例えばAとBという異なる2つの機能を作ってみて、市場に出してみて、どっちがよいかを判断してもらうというような、たくさんの実験を繰り返します。

このように実験をするということは失敗もたくさんするということです。

だからスタートアップは失敗があったとしてもあまり気にしないのです。彼らのマインドセットというのは、どちらかというと探査、つまり探検とか発見とか、そういったマインドセットなのです。

fig

従来の会社によるプロジェクトとは

この考え方を、いわゆる伝統的な会社、ソフトウェアのデリバリーをするために「プロジェクト」をやるようなタイプの従来の会社とちょっと比べてみようと思います。

fig

プロジェクトというのはそもそも期間に決まりがあります。あるときプロジェクトが始まり、ここでプロジェクトが終わる。という完了の仕方です。

そしてそれは比較的短い期間で終了します。だいたい3カ月とか6カ月とか、長くても1年ぐらいで終了します。そしてプロジェクトはあまり反復的ではありません。

プロジェクトというのは通常、1回で何かを作り上げてそれで終わり、という形になります。

ですからプロジェクトにおける成功の定義とは、期日通りに、予算内で終わる、ということです。

fig

スタートアップはプロジェクト的な製品作りをしない

一方でスタートアップはどういう考え方で始めるでしょうか?

まず、製品を作り始めたときに終了予定の期間は決めていません。最高の製品を作り続ける、改善し続けるということです。1カ月とか3カ月とか6カ月で期限を切っていません。もっと長い期間で彼らは考えています。

そして反復的です。製品を作るときにお客様からフィードバックをもらって、それを製品に反映し、改善する。これを繰り返します。

そして実験を繰り返します。その中でうまくいくことといかないことを見極めながら進んでいきます。

fig

スタートアップにとって成功とは、多くの人たちが自分たちの製品を使っているのか、ダウンロード数は増えているか、売れるまでの時間が短いかどうか、といったことになります。

プロジェクトのように予定通りに終わったとか予算通りに収まったとか、そうした成功の定義とは全く違うということになります。

つまり伝統的な従来の会社がSpotifyとかGoogleとかNetflixとかそういった人たちと競争しようとするときに、まるでプロジェクトを進めるかのような考え方で進めるというのが大きな間違いだと私は思っています。

なぜならば、この二つは全く違うからです。

ソフトウェアを構築する上でもです。

fig

テック企業は「ミッション」を中心とした仕事をする

テック企業が他の会社と何が違うのかというと、プロジェクトでは物事を進めないということです。その代わりに彼らは「ミッション」を中心とした仕事をしています。

ミッションというのはゴールのようなものです。そこに到達したいと思いながらやるものです。

これはチームに対して与えるゴールです。

Spotifyで仕事をしているときには、リビングルームを占拠する、というのがミッションでした。

fig

Spotifyでハードウェアプラットフォームのチームと一緒にやっていたときに、家族がみんな夕方集まってリビングルームでみんなで音楽を聞くときに、そこでSpotifyで音楽を聞いてほしい。

それから朝の通勤時間、北米においては通勤のかなりの時間を車の中で過ごします。この通勤時間にも音楽をSpotifyで聞いてもらう。

私たちが「生産性」と呼ぶミッションもありました。

これは他のチームの生産性を上げるできるようにすること。いろんなチームが集まって、短い時間でより良い、質の高いものを出す。それも私達のミッションでした。

ミッションのいいところは、ミッションをチームに与えることによってチームの仕事のやり方が変わるということです。

どうすればミッションを達成できるのか、チームが考えるようになります。チームとして目的意識を持つようになるわけです。何をやろうとしているのか、何を達成したいのかが分かるので、仕事の目的が明確になります。

インセンティブの方向性も合致します。自分の責任範囲で長期的な品質を達成したいという目的意識の方向性も一致します。

その結果としてより良い製品が出来上がります。

一般的にミッションを持つテック企業では、非常に品質の高い製品が出来上がるわけです。

fig

ミッションとプロジェクトの比較

ミッションとプロジェクトがどう違うのか、見ていきたいと思います。

まずプロジェクトには予算があります。一方でミッションには予算がありません。ミッションでは、そのチーム自体が予算になるわけです。

プロジェクトには終わりがあります。ミッションには終わりがありません。ミッションは無期限です。

プロジェクトは一般的には短期的です。ミッションは長期的なものになります。

プロジェクトにはプロジェクトマネージャーのようなプロがいます。その人たちが方向性を示し、プロジェクトが予定通りに進むことを確認します。ミッションには、管理するプロジェクト自体がありませんのでプロジェクトマネージャーがいません。

プロジェクトは最終的には作り上げたものを別のチームに引き渡します。ミッションの場合はそうではありません。チームは自分が作ったものを自分で維持し、他の人に引き渡しはしません。

プロジェクトでは、チームは完了と同時に解散します。ミッションではチームは残り、そのミッションに取り組むことを続けていくわけです。また、プロジェクトは計画に焦点を当てます。予定通りに進んでいるのか、予算通りに進んでいるのかです。

一方でミッションでは顧客に焦点を当てています。顧客が製品を使っているのかを見ていきます。

プロジェクトは期待値を設定します。一方でミッションはインパクトを重視します。

一番大きな違いは、プロジェクトはトップダウンです。つまりトップの人たちが何をすべきだとかという命令を出します。一方でミッションはボトムアップになります。

チームにミッションを与えるとチームの人たちがどうやってそれを達成するのか考えます。

プロジェクトとミッションの違いはこういったところにあります。その結果として仕事のやり方も変わってきます。

fig

では、Spotifyやその他の企業はどうやってミッションを実行しているのでしょうか。

≫中編に続きます。中編ではミッションを実現する自律的な仕組みとして、スクワッド、トライブ、ギルドなどを紹介します。

関連記事

このエントリーをはてなブックマークに追加
follow us in feedly


関連タグ CI/CD / DevOps / アジャイル開発 / ソフトウェアテスト・品質



タグクラウド(β版)

クラウド / AWS / Azure / Google Cloud
コンテナ / Docker / Kubernetes
クラウドネイティブ / サーバレス
クラウド障害 / 運用・監視

プログラミング言語 / 開発ツール
JavaScript / Java / .NET / WebAssembly
HTML/CSS / Web標準
アジャイル開発 / スクラム / DevOps / CI/CD
ソフトウェアテスト・品質
ローコード/ノーコード開発

データベース / RDB / NoSQL / 機械学習・AI
Oracle Database / MySQL / PostgreSQL
Office / 業務アプリケーション

ネットワーク / HTTP / QUIC / セキュリティ
OS / Windows / Linux / VMware
ハードウェア / サーバ / ストレージ

業界動向 / 働き方 / 給与・年収
編集後記 / 殿堂入り / おもしろ

全てのタグを見る

Blogger in Chief

photo of jniino

Junichi Niino(jniino)
IT系の雑誌編集者、オンラインメディア発行人を経て独立。2009年にPublickeyを開始しました。
詳しいプロフィール

Publickeyの新着情報をチェックしませんか?
Twitterで : @Publickey
Facebookで : Publickeyのページ
RSSリーダーで : Feed


最新記事10本