42歳の抱負。(現在のソフトウェア開発における3つの個人的課題)
先日、5/20で42歳になったので、抱負、というか今ぼくが課題に思っていること、考えていることをいくつかメモとして書いてみます。技術的なことと、ビジネス的なこと、そして人生についてのことがあります。
1.ソフトウェア工学
ソフトウェアアーキテクチャ、および開発方法論はまだまだ進歩過程にあるが、次の2つのことが最近分かってきており、今後より強く浸透していくのではないだろうか。
・再利用性、という価値観と、変更容易性という価値観が独立し、これら2つの価値観は別個に発展する。オブジェクト指向をはじめとする設計手法は、再利用性という方向では組織・流通・資産化を含んだプロダクトライン、変更容易性という方向ではリファクタリング、テスト駆動、アジャイル、というそれぞれのプロセスを伴った方向に分化する。再利用性は、設計のみならず、知識の再利用がキーとなりパターンのようなコンテキスト情報を含んだ知識流通形態が鍵となる。変更容易性も、内部設計のみならず、アジャイルのように繰り返して成長させながら人間のコミュニケーションと改善能力を陽に活かすプロセスとセットで語れる。すなわち、両方とも、ソフトウェア開発は「知識創造活動」であり、人間とその集合体であるチームや組織がその中心であることが、再度見直される。
・ソフトウェア開発は、固まった要求を設計に落とす、「静的な構造」ではなく、変わり続ける要求を、設計に落とし続ける、「動的な構造作り活動」として認識される。そこでは、「最適な構造」は、ある時点で正しいだけであり、より長い目で見た場合には、未来を予測した「十分準備されたアーキテクチャ」を作るという戦略と、未来を予測せず、「一番シンプルでOKなアーキテクチャ」を作るという戦略がある。アジャイルは後者の戦略であり、生物の進化が取ってきた方法とにている。そしてこれはソフトウェアが変更容易性を維持できる、という技術とツールが最近発展してきていることが背景にある。
2.日本のソフトウェア産業
ぼくは受託開発の現場に長くいて、その後、プロダクトの会社を設立し、そこでJUDEという設計支援ツールと、TRICHORDというプロジェクトの見える化ツールの開発を行っている。受託開発の現場は、「エンジニアの夢を形にする」という方向がとれず、「お客様のビジネスをサポートする」という形で喜びを見出そうとしている。しかし、現在の、エンドユーザ、発注元、一次請けSIer、二次請け、という産業構造の中で、契約をはさんだ個々の企業のリスク回避活動の中で、ミッションは分断され、ゴールまで一丸となった開発チームが作りにくくなっている。上記(1)をかんがみれば、こういった経済場の中で、「知識流」と「価値流」をエンド・トゥ・エンドに流すことは至難だ。なんからの根本的な構造改革が必要だと認識している。しかし、構造に問題を指摘しても始まらない。ぼくらはぼくらの現場にいて、ぼくらを幸せにする方法をぼくらが考え出さないといけない(岡島さんの『受託開発の極意』をぜひ読んでください)。
ぼくが考えた一つは、「プロジェクトファシリテーション」という現場の活性化、見える化手法で、「よくわからない」現場、沈滞した現場を見えるようにし、コラボレーションを支援する。この延長にあるツールとしてTRICHORDという「かんばん」ベースのタスクシェアツールを作った。プロジェクトファシリテーション自体は、アジャイルであろうが、ウォーターフォールであろうが、現場のチーム作りの知恵とやりかたとして使えるものを集めて武器とする。そしてその目的をプロジェクトの成功とエンジニアのJoy of Workの両立においた。そして、写真を交えたプロジェクトファシリテーションの啓蒙講演活動を日本各所で3年間で80回行った。この活動は成果として、PFP(プロジェクトファシリテーションプロジェクト)として日本の各地で草の根活動としてコミュニティとなり、また、日本の大手企業でも多くの現場で使われるようになったことがとても嬉しい。ぼくが30代にやった一番大きな仕事だと思う。特に支援してくれた方々や参加してくれた方々に感謝している。(そして、はやく本を書かないといけないと思う)。
もう1つは、思考の見える化、という意味で、UMLツールから始まったJUDEを、マインドマップ、ER図、DF図、業務フローやCRUDなんかもサポートして「現場支援設計ツール」に育てた。これも、受託開発の中で、どうやったらアイディアや仕様というものを手軽に、すばやく、絵という一番人間が太くコミュニケーションできる情報に落とせるか、ということを追求して、ソフトウェア開発の現場で使ってもらいたいという思いの延長である。マインドマップを設計ツールに盛り込んだことは、イノベーションだと思っている。今後も、もっともっとセマンティクスリッチな絵を描いて、脳内情報を交換できるように。そして、その情報がエンド・トゥ・エンドに流れるように。
最後に、日本から、もしかしたら受託開発の現場や、SIという産業自体、なくなるかもしれないと思っている。方向としては、ユーザ企業が専門のIT部隊をインハウスで持つ方向、もしくは、独立したプロダクト開発の会社が発生する方向。ともに、ミッションが分断されない開発ができる。ぼくは先に書いた「エンジニアの夢を形にする」という形態の産業、すなわち、プロダクト開発の会社が日本でもっと増えないか、と思っている。チェンジビジョンはそういう会社にしたい、という思いで作った会社だ。その場合、市場として日本だけを見ていたのではエンジニアを雇用することができない。世界に通用するソフトウェアを、日本から海外にマーケティングしないとだめだ。現在の米国と日本のソフトウェアの輸出入比は1:100という。つまり、日本のソフトウェアプロダクト、は世界にまったく通用していない。この状況をなんとかしたい。JUDEとTRICHORDは、日本国内だけでなく、海外へ羽ばたくツールとして作っている。ここでは、まだまだぼくの努力が足りていないのだろう。JUDEは、コミュニティ版を入れると世界で24万(うち日本10万)というユーザ数を達成した。ここを足がかりに、世界にマーケティングしたい。そして、日本にこんなクールなプロダクト開発をやっている企業があるんだ、という評判をもらいたい。
プロダクトから離れるが、幸い、アジャイルが「リーン」を発掘し、「リーン」の元祖は日本のトヨタだ。この意味で、世界で有意に立てる場所である。今年のAgile2008はトロントで開催されるが、そこで今回は日本から数個の講演が採択された。これはAgile史上初の出来事で、
日本のソフトウェアやアイディアが海外でなんらかの足がかりをつかむきっかけの年にしたい。
3.人生と仕事
ぼくはエンジニアであり、「正しいこと」や「論理的に美しいこと」、そして、「経験で分かったことを抽象化して再現可能にすること」に強い喜びを感じる。とくに、三番目の知の形が、生まれてきた意味だと思っている。しかし、実際にはプロジェクトは1つ1つ違っていて、一度きりだ。それを抽象化するよりも、1つ1つのプロジェクトにフォーカスして考えた方がよい結果がでる。そして、そこで一緒に仕事をした人と成功を分かち合うことに喜びを感じる。この一回性(onceness)は、科学や工学とは別のところにあり、運命みたいなもの、そして、出会いや心の持ち方、といったものと通じている。人間は、「今」という時間の一点の連続を感じることしか出来ないが、過去の経験を通してそれを未来へと延長して、よりよい未来を作る工夫をし続ける。でも、今は1つで、いまこのプロジェクトで一緒に仕事をしている人も、この1度の出会いで、時間を共有している。ぜひ、40代も、人生の一回性の中で、いい仕事をしたいと思う。抽象化して取り出した知識の結晶は美しいかもしれないが、そのために一回しかない現実を失敗させてはいけない。つねに、インスタンスが先にあり、クラスは後に発見される。あるいは、"Without Practice, No Emergence"。