2017.07.19

「オブジェクト指向」や「アジャイル」では食えない

 技術で安定的に稼ぐためには、どんな「専門性」を核に据えるかがカギである。その選定に失敗すれば、貴重な現役時代の10年くらい簡単に無駄使いしてしまう。これを避けるためには、自分の専門性がターゲットとする「市場」をよくよく見定めておく必要がある。

 先日、ある超高速開発ツールを活用している技術者の語りを聴く機会があった。彼は最初にハードウエアの設計技術者としてあるメーカーに入社したのだが、そこで製造管理を強化するために独力で生産管理システムを設計・実装してしまった。この経験を生かしてその後ソフトウエア技術者に転身し、ユーザ企業のシステム部門を渡り歩いてきた。現在所属しているメーカーでは、彼のおかげでシステム部門のプレゼンスが高まって感謝されているという。キャリア経験の中から「自分と家族を食わせてゆくための源泉」を見つけ維持している立派な技術者だと感心させられた。

 特定の超高速開発ツールを利用しているので、自分のことをそのツールの専門家と考えていそうなものだが、彼ははっきりと「このツールへのこだわりはない」と語った。あなたは何の専門家ですかと問われたなら彼は「業務システム開発の専門家です」と答えるだろう。それは、時々で変わる所属組織や実装手段とは無関係に確立された職業的アイデンティティのようなものであろう。

 それはまったくもって健全な自己認識である。ソフトウエア開発の世界ではさまざまな専門性が求められるが、それが適切なレイヤー・粒度に置かれていることが、安定的に稼げるかどうかのカギだからだ。

 では、「稼げない専門性」とはどういうものだろうか。当たり前すぎて身も蓋もないが「市場が小さい」ものだ。その典型が「オブジェクト指向開発の専門家」とか「アジャイル開発の専門家」とか「ドメイン駆動開発の専門家」といったものだ。

 オブジェクト指向やアジャイルは技術者の世界では人気が高いので、それで稼げないことは意外に思えるかもしれない。しかし技術者に人気があるかどうかと市場で稼げるかどうかとは別問題。じっさいのところ「オブジェクト指向で」とか「アジャイルで」と依頼してくるようなクライアントは例外的だし、むしろ危うい(*1)。あえて案件獲得を狙わず、開発組織を相手にコーチングやコンサルのような商売をするとしても、市場としては小さすぎる。そこらへんを勘違いして歳月を無駄遣いしてしまう技術者は少なくないような気がする。

 けっきょく、オブジェクト指向やアジャイルといった「技術的手段」は、案件特性に合わせて修飾される内部事情のひとつに過ぎない。技術的手段をこなすための個々のスキルは身につけるべき技能のひとつではあるが、それを技術者の専門性として打ち出しても安定的に稼ぐには心もとない。技術者がものすごくこだわる問題が、開発案件の市場においてはどうでもいい話だったりするからだ。そういう意味での技術オタクになってはいけない。

 「DB設計の専門家」や「上流工程の専門家」も同じ理由で危うい。市場は「優れた設計」などではなく、「使いやすく保守しやすい業務システム」を求めている。「優れた設計」は「使いやすく保守しやすい業務システム」であるための必要条件ではあっても、そのような技術的事情に市場は関心がない。だいいち、「(自分では実装しない)設計の専門家」は他のメンバーから信用されない。設計だけやって設計の専門家になれるわけではないことに、多くの技術者はとっくに気づいている。

 そういうわけなので、設計から実装までをひとりでこなせる「業務システム開発の専門家」は、ソフトウエア技術者が安定的に稼ぐためのあり方として優れている。それが「技術的手段」ではなく、「技術の適用分野(ドメイン)」とその「市場」を見据えているからだ。どんな事業活動であろうと、規模が一定以上になれば、事業情報管理を効果的にシステム化しなければ競争力を維持できない。「業務システム開発の専門家」が見据える市場には、じゅうぶんな活力がある。「業務システム」は粒度としてはやや粗いので、「経営管理システム」や「生産管理システム」などに絞り込んでも市場は確実にある。

 ただし、この種の「特定ドメイン向けソフトウエア開発の専門家」の参入障壁は低くない。まず、実装手段や開発手法に対するコダワリを捨てなければならない。案件特性に合わせて節操なく実装方針を切り替えられるくらいの柔軟性が求められる。オブジェクト指向やアジャイルを信奉する技術者からは嫌われがちな超高速開発ツールだって使いこなせたほうがいい。また、業務システム開発のドメインについて言えば、会計や各種業務に関する知識や、オーソドックスなDB設計スキルも求められる。これらの技能が一人の技術者の内に揃って初めて「特定分野向けソフトウエア開発の専門家」を名乗れる。

 そして、ここが大事なところなのだが、「特定ドメイン向けソフトウエア開発の専門家」になるためには、「その分野のエンドユーザと直接交渉できる立場」にあることが欠かせない。そのうえで、エンドユーザとなごやかに談笑できるような成熟した社会性が求められる。なぜなら彼らこそが、ドメインに関する知識の尽きぬ源泉で、彼らからの信頼を得なければいい仕事はできないからだ。その意味でも「技術オタク」は危ういのである。

 まとめよう。「技術的手段(作り方)」にこだわるのではなく、あなたの技術が行使されるべき「分野(ドメイン)」の選定にこだわろう。そして、選定された分野に関するさまざまな知見を身につけることにこだわろう。それは簡単なことではないが、ソフトウエア技術者が安定的に稼ぐための堅実な行き方である。自分はどんな分野の専門性を身につけているか。その市場は活力にあふれているか。需要に対して供給が多すぎないか――これはときどき立ち止まって考える価値のある問いだ。


*1.20年前にオブジェクト指向開発を条件として発注し大失敗した某大学付属病院の事例がある。餅は餅屋で、実装方針に関する判断は受注側にまかせたほうがいい。また、アジャイル手法にこだわるクライアントはシステム要件をとりまとめる責任を放棄している可能性が高い。

| | コメント (0) | トラックバック (0)

«制限時間1時間で実装せよ(7/29,東京)