2007年9月30日

新社会人にあなたならまず何を教えるか? -9- Automation の評価

前回 「自動化を考える場合、もう1つ、評価軸があります」 と述べました。
この軸とは「Automationを使って効率が上がるのか?」という評価軸です。
せっかく色々考えて Automation を実施しても、効率が上がらないのでは意味がありませんから。

Automation …特に「補助頭脳型」の場合、次の5つのような効率化が考えられます。

  1. 実行時間の短縮
    計算機化において特に顕著なのがこれです。紙とソロバンで計算するのに比べて、何億倍も速く計算できるコンピューターは実行時間の短縮と言う意味では圧倒的なパワーを持っています。
    実行時間が圧倒的に短縮されると、機械を動かすための出費が多少高くてもコスト対効果的には十分…などの補助的な側面も出てきます。

  2. 人間が関与する時間の短縮 / 省力化
    洗濯機が良い例です。洗濯において人間が関与する時間が減り、洗濯のために必要な体力も減りました。また、それに伴い、洗濯ができる人も体力に溢れた人だけではなくなりました

  3. 人間が関与するタイミングの集中
    自動洗濯機や自動炊飯器、自動皿洗い機などの例は、全て機械が処理をしている間、人間は自由です。つまり、補助頭脳が A という仕事をやっている間、あなたは B という仕事をすることができるわけです(もちろん、休むこともできます。つまりあなたが就寝中に自動的に処理が進むようにすることも出来るわけです)。
    これは1つ重要なポイントを示しています。
    よく、RedHat Enterprise Linux などが 4枚とか5枚とかの CD で供給されますが、これを1枚のDVDにまとめる、という技があります。あるいはインターネット経由でインストールする、という手段も提供されています。これらは、最初にインストール設定を行ったら、インストール作業の最中に
    「CD を入れ替える」
    という作業のために人間が関与し続けなくてはいけなくなるのを解除するための技です。別の言い方をすると、CD-ROM を DVD-R に焼きかえる、というのも Automation の一種なのです。
  4. 並列処理を可能にする / 複数人数での処理を可能にする
    ちょっとだけすでに言及しましたが、自動化は「なにをするのか全部教えてある」必要があります。つまり「なにをするのか全部教えられるぐらい明確になっている」ワケです。
    と言う事は、同じようなことを複数回行う必要がある場合…たとえば、あなたが会計事務所をやっていて、複数のお客様が一斉に税金申告のための書類作成を依頼してきた場合、何をどの順で処理すればいいのかを明確にしてあれば、アシスタントを使って作業を複数人で並行して行うことが出来るようになるわけです。

  5. 手順を明確にし、それを教えることができる
    何を、どの順で、どう処理していけばいいのか教えることが出来ると言う事は、それらをきちんと伝えて、理解してもらった後であれば、その背景にある理屈なども教えるための素地が出来上がっているわけです。
    つまり、Automation化のための努力は、全てノウハウを伝授する際にも使えるわけです。これはさらに、Automation化の背景にある概念や応用に関しても気がついてもらうための重要なきっかけにもなります。
見ての通り、この5つは相反するわけではありませんが、必ずしも全部を満たせるとは限りません。その事を念頭に置いた上で、これら5つの基準に立った場合 Automation 化がどれほどの効率の改善をもたらすか、考えなくてはいけません。

特に見落とされがちなのは 5 です。「知の形式知化」と「知の伝達」のためには Automation 化がとても重要なのです。そしてそれ自体が、自分以外の人に作業をしてもらう、あるいは機械に作業を置き換える場合に非常に重要な能力になります。一旦形式知化したら、あとはそれを誰に伝えるのか…は Customer Satisfaction の所で述べた Translate/Transfer 能力の問題になります。


Automation は 1,2,3 の性質から、あなたに「時間」をもたらしてくれます。

あなたが仕事をしなくても、成果が出る、
それが Automation の本質です。

Automation だけがあなたに時間をもたらしてくれます。そうして出来た時間を使って、CS で述べた Technology, Transfer/Translate, Focus に関して学習を進めることで、あなたがいままで行ってきた作業の一部をさらに Automation 化することが出来るようになり、さらに時間を得られるようになります。それらの時間を使って、顧客を増やすもよし、別のジャンルにも進出するもよし…。

逆に Automation を意識しないと、手持ちの知識と手作業だけで仕事を繰り返すことになります。時間に余裕はなくなり、常に時間に追い立てられ続ける羽目に陥ります。当然、疲れてきますから、誤りが多くなり手戻りが増え、それらがさらにあなたの時間を圧迫します。睡眠時間を削れば当然それに伴って気づき力、判断力なども劣化。ますます時間が減ってしまいます。
手持ちの知識は徐々に古くなり、周りの人達は Automation 化の恩恵を受ける中、あなたはそれを使いこなすことも出来なくなり…。悪循環が発生します。



私が新人に Automation という概念を教えるのは、それ無しでは学習のための時間が取れなくなるからです。新人の極初期の段階では、研修などを行いますが、これは通り一遍で、現場で必要な知識ではありません。OJT は良い先輩につけばいいのですが、大抵の人は知識に偏りと誤りがあり、それを鵜呑みにするのは危険です。また、OJT で身につく知識の大半は枝葉末節なモノで、10年後にも使えるようなものは極わずかしかありません。

入社後、何年たっても新しいことを吸収できるためには、そのための精神的ゆとりと休息時間が必要です。人間の脳みそはある種のデータ圧縮装置なので、ゆとりがあればあるほど…正確には脳が「ゆとりがあることを知っていれば知っているほど」…本質だけを取り出して記憶する能力があります。しかし、社会人になって以来、「最も暇なのは新人の時」です。それ以降は徐々に忙しくなっていくばかり。そのような状態でも新しいことを学習できるようにするためには、最初の段階で Automation の概念を覚え、自分で出来る範囲から自動化していく事を常に意識し続ける事がどうしても必要になります。

2007年9月29日

新社会人にあなたならまず何を教えるか? -8- Automation の種類 - 補助頭脳型

文具型とは「あなたが手を止めると、ソフトも仕事を止めてしまいます」と書きました。なら補助頭脳型の定義は簡単。

「あなたが手を止めても、ソフトは仕事を続けます」

猫でも杓子でも判る訳ですが、同時に普通、自動化と言ったらこちらを指すわけで…。同時にどうしてそんな事になるのか、その理由も簡単。

「最初になにをするのか全部教えてあるから」

全自動炊飯器、全自動洗濯機のようにプログラムされている場合もあれば(立ち上がりの際に、人間がメニューから何をどうする、と言うのを選んでいると言うのもありますし)、バッチ処理のように実行前にプログラムを1から組み立てる必要があるものもあるでしょう。でも、重要なのはシステムが動き始めたときには、よほどの例外条件を除いてどういう場合はどうする、というのを教えてある、と言う事です。

なので、どうしてそんな手品のような事ができるのか、という所から説明したりはしません。同時にこれが「よほどの例外条件」の場合は途中で止まったり人手を必要としたりするけれど、以下の議論ではそういう「例外」は起こらなかったケースについてだけ述べる、という点についても承知しておいてください。


あ、あともう1点。

「補助頭脳型」をなぜ「補助頭脳型」と呼ぶのかと言うと、まさにあなたという名の主頭脳が付き合ってなくても処理が進むからです。ですので、補助頭脳は計算機かもしれませんが、あなたの代わりに仕事をしてくれるかもしれません。補助頭脳は機械である必要はないのです。この点を留意して置いてください。


さて。

補助頭脳型の自動化にはいくつかパターンがあります。理論上は5つあります。
  1. 完全全自動
    あなたは全く関与する必要はありません。何から何まで全て、自動で行われます。

  2. 開始時点必須型
    処理を開始するときに、絶対にあなたはいなくてはいけません。つまり、何かを始めるときにあなたがいないと、全くスタートしないわけです。

  3. 終了時点必須型
    処理を終了するときに、あなたが絶対いなくてはいけません。つまり、自動で出来る処理が終わった時にあなたが側にいてすぐさま出来たものを次の処理に運ばなくてはいけません。多くの場合、できたものに「鮮度」がある時にこうなりますが、他にも自動車工場のように出来てくる物が大きくて貯蔵スペースが足りないときもこうなります。

  4. 両端必須型
    2, 3の両方を兼ねそろえているタイプです。あなたがいないと作業は開始しないし、終わるときもあなたは必要です。ただ、途中はいなくなっても構いません。

  5. 中途処理型
    2,3,4 は始まりや終わりに人手が必要でした。このパターンは「作業の真ん中で」あなたの人手を必要とします。
1 の「完全全自動」は実現できたらとてもうれしいのですが、現実問題としては実装できません。理由はちょっと考えると簡単です。たとえば自動車工場を考えてください。完全全自動の自動車工場を作れたとしましょう。でも、その工場には自動車を作るための材料を与えなくてはいけません。工場から出てきた自動車をお客様の下に運ぶ必要もあります。どちらも
工場自身には出来ない仕事です

つまり、現在の所、どうしたってあなたの人手はどこかで必要なのです。

「じゃぁ、2,3,4,5 だって同じじゃないか」

その通り。「あなたの手を煩わせる」という観点だけでものを言えば、全ての自動化は 4 のパターンが縦に一杯並んでいるものになってしまいます。ですので、上の説明をよく読んでください。これらの自動化は「あなたを煩わせるかどうか」ではなく
あなたを煩わせるタイミングが固定かどうか
で分類されているのです。


文具型と 2,4 の違いは「洗濯機の進化」で説明するのがわかりやすいと思います。

昔々、洗濯板といわれる、もはや女の子をからかう以外使われなくなった(そして、からかう側もからかわれる側も、現物を見た事などほぼ確実にない) 板を使って洗濯は行われていました。これはまさに文具型。洗濯板は汚れを落とす効率を上げてはくれましたが、あなたが手を止めれば汚れは落ちません。

話を簡単にするために、ある分量を洗濯するには 1時間かかったとしましょう。


ここに、画期的な製品が現れました。「洗濯機」です。
洗濯機は洗い物を入れ、水を張り、洗剤を入れると、『洗う』という作業を自動的にやってくれました。5分から10分ぐらいの時間、あなたは洗濯から開放されると同時に、ハードワークからも開放されました。その後、洗い物を取り出して手で絞ります。排水し、水を入れなおして今度はすすぎです。洗い物を入れて、また 5分から10分…あなたはすすぎの間の時間洗濯から開放されます。もちろん、ハードワークからも。そして洗い物をまた取り出して手で絞り…干しに行くわけです。

見ての通り、これは典型的な 4 のパターンです。
同じ分量を洗濯しているとして、上記の通りだとすると、20分 + 絞り…そうですね10分としましょうか…かかります。色物と、それ以外を分けているとすると、合計60分でこれは変わりません。しかし、内、40分の作業は機械がやってくれます。40分分のハードワークからの開放と、その40分間別のことが出来る(1度には10分しか空いていないため、それで終わることしか出来ませんが)事になります。


その後現れた「二槽式洗濯機」は、「絞り」も自動的にやってくれます。しかも「洗っている最中」に「絞る」ことができるのです。つまり
  1. 色物洗い
  2. その他洗い, 色物絞り
  3. 色物すすぎ、その他洗い
  4. その他すすぎ、色物絞り
  5. その他絞り、色物干し
  6. その他干し
のように洗いと絞りを並列処理する事が出来るようになりました。見ての通り、結果として処理時間が10分短くなり、絞るという重労働からも開放されています。しかし、相変わらず10分ごとに洗濯機の相手をしなくてはいけない事に変わりはありません。


「全自動洗濯機」。いまどきの洗濯機の大半はこれですが、これの最大のポイントは、
洗いとすすぎと絞りを全部やってくれる
事です。30-40分間、洗濯機の相手を全くしなくても良い。長い連続した時間、選択から開放されるわけですから、掃除だろうが皿洗いだろうが、何か集中した事ができます。ただし、色物とそれ以外に分けると、合計で 60-80分洗濯にかかるわけですから、「洗濯そのものにかかる時間」は伸びています。延びていますが、人間が関与しなくてはいけない時間が1箇所にまとまったため、時間を有意義に使いやすくなったのです。

しかし、全自動洗濯機も 4 のパターンです。洗濯機をスタートさせる際には、洗濯コースを選び、洗い物を放り込み、洗剤等をいれ、Go! を押す必要があります。洗い終わったらとっとと洗濯機から取り出して干さないと、洗濯物は腐ります。このため、洗濯を開始したら、終わりのタイミングであなたはまだ洗濯機の相手をしなくてはならず、そのタイミングをずらす事はできないのです。


しかし。ここに。とうとう文明の利器が。現在における洗濯機のファイナルバージョン。
乾燥機能付き、全自動洗濯機
の登場です。実はこいつは 2 のパターンなのです。洗濯を開始するために必要な人手は今迄で最大です。乾燥モードまで走らせると…特に私が持っている洗濯機が初期型だからかもしれませんが…5時間近くもかかります。しかし、
乾燥し終わった洗濯物は腐らないのです。
洗濯機を使わないのであれば、何ヶ月放置しても大丈夫。この意味において、洗濯の処理が終わった際に、そのタイミングで、あなたは必要とはされないのです。

実際、私が良くやるのは、海外出張の直前に洗濯機を動かして出発する事です。1週間後なのか、1ヵ月後なのかはともかく、それまで洗濯物は洗濯機の中です。全自動洗濯機までの洗濯機であれば、どのやり方でも確実に洗濯物は腐ったでしょう。しかし、乾燥まで済ませてくれる事で、洗濯物は「私が出張から帰ってくるまで待っててくれる」ようになったわけです。


3のパターンは…どちらかというと、「障害対策」などでよくあるパターンです。ちょっと家電における良い例が思い浮かびません。

サーバなどの計算機は、必ず「バックアップ機」が用意されています。サービスをしてくれている機械にトラブルがあった場合、自動的にそれを検出する機構が用意されていて、自動的にバックアップ機に切り替わります。これによってサービスが止まってしまう時間を0…あるいはものすごく小さくする事ができます。

しかし、壊れた機器をそのまま放置する事はできません。壊れていないものと置き換え、新しくすえつけたものをバックアップとして登録しなくてはいけません。つまり、障害が起こってからすぐは自動的に処理してくれますが、最後のお片づけは人間がやらなくてはいけないのです。

この方式の良い所は、「お片づけのタイミングを少しだけ後ろにずらせる」事です。夜中の3時に機械が壊れて、バックアップがなければサービスはそのままとまってしまいますから、人間は夜中の3時に叩き起こされ、対処をする羽目になります。このバックアップ機のお陰で、朝の9時に出社したら機械が
「直せーーー、俺は壊れたーーー、直せーーーー」
と叫んでいるのを目にしてから対処しても間に合うわけです。

しかし、あまり長い事放置は出来ません。予備は使い尽くしたのですから、次に故障したらもう終わりです。そうなる前に「予備」を準備してあげなくてはいけません。洗濯機の例で、洗濯物が「腐る」のと同じ事です。その意味で、いつ人間が関与するのか、そのタイミングは 2 のケースほど自在にはなりません。


最後に 5 のケースですが…これの最も判りやすいのは「スチャラカ上司」ですね。

あなたが仕事上何かを購入しなくてはいけないとします。どのメーカーの何を買うのかは決めました。でも、即、注文と言うわけには行きません。偉い人が「その経費を出すよ」と、物品購入書にサインをするなり、判子を押すなりしなくてはいけないわけです。
その人が判子を押したら後はまた、あなたの仕事。購買部に発注を掛けるなり、自分で発注するなりして、受け取って、設置して、それを使えるようにして、実際に使って成果を出して…

スチャラカ上司の立場に立って考えると、これは 5 のケース、つまり「真ん中であなたがサインしないと仕事が進まない」ケースになっている事に気がつくと思います。

実際に 5 のケースになるのは、自動化しているはずのシステムがちゃんと動いているかどうか確認するため、である事が多いようです。おカーちゃんが、子供がちゃんと勉強しているか、監視するのと同じですね。



今回は、『補助頭脳型』の定義と、その自動化の種類について述べました。現実に存在しえるのは:
開始時点必須型、終了時点必須型、両端必須型、中途処理型
の4種類である事と、それぞれが「あなたが拘束される時間が決まっているかどうか」で決まる事、などを説明しました。

実は、自動化を考える場合、もう1つ、評価軸があります。文具型の場合はあまり気にする必要はないのですが、補助頭脳型の場合は特に注意が必要な、もう1つの評価軸について、次回は説明しましょう。

2007年9月23日

新社会人にあなたならまず何を教えるか? -7- Automation の種類 - 文具型

Automation にはいくつかの種類があります。あるものは簡単ですし、あるものは実装が難しい。あるものは効果が絶大ですし、あるものは効果があまりありません。そして何よりも 何を自動化するのか で効能が変化します。

そこで、まずは Automation の種類を見てみましょう。ここではイメージしやすいように、例として電化製品やソフトを例に挙げてみたいと思います。ただし、分類方法は定番の方式をちょっとはずして、私の方法で行ってみたいと思います。

まず、Automationは大きく「文具型」と「補助頭脳型」に分かれます。


文具型というのは…大抵のPCのソフトがそうですね。特に Office Suite と呼ばれる類のソフトは完全に「文具型」です。あなたが手を動かしている間は動作してくれます。あなたが手を止めると、ソフトも仕事を止めてしまいます。鉛筆などと同じ性質を持つわけです。

たとえば、MS-Office のソフトで英語を打つと、1 word 打つたびにスペルミスをチェックして自動的に直してくれます。たまに固有名詞を直してくれて、えらい迷惑だったりしますが。これが文具型 Automation です。技術的には on demand 型と呼ばれるものの大半がこれに当たります。

文具型は「ミスの低減」を目的とする場合に効果があります。スペルミス、あいまいな文章の発見、計算の不一致など、その場で発見すればワケも無く直せるが、後で間違いがあると言われるとどこが間違っているのか全体から見つけ出すのにすごく苦労する種類の間違い をその場で直すのに効果があるわけです。機械の場合ですと、プログラミング環境を統合環境にすると typo を見つけてくれたりするエディターがついてきますが、あれなんかも良い例です。

文具型の Automation について、人間の場合の例ですと…そうだな。マクドナルドなどで、高額紙幣を出すと
「1万円、入りまーす」とか
「8千円、確認お願いしまーす」とか
レジを打つオネーチャンが、他の人にチェックしてもらっているシーンが良くあると思います。あれなんかが、文具型 Automation に近いと言えます。
他には、プログラミングスタイルの一種にペアプログラミングと言うのがありますが、あれも文具型 Automation の一種でしょう。プログラマがペアを組む事で、相互に間違いをチェックし合い、単純な打ち間違いからロジックの間違いに至るまで、様々なヒューマンエラーを減らしていこう、と言うわけです。

しかし、文具型 Automation はやはり、機械に任せた場合圧倒的な効果をもたらすようです。レジスターの中にはおつりを自動的に必要なコインとお札で出してくれるものがありますが、あれですとヒューマンエラーはなくなります。機械の間違いはもちろん発生しますが、一般的に機械がお札やコインを数え間違える確率は、人間が間違える確率の何千分の一、という値です。
逆に言うと、機械に任せてもあまり効果が無い場合、文具型 Automation には向いていない、と言えるかもしれません。


文具型 Automation …というよりこれは on demand 全般に言えることですが… には、1つ大きな弱点があります。即時性が求められるのです。

「8千円、確認お願いしまーす」
と言われて、3時間後に
「さっきの8千円、1万3千円だったわよ」
と指摘されても困るわけです。その場で言ってもらわなくては。

従って、文具型 Automation は複雑な、難しい処理はほとんど出来ません。チェックにかかる時間がほとんど一定で済むような処理…俗に「計算量 O(1)」と言われる類の処理しか出来ないのです。たとえば、先ほどのお札の確認でも、
「千円札で8億円、確認お願いしまーす」
などと言われる事の無いファーストフード店では、手の空いている人を捕まえてチェックしてもらう程度の事しかしません。5千円札、千円札をふんだんに用意する事で、最大でも5枚までしかお札をチェックしなくて良いようにすれば、チェックにかかる時間はほんの数秒で済みます。

しかし、銀行では「千円札で8億円」というケースは無いとはいえません。いや、8億円は無いかもしれませんが、もう少し少額なら店舗が連休のおつり用にと、枚数を多い目に引き出そうとする事は大いにありえますし、逆に一日の売り上げを預ける場合、必要以上に小銭が多くなる事も十分ありえるわけです。
この場合、ちょっと手の空いている人を捕まえる、という方法は危険です。実質お札(やコイン) の枚数に比例して確認にかかる時間は増えるからです。ちょっとトイレに行きたいから…と交代してもらった人をとっ捕まえて80万枚もの千円札を数えさせたら…間違いも増えるでしょうし、そもそもお漏らしをしてしまいます :p

このように、文具型 Automation は適用できる範囲が狭いのですが、その範囲内であれば効果は絶大です。このため、誤り訂正(間違いを見つけて、指摘するあるいは即効で直す)ものには良く使われます。もちろん、訂正率は 100% ではありませんが、そもそもやらなければもっと間違えていたのです。やればやるだけ得、と言う事ができます。


誤り訂正を使って間違える確率を減らすやり方は、より大きな目で見た場合デバッグサイクルを廻す頻度を下げる効果があります。俗に「手戻り」と言われる奴ですね。
「手戻り」の発生は、お客様の信頼を低減させますし、たいていの場合1ターンが結構長い。このため、お客様を待たせる事にもなります。さらに信頼を低減させているため、「次」のチャレンジの際に「重箱の隅までチェックされ」てさらに手戻りを発生させる、という悪循環へと繋がりかねません。もっと言えば、人間は手戻りを食らって何度も同じ事をやり直すと、疲れてきて間違えやすくなると言うおまけまでつきます。

従って、可能な限り誤り訂正が使える所では、使ったほうが良いのです。
実際、これから説明する「補助頭脳型 Automation」を人間に適応する場合、各人が行う処理は可能な限り文具型 Automation による補助と誤り訂正と組み合わせるのが効果的です。


さて、補助頭脳型 Automation ですが…これ以降は次回といたしましょう。

2007年9月22日

新社会人にあなたならまず何を教えるか? -6- AT

AT: Automation … 自動化

普通、自動化と言うと
  • 機械が
  • 最初から最後まで
というイメージがあるけれど、ここで言う自動化はもう少し幅が広くて
  • 機械でも、人でも、猿でも何でも、
  • 一部分しか自動でなくてもよい
というイメージです。中にはこれを しくみ化 と呼ぶ人もいます。ただ、しくみ化はこれはこれでなんか条件が狭いイメージがある(機械というよりは人間がやるとか、最初から最後までは変わらない、とか)ので、私はわざと Automation と言っています。


さて…
Customer Satisfaction の所で、お客様を満足させるのがまず大事だと言いました。とはいえ、あるお客様を満足させるのに 100 の力を投入したら、他の事が何もできなくなります。この他の事の中には
  • 他のお客様を満足させる
  • 自分がやりたい事をやる
  • 家族を満足させる
などが含まれます。ですので、なるべくお客様の満足度が下がらない範囲で、100投入していた力を 95 でも90でもいいから、減らす努力をしなくてはいけません。

自分の力を投入せずに、お客様に提供するものの量・質共に下げないためにはどうすればいいか…他者の力を借りればいいのです。自分が 10 力をセーブして、他者の力を20借りたら同じ品質になる、というのであれば、他者から 20、力を借りればいい。

ただし、お金を借りる場合と違って「他者から力を借りる」のは
「貸して」
「ほいよ」
とは行きません。『何をすればいいのか』『何に対してすればいいのか』『いつすればいいのか』などをはっきりさせなくてはいけません。これらの準備が出来て初めて、他者の力を借りる事ができるのです。

また、他者の力を 20 借りて自分の 10 に充当させる、という例を上で挙げましたが、本当は他人から力を借りたら、何かの時にはその分お返しをするべきです。となると、借りた力もなるべく効率的であるほうが良い。20借りて 10に充当させるよりは、15を借りて10に充当させるほうが良い。

運がよい事に、人間には得手・不得手と言うものがあります。あなたにとって 10 の仕事が、他人にとっては 5 ぐらいで済む仕事かもしれない。そしてあなたも、その人にとって 10 かかる仕事を 5 でこなせるかもしれない。互いに準備を整えるのに 1 づつ力が必要だったとしても、互いに助け合うなら、お互いのお客様の満足度は変わらないまま 96 づつで仕事がこなせる事になります。


というわけで、Automation を考えるにはどのような点を注意・注視するべきか、を述べていく事にしましょう。

2007年9月16日

新社会人にあなたならまず何を教えるか? -5- CS: Focus

こんなシーンをちょっと想像して欲しい。


あなたは吉兆の京都本店にいるとしよう。嵐山にある、あれだ。
あなたはそこでご飯を食べている。もちろん、辺りは…ではなく一色だ。

そこに、サプライズが発生する。KISS の生コンサートだ。そう、ニューヨーク出身のハード・ヘヴィーメタルバンドだ。メンバーがそろそろ全員いい歳だ、というのはちょっと無視しよう。

場所は嵐山。景観は最高だ。
食事は吉兆。食材も、加工技術も超一流と言っていいだろう。
そしてBGMは KISS。ヘヴィーメタルの最高峰…かどうかは異論があるかもしれないが、ちょっとここは最高峰だってことにしておいてくれ。必要なら、自分が最も好きなバンドに差し替えてくれて構わない。

今までの説明の通りだと、それぞれの Technology は最高だ。それを伝えるための技術も最高だろう。

で、あなた、そう、客であるあなたは幸せだろうか?


決して幸せではないはずだ。なぜなら、吉兆でご飯を食べるという段階で、ヘヴィメタを聴くような心境ではないはずだから。あるいはヘヴィメタを聴く心境だった場合、嵐山はただの交通の便が悪いド田舎だし、吉兆のご飯も肩肘が張っているだけで値段に対して味は大して…という心境のはずだ(吉兆の味がどうこう、という意味ではなく、受け入れるような心境には無い、という意味において)。

もし、これがサプライズではなく、最初からそのように予定されており、お客様にそのように伝えられていて、それでこそ良い、というお客様だけが集まったのであれば、これは単に異色の取り合わせでよかったのかもしれない。しかし、サプライズの場合、そこに集まっているお客様は嵐山の景観と吉兆のご飯を、静かな環境で食べたいと思っているのであって、間違ってもヘヴィメタを聴きながらとは思っていないはずだ。


これが Focus だ。


お客様と言うのは、自分が着目しているポイントに関しての Technology を重視し、それに関する説明を熱心に聴く。それ以外のものについては興味は無いのだ。

ある程度までは無視してくれるかもしれないが、邪魔なものがあるという意味においてプラスには取ってもらえない。限界を超えると、もはやマイナスのスコアをつけられてしまう。
「そんな余計なものをつける余力があるなら、
もっと値段を下げるか、
もっと本筋にリソースを集中投下しろっ!!!」
というわけだ。


お客様の Focus から外れた仕事はいかに優れていようとも、いかに説得力に満ち溢れていようとも、評価はしてもらえない。限界を超えて外れているとマイナスの評価さえ受ける。

そう。Technology も Transform/Translate も 0.0 から 1.0 の値をとっていたのに対し、Focus だけは、-1.0 から 1.0 の間の値を取るのだ。そして、お客様が「欲しくない」物について高度な技術が投入され、それがお客様に見える形で提示されると…お客様は激怒する。

なぜかというと、お客様はお金を払っているからだ。そして、その対価として
自分にとって重要なポイントに Focus があたった製品(なりサービスなり)
が欲しいと思っているからだ。自分にとって重要ではないポイントに、投資したお金を使われると、無駄遣いされた、と感じるのは当然だ。この場合、お客様が良く判る形で、無駄遣いされたような印象を与えると、より多くのリソースを無駄遣いされたと感じるようになるので、0.0 ではなく -1.0 の評価を得てしまうわけだ。


新入社員にやらせる仕事の多くは、先輩社員がすでに Focus の調整は済ませてくれているものだ。やるべき仕事のテーマははっきりしており、その内容はすでにお客様の満足度を満たすように調整されている。従って、新入社員の場合、この点を心配する必要は無い。

ただ、新人の段階で Focus の事を十分理解していないと、後で酷い目にもあうし、ひどい迷惑を回りに掛けることにもなる。


Focus が甘いケースと言うのは面白いことに2種類ある。本来あるべき焦点より手前に Focus があたっている場合と、奥にあたっている場合があるのだ。



本来より手前に来てしまった例で私が経験したのは次のようなものだ。

あるプロジェクトが納期を過ぎても完成しなかった。3ヶ月締め切りを延ばしてもらい、新規投入されたマンパワーの一方が私だった。このプロジェクトは Web プログラムを作るプロジェクトだったので、プログラム自体のアイコンが必要になった。で、プロジェクトリーダーはそれを数日掛けて作った。

アイコンの品質は実に素人くさいもので、今回のプロジェクトには丁度良い…つまりどう見ても1-2時間しか掛けていないように見えるものだった。ので、お客様の感想は文字通り
「素人臭い」
だった。これはとても良い兆候だった。プロジェクトは納期を過ぎており、1秒でも早く作れるならば、そのための努力を怠るわけには行かず、無駄なリソースを使っていないように見せる必要があったからだ。しかし、プロジェクトリーダーはそう取らなかった。お客様の満足度を向上させねばならぬ、と思ったのだろう。


リーダーは数日徹夜して、はるかに素晴しいものを作り上げてきた。当然、お客様は激怒した。
素晴しいアイコンを作ったから
お客様は激怒したのだ。そんな所にマンパワーを投入している暇があったら、ドキュメントを1文字でも多く書くべきなのに、ドットをいじっているとは何事か、と言うわけだ。


これは、リーダーがプロジェクトの本質を正しく理解しなかった好例だ。締め切りを過ぎているのだから、アイコンなど「◎」だって良かったはずなのだ。しかし、お客様にとって必要かどうかを熟慮せず、自分の趣味に走った。これは典型的な焦点がお客様よりも自分側にいる例だ。



もう一つは、焦点が逆…つまりお客様のさらに奥に行った例だ。

ある会社がコンサルタントを要求してきた。仮想化技術の将来について現状を評価し、未来を予測して欲しい、というものだった。

このお客様は、仮想化技術を「過去に作ったプログラムを、バイナリレベルで変更せずにいつまで使い続けることが出来るか」という視点に基づいた仮想化技術の評価が欲しいのだ、と言った。プロジェクトリーダーがそれをちゃんと把握できたのかどうかはともかく…調査員はこのことを理解しなかった。

調査員は非常に優秀で、現在ある仮想化技術について、1から100まで調べ上げた。その内容は実に見事なものだった。そして、それをそのまま…つまり「今すでに存在するバイナリを、変更せずに使い続けるための道具としての仮想化」という視点に基づいたフィルタリングをせずに、お客様に提示してしまった。

当然、お客様は混乱する。100 もの情報を与えられ、それを全部噛み砕いて飲み込まないと、その情報の中でどれが自分たちの目的に合った情報なのかわからなかったからだ。そもそも、そんな把握が軽々と出来るならコンサルタントになど雇わない。確かに、与えられた情報は「後で」必要になるかもしれないが、とりあえずは不要なものだ。そのような情報は「削っておいて」欲しかったはずだ。

ちなみにこのリーダーはいまだに何が悪かったのか判っていないらしい…

これはお客様の「先」を「見据えすぎた」例だ。どの情報が必要になるか判らないので、お客様のために「全てを」与えた。結果としてお客様の受容容量を超え、お客様の満足度を下げてしまったわけだ。


ついでだから言っておこう。このお客様が望むような仮想化技術は、ない。

ゲームソフトを仮想マシン上で動かそうとするプロジェクトはあちこちにあるが、微妙なタイミングを無駄なループなどで図っているゲームが意外と多く、タイミングの再生に難儀するそうだ。何しろソフトウェアエミュレーションというのはどんな1命令もハードウェアと同じ速度で実行できるように調整しているわけではないのだからして…

理想的なアプリケーションであれば、仮想化技術で寿命を延ばすのも良いだろう。しかし、そのようなソフトはちょっとした手を加えるだけで、新しい環境に適応する。新しい環境に適応しないのは、ソースコードがなくなっていたり、あってもナニをやっているのやら良く判らない…「いじるな!!! 今動いてるんだから!!!」系のソフトだけだ。そのようなものは、仮想化で寿命を延ばそうにもほとんど伸びない。仮想化ソフトが持っているバグを踏んづけて、ゆとりがなくなってから地獄を見るのがオチだ。

…見ての通り、たった3段落で結論は説明できてしまう。これなら、お客様は一瞬で理解できたに違いない。
100ページを越す大作は、顧客満足度を下げるだけだったのだ。





このように、Focus がきちんとお客様の望むものに当たっている事はとても重要なのだ。お客様に対し、無駄なものを与えるのも、お客様が飲み込めない程の内容を与えるのも、同じぐらい重罪であり、それらはどちらもお客様からは無駄遣いに見えるため -1.0 の評価を受けてしまう。


以上、 Technology, Transform, Focus の3つについての説明は終わった。
Technology と Transform は 0.0 から 1.0 の、Focus は -1.0 から 1.0 までの値をとり、それらの掛け算の結果がお客様の満足度になる。

当然、結果は -1.0 から 1.0 の値をとる。1.0 が大満足、-1.0 はぶん殴られる状態、というわけだ。


…さて、次回は もう一方の重要なポイント、Automation(AT)について説明しよう。Cusotmer Satisfaction だけに注目したのでは、札束で頬を殴られている奴隷と何が違うのかわからなくなってしまうからね。

2007年9月15日

新社会人にあなたならまず何を教えるか? -4- CS: Transfer/Translate/etc..

二つ目のTは伝える力だ。残念ながら、英語でしっくり来るものが無い…

なぜ、しっくりこないかと言うとここでいう伝えるとは、相手を問わないからだ。

もし、相手が計算機ならばプログラムを組んで、あなたの意図通りに動かすことを言う。これに合うのは、どちらかというと意思を「伝達・翻訳」するという意味で Translate がしっくりくる。

しかし、相手が人間の場合は、相手に自分の主張を理解してもらい、納得してもらい、同意してもらい、賛成してもらう事がポイントになる。こうなると本当は Communicate が正しいのだが、そうすると T で始まらない…。いや、それはどうでもいいのだが :p

この能力で大事なのは
  1. 相手に伝えたい事は何かをはっきりさせること
  2. 相手に応じて伝え方を変えること
の2点だ。



判りやすいように計算機のほうから始めよう。

ご存知の通り、計算機は愚直で、単純で、疲れを知らない。正確にいわれたことをやり、いわれていないことはやらない。従って計算機が行うべき作業を緻密に、正確に、指定すれば、その通りに実行してくれる。逆に緻密に、誤って指定すれば、それもその通りに実行する。パフォーマンスがどれぐらい出るのかなども含め、指示次第である。計算機は誤解などしない。計算機に与えた指示が間違っているだけだ。

このような対象である計算機に、計算機が理解できる言語で、何をするべきかを伝えるのがプログラマである。プログラマの仕事は、
  1. その計算機が何をするべきなのかを正しく・漏れなく・重複無く(MECE)理解する
  2. それを 正しく・漏れなく そして…できれば重複無く 計算機が理解できる言語に翻訳する。
メンテナンスを考えないなら後者の『重複無く』は無視しても良い。しかし、大抵の場合間違いは『重複』の部分に存在し、そのせいで直しても直しても『べつの場所』に『同じ間違い』が残っている、という賽の河原が発生するので、出来る限り重複は無くしたい。

計算機に伝えるための言語は、プログラミング言語でありさえすれば何でも良い。もし Linux のように既にあるプログラムに対する機能追加や修正の場合は、Linux がすでに利用している言語(この場合は C言語とアセンブラだが)を使うことになる。それ以外の選択肢は与えられていないからだ。しかし、新しくプログラムを1から作るのであれば、要件を全て記述でき、必要な性能が出るのであれば本質的にはプログラミング言語は何でも良いのだ。

別の言い方をすれば、優秀なプログラマの要件の1つは多くのプログラミング言語を知っている、という事だ。あえて言うならば、計算機をプログラムするに当たっての最も Primitive な言語である Assembler は理解しておいたほうが良い、と言う程度だろう。


伝える内容は最初のT, Technology で指定された内容になる。

伝えるべき内容が 0 であれば、プログラミング言語をいくら知っていても出力は 0 だ。逆に伝えるべき内容が判っていても、プログラミング言語を知らなければ、やはり出力は 0 になる。



理解しにくいのは次の「人間を相手にした場合」だろう。実際私も得意ではないので、なかなか上手に伝えられないのだが…。

「シッタールダ王子は何が偉かったのか?」

という命題がある。シッタールダ王子というのは、ご存知『仏陀』になった人だが、この人は

悟りを開いたのがえらいのではない

えらいのは、

「悟りを開いていない」人に、
「自分は悟りを開いたのだ」と言う事を、
伝える能力があった


と言う点だ。もしかしたら、彼以前にも悟りを開いた人はいたかもしれない。でも、まだ悟っていない人にその事を伝えられないのでは誰も弟子にはならないし、当然他人を悟りに導くことも出来ない。

仏陀の仏陀たる所以は、「悟っていない人に、自分は悟っており、相手を悟らせることが出来る」と説得できたことにあるのだ。


ここでいう「悟る」というのが Technology にあたる。人間を相手に Communication をはかる場合に重要なのは、

技術を理解していない相手に、
自分は技術を理解している事を伝える


事なのだ。

もちろん、世の中には「天才は天才を知る」という言葉があるように、本当に超高度な Technology を厳密に伝え合うためには、相手も自分も同じ Technology をほとんど全て理解し、扱えなくてはいけないだろう。「相手に自分が知っていることを全て伝える」事が常に可能なわけではない。

しかし、思い出して欲しい。我々は「お客様を満足させるために」Communication をはかろうとしているのだ。何もお客様と、ユニゾンをはかろうとか、
「あなたと一つになりたい」
などとエヴァンゲリオンのテーマのようなことがやりたいわけではないのだ。であれば、全てを伝える必要など無いではないか。

人間と言うのは「信じる」という行為を取ってくれる。ある一定以上、相手が正しいことを理解したら、「前提と結論との結びつきがまったく理解できないにもかかわらず」その結論が正しい、としてくれるのだ。

このような場合、大事なのは 1から100まで全てを伝えることではない。乱暴かもしれないが、
  • まず、相手に自分がいう事を信じるように仕向けること
  • 次に必要最小限の前提と結論を覚えてもらうこと
  • 運がよければ、その中のいくつかについては理由も理解してもらうこと
程度を目標にするので構わないのだ。


判ると思うが、「最小限度」というこの条件を満たすためには MECE の考え方は役に立つ。重複があると、情報量としてのエントロピーは増えないのに送受信しなくてはいけないビット数は増えてしまうのだ。人間は「飽きる」し「疲れる」ので、余計な1ビットがあるとそれだけで受信ミスを起こしたり、受信拒否を起こす確率が跳ね上がってしまう。

もう一つ大事なのは、文法上の間違いやあいまいさを排除する事だ。最後まで読めば意味が一意に決定するが、途中では何通りも解釈がありえる、なんてのもダメだ。読むほうにすれば、1つの文章を読んでいるだけで何通り分もの脳みそを使えと言われたことになる。見る見るうちに疲れ果て、読む気を失うのが先か、読み間違えるのが先か…いずれにせよ、あなたの目的は果たせないだろう。

このように、ちゃんと受信してもらえるようにすること、Transfer が人間の場合重要なキーポイントになる。




このように、相手によって、何をどのように伝えるべきなのかは変わる。

これは「伝える」事そのものが目的なのではなく、

お客様に満足いただくために
情報を伝えている

からだ。

お客様に満足いただくために、計算機に正しく動いて欲しいから、正確に、厳密に、漏れなく、重複無く、計算機にやるべきことを伝えなくてはいけない。
お客様に満足いただくために、お客様が理解しなくてはいけないことを、お客様が受け付けてくれる形で伝えなくてはいけない(あるいは、お客様以外の人であっても同じだが)。


私の場合、多くの新人は理系の学部を出ている。そのためか「日本語の文章が不自由」な人が多い。この blog にも誤字脱字、文法の間違いは多いが、この何万倍も酷い間違いをして、なおかつどこが間違っているのか判らない、と言う人が多くやってくる。

この場合、Technology は問題ない。また、計算機への Translate も問題ない。しかし、人間への Transfer に問題があるわけだ。

可哀想だが、やることは一つ。作文の特訓である。
だいたい2年ぐらいかけると、誰でもわかりやすい文章を書けるようになる。そして、そうなると、その新人の評価はぐっと高まる。
T x T

の左の T は最初から高い数値だったのに、右の T の値が低かったため、計算結果が小さな値になっていたのに過ぎないからだ。ちゃんと他の人に伝える能力がつけば、評価は高くなって当然である。



新人の間はこれでほとんど問題は無い。しかしたまに、転職組などで問題が出るケースがある。それが第3番目の項目、F がきちんと出来ていない場合だ。新人の場合は仕事の範囲が狭いため、Focus がぶれることは無い。しかし、転職組の場合はもう少し幅広いレンジを相手にすることが求められる。すると Focus の問題が発生するのだ。従って、新人の段階から Focus についても説明することにしている。ただし、彼らがそれについて実感するのは3年目以降になるだろうが…

というわけで、次回は Focus について説明しよう…。

2007年9月9日

新社会人にあなたならまず何を教えるか? -3- CS: Technology

順番に行こう。

まずは最初のT、Technology = 技術だ。

大昔、各人、あるいは家族単位で必要なものを全て自己調達していた時代はあった。しかし、現代では全てのものを自己調達している人はほとんどいない。大抵の人は家を専門家である大工さんに作ってもらう。大工さんはトンカチや釘、木材を自分で作ったりはしない。これらを作るのは別の職人さんだ。

このように現代の職業は分業で成り立っている。分業することで、各自自分が専門とするものに集中でき、結果として社会全体がより高い品質の製品やサービスを手に入れられるようになった。この「分業」の単位になるものの一つが技術だ。

ここでいう技術は、単に何かを作る、というだけではない。もちろん、作るにしたって製鉄から、板金から、プログラムから…と色々あるわけだが、他にも魚を捕まえる技術、植物を育てる技術なども考えられる。レストランに行った場合、客の後ろから食器を並べるのだって技術だ。


基本的に私自身はコンピューターのソフトウェアを作るのが本業になるので、その系統の技術レベルは高い。当然教育する相手に最初に伝えるのもそのような技術になる。しかし、大抵の人はそれ以外の特技なり何なりを持っている。それらも含めての技術、と言う事になる。

私の職能上、後輩がこのエリアに問題がある事はほとんど無い。大学などでそこそこ学習してきているからだ。逆に言うと、ここに問題がある場合は、学校と同じように教育するしかない。ただし、社会人になっているので「スパルタ」方式を使うが。


一つ重要なポイントがある。たとえばプログラムを作る場合、「C言語を理解できる」とか「アセンブラが読める」などの特性は、実は Technologyには含めない。それは Transfer/Translate のTの方に属する。プログラムの場合はその数学的な構造が理解できるとか、構造を作り上げることが出来る、と言ったものが技術であって、C言語は文字通り「言語」に属する特性なのだ。


この技術というものは純粋化していくと、数学に帰着する。釘の打ち方、鍋の振り方でさえ、数学に帰着するのだ。大抵の人は「帰着するまで深く考え抜かない」だけであって、そこに数学が無いわけではない。

このため、世の中の様々なことを適切な数学モデルに翻訳できた場合、応用性が非常に高い。ジェネラリストを育てたかったらまずスペシャリストになれ、最初にジェネラリストを目指そうとすると、太鼓もち以上にならない、というのはこれゆえである。

2007年9月8日

新社会人にあなたならまず何を教えるか? -2- CS

会社に勤めている場合、最も重要なのはお給料である。

そもそも、給料をもらわなくても生きていけるのであれば、仕事なんぞする必要は無い。好きなことをして生きていればいいのである。

しかし、それでは実は生活が成り立たない。だから仕事をするわけだ。学生までの時代と社会人との最大の違いは、「生活が成り立たない」経済状態に対し他者が支えてくれるかどうかだ、と言う事も出来る。


さて、そのお給料だが、一体誰が払ってくれているのだろうか?

あなたの会社の社長だろうか? それともアナタの上司?
営業マン?
研究員のような非営利部門の場合、営利部門である開発部隊とかだろうか?

全部間違いだ。あなたのお給料になるお金を払ってくれているのは、

あなたの会社にお金を払ってくれているお客様だ。


さて、次の問題。

お客様に何か物を売って、利益を得たとする。その利益の中からアナタの給料が払われるわけだが…そのお客様が
「もう二度と、あいつらから物を買うものか」
と思ったらどうなるだろう?


実は2つ問題が発生する。

1つ目の問題は「風評」というものだ。

あるお客様が「二度とあそこから買うものか」と思った場合、そのお客様は単にそう思うだけではなく、その事を周囲に伝えるはずなのだ。そういう話を聞いた周囲の人の何割かは
「じゃぁ、あそこから物を買おうかと思っていたが、止めようか」
という判断を下すだろう。

つまり一人のお客様が不満一杯な状態で契約を終了すると、何人かの潜在的なお客様を失っている事に等しい状態が生まれるのだ。当然、そうなればあなたの給料になるべきお金が会社に入らなくなってしまう。


2つ目の問題は「リピーター」という問題だ。

今、世界中で人口は 60億人しかいない。その20% 以上は一日の生活費が一人1円程度…というレベルにある。このような世界で、一度しか商売の相手になってくれない人ばかり増やせば、一人当たり1円づつ利益をあげられても、総額で60億円しか儲けられない。

一人1000円づつにして、その代わり全人口の1割を相手にするとしても、6000億円で止まってしまうのだ。平均年俸が600万円の社員を抱えている場合、10万回しか給料は払えない。1万人を雇って10ヶ月で破綻するのか、1000人で8年ぐらい持たせるのかはともかく、その程度しか稼げないのである。

これは金額がいくらであっても同じだ。有限の人口を相手に、一人当たり有限回数しか商売しないとするならば、あなたの会社の収益の上限はたかが知れてしまうのだ。この限界を打破するには、おなじお客様から何度も利益を戴くしかない。


以上2つの点から、売買でもサービス契約でもいいから、商売をした場合、お客様に
「あぁ、この人達から物を買ってよかった」
と満足してもらわなくてはいけない。そうして
「もう一度、この人達から物を買ってもいいかな」
と思ってもらわなくてはいけない。

このお客様に満足してもらうこと。これが顧客満足… Customer Satisfaction というものだ。


あなたが会社で仕事をしているのは、お給料をもらうためであり、そのお給料はお客様が払うお金から出来ている。もし、あなたが給料を払い続けて欲しいと考えているなら、お客様に「お金を払い続けたい」と思わせなくてはいけない。

社長でも、上司でも、営業でも、営利部隊でもない。
お金を払ってくれるお客様の満足 につながるような内容を仕事としなくてはいけない。
極端に言えば、社長や上司や営業の意向なんぞどうでもよいのだ。


顧客満足の向上には何をすればいいのか、顧客満足ってどうやって測ればいいのか、などなどこのテーマは結構深いのだが、新入社員にそんなことを言って混乱させてもしょうがない。ので、私は

CS = T × T × F


を説明している。なお、最後のFはここ数年で、重要だと思うようになった。

さて、それぞれ何の略かと言うと:


最初のTTechnology つまり 「技術力」
次のTTransfer/Translate つまり 「伝える力」
FFocus 「焦点」


2つの T は0.0 ~ 1.0 の間の値を、最後の F は -1.0 ~ 1.0 の値を取る。掛け算の結果が顧客満足度というもので -1.0 から 1.0 の間の値を取る。満足度は 0.0 が「まったく満足していない(無価値と評価される)」、1.0が「完璧な満足」と定義する。-1.0 は「ふざけるなこの野郎」で、「損害を与えた」と思われている、という状態を意味する。

この3つを正しく理解し、正しく実行しないと、わけのわからないことをやることになってしまう。

というわけで、次はこの3つについての説明だ…。