最近は、ITが面白いだとかつまらんだとか言って盛り上がってるけども、面白いってのは、どういうことか、ちょっと考えてみようか。
知識と学習#
一つ目は、学習するに足るだけの知識体系がそこにあるかどうか。
知らない事を知る、出来なかったことが出来るようになる快感ってのは、何度経験しても最高なんであって、一人でも多くの人にこの体験をして欲しい。素晴らしいことに、ソフトウェア技術だけに範囲を絞ってもまだ理解できてない事は大量にあるし、増え続けてる。
生成AIがアシスタントしてくれるけど、ちょいちょい嘘をついてくるってのが、また熱いよね。AIが言ってる事だけを真に受けちゃダメで自分でちゃんと試さないといけない。そして、インターネット上に無い情報について、やつらは手も足もでない。
最近は新しい技術が出てこないなんて言ってる連中もいるようだが、現実の社会課題を解決し、それを付加価値として提供できて初めて新しい技術だろ。ゴミみたいなチュートリアル一通り触って、それでおしまいじゃ専門知識とは言えねぇよな、俺達はプロだぞ。
まともに使えるエディタがあり、Lintやコンパイラで細かい作業ミスやアンチパターンをきちんと潰せる。まともなバイナリを吐けるコンパイラがあり、それらを一貫したプロセスでビルドできるCI環境があり、各種デプロイ環境やツールがそのバイナリを受け入れる体制がそろってる。そして、細粒度の監視だの、実行プロセスの異常検知だの、エラー時の対応だのが現実的な工数で対処できる。そういうランタイムなんて、そう多くはねぇ。そして、その状態まで技術が進展するのには10年単位の時間がかかる。
んで、今挙げたような事を、全部一通りまともに扱えるような技術者なんて、ほとんどいない。つまんなくなったとか言ってねぇで学習と訓練をしろ。サボってるやつに限ってつまんなくなったとか言い出すんだよな。
俺たちのJavaは幸いこういう事が高度に実現されているから安心して使ってられるわけだな。最近だと、Goはあっという間にこのレベルまで育ったわけで大変に素晴らしい。Rustはまだまだ不足かな。個人的にはPythonなんかも安心して任せられる言語だと思ってる。
TypeScriptはJavaよりもJavaだなって思いながら使ってる、色んな意味で俺はTypeScript大好きだよ。UI作るのにも、サーバ作るのにもいい。NodeのGCはJavaに比べるとアホだけど、あんま重要な事を任せなければ可愛いもんよ。どうせ今時のアプリケーションは1プロセスで信頼性を担保することなんてできねーし、アプリケーションプロセスの手前にはちゃんとロードバランサがいるんだ。気にせずプロセスは落としていけ。
UI作るフレームワークはもう何年もReact中心だよな。もう飽きたなんて思ってるやつは少数派だよ。そうでなけりゃ、useEffectの使い方解説するだけで、みんなが大喜びするわけねぇだろ。どいつもこいつも雑に使いやがって、おかしな使い方するから画面がチラついてしょうがねぇんだよ。
そういうのは、実装の詳細であってバッドノウハウだから本質ではない、とか言っちゃう?おおー、上から物言えば後はどこからか集められた皆さんが勝手に作ってくれるアーキテクト様は偉いねぇ。俺は少なくとも、そういう所にはいねーんだわ。要件定義から運用まで見れる範囲のものは全部責任を持って最高の状態に仕上げる。こちとら、そういうスタイルで仕事してんだわ。だから、文字コードがおかしくてうまく動かねー古いJavaScriptと格闘したりもする。とは言え、こういうのはマジで最悪だからみんなはやんない方がいい。
サーバについても同じよ。Javaだと大体JAX-RS使っとけみたいな所で落ち着いてるけど、社会課題をまともに解決するレベルに使いこなすってのは大変な事よ。確かにチュートリアル動かして雑なアプリケーションデプロイする所までは1日でいける。色んな事が整備されまくってすげー簡単になったなって思うよ。生成AI様に、使い方教えてくださいって言えば、細かい嘘混じりだけど何でもポンポン教えてくれる。それをコピペして動く範囲のものなら簡単に作れる。
でもよ、そんなんじゃ仕事は始まってもねぇんだわ。いや、確かにその程度の事が出来れば良い役割ってのはある。あ?なに?僕ちんはすごい「ぎぢつりよく」あるのに、こんな簡単な仕事しか任せて貰えなくてつまんないでちゅーって事?残念なこったな。
問題解決#
二つ目、その得た知識を実社会における問題解決に適用できるかどうか。
ソフトウェアが世界を侵食するようになったってのは、電車の中でみんなの手元を見ればすぐわかる。どいつもこいつも、スマホに嚙り付いていて完全に魂を奪われた状態だ。
勿論、俺自身もそう。ゲームで暇つぶしをするもよし、SNSで承認欲求を満たすもよし、買い物だってできる。勿論、学習のために本を読めるし、本を読んでるフリしながら漫画も読める。この片手に収まる小さいやつがいなかった頃の生活なんて、思い出したくもないってのが正直なところよな。
そして、ソフトウェア技術者ってのは、消費者でありながら、その提供者でもあるわけだな。自分は基本的にB2Bなソフトウェアしか作らないから、必ずしもみんなの手元にあるようなものを作ってる訳じゃないけどさ。
現代のソフトウェアシステムは、大前提としてインターネットがありウェブがある。一部のマニアしか使ってなかったおもちゃであった時代はとうの昔に終わって、今や上下水道と同じくらいにインターネットは生活と切り離せないものになってる。つまり、現代は人間側がインターネットに寄せてきてくれたので、ウェブで動作するアプリケーションを提供するだけで解決可能な社会課題が、それこそいくらでもあるんだよね。
ITつまんねーとか言ってる連中は仕事無くて暇なのかねって思うわ。
解決すべき社会課題がいくらでもあるって事は、それに対応するためにより高度な技術的知見や技能が必要になるって事。ビジネスが分かる必要があるだの、無いだのって話もあるようだが、現実社会の課題を解決できるだけの技能ってのは、よっぽど高度なものだよ。片手間にできるようなもんだと考えてんなら甘く見過ぎだろ。専門的な訓練が必要なものだし、一度訓練が終わったら一生使えるってわけでもない。継続的な課題解決への技術適用がありつつ、それに向けた準備も必要だ。これはソフトウェア技術者だけが特別だってんじゃねぇぞ、高度な付加価値を提供する専門職ってのはそういうもんだ。
最先端技術が生成AIでそれの応用の話ばっかり技術イベントで聞かされてウンザリしたなんてのも見たが、何言ってんだって話よ。生成AIが作れるシステムで解決できる範囲の社会課題なんて、ほんのちょっとだけじゃねぇか。便利で賢いエディタが増えたくらいの話よ。付加価値として提供できる課題解決に集中しろや。そのパートナーとして生成AIは信頼に値する存在か?
技術以外の事も分かる人間の方が金勘定だけやってる人間にとって使い易いってのは理解するとしても、技術者としてやってきたって人間が、それだけになってしまったなんて悲しんで見せるのは、了見が狭すぎる。流され過ぎだろ。
報酬#
三つ目、解決した問題に応じた報酬があるかどうか。
ITで金を稼ぐのは広告一択とか言ってんのはどんだけ見えてる範囲が狭いんだって話よ。確かにB2Cビジネスでは広告を使って収益性を確保することが広く行われている。でもよ、有償のコンテンツ配信サービスに全く金を払わずに暮らしてる人の方がすくねぇだろ。アニメでも、漫画でもゲームでも良いんだけどさ。非接触IC使った決済なんかも地獄便利よな。俺は小銭ジャラジャラするのも好きだけどよ。NISAやるにもiDeCoやるにも書面だけじゃ出来なくてITの力は必須だよ。こういうビジネスはどれもこれも著しく収益性が低いとでも?そんなわけねぇ。みんなクッソ稼いでる。
自分の仕事はB2BでITによって課題解決する事で対価を貰う仕事をしてるけど、そこに広告の要素は一切ない。システム作るのに使ってAWSやGoogle Cloudには毎年億単位の金を会社は払ってるし、それの何倍もの売り上げを作って利益を出している。それを原資に十分な給料やボーナスを貰ってるよ。
スタンプ売ってるSNS屋さんは無理に広告出さなきゃシステム規模に応じた売上が立たなくてきついのか?そりゃご愁傷様。でも、それは社会全体の話じゃなくて御社の話よな。
ただ、猫スタンプを友達に送れなくなったら生活に支障がでるから頑張って欲しい。そのためなら、頑張って広告見るよ。お願いだから猫が出てくるやつを多めにしてくれ。
まとめ#
正直言って、良い年こいた大人が公衆の面前で「~~はつまらなくなった」とか言い出すのは老化だよ、老化。俯瞰的に物事を見れて、歴史も知ってる斜に構えた俺カッケーってか?そういうシラけた態度がかっこよかった時代はもう終わってんだよ。
社会の持続的な発展を担うものの一人として、後進の皆さまがこの仕事に夢や希望をもって取り組めるように、継続的な改善を行う責任についてもう少しまともに検討してはどうかね。
最先端のモードは物事に真っすぐ向かって真面目に取り組む。これ一択よ。
反省したら、明日からはオートミール食ってプロテイン飲んで筋トレしとけ。今日は風呂に入る前にスクワット10回、寝る前にストレッチ30分な。忘れんなよ。