
BDD(振舞駆動開発)をプロジェクトマネジメントに取り入れることを考える
先日、このような記事を書きました。
言語ゲームとは哲学者のL.ウィトゲンシュタインが著書『哲学探究』で提言した考え方です。
言語ゲームは、要するに、人びとのふるまいの一致である。人びとが合意したからではない。
橋爪大三郎
言葉の意味や暗黙的な前提条件などは振る舞いの一致を経て形成されます。
プロジェクトにおいては探索的な活動を形成するために、参加者の振る舞いを一致させて成果を生み出します。
振る舞いの一致を形成していくために振る舞いをどのように記述していけばいいのでしょうか?(ただ、言語ゲームの内側にいる限り完全な記述はできないのですが)
私はシステム開発者なのですが、聞き慣れた言葉があります。
振る舞い駆動開発(Behavior Driven Development: BDD)
振る舞い駆動開発(以下、BDD)は、ソフトウェアを作るアプローチのひとつであり、発見、定式化、自動化という3つの取り組みでできています。
発見は、具体例やルールについて考え、ソフトウェアの要件について理解します。定式化はユーザーが使う言葉(ビジネス用語)を仕様して振る舞いの具体例を文書化します。自動化は振る舞いの文書化からソフトウェアの振る舞いを検証します。
発見、定式化をプロジェクトマネジメントの振る舞いの記述に取り入れることを考えてみます。
BDDでは具体例の構造をコンテキスト、アクション、結果の3つからなります。結果は振る舞いが発生したあとの期待する状態です。アクションは振る舞いを引き起こす動作です。コンテキストは、アクションの前の状態で前提条件を含みます。
コンテキスト ー アクション → 結果
BDDでは具体例を記述する形式として、Chiris Mattsによって考えられた
Given / When / Then 形式が取り上げられています。
Given: コンテキスト
When: アクション
Then: 結果
に対応しています。また And / But を用いて複数のアクションや結果を記述できます。Given / When / Then 形式により振る舞いの具体例を記述します。
プロジェクトの全体像をプ譜で記述し、プロジェクトの実働に関わる施策を振る舞いとして記述し、現実にそのふるまいが起こるのか、起こらないなら実際は何が起きたかなどを観察し、施策を軌道修正していきます。
どんなイメージになるかですが私が書いているキャリアプランの施策を例に振る舞いを書いてみます。
例として取り上げ得る施策は下記の2つです。
プ譜でOSSの活動を行い、認知度を上げとプロダクトに触れてもらいやすくする
自分のしていることを家族に伝える
ひとつめの施策では、シナリオとして施策を当てはめ、コンテキスト、アクション、結果を書きます。書くことによって何が前提条件となり、何をすることでどのような結果が得られるかシミュレーションされ解像度があがります。
Scenario:プ譜でOSSの活動を行い、認知度を上げとプロダクトに触れてもらいやすくする
Given: プ譜のOSSが公開されている
And: プ譜を導入して良かった事例がある
When: OSSを作る人、使う人が集まる場所にプ譜を持っていく
And: プ譜の利用例のチラシを配る
Then: プ譜をプロダクトに取り入れようと思う人が増える
ふたつめの施策では本当に得たい結果が何だったのか考えるきっかけを得ました。「伝えた結果、何を得たいのか?」「自慢して称賛をえたいのか」「いや、違う…」といった具合に施策としては腑に落ちての結果の解像度があらかったりします。
Scenario: 自分のしていることを家族に伝える
Given: 妻が普段していることを聞く
And: 自分のしていることで妻が興味がありそう話題がある
When: 妻が興味ありそうな話題を話す
Then: 夫婦でやっていることを話せる関係性を得る
こういった具体にプロジェクトを立ち上げるときに、自分が行う施策について振る舞いを記述し、メンバーと話し合い、修正や合意を得て、実際にやってみた結果と比べ、施策をアップデートすることで探索的活動を進めやすくなるのではないかと考えます。
言語ゲームから始まる振る舞いの一致については奥が深いと思いますし、今回の振る舞いの記述については実践した結果についていつか紹介したいと思います。
以上です。