日本人の並列アーキテクチャ
グローバル化が叫ばれて久しいとはいえ、日本国内で働いている我々ITエンジニアにとっては、まだまだ日本人向けのシステムやサービスを日本人が大多数を占めているプロジェクトの中で構築し、提供することが圧倒的に多いのではないだろうか。
だとしたら、我々は日本人というものをよく知っている必要がある。というわけで、今回は日本人のアーキテクチャ、その中でも特にプロジェクトの進行に影響を及ぼすことの多い並列アーキテクチャについて考えてみよう。
■並列もガラパゴス化?
通常の並列アーキテクチャと違って、日本人の並列とは、いわゆる『横並び』のことだ。つまり「出る杭は打たれる」という平準化アルゴリズムによって常にエラーチェックが行われているのが日本人の並列処理の特徴といえる。したがって、日本人をいくら並列化しても処理速度の向上は期待できない。
言い換えると、ただ単に頭数を増やすだけでは物事は進まないということだ。これは肝に銘じて置こう。たとえば重要な意思決定が繰り返される上流工程において、やたらとヒトを増やしても、コストを喰う割には成果が上がらない、むしろ進みが遅く感じることがある。それは日本人特有の並列アーキテクチャが原因となっているからだ。
ではどうすればいいか。ポイントはタスクを実行する個々のノードの数やスペックではない。それをコントロールするノードがどれだけ高性能かにかかっている。つまり、強力なリーダーの存在が、日本人の処理性能を向上させるのだ。
■デフォルトの通信プロトコルを使うな
もうひとつ、並列処理で注意が必要なものとして、通信プロトコルが挙げられる。
日本人のデフォルトの通信プロトコルは『以心伝心』だ。このプロトコルはコネクションレスでセッションレスで誤り検知機能も持たない。送信したメッセージはすべて送信先に届き、送信しなかったメッセージも送信先が『汲み取る』ことを前提としている。
これは何度も一緒に仕事をしてお互いに強力な信頼関係で結ばれている場合にのみ利用できる。そうでなければ、このデフォルトプロトコルでは、確実にプロジェクトは暴走する。
まずはコネクション(人間関係)をしっかりと確立し、セッションをコントロール(タスクの進捗確認)しながら必要に応じて誤りの訂正を行うといった安全なプロトコルを採用するべきだろう。
このように、日本人のアーキテクチャの中にはプロジェクトの円滑な進行を妨げるものもある。それを理解すると、プロジェクト管理のポイントが見えてくる。
ちなみにこれは日本人に限ったことではない。アメリカ人にはアメリカ人の、中国人には中国人のアーキテクチャというものがある。プロジェクトを円滑に進めたいなら、プロジェクトに参加する各国人のアーキテクチャを理解することから始めよう。
コメント
ardbeg32
そういえばどれだけ難しいプロジェクトでも爆発させずにこなしていた先輩は、自分ではほとんど実務をやっていなかった。たとえどこかのノードが噴火しても、自分で直接手を下さず適切な人間をあてがってコントロール役に徹していた。
コントロールノードの負荷率が高いとろくなことにならないのは機械でも人間でも同じだと感じた瞬間。しかし傍目には「仕事もしないで指示ばっかり」と映らないかとか並列アーキテクチャに負けない自信とポリシーが必要だろう。
しかし直近の問題としては、適切なコマンドをコントロールが発しても、実行ノードが明後日の方向に向かって突っ走り、終了ステータスを正しく返さないこと。出来ていないこと、やってないことぐらいは正しくステータスを返してくれないことにはorz
onoT
仰る通り、傍目にどう映るかを気にするのというのが日本人はDNAレベルで刷り込まれてるんじゃないかと思うくらい強いですよね。
そういう傍目を軽くいなせる人がコントローラとして参加すると、モノゴトは動き出すんですよね。