プロジェクト内外のコミュニケーション

プロジェクト内外のコミュニケーションについては、いろいろと言い尽くされている感があります。

その割には、みんな「まだまだ問題アリ」だと思っていますよね。それがどこのプロジェクトにおいても現実のような気がします。

プロジェクトの反省会をやると、

「コミュニケーションが足りませんでした」

はかならず出てくる反省点の一つです。

—-

当然ですが、ただ指をくわえてみているだけではなくて、プロジェクトマネージャやプロジェクトリーダーたちは様々な手法をこらします。

例えば、オフショア開発の場合には、そこを強化するための「ブリッジSE」がいるのが普通で、彼らの出来がプロジェクトの行く末を大きく左右します。これもコミュニケーションをうまく通すための一つの方法です。

また、マーチン・ファウラーアジャイルソフトウェアプロセスを使ってオフショア開発なんかで書いているような、

「情報共有にwikiを利用しなさい」

なんていうのも、コミュニケーションを補うひとつの方法です。

オフショア開発でなくてもコミュニケーションはとても重要で、これができていないチームにかかると、

「結合してみたら動かない」

なんていういのはまだかわいいほうで、

「どうしてこんなにとんちんかんなソフトウェアを作っちゃうの?」

とか、

「もう引き返せないんだけど、どうするの?」

というような、「後の祭り状態」になるなど、本当に大変な目にあいます。

—-

こういう失敗の一つの理由として、

「前提となる用語定義が、あいまいだったり不足したりしているために起こる、コミュニケーションのズレ」

が挙げられます。

こういうことに対する処方箋が、DomainDrivenDesignの「Ubiquitous Language(ユビキタス言語)パターン」です。

DDD難民に捧げる Domain-Driven Designのエッセンスでは、このように要約されています。

● Ubiquitous Language(ユビキタス言語)パターン

ドメインを正しく捉えた柔軟で価値の高いソフトウェアを設計するには、チームの共通言語を創造しなければならない。共通言語はユーザ、ドメインの専門家から、設計者、プログラマまで、分析/設計モデルからプログラムコードに至るまで、プロジェクトのすべての関係者、成果物に行き渡っていて、同じ意味で理解されるようなユビキタス(遍在的)な言語である。ドメインモデルがユビキタス言語となるようにし、ドメインモデルを介してプロジェクトが一体となるようにする。

よく世間でいう「ユビキタス」は、世の中で「意識しないうちにそこにあって、それを利用できる状態」を言います。

DDDでいう「ユビキタス言語」は、様々なドメインについての理解がチーム内外にいきわたることを指しています。そして、それをコミュニケーションの前提とすることで、コミュニケーションが楽に深まり、プロジェクトに一体感をもたらします。

—-

とはいうものの、こういうことは、相当意識して行わないとなかなか行えるものではありません。実際には、「プロジェクトを継続していくつかやっていくうちに、ようやくできてくる」といった感じが普通ではないでしょうか。

また、それだけ時間がかかっているからこそ、今まで作り上げた「ユビキタス言語」を理解して分かってくれる開発プロジェクトにはまた次の依頼がくる、という図式になっていきます。

実はここをうまくショートカットして構築できると、少ない時間で長い間慣れ親しんだようなチームができあがる(はず)だと考えています。

このあたりも、system-enablersの課題として考えていくつもりです。

業務終了?

今日で本年度も業務終了?といいたいところですが、システム屋さんはそうはいきません。

盆暮れにしかできない仕事というものがあります。

たとえば、「システムを停止してのメンテナンス」といったことが挙げられます。

セキュリティパッチやごみ掃除、そんなものを人が使わない時にやらなければいけないんですよね。。。

私も明日はメンテナンスを予定しています。

#結構、盛りだくさんな内容でお届けしてたりします。自分で内容決めているんですけどね。

#まあ、しかたないですね。。明日がんばりましょう。

Webミーティングは使えるか?

正直なところ、私はWebミーティングは実際には使えないと思っていました。

ミーティングって、ビデオチャットで話すだけで成立するものなんだっけ?と思っていました。

また、そんなものにお金を払ってまで利用して、ミーティングを「やった気になる」のもどうかと思っていました。

そういえば、私が回線を使って、遠隔地同士でミーティングをしたのは、ずいぶん前の話。

当時は、そんな芸当ができるのは、回線を独占していた某通信会社ぐらいじゃないか?という時代でした。

(光の1Mの専用回線がものすごく高かった時代です。)

スクリーンにはホワイトボードが一面に映し出され、マーカーでいろいろと書きながらディスカッションしたことを思い出します。

(イメージ的には、フジテレビで朝早くからやっている、「テレビ寺子屋」みたいな感じです。)

そう、遠隔地同士でミーティングを成立させるには、このように画面上に映し出されるホワイトボードのような、

参照している画面で情報をリアルタイムで共有しながら進行する仕掛けが不可欠なんです。

ウェブカメラに映し出される情報だけでは、そんなことできないよねえ?(そいつの顔が見えるだけだよねえ?)

というのがWebミーティングが成立しないと思う一番大きな理由でした。

ところが、今現在私たちのプロジェクトでは、週一回Webミーティングを行っています。

いまどきのWebミーティングは本当にうまくできていて、

  • ホワイトボード
  • ウェブページ
  • パワーポイントのプレゼンテーション
  • デスクトップの表示そのもの

を共有し、プレゼンターがそれを基に説明しながら進むことができます。

例えば、レジュメや設計資料を共有しながら会話することで、お互いの行き違いをなくすことができます。

こういうことが可能になるなら、Webミーティングも有用なものだと確信しました。

今利用しているサービスは、DimDimという、なんと無料のWeb会議サービスです。

海外のサービスなので、操作表示などは英語ですが、チャットで日本語も使えます。(少しコツがいりますが)

また、各種の共有アプリケーションは日本語でもまったく問題ありません。

普通の日本人のエンジニアレベルの英語力で十分会議を開催したり、参加したりすることができます。

(日本で使っている人は私たちのほかにどのくらいいるんだろう。。。)

ついでにいうと、無料でサービスしているエントリーモデルは、オープンソースで公開されています。

ウェブページにあるドキュメントを読めばわかりますが、例えば、VPN内に自前で建てることも可能そうです。

みなさんもヘッドセット等を用意して、Web会議を活用してみませんか?