WirelessWire News Technology to implement the future

by Category

経営者の教養として見たプログラミング

2014.03.10

Updated by Ryo Shimizu on March 10, 2014, 14:50 pm JST

 この連載の根底に流れているテーマは、「プログラミングとは21世紀の教養である」ということです。
 では教養とはなにか、そしてなぜ経営者に教養としてプログラミング能力が求められるようになったのか、簡単にお話したいと思います。

 実は他のどの職業よりも、経営者が一番必要としている教養は、プログラミングではないか、そんな風に思うわけです。

 筆者が毎週ゲンロンカフェで行っているシリーズ講義「ノンプログラマー・プログラミング入門(春コース受付中)」では、毎週、大学生からリタイアした方まで、幅広い年齢層の方を相手として「教養として職業プログラマーでない人々がまなんでおくべきことはなにか」ということについて講義しています。

 先週のテーマは「アルゴリズムは何か」ということでした。
 
トランプでクイックソートを体験する

 そこで、代表的なアルゴリズムの一つである「クイックソート」をトランプを使って参加者の皆さんに実際に体験していただいたのです。

 なぜこんなことをしたのでしょう?
 そこにプログラミングの秘密があります。

 「クイックソート」は、コンピュータで頻繁に使われる機能のひとつ「並べ替え」を効率的に行うために考えられた方法です。

  その発想の原点にあるのは「分割統治法」という考え方です。この分割統治法というのは、プログラミングの世界にはよく登場します。クイックソートでは、ある基準となる数字を選んだら、その数字より小さいデータの塊と、その数字よりも大きいデータの塊にデータ全体を二分割します。分割したら、それぞれの小さなデータ群に同じ処理を適用し、さらに細かく分割してそれを繰り返していきます。これを「再帰(さいき)」そしてこのような処理を「再帰処理」と呼びます。

 経営を考えるとき、組織のサイズについても注意深く考えなくてはなりません。
 たとえば私が今の会社、UEIを立ち上げたとき、社員はゼロで、非常勤の取締役一名と社長の私しかいませんでした。

 このとき、マネジメントとは、私自身の時間やモチベーションを管理することを意味していました。
 ところが一人でスケジュールや日々の雑務をこなしつつ、商品となるようなソフトを開発したり、企画を立てたりしていると、自ずと限界がやってきました。それは私がもともと技術者で、私の企画は技術的な根拠に紐づくことが多かったのですが、私がイメージするようなソフトを書いてくれる外注先がなかなか見つからなかったからです。そこでまず雇ったのは、私を経理や経費精算といった雑務から解放してくれる秘書的な役割を持った人と、私を細かいプログラミングの実装から解放してくれるプログラマーの二人でした。

 このとき、マネジメントとは、彼ら二人の給与と仕事を管理することに意味が変わりました。

 やがて社員が一人増え、二人増えるようになってくると、マネジメントの意味はさらに大きく変わり、私は全ての仕事を自分一人で把握することができなくなってきました。

 そのとき役立ったのが、この「分割統治法」という考え方です。

 分割統治法は、つまり自分の担当分野を決め、分割した場所については担当者に責任をもってもらって全て任せる、というやり方です。

 これは経営の教科書的な本に「権限委譲」として書かれている行動と似ていますが、ちょっと違います。「権限委譲」と言った場合、ある物事の判断基準をその人に委ねるということであり、それは言って見れば、自分の組織の中に二つの基準が存在することを許す、ということです。

 しかし「分割統治法」はそうではなく、あくまでも主体として責任を持つ人間は変われども、基準はひとつのままであり、万が一、最初に決めた基準から外れた統治をすれば、それは厳しく注意されるということです。あくまでも「統治」を分割しているだけであり、「権限」を委譲しているわけではないということです。これは地方自治と国政の関係に似ています。地方自治体は夫々が条例を定めることができますが、地方の統治そのものは、国政で定められた法律によって細かく定められています。

 人間が一度に把握できる事象には数量的な限界があり、社長が自分の力を過信すれば必ずオーバーフローして失敗します。かといって、他の人間に完全に判断を任せきっては、会社が組織の体をなさなくなります。従って、あくまでも基準は自分で決め、それに従った統治を中間管理職に命じるのです。

 面白いのは、私自身はこの「分割統治法」の考え方をプログラミングの一手法として学んだのですが、この「分割統治法」を意味する英語の「divide and conquer」は、もともと古代ローマ帝国が巨大な帝国を統治するために導入した統治手法だということです。

 このレベルの統治法となると、たとえ書物で学んだとしても、なかなか身につけるのは難しいものです。
 会社を経営するといっても、部下が最初から数十人もいるということは稀ですから、結局のところ、そのときになって初めて「分割統治法」の意味と役割を知ることになり、その頃には手遅れになっている可能性は低くありません。

 筆者も会社を立ち上げた時に中小企業の経営者向けの指南本を穴のあくほど読んだのですが、そこに書かれているテクニックの多くは、プログラミングの世界では初歩の初歩といった趣きの事が多く、それを読んだ筆者は、「プログラマーの素養がある人なら会社をなんとかつぶさずに大きくすることができるんじゃないか」と思ったものです。

 振り返ってみると、身の回りで会社を潰した人は数居れど、プログラマー出身、またはプログラミングのスキルを持っている人が会社を潰してしまった例をほとんど見つけることが出来ないのです。

 社長が優秀なプログラマーであっても、社長がプログラミングに夢中になりすぎて会社が成長しない、という会社はそれなりに多くありますが、社長がプログラマーなのに、会社が一年と持たずに倒産してしまった、という例はほとんど聞いたことありません。

 それは、プログラマーならば、分割統治法を始めとする、ほとんどのアルゴリズムについて熟知しているだけでなく、実際にそれを用いてプログラミングを行い、失敗した経験を先にしているからではないかと思うのです。

 プログラミングの本当に大事なところは、考え方そのものもそうですが、それよりもむしろこうしたアルゴリズムを用いて実際にはうまくいかなかったという、失敗の経験を誰よりも多く持っていることではないかと思うのです。

 あるアルゴリズムを組み合わせて、それを実際に動かそうとしたとき、それがうまく動かないとき、プログラマーほど「己の知性と理性の限界」を思い知る職業はないと思います。なにしろコードが思った通りに動かないのは当たり前、しかしその原因は100%自分のプログラムにあるのです。いわば「無知の知」をこれほどまでにまざまざと見せつけられる仕事も他にないと思うわけです。

 経営では一つの判断ミスが致命的な失敗を呼びます。 
 未来を見通し、緻密な計画を立て、組織を編成し、運営する。

 こうした全てのことの場面場面で、プログラミングで学んだアルゴリズムや、実際にアルゴリズムを組み合わせたプログラムが思った通りに動かない時の対処法、そうした経験の積み重ねが、危機回避や堅実な経営判断といったものに直結していきます。

 その結果、プログラマー出身社長の会社は、なんのかんのと紆余曲折がありながらも、倒産せずに経営が維持されるケースが多いのではないかと思うのです。

 というわけで、教養としてのプログラミングの世界が1時間で学べる「教養としてのプログラミング」が中央公論社から発売になりました。

 既にAmazonでは売り切れておりますが、他のオンライン書店ではまだ在庫があるようです。
 大手書店さんでは中公新書のコーナーに置いてあると思います。

1958283_10152985916470752_822047524_n.jpg

 中公新書ラクレ 教養としてのプログラミング講座

WirelessWire Weekly

おすすめ記事と編集部のお知らせをお送りします。(毎週月曜日配信)

登録はこちら

清水 亮(しみず・りょう)

新潟県長岡市生まれ。1990年代よりプログラマーとしてゲーム業界、モバイル業界などで数社の立ち上げに関わる。現在も現役のプログラマーとして日夜AI開発に情熱を捧げている。

RELATED TAG