Pivotal Labsとは
Pivotal Labsはたとえていうと、ソフトウェアの工房と教室が一体化した場といえるだろう。Pivotal Labsを利用する企業や開発チーム(以下、ゲストチーム)は、実際に自社で利用したり顧客へ納品したりするソフトウェアを、Pivotal Labsのオフィスに通って開発する。開発はアジャイル手法で進められ、ゲストチームはPivotal Labsでのソフトウェア開発を通じてアジャイル開発を体得できる。
Pivotal Labsの特徴の1つは、Pivotal Labsのメンバー(以下、Labsメンバー)がゲストチームのソフトウェア開発に参加する点である。メンターなどとしてゲストチームを指導するのではなく、一緒に開発を行う。Labsメンバーとゲストチームの間には上下関係もなく、ゲストチームが完成を目指すソフトウェアを1つのチームとしてともに開発していく。
そのためのチーム編成も、Pivotal Labsの特徴である。同社が「Balanced Team」と呼ぶ編成で、チームメンバーは「プロダクトマネージャー(以下、PM)」「デザイナー」「エンジニア」という3つの役割のいずれかに就く。各役割にはディシプリン(規律)が定めてあり、チームメンバーはそれに則って担当する仕事を進めていく。それぞれ次のとおりだ。
PMのディシプリンは「リーン」。プロダクトに対する仮説(こういう機能をこう実装したらユーザー価値が高まるだろう)を立て、実装してみて検証する(ユーザーに試してもらうなど)サイクルを回すのがPMの主な役目である。この仮説検証は小さな機能単位で繰り返し行うことが欠かせない。
デザイナーのディシプリンは「UCD(ユーザー中心設計)」。デザイナーというと画面のレイアウトなどビジュアル面を担当する人というイメージが強いが、Pivotal Labsのデザイナーの中心的な仕事は「リサーチ」だ。ビジネス課題を洗い出し、プロダクトをユーザーにとって価値があり、使い勝手も良いものにする。そのために、ユーザーインタビューを行ったりペルソナを作ったりすることもデザイナーの役割となっている。
エンジニアのディシプリンは「XP(エクストリームプログラミング)」。ブラウン氏によれば、とりわけ「TDD(テスト駆動開発)」と「ペアプログラミング」がカギだという。TDDは実装コードを書く前にテストコードを書く開発手法。とても厳密に実施しており、テストコードなしにコーディングをしてはいけないルールになっている。ペアプログラミングでは、1つのプログラムコードを2人で書いていく手法。もう1人の目が入ることにより、ソースコードの品質が高まるほか、集中力のアップも望める。
実は、“ペア”で作業するのはエンジニアだけではない。PMもデザイナーもペアを組む。これには成果物の品質が高まるなど、エンジニアと同じメリットももちろんある。しかし、Pivotal Labsのペアリングにはもっと重要な意味がある。
ペアは原則として、ゲストチームのメンバーとLabsメンバーとで作る。つまり、ゲストチームのメンバーは、Labsメンバーと一緒に仕事をしながら、その仕事の仕方(つまりアジャイル開発の仕方)を見て学べるのだ。その中で、ゲストメンバーは自分たちでアジャイル開発を実践するための経験を積み、力を付けていける。この実践力を身に付けることを、Pivotalでは「イネーブルメント(Enablement)」という。ブラウン氏は、ゲストチームをイネーブルすることがPivotal Labsが提供する価値だとする。
「一般的にSI企業は、ユーザー企業からソフトウェアに対する要求を受け取り、それを実装して納品することにフォーカスしています。しかし、Pivotal Labsは違います。我々のミッションステートメントは“To transform How the world build software(世界中のソフトウェア開発を変革する)”であり、ゲストチームをイネーブルすることにフォーカスしているのです」(ブラウン氏)
もちろん、Pivotal Labsは実際に利用したり納品したりするソフトウェアを作り上げることも目的とする。そうした真剣に取り組むべき仕事を前提とする中で、アジャイル開発をリードしてくれるLabsメンバーと共同作業を進めるからこそ、ゲストメンバーのイネーブルメントが果たされるといえるだろう。
そのほか、ペアでの作業には成果物(ソースコードなど)の内容をゲストチームが理解し、Pivotal Labsでの開発が終わり自社に帰った後もプロダクトをメンテナンスできるようにする「ナレッジの共有」という側面もあるとブラウン氏は述べている。
なお、本取材中にLabsメンバーの方からは教えるのではなく、一緒にやるのだという指摘を何度もいただいた。この「メンバー間はフラット」という考え方は、ペアの間だけでなく、3つの役割の間においても同様である。