「自称プログラマー」の哀れな末路、仕組みを考えないコーダーはエンジニアにあらず

https://xtech.nikkei.com/atcl/nxt/column/18/00148/082800134/

※「プログラマーと、コーダーは違う。」…。

 この業界ではたらく人は、よく見ておいた方がいい…。

『(木村 岳史 日経クロステック/日経コンピュータ)

たまに哀れな「自称プログラマー」に関する話を聞くときがある。例えば「あのさぁ、何をつくってほしいか、きちんと仕様にしてくれないと、システムなんかつくれないじゃん!」とか「何をつくるかを決めるのはビジネスサイドのあんたたちの仕事だろ。俺の仕事じゃないぜ」と言い放って、事業部門の人を怒らせたり涙目にさせたりする愚か者たちだ。

 一見とても正しい発言のように思える。というか大概の場合、発言としては正論であったりする。同業者なら「よくぞ言ってくれた!」と喝采する人もいるはずだ。何せ最近は、要件定義が全くできず、「何をつくってほしいのか」まで開発サイドに丸投げしてくるビジネスサイドのアホが多数いる。そんな連中を一言で撃退できる自称プログラマーは称賛すら集めるだろう。

 だが、この自称プログラマーが本心からそう思っているなら、やはり愚か者である。まず本質でないほうの理由から説明する。「何をつくるかを決めるのはビジネスサイドの仕事だろ!」と言い放ったが最後、「逆も真なり」となる。システム開発プロジェクトでビジネスサイドからの協力は一切得られなくなるし、力関係次第では無理難題を押しつけられる。「それはむちゃです」と言っても「知らねぇよ、それを何とかするのがITの専門家の仕事だろ!」といった具合だ。

 で、本質的なほうの理由だが、そもそもソフトウエアって何だっけ?という話だ。私が思うに、ソフトウエアとは「プログラミング言語で記述された(実装された)何らかの仕組み」である。つまりソフトウエアの本質は、それに実装されている何らかの仕組みにあるわけだ。業務アプリなら、もちろんビジネスの仕組みだ。その仕組みを考えてプログラミング言語を道具として使って実装していくのがプログラマーの仕事である。

 なぜ冒頭の愚か者たちを「自称プログラマー」と書いたか、もうお分かりであろう。ここまでで「仕組みを考えるのは当たり前でしょ」と不審に思った人は、パッケージソフトウエアやクラウドサービスの開発に携わるプログラマーなのだろう。一方、人月商売ビジネスにはそのあたりがよく分かっていない自称プログラマーが大勢いる。人月商売ビジネスでよく使われる言葉で言えば、彼ら/彼女らはプログラマーではなく「コーダー」。つまりエンジニアではなく作業員である。

 デジタル革命が進展するなかにおいては自称プログラマー、つまりコーダーという作業員はいつ職を失っても不思議ではない。デジタル革命と大げさに言わなくても、これまでも35~40歳あたりからコーダーは徐々に仕事が厳しくなってきていた。自称プログラマーに染みついているのは分業の発想だ。人月商売の多重下請け構造の発想と言い換えてもよい。そうした分業体制がそろそろ成り立たなくなりつつあると気付くべきなのだ。

プログラマーは「料理を創るシェフ」
 そう言えば以前、米Microsoft(マイクロソフト)でWindows 95のチーフアーキテクトなどを務めた中島聡氏と対談したことがある。その際、中島氏はソフトウエアを料理に例えていた。そうするとプログラマーはシェフである。シェフの仕事の本質は料理を「創る」ことであり、単に食材を切ったり煮たりすることではない。プログラマーも何らかの仕組みを「創る」のが仕事の本質であり、それは言われた通りコードを書くことではない。

 中島氏は多重下請け構造の人月商売のIT業界を次のように批判していた。「僕から見ると、ITゼネコンの方は料理をつくったことがない『なんちゃってシェフ』がレシピだけ書いている。下請けの人たちは、下りてきたレシピ通りつくるだけ。そこでは、おいしい、おいしくないは関係ない」。ITゼネコンとはSIerのことだが、このITゼネコンが支配する人月商売のIT業界には、料理を創るシェフに相当する本物のプログラマーが存在しないわけだ。

関連記事:ここがヘンだよ! 日本のIT業界
 ちなみにWindowsのようなOSやパッケージソフトウエア、あるいはクラウドサービスの世界では、何らかの仕組み(コンピューターを動かす基本的な仕組みや業務処理の仕組み、あるいはサービスの仕組み)を専門的に考えるプログラマーをアーキテクトと呼ぶ。だからプログラムを書いたことのないアーキテクトはあり得ない。程度の差はあるが、仕組みを考えてソフトウエアの形にしてきたプログラマーの中から、優れたアーキテクトが生まれてくるわけだ。

 一方、人月商売のIT業界のほうはどうかと言うと、アーキテクトに相当するのがSE(システムエンジニア)である。先ほどの中島氏の言い方に従えば、料理をつくったことがない「なんちゃってシェフ」たちだ。もっとも、最近ではSIerもプログラミング経験のないSEはさすがに使えないと深く反省し、プログラムを書く経験を積ませるようになった。ただ、仕組みを考え、それをプログラミングで形にしていくプログラマーの仕事を通じて、優れたSEが育っているのか言えば、全くそうではないから困ったものだ。

 そもそもSEは、アーキテクトと違って何らかの仕組みをゼロから「創造」する必要はない。要件を明確にしたうえで、必要となる機能をどう実装するかを検討するのが仕事だ。一応、仕組みを考えているとは言えるが、既存の業務をシステム化することが大半だから、考える仕組みとはまさに「機能をどう実装するか」のみである。実に単純な仕事だ。「システム導入を機に業務のやり方(仕組み)を変えましょう」と提案するなら創造的な仕事になるが、「それはお客さまやコンサルタントの仕事」として避けてしまう。

 しかも最近、その単純な仕事がさらに単純になっている。大規模な案件であっても、ERP(統合基幹業務システム)など出来合いのパッケージソフトウエアなどをシステムのベースに使うケースが増えてきたから、必要となる機能をどう実装するかを検討する機会は大幅に省略される。後はフィット&ギャップ分析などで、客が要望する(本当は必要でないかもしれない)機能をどうつくるかだけを検討する。これはもう、仕組みを考えるという創造性とは無縁の世界だ。

 SEですらそのレベルだから、SIerをはじめとする人月商売のITベンダーでは、仕組みを考えてプログラミングで形にしていくプログラマーが育たない。どんなにプログラムを書いても、仕様に基づいてコーディングしているだけだ。つまりコーダーばかりである。余計なことを言えば、人月商売のIT業界では、そんなコーダーにも「SE」との肩書を与えるから、もう訳が分からない状況になっている。

基幹系刷新では誰も「仕組み」を考えない
 もう一度書くが、ソフトウエアの本質は、それに実装されている何らかの仕組みにある。プログラマーであろうが、アーキテクトであろうが、「本物の」SEであろうが、その仕組みを考えて実装するのが仕事である。そして、ここまでがエンジニアである。単に言われた通り、仕様通りにプログラムを書いているなら、エンジニアではなくコーダーと言う名の作業員である。先ほどは料理の世界と比べたが、機械や土木などの世界のエンジニアもきっと同じであろう。

 そんなわけで人月商売のIT業界にいるのは、ソフトウエアの本質である仕組みをろくすっぽ考えない、なんちゃってSEや自称プログラマーばかりである。しかも話をさらに悲惨にするのは、システム開発を依頼する側、つまりユーザーであるビジネスサイドの連中も、新たにどんな仕組みをつくるのか、あるいは既存の仕組みをどう変えるのかを丸っきり考えていないことだ。

 例えば基幹業務システムの刷新ならば、新旧のシステムに実装するのは業務プロセスなどビジネスの仕組みである。本来なら刷新を機に、このビジネスの仕組みをどう変えるのかについて、ビジネスサイドの人やSE、プログラマーが真剣に考えて議論すべきなのだ。だが、誰も考えようとしない。特にITベンダーのなんちゃってSEや自称プログラマーは「それはお客さまがやること」との固い「信念」があるから、全く考えようとしない。かくして、何度刷新しても「現行通り」のシステムがつくられ続ける。

 人月商売のITベンダーからすれば客のシステムなのだから、客が「現行通り」と言えばその通りにつくればよい(ただしプロジェクトは大概悲惨な結果になる)。ただし、そんな仕事ばかり続けていると、つまり仕組みを考えないコーダー仕事などを続けていると、エンジニアならぬ作業者には成長がない。というか35歳あたりから劣化が始まる。最新技術を習得するのは加齢とともに大変になるし、コーディングスピードも若手に勝てなくなる可能性が高まるからだ。

 そんなわけで、仕組みを考えて実装できる本物のプログラマーにならないと、中高年になったときに大変だぞ……と極言暴論らしくあおりたいところだが、現実はもっと複雑だ。「現行通り」のシステムがずっと生き残り続けているので、そのシステムのお守りをしていれば稼ぎは少なくても食いっぱぐれることはない。特にCOBOLプログラムが生き残っていると、とても安心だ。今どき若手が「参入」してくることはほとんどないから、コーダー稼業でも食っていけた。

 めでたしめでたし……とは、もちろんいかない。時代は大きく変わり始めている。そう、ビジネスや社会のデジタル化、いわゆるデジタル革命の進展だ。巨大プラットフォーマーが主導するクラウドの急速な普及により、既存のビジネスや社会を変え得る新たなサービス(仕組み)を低コストでつくれるようになった。だからこそ、少人数で起業したITベンチャーが続々と登場し、既存の産業や企業に取って代わるデジタルディスラプター(デジタルによる破壊者)を目指し、しのぎを削っているのだ。

 仕組みを考えてそれを実装できる本物のプログラマー、そしてアーキテクトにとっては、最高にハッピーな時代が始まっているわけだ。特に日本では圧倒的に人材が足りず、引く手あまただ。これからは20代の若手であっても、年収1000万円程度の「低賃金」しか出せないような企業で働く必要はない。転職、副業は自由自在。何なら優秀な仲間とともに起業に踏み切ってもよい。作業員ではなくエンジニアである限り、素晴らしい未来が約束されている。

デジタルの時代に座して死を待つことはない
 では、作業員にすぎない自称プログラマー、なんちゃってSEはどうか。これはもうお察しの通りである。人月商売のIT業界に在職する作業員はこれから先、どんどん用済みになっていく。この極言暴論で何度も指摘しているように、途方もない工数をかけてシステムをつくり上げる大規模プロジェクトはこの先、数を急速に減らしていくはずだからだ。

 大規模プロジェクトの花形だった基幹系システム刷新でも、ERPやクラウドサービスの機能を可能な限りそのまま使うことが当たり前になる。ERPベンダーなどに高額のライセンス料を支払うのに、どうでもよい自社独自の業務のやり方をシステムに組み込むために、さらにSIerにばか高い人月料金を支払うのは愚かだ――。そんな当たり前の認識が日本企業にもようやく広まりつつある。

 大規模プロジェクトの需要が大きいから、人月商売のIT業界では多重下請けという分業体制が発達した。元締のSIerは、少しだけ仕組みを考えるSEと現場監督のプロジェクトマネジャーを出し、2次請け以下の多くの下請けITベンダーが大勢のコーダーを送り込む。こうしたプロジェクトを幾つもこなすことで、人月商売のIT業界は潤ってきたわけだかが、そんな前時代的な労働集約型の商売はまもなく成り立たなくなる。

 くだらない基幹系システム刷新でお金をドブに捨てるようなまねをやめたユーザー企業は当然、浮いたIT予算を顧客接点のデジタル化といったビジネスのデジタル化に使うようになる。その際に必要となる人材はもちろん、仕組みを考えてそれを実装できるプログラマー(できればアーキテクト)である。そんなわけなので人月商売のIT業界にいる作業員たちは、コーダーなどに甘んじていれば先はないが、プログラマーというエンジニアを目指せば前途洋々たる未来が開ける。

 最後に、ここまでずっと曖昧に表現してきた「仕組みを考える」について、少し詳しく書いておこう。既に理解している読者も多いかと思うが、プログラマーやアーキテクトが考える仕組みとは、ビジネスの仕組み(ビジネスモデルや業務プロセスなど)とシステムの仕組み(アーキテクチャー、ビジネスモデルなどをどう機能として実装するか、など)の両方である。

 そうした仕組みを一体で考えるには、マーケティングや法制度などのビジネスサイドの知識と、クラウドやAI(人工知能)などの最新技術に対する知識が必要になる。「スーパーマンじゃないんだから、そんなの不可能だ」と思う読者が大勢いるだろうが、まさにその通りだ。だからこそ、様々な分野の専門家であるエンジニアや、ITに詳しいビジネスサイドの人たちが集まる必要がある。ただし、専門領域ごとに仕組みを考えるといった「分業」をしては駄目だ。一緒に仕組み全体を検討しなければならない。

 さて、人月商売のIT業界で自称プログラマーやなんちゃってSEの仕事に甘んじている皆さん、いかがだろうか。人月商売に先がないことを見切ったSIerは、下請けITベンダーを切り捨てながら、そちらの世界に人材をシフトさせるのは間違いない。切り捨てられる側にいる人たちも、座して死を待つことはあるまい。本物のプログラマーの仕事は未来があるだけでなく、やりがいがあって楽しいぞ。』