私が業界に入ったころは、オブジェクト指向がもてはやされ、C++が流行のピークを迎えていました。クラスやら継承やらを知らないとバカにされ、C++を勉強する前に、オブジェクト指向自体を勉強しなければいけない、なんて時代だったことをおぼえています。今もってC++を未だに利用しているプログラマーもたくさんいるとは思いますが、今はPython、JavaScript、C#などの高級言語も盛んです。一方でVisual Basicが相当利用されていましたが、今はMicrosoft OfficeのVBAぐらいでしか仕事では登場しないんじゃないか、と思います。
そうやって、技術は変遷していきますが、なぜ変遷するんでしょうね。
システムを導入したときに、設計はそのときの手堅い構成を行うのが普通です。すごく最新のことを導入すると、未知の課題で大変な目に遭うかもしれないので、ここ二年くらいで最も実績のある技術が使われがちです。
ただ5年も経つと入れ替えの話が出始めます。これまではそのソフトウェアを入れていたハードウェアの保守期限が迫ってくるから、でした。
ハードウェアを入れ替えるなら、一緒に上のソフトウェアも新しくするかーと。
でもクラウドの時代で、ハードウェア保守の話が切り離されました。動かしたければずっと動いてくれるのがクラウドです(運用事業者が事業終了しなければ・・)。
では、最近はどのタイミングでシステムの入れ替えを行うのでしょう。
やっぱり、保守です。保守は保守でも、ソフトウェア保守です。構成していたソフトウェアが更新されなくなる。新しいセキュリティーホールが見つかっても対処されない。保守料が年々上がって、入れ替えた方が安くなる。などいろいろ。
この業界、上手くできてるなと思うのが、ソフトウェアが朽ちるのです。
デジタルなのに何で腐るんだ、という感覚を持っている人が非ITの人に多いので、困ったもんだなと思うことがあります。
今まで動いているんだから、これからも動くんだろ、同じプログラムなんだから。
ITの人間は、すぐ保守切れ保守切れ言って、新しいものを買わせようとする、と。
でも、例えば今さら、Java6で動いているプログラムについて、Java6を今から身に着けて、問題があったら対処する、ということを誰がやりたいですか?と。もう、Javaは15まで来てしまいました。
今さらRedHat Linux enterprise linux 4なんて知らんよと。VMware vSphere 4.0って何よと。
どんどんベンダー企業は改良を重ね、使いやすくしていっているのに、何で10年前の化石のような構成を保つために、大事な時間を費やさないといけないの、と。
この、朽ちていく感じ、を錬成するために、業界挙げて、保守理論、サポート理論を作り上げて来たんだなあって、20数年業界にいて強く思います。
単に業界の僕らが食べていくため、もあるし、化石のような技術につきあってられんのよ、と。それにお付き合いしてしまたら、他の仕事に移れなくなるでしょ?って。
パブリッククラウドの世界だと、最近は、データベースなどが特にそうですが、勝手にミドルウェアのバージョンが運営側でどんどん上がっていく、と言う方式も一般化しています。それで不具合起こるなら、アプリケーションの方で適応してね、と。データベースが勝手に新しくなるから、アプリケーションの保守をサボるとアプリケーションが朽ちるよ、って。
インターネット上で、最新技術だわいわいとプレゼンがアップロードされているのを見ると、技術者はやっぱり未来に向かってモチベーションがあるのであって、過去に向かって行くような仕事は苦痛でしかない。だから、この保守理論、サポート理論は大切にしなきゃいけないと思います。