2008-07-05

ルールを決める権利を放棄する日本人

子供の頃、民主主義とは多数決で物事を決めることだと思っていた。ホームルームの時間に何か決めごとがあると、まず、議長がみんなから意見を聞き意見がが出尽くしたところで多数決を取る。

昔を振り返ると、学校のホームルームでは議論が発熱することはあまりなく、意見を言う生徒も大抵は決まっていた。いつも自分の意見を言わない者もいた。たまに自分が議長になったときなど、なかなか意見がでない状況で誰かを指名して無理矢理意見を言わせるのがイヤでしようがなかった。

「なぜ、最初から多数決を取らないのだろう」と思ったものだ。

ところが最近になって、そうは思わなくなった。何で物事を決める際に議論をしつくさなければいけないのか何となく分かってきたような気がする。

例えば、組込みソフト開発において、プロジェクト内でコーディングルール・コーティングスタイルを決めるというシチュエーションを例に取って考えてみよう。

自分の経験ではプロジェクトに「コーディングルールを決めてください」とお願いすると、サッとできてくるチームとコーディングルール・コーディングスタイルを提示してあげなければいつまでたっても出来てこないチームの二通りがある。

ちなみにサッとできているチームも、必ずしもプロジェクト内で十分にディスカッションしているとは限らない。率先してコーディングルール・コーディングスタイルはこうあるべきと主張する一人のエンジニアの考えを丸呑みしてしまっていることも多い。

これは、ホームルームの時間に議長が意見を求めても、一部の人しか発言しない状況とよく似ている。発言してその案が採用されたときに言い出しっぺとして「自分自身に責任が降りかかってくるのではないか」という恐怖心があるのではないだろうか。

民主主義で物事を決めるということは、参加者が自分の意見を発言するという権利を行使してディスカッションの場に提示し、自分の意見の正当性を主張し、意見が一つにまとまらなかったら多数決で決定するということだと思う。

なぜ、少数意見も含めて議論をし尽くしてから多数決を取らなければいけないかと言えば、議長は会議の参加者が自分の意見を発言するという権利を出来る限り平等に行使できるように気を配らなければいけないからだ。

ようするに少数意見であっても発言させないのはアンフェア-だから、議論をし尽くさないで多数決を取ってはいけないのだ。

でも日本人は「さあ、発言してください」と会議で口火を切ると大抵の場合黙っている。黙っているということは発言できる権利を放棄しているということになる。

発言の権利を放棄してしまったということは、無条件に決めごとに従うと宣言したようなものだ。日本人はこの権利を放棄しているという感覚が分かっていない。

例えば、自分たちでコーディングルールやコーディングスタイルを決められないチームに、ベースとなるコーディングルールやコーディングスタイルを提示すると、いったんはそれに従おうとするが、しばらくしてルールに逸脱する者が現れても、それを注意したり、自分たちで是正しようとしない。ルールからの逸脱を外部の誰かから指摘されない限り、是正しようとしない。

これは日本人の気質だと言ってしまえばひと言で終わってしまうが、民主主義を自分たちで勝ち取った権利であると考える人たちからみればルールを自分たちで決める権利を放棄したのに、指定されたルールに従わない実にアンフェア-な人々に見えるに違いない。

自分たちでルールを決めることに消極的な組織はルールに振り回される傾向がある。ルールを決める際に議論に参加していないため、「そのルールがなぜ決まったのか」、「どうしてそうしなければいけないのか」についての思慮が足りない。だから、ルールを守る方も守らせる方も重箱の隅をつつき合ってはちょっとした逸脱について過敏に反応したりする。

ISO9001の外部監査、内部監査などで是正を食らわないことだけを争点に水掛け論をしている光景を目にすると、品質マネジメントシステムがキチンと機能しているかどうかを確認していることを忘れているのではないかと感じる。

原理原則を理解せずにルールに振り回されている日本の技術者は大勢いいる。このような技術者は他人にバグを見つけてもらっても「ありがとう」とは言わないし思わない。

アメリカ人と日本人』の記事で書いたように、日本人は「あたたかい人間関係の中のやさしい一員」としてものづくりに有利な面を持っていると思う。しかし、「創造性と個性にあふれた強い個人」の人たちとも一緒に仕事をしなければいけないし、「創造性と個性にあふれた強い個人」が作ったルールに従わなければいけない場面も多々ある。

【よくある日本のプロジェクト】
・ルールを自分で決められない(ルールを決める権利を放棄してしまう)
・ルールからの逸脱を是正することができない(自制できない)

なぜ、これがいけないのかといえば、ルールを自分で決められず、ルールからの逸脱を是正することができないプロジェクトや組織は品質の高いソフトウェアをアウトプットできない可能性が高いからだ。30万行を超えるような規模のソフトウェア開発では特にそう思う。

ルールがあっても形骸化する組織やプロジェクトはルールの作成時の議論に積極的参加していない(権利を行使していない)か、ルールの本質を理解していないからだ。

そう考えるとすでに存在するルールをプロジェクトに適用する際には、最初にその本質も含めてプロジェクトに対して最初にキチンと説明してから適用しないとフェアーではないということになる。開発の途中からルールへの遵守を求められたら、それはフェアーではないと主張しなければいけない。

組織はプロジェクトに対してルールを理解させるトレーニングを提供する義務がある。そして、いったんルールの意味を理解したのならば、対象者に資格を与えルールからの逸脱を監視して、場合によっては資格を剥奪しなければならない。

こういうまどろっこしいことを一切省略して、プログラマーの能力を最大限に引き出し、ソフトウェアシステムの完成度を高めるという開発手法もある。優秀なエンジニアの集団にルールを押しつけるよりも、このような方法でプロジェクトのパフォーマンスを上げる方を優先させた方が結果的に品質が上がる場合もある。

しかし、このような技術者個人に依存するやり方では組織は常に一定の水準のソフトウェア品質を担保できるとはいえないし、その組織が品質の高いソフトウェアをアウトプットできることを内外に示すことができない。ルールやプロセスやプロセス内で実施する活動を規定せずにソフトウェア品質を高めるしくみがないとダメだ。でも、人間がキーボードをたたきながらソフトウェアを作っている限り、そんな都合のいい方法はないだろう。

日本人もルールに正面から向き合うくせをつけて、ルールを自分たちで決める権利についてよく考え、頭の中で権利と義務と責任について常日頃整理しておかないと、グローバルマーケットでものづくりはできないと思う。
 

2 件のコメント:

匿名 さんのコメント...

Sakaiさん、日頃、記事を興味深く読ませていただいております。
私は、ソフトウェア設計技術者です。
以下、コメントさせて頂きます。

先ず、多数決による意思決定についてですが、多数派にしても少数派にしても、なぜ賛成なのか(或いは反対なのか)の理由を述べて頂く必要があると思います。その上で、議論を続けて、最終的に現実解を求めることが必要だと思います。満場一致の決定事項は非常にリスクが高いと言われています。なぜならば、①代替案が無い。②盲目的に決まる可能性が高いため完成度が低い。
などが考えられます。
 そこで、議論の場で必要になるのは、問題の理解です。参加者全員に一定レベル以上の問題意識をもって頂く必要があります。議長や議長相当の人は、これを踏まえてから議論に入る必要があると思います。この場合、賛成にしても反対にしても理由がきっとあるはずですし、問題に対する結論(解決方法)も妥当なものになるでしょう。

次に、ルールについてですが、これも先述と同様に、ルールを適用される人々には、問題意識をもって頂く必要があります。ルールの本質、すなわち必要性の背景は何か?を理解していただく必要があると思います。さもないと、誤解のもとにルールを運用したり、軽視されることになるでしょう。
ですので、もしルールを前提とした組織活動が必要な場合は、徹底してルールが必要な背景と目的から教育していく必要があると考えます。また、単にルールというと制限・制約条件(実際にはそうかもしれませんが・・)にきこえるので、ルールを順守することは、自分たちの目的を達成するために必要な条件であることを強調したほうが良いと思います。大変だとは思いますが、場合によっては、問題意識づくりから始める必要があるかもしれません。
 尚、ルール等に対する問題意識の高め方は、その人の経験や考え方、問題に対する造詣の深さ等に依存するので、これらを踏まえて教育を設計してから、根気よく、じっくりとコミュニケーションを行う必要があると思います。この具体的な方法には正解はないので、試行錯誤の連続だと思いますが、Sakaiさんのような方から発信し、問題意識を共有することがポイントであると考えます。

文中、的外れな意見等ありましたら、申し訳ありません。それでは、失礼いたします。


以上

sakai さんのコメント...

コメントありがとうございます。

「ルールの本質、すなわち必要性の背景は何か?を理解することが大事」という点、同感です。

例えば、C言語のソースコードを解析して警告メッセージを出してくれるツールがあります。なかなか有効だと思うし、実際に使っています。

でも、コーディングルール・コーディングスタイルをツールに丸投げし、なぜそのようなルールを推奨するのか考えないプロジェクトでは、大抵、ルールが形骸化します。

本質を考えることをせず、ツールがはき出す警告をすり抜けることばかり考えるようになると、「Aの警告を出ないようにしたら、今度はBの警告が出るようになりました。どうしたらよいでしょう」といったことになります。

「なぜ」を考えていないので際限がありません。

ソフトウェア開発に使用するツールには「体系化した方法論」や「ノウハウ」が組み込まれていることが多いと思いますが、これらを何も考えずに鵜呑みにすると長続きしないことが多いと感じます。

問題意識を持たずに、ツールベンダーが発信する「効果効能」だけ信じてツールを買ってしまう技術者は、ツールベンダーにとって格好のかもであると同時に、高いお金を出して買ってツールが宝の持ち腐れになる可能性が高いと思います。