そろそろ「この数年~10年でプログラマの仕事は機械に取って代わられる」系の記事に一言言いたい

ここ1年、こういう内容の記事をよく見るようになった。
言っていることはもっともで、「ああ確かにそうだなあ」と共感する部分も多い。
今後技術が発達していく上で間違いなく単純作業は減っていくのは確実だろうし。

ただ2点自分が願うとしたら、彼らが語る「プログラマ」の定義を明確にして欲しいということと、彼らの論が必ずしも業界全体に当てはまることではないことを明確にして欲しいということです。

彼らが語る「プログラマ」の定義

何かしらのサービスを成功させている、もしくは成長の真っ只中にいる人がこういう事を語る場合、彼らの思い描く「機械に取って代わられるプログラマ」像は、いわゆる「与えられた仕事を淡々とこなすだけ」の人の事を指している場合が多い。
ちょっと考えればその人の語らんとしているプログラマ像はわかるとは思うけど、誤解する人もいると思うので、こうした定義は明確に書かれていたほうが親切だと思う。

余談だけど、そもそも「与えられた仕事しかできない」人間が淘汰されていくのって、そもそもプログラマに限った事じゃなくて、一般論として もっと世の中の広い部分に対して言えることなんじゃないのかなーと思う。

PAK12_10many500-thumb-395.jpgauto-3089

「IT業界」というワードの示す範囲

こういう系統の記事では「IT業界」というワードで論の実質的な適用範囲がうやむやにされるべきではないと思う
特にWeb系の企業の場合は、技術的な変化の影響も受けやすいし スピードが超速い(これは必然。現在のWeb業界において、スピードが遅いことは致命傷になる)から、ついついそのスピード感、物差しでIT業界全体を測ってしまう人が少なからずいるような感じがする。でも、考えてみるとそもそもWeb系とその他の技術の世界ってプロダクトのライフサイクルやスピード自体が違うし、一様に部分的な傾向を即座に全体に当てはめるのもちょっとどうなんだろうなあとは思う。

例えば歴史の長いものの場合、以下の2つの性質を併せ持っているので、一概にWebの世界の感覚で判断されるべきではない。

1. 一見すると何故そうしているか分からないが、他の部分とのしがらみの中で敢えてトリッキーな実装形態をとらざるを得ず、それが最適化された実装が随所に存在すること。
歴史の中で生き残ってきた技術は一般的なデザインパターンだけでは解決できないような様々な問題を沢山抱えている。
「一般的にはこうするのが適切」だとしても、その技術がある特定のドメインにおける問題ごとを抱えているがために別の方法が適切だったりする場合もある。
こうしたデリケートな問題に対して、仮にムーアの法則が存在しているとしても 、歴史と深く結びついたトリッキーな実装が随所に潜んでいるコードを正確に見抜きながらコードの最適化をしてくれるような人工知能がたった数年~10年で出てくるかは疑問だと思う ( もう少しスパンが長ければ可能性はあるにせよ )。

2. 変更が世の中にもたらす影響が大きいこと。
枯れて安定した技術だからこそ、今でもC言語をベースとしてプログラミング言語がつくられるし、皆信頼してlinuxを使うし、linuxをベースに様々な周辺技術がつくられる。
そんな所にいきなり最新の技術が採用されて何か問題でも起こしたら全世界が打撃を受ける。
( 根幹部分の技術がいかに広範囲に影響を及ぼすかについては、昨今のHeartBleedとかDNS cache poisoningとかがもたらした世界への影響度合いで見て取れる )

だから新しい技術を取り入れる場合においても、ベースとなる技術の規模が大きく歴史が深い場合は「比較的枯れて安定した新しい技術」を採用する必要がある。
さらには、「新しい技術を取り入れられないなら、そもそもベース自体を入れ替えちゃえばいい話じゃん」というわけにもいかない。
例えば世の中にはlinuxをベースとした周辺技術がソフトウェア・ミドルウェア・ハードウェアあらゆる場所に存在しているし、それらの技術と完全に互換性を保った状態で革新的な技術がいきなりパッと出てくるかといったら僕はまずありえないと思う。
マーケティング用語で言う所の「製品ライフサイクル」を見てもわかる通り、仮に革新的な技術が出てきたとしても それが世の中に浸透するのはそれなりの時間をかけてだろうし、その技術の周辺に存在する技術に対する互換性も時間をかけて徐々に担保されていくと考えると、従来の技術へのニーズがいきなりパッと途絶えることは無い。
少なくとも根幹の技術の少なくない部分が10年で機械的な作業に置き換わる可能性は相当低いのではないかなと思う。

よって、こうしたベース部分の技術を含めたあらゆるものに対する慎重な作業をごっちゃにして一様に「数年で機械に置き換わる」なんて言うのはちょっと乱暴だと思う。

とりわけジョブズの死は盛大に悲しむ反面、同年に亡くなったリッチーの事を気にもかけやしない(もしかしたら名前すら知らない)そんな人がもしITという世界の「全体」を指差して「プログラマの仕事は機械に取って替わられる」なんて大っぴらに公言しているとしたら、それこそ世の中のプログラマに対する最高の侮辱だと思う。

少なくともベース部分の技術においては慎重に議論されるべきだし、採用されるべきだと思う。ベース技術において信頼性や安全性よりスピードが重視されたとしたら 世界中が大混乱に陥ることになる。

PAK25_iphonegamenwareta500-thumb-395.jpgauto-3264

イメージしやすい最も簡単なケースとしては 導入した新しい技術の脆弱性をついてクレジットカード情報や個人情報、組織・国家の機密情報の漏洩するケースが増加したり、住所・職場等の個人情報が漏洩したことによるストーカー犯罪とか。そういうケースが頻発するようになれば、とりわけインターネットにおいては もう誰も個人情報保護なんて信用できなくなって、今当たり前のように皆がやっているようなサービスへの会員登録も減っていくと思う。

まとめ

「プログラマの仕事は機械に取って代わられる」という記事に対して「いやそりゃ違うだろ」と言いたいのではない。寧ろ、「確かに自動化されていく部分が増えていくだろう」とは本当に思っている。

さらには、「スピードよりも慎重に考えることを重視すべきだ」なんて事を言いたいわけでもない。もし軌道に乗り始めたWebサービスがPDCAのスピードを落としてあれやこれやと慎重に議論しすぎていては、たちまち競合に優位を取られてしまう。

僕が言いたいのは、少なくとも「取って代わられる人」の定義を明確にした上で、それが全体の話ではなく 限定された範囲の話であることを明確にした上で記事にしてほしいという事。

一部分に適用されるべき話を あたかも全体を見たかのように言い切ってしまうような書き方をされてしまうと、例えるならば 以前居酒屋で店員に「850円くらいのお飲み物まででしたら一杯目は無料です」と言われた時くらい違和感を感じてしまう。

※ なお、この記事は社会に出て間もない甘ちゃんが書いているので、考察の甘い部分が多々あると思いますので、そういう部分はどんどん突っ込んでご指摘いただければ幸いです。

Written by Nisei Kimura ( 木村 仁星 )

- Sponsored Links -

<<

Top

>>