2021.01.04

IT技術者の分類名「WEB系」の奇妙さ

 話している相手が料理人であることがわかったので「どんな分野の料理ですか」と尋ねたとしよう。「あ、自分は電気炊飯器系です」という答が返ってきたらどうだろう。和食、洋食、中華といった答を期待しているのに「電気炊飯器系」ではキョトンとするしかない。

 同じような違和感が、ソフトウエア業界で技術者の分類として使われる「WEB系」にはある。WEBというのはアプリの動作を支える多彩な技術要素のひとつでしかない。電気炊飯器が料理を生み出すための数ある道具のひとつでしかないのと同じだ。自分なり誰かなりがWEB系の技術者であると説明されてもキョトンとするしかない。

 この独特な表現が使われる事情は、歴史的経緯としてある程度は理解できる。90年代に経済社会がWEBを活用し始めた頃、これをソフトウエアに組み込むためには、それまでになかった独特な技術要素を理解し駆使する必要があった。それらを扱うことにはある種の専門性が認められていた。その名残りではある。

 しかし、状況は様変わりした。ソフトウエアがWEBに関わるのは今や日常的である。そんな時代に「WEB系です」と答えるのは、医師が「診察台系です」と答えるようなものだ。

 この場合、相手が知りたいことは「どんな手段を用いて開発しているか」ではなく、「どんなドメイン(ソフトウエアが適用される社会領域)で利用されるソフトウエアを扱っているか」である。「スクラムやってます」や「ドメイン駆動設計(*1)を実践しています」なんて答にしても同様だ。そういった技術なり手法なりを用いてどんなドメイン向けのソフトウエアを開発しているのか。それを知りたいのである。

 ちなみに私自分のことを言えば、相手にしているドメインは「業務システム」ということになる。この言い方では多少曖昧なので「販売管理システムや生産管理システムといった事業管理用のソフトウエア」と説明することもある。「基幹システム」とか「情報システム」なんて言い方も昔からある。ドメインとしては古参のほうだが、「エンプラ(エンタープライズ)系」なんて今風の言い方もある。

 他には、ゲームソフト、OS、商用ミドルウエアなどいろいろあるが、それぞれに固有の知識やスキルが求められる。上述した業務システムであれば、簿記を含めた業務知識や、複雑なデータ構造や業務フローを設計するためのスキルが求められる。そして、いずれのドメインにも一定以上の「経済力」がある(そうでないと多くの開発者を養えない)。もちろん、将来的に有望な新しいドメインを切り出してもいい。技術者はそれぞれの相場観と嗜好にもとづいてドメインを選定することになるが、その結果で、収入を含めた職業生活の大枠が決まると言っても過言ではない。

 では、対象ドメインについて尋ねて返ってきた答が「そういうのにはこだわりませんね。依頼があればどんなソフトも作りますよ」だったらどうだろう。「万能の天才」のようで勇ましくはあるが、なんとなく信用できない。「診察台に乗ってもらえばどんな病気も治療しますよ」と語る医師にあなたは診察してもらいたいだろうか。ドメインのサイズが小さすぎると外部環境の変化に振り回されやすくなるが、大きすぎても専門性の蓄積が難しくなるため信頼されにくい。また境界が曖昧であれば、ドメイン知識の蓄積が競争優位をもたらさないため、参入障壁が下がってレッドオーシャン化しやすい。ようするにドメインの「粒度」が適切かつ明確でないといけないという話だ。

 専門分化にともなう弊害はあるとはいえ、一般に専門家は「特定ドメインへのコミットメント」によって社会的効用を発揮する。料理人は特定の料理分野に、医師は特定の疾病分野にコミットすることで活躍できる。ソフトウエア開発者も例外ではない。人間や社会の複雑精妙さを考えてみれば当然だ。ソフトウエアを生かすためには、その適用対象について深く理解しないわけにいかない。戦略的に切り出された「稼げるドメイン」に関する豊かな知識や経験こそが、専門家として稼ぎ続けるための鍵である。

 いっぽう、特定ドメインにコミットするよりも、実装技術の習得と鍛錬を優先させる姿勢を見かけることがある。長い目で見れば危うい。そもそも実装技術は、ソリューションを生み出すための手段であって目的ではない。その技術を用いて何をしたいのか(どんなソフトウエアを生み出したいのか)が肝心であるにもかかわらず、技術的興味が先行して本末転倒してしまう。とくに有能な技術者がハマりやすい罠だ。

 もっとも、若い頃であれば技術マニア的な偏向はそれほど悪いものではない。それこそ若手が「自分はホニャララ(実装技術や手法のひとつ)系です」と自己紹介するようでもかまわない。ただし、どんなドメインを相手にするのが面白いかについて、早めに気づいてほしいと思う。そのときこそ、そのドメインについて本格的に学ぼう。その後でなら「自分はおもにホニャララを使って、ホゲホゲ(特定のドメイン)を扱っています」と説明できるようになる。ようするに技術なんてものは「自分が機嫌よく稼げるドメイン」を見出し、それと付き合い続けるためのダシでしかないということだ。

 最終的には、「自分はホゲホゲを専門としています。かつてはホニャララを使っていましたが、今では実装技術や技法にはこだわっていません」と言えるようになってほしい。個々の開発案件に適した実装技術や技法については、必要に応じて学べばよろしい。必要もないのに興味にまかせて新技術を渉猟するだけでは、膨大なドメイン知識や経験を蓄積するために必要な時間が失われていくばかりだ。しかも、WEB技術の変化はきわめて早く、過去の技術はあっという間にレガシーになる。そのいっぽうで、新技術の学びに必要な能力や意欲は年々低下してゆく。どうか若手と呼ばれる間に、職業人生を賭けるに足るドメインを見い出し、勇気を出してコミットしてほしい。

参考記事
実装について学ぶこと大杉問題

*1.ドメイン駆動設計(DDD)における「ドメイン」は「個々の開発案件が要求する業務要件」くらいの意味で、本稿で言うドメインより粒度がはるかに小さい。とはいえ大は小を兼ねるで、開発者自身が「業務システム」ドメインの専門家であれば、個別の業務システムを開発したいと考えている顧客とはふつうに協働できる。ドメインエキスパートを別途確保する必要はない。

| | コメント (0)

«データモデルの変化を抱擁せよ