ソフトウェアエンジニア生存戦略:急速にコモディティ化している技術とどう付き合うか
はじめに断っておきますが、このポストの主張は、個人のものであり、所属する組織の見解ではありません。
近年、
* GAFAが提供するプラットフォームやクラウド基盤
* 大小様々な企業が提供するSaaS
によって、急速にソフトウェアエンジニアと呼ばれる人たちが扱っている技術が急速にコモディティ化している。
かつて自前でやってきたことがいろいろなことが、上記によってリプレイスされている。
Before(雑に2000年代) | After(雑に2010年代) |
---|---|
自前でサーバの調達・監視 データセンタをもつ企業も |
クラウドベンダのサービス+α |
プログラムの高度なチューニング | お金さえ払えばクラウドでスケールがかんたん(人件費に比べたら安い) |
IEやFirefoxなどWebブラウザの仕様乱立 | まとまってきてる = どれも同じ |
CとかJavaとか | RustとかKotlinとか、より安全かつかんたんにプログラムがかけるようになってきている |
その他にも、以前は企業や個人に属していたノウハウも、インターネットの発達やオープンな文化(SNSとかも含め)で、ベストプラクティスとして広まっている。
こうした中で、Pythonの「誰が書いても同じようなコードになる(※1)」じゃないが、誰が作っても同じようなシステムになるという状況になってきていると感じている。
もちろん全然スキルがないソフトウェアエンジニアと、ミドルレベルでは全然違うが、ある程度適切に経験を積んでくれば、あぁいつものあの構成ね、となってくる部分も多い。
すると、どこで差別化をはかればいいのか?
よくある回答が、OS等の低いレイヤーまで理解しておけ、アルゴリズムやデータ構造を勉強しておけ、というものである。これはこれで正しいが、業務で価値を発揮できる場がどれだけあるか?万が一のトラブルに備えて勉強しておくこと自体は素晴らしいし、自分自身もそうありたいと思って、学習はしているが、実際問題ビジネスの要求はそこではない。
なかなか、たくさん勉強をさせてくれる企業は少ないだろうし、もしそういう企業があるのであれば、ちょっとずれている気もする(そういう会社があってもいいし、素敵だと思うが、どうやって企業を維持するのか想像がつかない。SESかな?)
- 発揮する場が少ないとわかっていながら、低レイヤーのことを学ぶ
- 次々にでる新しいサービスをキャッチアップする
- ビジネスからは、素早く安定してサービスやシステムを世の中に出すよう求められる
なかなか世知辛い。
※1 いやならないでしょ、というのが個人の意見
この記事へのコメントはこちら