プログラマに明るい未来はあるか
わたしの知り合いの子供がIT関係の専門学校に通っているんですが、その学校はコース選択で開発系かインフラ系かを選ばなければならないことになっているそうで、コース説明の際に「開発系に進んでも将来に希望が持てないから、インフラ系の方がお勧めだ」的なことを言われたらしいです。
で、わたしはその保護者に「実際のところどうなんだ」と意見を求められたんですが、「そんなことわたしに聞かれたって知らんよ」と思いながらも、「開発系にも将来性はあるよ! 少なくとも、わたしはあると思ってるよ! だから、本人がどちらに興味を持っているかを優先した方がいいと思うよ!」と答えておきました。
それにしても、その見解が専門学校の方針なのか、教官の個人的感想なのかは分かりませんが、学生さんがそういう風に指導されているときいてちょっとヘコみました。
「開発屋はお先まっ暗かい!」
また聞きなうえ、間にはさまれてる人はほとんどIT関係の知識がないので、その先生の言いたかったことがわたしのところにちゃんと届いてない、という可能性もありますが、ネット上でも同様の意見をちらほらと見かけます。早いとこプログラマから抜け出した方がいい、といったブログやつぶやきもあちこちで読みました。
「開発ツールがどんどん進化していって、コードレスなソフトウェア開発が主流になっていくから、必要とされる開発者(主にプログラマ)の数が減っていくことになる。これから生き残り競争はどんどん厳しくなっていく」というのがわたしが読んだ範囲で一番多い意見ですが、基本的にはこの意見に賛同します。
わたしはこれまで「プログラマ」と呼ばれている人たちを、「プログラマ」と「コーダー」に分類していました。両者の違いは「プログラムのデザインをするかしないか」ということです。でもこれからは、「コーダー」は「オペレータ」と呼ぶべき存在になるんじゃないかと思っています。つまり、コードすら書かない状況になって「コーダー」と呼ぶのが不適切になってしまうのではないかと。で、「オペレータ」となるとこれを「プログラマ」と呼んでいいのかが微妙になってきます。プログラミング言語を操る仕事をしているから「コーダー」も「プログラマ」の一部、と思ってきましたが、コードを書かないとなると、もはや「プログラマ」とは呼べなくないような気がします。
まあ、ここらへん「じゃあ、コードって何? コマンドのかたまりをオペレートしているとしたら、オペレーションもコーディングと言っていいんじゃない?」とかいう考えも浮かんできて、いろいろとめんどくさいんですけど(苦笑)。
というわけで、必要とされなくなるのは「プログラマ」ではなく「コーダー」だろう、とわたしは思います。「プログラマ」は必要であり続けるでしょう。技術の世界において、「作る人」がいらなくなる、というのはあり得ないと考えているので。
しかし、なくならないとは言っても、これから先、プログラマで食べていくことの難易度が上がる可能性は高そうです。着実に年齢が上がっていくことも考慮にいれれば、「ずっとプログラマ」という選択は賢くない、という意見には同意せざるを得ません(年のいったプログラマは嫌われますからねえ)。
けれど、わたしにしてみれば、難易度が高かろうが、門が狭かろうが、「プログラマを続けよう」と思った10年前の気持ちが揺らぐことなくあり続ける限りは、先なんか読んだってしかたないのです。
お先まっ暗でもいいよ。まっ暗な道だって歩こうと思えば歩けるし!(←事故る可能性は高いけどね)
いろいろと考えたあげくに、そんな軽~い結論に至った45歳がここにいます(爆)。
不安なんかたくさんあります。でもしかたないですよ。続けたいんですから。
好きなことだけやって生きていけないとしても、好きなことを続けることをあきらめたくはないのです。ただそれだけのことなんです。
それに、暗くしてやる気なんてないしね。わたしが明るくするしね!(←大言壮語)
コメント
仲澤@失業者
こんにちは。現役老人プログラマの仲澤です。
自分は「好きなことを仕事にする」がポリシーなので、
それが変わってしまえば、そっちを仕事にするつもりです。
以前は「プロオーディオ」を仕事にしてました(つまり好きでした)。
が、つまんなくなったのでやめました(趣味に先祖帰りしました)。
現在は「C++言語のプログラム」が好きなので、それを仕事に
しているわけですが、実は同時にある別の「好きなこと」も仕事にしてます。
ぜんぜん金にならんけど(笑)。
若い頃は「自分の仕事を好きになる」ポリシーでしたが、がんばった
あげく心が病気気味になってしまいましたので、ポリシーごと捨てました(笑)。
やっぱ、無理はいけません(vv;)。
最初に修飾したときの上司に言われたことを今も肝に銘じています。
「仲澤君、君はねあまり自分に素直じゃないね、いやなことをうれしそうに
やっちゃいかんよ。そういうことは長続きしないし、大成もしないね。」
開発ツールが進歩してプログラマーの仕事がなくなる、
なんてことはFORTRANができたころから言われていたと聞きます。
厳密に考えると、それは間違ってはいなかったのですよね。
そのころにプログラマーと名乗るからには、アセンブリ言語くらいできて当たり前、
だったのですから。
高級言語なんて疑似言語みたいなものしか書けないなんて言ったら、
そういう人はプログラマーとは名乗れなかった。
で実際「プログラマー」の仕事はなくなり、「プログラマー」はいなくなったわけです。
その代わり、「プログラマーなどと名乗れない人」が「プログラマー」を名乗るようになったと。
高級言語でしか書けない人がたくさん「プログラマー」と名乗るようになった。
プログラムの歴史はこの繰り返しでしょう。
FORTRANほど派手な変化はあまりないかもしれませんが、
もっと地味な変化をたくさん積み重ねて現代にいたるわけです。
今まで作っていたものが簡単に低コストで作れるようになったら、
同等の値段でもっと複雑で高機能な物を作る仕事が出てくる。
それだけのことですね。
この流れが止まるのはいつになるかを考えてみると。
プログラム言語が日常会話と同程度なところまで進化するまではとまらないのではないですかね。
つまり、ユーザーが適当に話をしたら、空気を読んで最適なシステムを仕上げてくれるコンパイラができるまでは、
プログラマーという仕事は安泰なわけです。
今の新人さんが定年になるころまでは大丈夫なんじゃないでしょうか。
まあそれまでに、
インド人に全部仕事とられるとか、
日本経済が破たんしてシステム発注する会社がなくなるとか、
そういうほかの要因は考えてませんけど。
インドリ
確かに日本では将来が暗いですよね。
勝手にプログラマに対して色々な妄想を押し付ける会社が多すぎます。
私はそもそもプログラマ=コーディングだけというのが非論理的過ぎると思います。
システム開発をしていると、分析・設計・実装の技術、および広範囲な知識が必要になってきます。
システム開発はとはつまるところ、現実のモデル化を詳細化していきコンピュータの世界で具現化する事です。
全てに通じてなくては出来ません。
自動化については、確実に起こります。
私自身がそういったツールを作っていますのでこれは確実です。
しかし、ツールは現実のモデル化が出来ないという根源的な弱点が存在します。
自動化ツールを遣うと始めは快適なのですが、大規模なコード生成はアジャイルな開発についていけなくなります。
付いて行くようにするのは、領域を細かく設定し、開発ツールを詳細な事例に対応できるように拡張せねばなりません。
これが面倒です。自分で直接実装した方が早い。
それで結局は、一部自動生成、他は自分で実装した方が速くなります。
私の現在の開発スタイルはこれになっています。
プログラマ=プログラミングだけというのが非論理的な前提なので、そういったプログラマは消えるか、そういった妄想を抱き続ける会社は倒産するでしょう。
でも、そもそも日本のIT業界が非論理的な事を繰り返すのが問題の本質なので、今のままだと本当に暗いですよね・・・
経営陣が本当の情報処理技術を身につけて、正しい経営をしてほしいのですが、日本の商慣習を考える無理っぽい。
にゃん太郎
こんにちは、ひでみさん。冬眠中のにゃん太郎です。
放置プレイ中の自分のコラムのタイトルに近いのでコメントしてみました。
プログラマの仕事はなくならないでしょうが、これで生活にして行く事は段々難しくなっていくと思います。昔と違い今は選択肢も増え、簡単にシステムが構築できるようになっているから専門職でなくても良いからです(昔に比べて、ですが)
昔はインターネットもなく、資料も乏しかったのでとにかく本や会社の資料、メーカーのデータシートなど調べまくった記憶がありますが、今はググればたいていのコードは出てきます。私は昔から技術書を買うのが好きだったのですが(必要だったというのもありますが)、最近はあまり買いません。買わなくても事足りるからです。その気になれば敷居はずいぶん低くなっているので、それなりのプログラムも専門業者でなくても出来るでしょう。
あと、作る必要も減っているのでしょうね。昔はパソコンのソフトウェアもあまりなかったので、ワープロとか電卓とか簡単なお絵かきソフトとかは自分で作った記憶があります。これは仕事に関しても同様でした。ところが、最近は市販でもフリーウェア(シェアウェア)でもオープンソースでもたいていの物は検索の手間(少しの時間)とお金で解決できる事が多いです。つまり、専門の開発者を何人も雇うよりは管理者を数人雇ってソフトを購入して設定・運用させた方がはるかにコストがかかりません。
メーカー系は別でしょうが、ユーザー系や独立系はいろいろ考えて工夫していかないといずれ商売として成り立たなくなるでしょう。それはプログラマも含めたソフトウェア技術者がそれで生計を立てられなくなると言う事だと思います。いずれ、でしょうが。生き残りたいならすべてを一人でこなせるようになるしかないかも知れません。
forseti
こんにちは。forsetiです。
>「本人がどちらに興味を持っているかを優先した方がいいと思うよ!」
これに尽きると思います。
仮にインフラ系の方が良かったとしても、その分野に興味なく卒業した学生が就職できるとは思えません。
やみくもに就職という結果を追っても厳しい結果が返ってくるのが最近の就職状況のように見えます。
最近、「コードを少なくするために行われた工夫を理解できる人が少なくなり、
その工夫を行う事が禁止されて非効率極まりない実装になった」といったような話を耳にしました。
こんな事を無くすためにも、プログラマの存在意義は簡単には無くなってはいけないと考えるようになりました。
質の高いプログラムから多くのロジックを学べたり、
色々な業界の知識が得られたり、
生活を考えるとろくでもないですが、捨てた業界でも無いと思うのですがね・・・・・・。
こんにちは。あとむと申します。
いつもひでみさんの記事楽しませていただいております。
学生に対する回答としては私もひでみさんの仰る通り、
同じ答えをすると思います。
先生の話は多分、インフラはクラウド等ニーズがあるけど
アプリは所謂スーパープログラマじゃないと生き残れないよ、
という話なのかな?と思いました。
ただこれも突き詰めればインフラだろうがアプリだろうが
IT業界にいるという限り最新の技術スキルを磨いて取り入れるという
努力が出来なくなればあまり関係ない気がしますねぇ。
自分に置き換えると、実務ではプログラムをあまり書くことがないですが
プログラムは普段から書いていないと設計等行う場合に
実装者の気持ちが分からなくなる恐れがあるかな?と思うので書くよう
気を付けているというところでしょうか。
ひでみ
こんばんわです。ひでみです。
いつもコメントありがとうございます。
それと、いつもコメント返しが短くてすみません。いろいろと考えるところはあるんですけど、長くなりすぎてしまって。いつか、コラム内でお返事できればよいなあ、と思ってます(だけど期待はしないでねっ)。
仲澤@失業者さん。
「好きなことを仕事にする」と「自分の仕事を好きになる」は前後が違うだけなのに、まったく違うことなんですよね。
私は最初はこの仕事があまり好きではなくて、実はとりたてて好きになろうとも思っていなくて、他にやれることがない、という消極的な選択で居座っていたら、なんか好きになっていました。
もしかしたら、好きになろう、とか考えなかったのがよかったのかもしれません。
自分自身に何かを強制しようとすると、本当にこわいことになります。経験済みです(苦笑)。
まりもさん。
> 今まで作っていたものが簡単に低コストで作れるようになったら、
> 同等の値段でもっと複雑で高機能な物を作る仕事が出てくる。
おっしゃるとおりだと思います。
今、簡単に実装できるものが、昔、どれだけむずかしいことだったかを、たまに思い返すんですが、むずかしかったことが簡単になっても、やっぱりプログラミングはむずかしいんです。要求や環境の組み合わせが複雑になった分、余計にむずかしくなったようにも感じます。
インドリさん。
> 自動化ツールを遣うと始めは快適なのですが、大規模なコード生成は
> アジャイルな開発についていけなくなります。
> 付いて行くようにするのは、領域を細かく設定し、開発ツールを詳細な
> 事例に対応できるように拡張せねばなりません。
> これが面倒です。自分で直接実装した方が早い。
これはよっくわかります。開発ツールのコツというかクセをつかむのは大変ですしね。
そういったものを使っていた頃は、下地を塗りつぶすところまでやってくれたら満足するべき、くらいの気持ちで使っていました。
とはいっても、ここらへんはいずれもっと洗練されたツールが出てくるんじゃないんですかね。
ていうか、つくりたい(笑)。
にゃん太郎さん。
一からつくる必要のあるシステムが少なくなってきていて、一からつくる必要のあるシステムは難易度が高い、ということなんですよね。だから、プログラミングの難易度があがって、プログラマの壁は高く厚くなっていくんじゃないかと。
まあ、考えようによっては、簡単なコードは誰かがツールで生成してくれて、プログラマは一筋縄ではいかないおもしろいプログラムばっかり書かせてもらえるようになる、ということですよ(←めっちゃ都合のいい解釈)。
forsetiさん。
> > 「本人がどちらに興味を持っているかを優先した方がいいと思うよ!」
> これに尽きると思います。
> 仮にインフラ系の方が良かったとしても、その分野に興味なく卒業した学生が就職できるとは思えません。
> やみくもに就職という結果を追っても厳しい結果が返ってくるのが最近の就職状況のように見えます。
他に興味があるのに、こっちの方が就職に有利そうだから、とかいう理由で別のルートを選択したら、やっぱりどこかでムリが出そうな気がするんですよね。
興味のないことをやっている人って、意外にわかるものですから、そういった人を採用したがる企業もいるとは思えません。
あとむさん。
> 先生の話は多分、インフラはクラウド等ニーズがあるけど
> アプリは所謂スーパープログラマじゃないと生き残れないよ、
> という話なのかな?と思いました。
そうですね。多分、そういうことなんでしょうね。
それにやっぱり、開発系の仕事は収入的にも稼動時間的にも波が激しいというか、安定しないというか……。
okinaka
クラウドが流行るとインフラ系のお仕事は不要になってしまい、
有望な職種ではなくなるかもしれません。
(クラウドの運営会社に就職するなら必要ですが、いずれ淘汰されていくのではないかと)
環境はどんどん変わっていますが、技術の専門職は常に必要とされるはず。
どれだけ柔軟に変化に対応できるかどうかが重要なのではないでしょうか?
インドリ
>これはよっくわかります。開発ツールのコツというかクセをつかむのは大変ですしね。
いえ。自分で作っています。
簡単なシステムならば、全て自動生成するぐらいまで作り込んだ事があるのですが、自分で作って理論的な限界が分かりました。
ですから、大丈夫です。
あの手の開発ツールは、理論的に限界があります。
所詮機械なので、人間と同じように思考出来ませんし、自動生成するメリットがない問題領域があります。
自動生成を実装するコスト<生成するプログラムの手間
の不等式を成り立てさせなければならないので、不等式が成り立たない、人間的なコードや、状況に即したコードは人間が作り続けないとならないと思います。
そして、開発ツールを作る側に回れば大丈夫です。
インドリ
済みません。
今気付いたのですが、ひでみさんが仰っているのは、開発ツールの使いやすさが生成するコードを上回らなければならないという事ですね。
失礼しました。
コードレスでなくても、static メソッドでいい!
ほんとに、オブジェクト指向知ってるやつなら、
staticだらけのコードを自動でリファクタリングして、
ポリリズムコードにするツールを作ってみろ!
ひでみ
こんばんわです。ひでみです。
okinakaさん。
> クラウドが流行るとインフラ系のお仕事は不要になってしまい、
> 有望な職種ではなくなるかもしれません。
そうですね。今、有望な職種が10年後も有望とは限りませんよね。
特にやりたいことがないから、とりあえず今、仕事がいっぱいありそうなとこに行っとくか、というのもひとつの判断ではありますが。
みながわけんじさん。
「staticだらけのコードを自動でリファクタリング」というのは、かなりおもしろいテーマですね。
ちょっとつくってみたいです。
ところで、「ポリリズムなコード」ってなんかかわいいですね。
踊りだしたくなるような感じです。
CMP
ひでみさん、それって釣り針のような・・・。
アラファイブ
上級職は、臨機応変さを他人に移転し肩代わりしてもらう代わりに、長く
現場にとどまり、判断を下していくのが要諦だと思いますが、その場合、
その人は有る範囲の仕事の所有者である必要が有ります。
仕事の所有が無い場合、上級職であっても、臨機応変さを受ける側に回って
もらわないと、仕事が回らないのですが、どうもそれがうまくいっていない
様に思います。
むかしは勝手知ったる上席者が臨機応変に立ち回って、うまく仕事を
回していたのだと思うのですが、その辺が妙な事になっています。
プログラマがだめで、リーダーとかが良いとされていたのは、彼らが、
精度の高い計画などにより、臨機応変さを**無くしてくれるのでは**
との期待からであって、それが到底無理ではないかとなってしまうと、
いまからさらに計画的に毎年養成すべき職種でなくなっているという
のが正しく、それはプログラマも同じなので、これからこの業界に入る
人は、「詳細の理解をいとわない見習いSEもどき」になるより無いのでは
無いでしょうか? (それを10年泥とみなすならそうかも知れませんが)
わしらソフト屋はWHAT(何をしたいか)からHOW(どう実現するか)への変換作業でメシ食ってると思ってます。
「開発ツールがどんどん進化していって、コードレスなソフトウェア開発が主流になっていく」のはWHATからHOWへの変換が機械的にできる部分であって、
WHATからHOWへの変換にヒトサマののーみそが必要な(つまりコーダーじゃ無理な)部分がそんなに減ってはいないように感じてるんですけどね(僕のやってる分野では)。
ひでみ
こんばんわです。ひでみです。
επιστημηさん。
> WHATからHOWへの変換にヒトサマののーみそが必要な(つまりコーダーじゃ無理な)部分
> がそんなに減ってはいないように感じてるんですけどね(僕のやってる分野では)。
そうですね、私もプログラマに託される仕事は減らないんじゃないかと思います。
それでも、プログラマの道が厳しくなるんじゃないか、と思うのは、仕事の総量は減らなくても、プログラマに求められる仕事のクオリティというかハードルがどんどんあがっていくんじゃないかと予想しているからです。
つまり、「フツーのプログラマなんかイラネ、スーパープログラマよこせよ」的な考えが主流になっていくんじゃないか、と。
まあ、頭数そろえてもしかたない、という考えがあたりまえになるのは悪いことじゃないと思いますけどね。
>「フツーのプログラマなんかイラネ、スーパープログラマよこせよ」
考えようによっちゃ、フツーのプログラマがスーパーに変身するチャンスでもあるのかと。
機械的な変換で済むトコはちゃっちゃとツールで済ませ、浮いた時間がのーみそフル稼働するクリエイティブなトコに使えるんなら(まともなのーみそ持ってる)フツーのプログラマにもメリットあるよねー。