« 動くソフトウエアを作る前にアジャイルモデリングを | トップページ | 「データモデリングライブ@渋谷」報告 »

2012.09.27

実装スキルと業務知識を統合するために

 90年代の後半以降、WEBアプリの実装技術が急速に発展した。そのおかげで、それまで使いにくかったHTMLページを業務システム(基幹業務支援システム)でも使えるようになった。それはそれで意義深いことではあったが、いっぽうで若手の技術者から業務知識の学習機会が奪われてしまった。いったい何が起こったのか。

 ソフトウエアの適用分野毎に、技術者に求められる専門性は異なる。「組込ソフト」の分野であれば、ハードウエアの動作や利用に関するさまざまな専門知識が要るだろう。「音楽ソフト」向けには、MIDIやサウンドデータに関する専門知識が求められそうだ。業務システムの開発者であれば、いわゆる「業務知識」が求められる。具体的には、簿記、DB設計、業務プロセス設計といった知識やスキルだ。業種・業態を越えてシステム要件を仕様化するためには欠かせない素養である。

 ところが現在のWEBアプリの開発現場において、日常的に業務システムを開発しているにもかかわらず、業務知識を重要視しない技術者がいる(おそらく少なくない)。彼らは「業務システム開発者」ではなく「WEBアプリ開発者」か「実装専門家」として自己規定しているようなのだ。

 これには事情がある。WEBプログラミングというものが、ひとりの技術者に与えられた時間と意欲を消費し尽くすほどに込み入った仕事だからだ。また、1系列の実装技術に手馴れたと思うとまた新しい技術が出てくる。業務知識を腰をすえて身につけるヒマがない。じっさい彼らが身につけた実装技術の知識量は膨大なので、自らを実装の専門家とみなしたくなる気持ちもわからないではない。

 しかし、90年代後半以前にこういうノリはなかった。必要な業務知識を身につけていない技術者はその時代にもいたが、彼らはあくまでもそれを身につける前段階の要員、すなわち「新人」だった。必要な業務知識を身につけて生かすには、コンピュータで出来ることと出来ないことを理解しておかねばならない。そのためにはプログラミング要員としての経験と適性がどうしても必要だ。そしてその経験と業務知識とを統合することで、一人前の開発者になれた。じっさいWEB開発技術が普及する直前の実装技術はそれなりに成熟していたので、その習得に延々と時間がとられることはなかった。

 これはつまり、WEBプログラミングに限らず、進化・発展の途上だったり奥行きの深い実装技術には、魅力とともに「暗黒面」があるということだ。一度これにハマると、適用分野固有の専門性を身につけるステージに進めなくなる。それはまるで、部屋に閉じこもって「女の子と楽しくおしゃべりする技術」の本ばかり読んでいるようなものだ。なぜ出かけていってデートしないのかと尋ねると、「これは革新的で興味深い会話技術なんですが、けっこう込み入っているうえにすぐに改訂されので、勉強し続けていないと忘れてしまうんです」と答える。

 どうしたらこのトラップから逃れられるのだろう。「オブジェクト指向とイパネマの娘」で説明したように、個別案件と言語処理系との間にDSL(*1)系の実装用プラットフォームを挟めばよい。最小限度のプログラミングで個別案件を定義できるようになるので、業務知識を習得するための余裕が生まれる。これを上の喩えに沿って言えば、手っ取り早く「どんな女の子とも楽しくおしゃべりできる気の利いた人物」と友達になるようなものだ。

 もちろん、そのようなレイヤを利用することによるリスクもある。そのプラットフォームの栄枯盛衰に振り回されるという問題だ。そういう意味で、相場観にもとづいていくつかの選択肢を確保しておく必要はあるのかもしれない。まあそのいっぽうで、相場などアテにならないし、手馴れたプラットフォームが廃れても、業務知識が習得できたのであればよしとする考え方もある。じっさい私が20年前に活用していたプラットフォームは今ではすっかり廃れてしまったが、その頃に身につけた業務知識が今でも役に立ち続けている。また、業務知識と職業適性さえあれば、いまどきのどんな開発環境への移行もじつはたいして難しくなかったりする。

 いずれにせよ、業務システムの開発に関わる者であれば、「業務知識」を自分が身につけるべき専門性の外にあるものとみなすことはやめたほうがいい。そのままでは、簿記やDB設計のスキルと実装スキルとを統合できないままで成熟してしまうからだ。すると、ユーザのカジュアルな語りから仕様を起こして実装するという一連の働きができなくなる。他人から明確な仕様が与えられない限りコードの1行も書けない、そんな技術者になってしまう。

 ようするに業務システムの開発者にとっては、実装技術と業務知識のどちらもかけがえのないもので、両者の習得努力のバランスが大事という話だ。女の子と楽しくおしゃべりする技術も実装技術も、技術そのものを身につけるためにあるのではない。前者は「女の子を理解するため」にあるし、後者は「業務知識と統合することで、システム開発者としての基礎力を強化するため」にある。


*1.Domain Specific Language(ドメイン固有言語)。ソフトウエアの適用分野毎の固有な記述様式のこと。これを備えるプラットフォームを用いることで開発作業が効率化される。

|

« 動くソフトウエアを作る前にアジャイルモデリングを | トップページ | 「データモデリングライブ@渋谷」報告 »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック


この記事へのトラックバック一覧です: 実装スキルと業務知識を統合するために:

« 動くソフトウエアを作る前にアジャイルモデリングを | トップページ | 「データモデリングライブ@渋谷」報告 »