いま持っている専門領域をさらに深めることと、別の専門領域の知識を身につけることの、それぞれどのような力配分で、またどのような作戦で取り組むべきかは、わりと誰でもよく考えることですが、ここで常に問題となる要素として、
(1)対象となる専門領域自体の将来価値
(2)専門領域間のシナジー価値
(3)専門性の深さによって変化する投資効果
(4)専門領域のさらなる細分割
の4つを考えておけばいいのですかね。
このうち、(3)は、英語能力なんかがいい例なんですが、浅い英語能力を持った人間なんか、うじゃうじゃいるから、差別化できず、単価は異常に安くなるし(生活できね)、また、世の中から軽く見られ、ぞんざいに扱われ、仕事をしていても面白くない(オレは下流ですかそうですか)。
で、差別化するために、(2)〜(4)のどれかをやる。(4)細分割化では、同じ英語能力でも、発音を究めるとか、翻訳を究めるとか、同時通訳を究めるとか。これは、ブルドックの濃いソースの戦略と同じで、「ソース市場」という大きなマーケットでは、マーケットリーダには勝てないので、ソース市場を、さらに細かく分割して、「濃いソースの市場」という市場を無理やり創り出して、そこのマーケットリーダになる戦略。濃いソースづくりなら、どこにも負けないぞ、と。この原理で医者も、やたら細かく専門化していっているし、実際アトピーばかり徹底して極めている医者というのは、アトピーに関してはすごいから、オイラもアトピーなので、そういう医者のとこいきますね。この細分割化戦略は、ソフトウェアエンジニアの世界にも、当然有効で、多くのエンジニアは本能的にこれに気がついている。
あと、(3)の深さで、時として、重要なのが、飽和性の問題。たとえば、特定のプログラミング言語の文法を、めったに使われない細かい文法まですべておぼえるより、ほかにやることないのか、という話。
で、意外におろそかにされているのが、(1)と(2)の、戦略的、体系的なアプローチ。どの専門領域のどんなスキルが、将来どのくらい価値がでるか、というのは、社会や経済についてよく勉強し、情報収集し、自分なりによく分析しなければ、なかなか見えて来ない。とくに、これについて独りよがりになりがちな自分がいて、よく気をつけなきゃと思う。(アンタはエンジニアなのか? と聞かれるとなんとも返答に困るビミョーなところなですが)
個別具体的な技術の価値は、その技術自体の洗練さや、エンジニアの好みだけで決まるものじゃなく、それが人間や社会の具体的な価値にたいしてどのような位置にあるか、というところの方がむしろ重要なんだと思う。人間と社会の価値から「独立」して技術「自体」に価値が存在するかのように考えてしまうことがある。あらゆる技術の価値の「源泉」は、開発者ではなく、その最終的なユーザから発生しているのであって、最終的なユーザが別の代替手段を選んだ瞬間、その技術の価値は消滅するということが見失われることはありがち。
一時期の人工知能ブームがいい例だ。高度な推論エンジンを使っているかどうかは、最終的なユーザには、どうでもいいことで、ふつうのプログラミング言語で同じシステムを記述した場合との違いは、開発と保守の費用や工期の問題、というコストの問題と、ユーザにとって新しい価値を創出できるか、という具体的な価値創出の問題に還元して考えなきゃならない。自分の将来にかかわることだし。
技術の人間的価値よりも、技術自体を愛してしまうエンジニアは、時として、すごい集中力を発する。ある意味優秀だ。この愛こそが、近代史をすさまじい速度で前進させてきたパワーの源泉かもしれない。しかし、この盲目的な愛によって、「あばたもえくぼ」になり、技術の人間と社会にとっての価値が見失われがち。
ので、ソフトウェアエンジニアは、自分の中にある、技術自体への愛をうまく飼い馴らして、技術の人間的価値へつなげてやるという作業を、絶えずやらないと、悲劇的な将来が待ち受けていることになるかもしれない。