見出し画像

それでも『プログラマ』を目指しますか?

こんにちは。long(@kametaro)です。1週間で自分がつぶやいたことを1つピックアップして妄想を膨らませる試み。今週はこちら。

プログラマといえば

かつて、プログラミングは一つの職能だったわけです。とくに2000年より前は言うまでもなく、2000年以降もつい2010年くらいまでは「業務で使うプログラミング言語=Java」と言っても過言ではないほど、Javaというプログラミング言語が書けるということが、差別化された有用な技能でした。とりあえずJavaさえ書ければ、どこかのシステム会社に需要があるやろという感じで、みんなこぞってJavaの勉強をしていたものです。そうして、なんとか仕事をゲットできたものの、何が何だかよくわからないまま、オブジェクト指向とかポリフォルフィズムのよくわからないアナロジーを学びつつ、実際の業務ではやたらと長ったらしい前世代から継承された逐次処理のコピペ山をうんざりするほど眺めていました。

スクリーンショット-2019-08-24-13.08.40-1024x604

さて、2010年代に入ると、徐々にクラウドプラットフォームが台頭してきました。当初こそ「クラウド?いやー、そんななんだかよく分からないところにお客さんのデータを預けられんやろう。データセンターに自社のサーバを置いて管理するのが一番安全だし安あがりだよ。」という意見が大半でしたが、あれよあれよという間に、そのほとんどがクラウドサービスへと置き換わっていって、逆に2015年以降にエンジニアになった人はほとんど、最初からクラウドネイティブ世代と言えるんじゃないでしょうか。そういえば、以前とある超有名サービスのCTOの方が「オフィスにサーバールームが必要な理由が分かりません・・。」とおっしゃってたのを聞いて「ですよねぇ」と思いました。

画像2

プログラミング界隈の状況が一変

てな具合に、この20年でプログラミングを取り巻く状況は一変しました。とくに、ここ2、3年の変化は非常に目まぐるしいものであったように感じています。

たとえばインフラにおいては、コンテナ化の波は着実に現場にまで押し寄せてきました。2015年にkubernetes v1.0がリリースされた段階で、オーケストレーションの恩恵について理解できていた人がどれほどいたでしょうか?それが5年経った今日ではネコも杓子もみんなkubernetesです。これも当初は、オーケストレーションのような複雑な仕組みが果たして世間に受け入れられるのか?と懐疑的な声の方が多かったように記憶しています。

また、AWS Lambda(2014~)やGCP Cloud Functions(2017~)といったFaaSは、そもそもサーバーなんていらないんじゃね?(serverless)という思想から誕生して今では完全に実用に溶け込んでいます。これも当初は「こんな限定的な機能での運用は厳しいのでは?」と考えられていました。Strutsは流石にその頃すでにレガシーと呼ばれてましたが、RailsやDjango、Laravel、Expressといった様々な言語によるWebフレームワークを使ってアプリケーションやAPIを作りセルフホスティングする、そういうそれまでの常識に一石が投じられたのでした。

さらに、Firebase(2016~)、最近では AWS Amplifyといった非常に便利なmBaaSが誕生し、アプリには提供されるSDKを入れて(文字通りコピペして!)わずかな設定を行うだけで、アプリの設定切り替えや、データの永続化、分析などの細々めんどくさいことを一切まかせられる恩恵が得られるようになりました。

スマホアプリ開発においては、Flutter(2018~)の勢いは凄まじく、実際アプリを開発した経験がない人にとっても非常に理解しやすい、見た目の良いコンポーネントが充実していて、アプリ開発の難しさという障壁は一気に下がったという印象があります。

スクリーンショット 2020-09-06 19.42.25

それでも『プログラマ』を目指しますか?

この流れは、このまますごい勢いで加速していくことでしょう。そしてこの先、NoCode、LowCodeのアプリケーションが完全に市場に浸透するまでどのくらいの時間を要するのか。その頃プログラミングに価値はあるのだろうか?立ち止まりたくなると思います。

しかし逆にぼくは、今こそプログラミングを学ぶ価値は大いにあると、そう思っています。でもそれは、かつてのとりあえずJavaさえ書ければ、どこかのシステム会社に需要があるやろという時代の『プログラマ』ではありません。「プログラミングができる=プログラマ」という職能の価値は確実に無くなります。(※これは仕事用としてのプログラミングの話です、ノスタルジー、趣味、そういうのはここでは言及してません。)

では、なぜ縮小市場であるにもかかわらずプログラミングを学ぶ価値があるのか。

ぼくがそう考える理由としては、まず、昔に比べてプログラミングを学びやすい、という点があります。YouTubeでいろんな言語を詳しく解説してくれています。便利なライブラリが溢れ、複雑で難しいレイヤの技術は尽く隠蔽され、実現したいサービスとプログラミングという手段は、今後ますますシームレスになっていくと思っています。さらに、マネージドなインフラには、ますます機械学習による予測的な運用機能が追加され、キャパシティの増加傾向などを人が推測することなく自動で行われるようになります。そうなれば、いっそう開発者はサービスを作ることだけに注力できるようになる。つまり、プログラミングを学ぶコストが激減する一方で、プログラミングができれば思い描くサービスの実現に近づけるというぐあいに、学ぶ費用対効果がますます高まるということです。

次に、そういった世界観において、プログラミングの知見があることで、次のビジネスへの発想に繋がっていくと思います。これまでBizサイドの人にとってプログラミングは多少苦手なものという方も多かったのではないでしょうか?それが一気に参入障壁が低くなることで、誰かに作ってもらわないと思い描くサービスを実現できない、という状況から抜け出せます。プログラミングを学んで、思い描くサービスは自分で作っちゃいましょう。

あと、定型的な分析に関していえば、今後も新たなSaaSなどにとって変わられ、いずれは競争力を失っていくと思いますが、そのときにアドホックな分析を自ら行えるプログラミングスキルがあれば、それは非常に強い競争力になります。さらに、たとえば量子コンピュータの実装の仕組みを今のうちに深く理解することができれば、次のより本格的な実用フェーズにおいて、いち早く先手を取るチャンスになるのではないでしょうか。

まとめ

今週もまた箸にも棒にかからなことをつらつらと書いてしまった。どっちにしろ、ぼくの場合はプログラミングが好きなので、死ぬ間際まで何か書いてるんでしょうけど。

来週もよろしくお願いします。

この記事が気に入ったらサポートをしてみませんか?