今夜がλ

夜だけプログラマー

平成以降に生き残るWebエンジニアについて考える

2018年が見せた発展と凶器

2018年を振り返ると、Web開発のマイクロサービス化が非常に発展した年に感じた。クラウドプラットフォームの観点ではAWSGCPの各種サービスは益々の充実化を行い、フレームワーク・ライブラリ観点ではVue.jsアプリケーションの開発フレームワークNuxt.jsが特に日本で大きな賑わいを見せた。

これらの発展により、ある程度のレベルではWeb開発はエンジニアレイヤーではなくユーザーレイヤーで行われるようになった。つまりWebの知見を持っていない人でも自分の作りたいサービスが作れるようになったため、そのレベルで仕事をしていた人は今まで仕事を請けていた経営者や営業職と同じ開発レベルになり、一つ上の段階にステップアップしなければならなくなったのだ。

Webサービスで起業したいから企画するわ。君、絵ができるからデザイナーね。君は......うん、まぁ開発でもやっといてくれればいいよ」みたいな図式になるのはそう遠くない未来だ。(最終的には素人バンドが各々の楽器を決めるかのように役職が決まっていくのではないかと考えている。)
実際、「3ヶ月プログラミング勉強してサービス開発して起業しました」という人は就職活動中のサークルリーダー程度にいるようなので(彼らが成功するかどうかは別として)、今までの「Webアプリ開発請負人」は実質既にお役御免となっている。

この先生き残るパターン例

まず第一に至極当たり前なのだが、技術力のある人は生き残る。ただ、当たり前のところを勘違いしている方がいくらかいるようなので注釈を入れると、複数のプログラミング言語を利用できることは技術力に直結しない。どうも求人サイトの多くに見られる「XXX(プログラミング言語)での実務経験N年以上」といった必要条件が原因のようで、多くのプログラミング言語を利用できるのは多くの国の言葉を理解できるようなもののように感じる人が多いらしい。

もちろん多くのプログラミング言語に通じていること自体は良いのだが、結果的には学習機会が分散しており「浅く広く」の図式に陥りやすい。Web系の場合、基本的にはタイプの異なる2種類の言語(例えば動的型付けと静的型付けなど)を深くまで抑えておけば、他のプログラミング言語をゆっくり始めても1ヶ月あればそれなりに使えるようになるのではないか。モダンな環境で掲示板が作れるとアピールする人よりも、レガシーなPHPで様々なアプリを構築した人の方が必要とされるシーンは多い。(レガシーが悪とされるのは大概エンジニアの肩書き都合によるものだ)
もちろんレガシー環境の仕事は今後減り続けて行くと思うが、そのときに得た深い知見は尖っだ武器になる。

数本のなまくらより一本の業物を磨けばひとまずは十分だろう。

次に、実務でしか得られないような経験を持っている人であれば、問題はない。ここでいう「実務でしか得られないような経験」というのは
・人と金のコストバランスを適切に捉えられる人
・コストバランスの整った技術選定ができる人
・大量アクセスを捌いてきた人
・特殊な状況下でしか起こらないような問題を解決してきた人
・運用環境を丸々移行してきた人
・複雑な希望要件に合わせて適切なシステム設計ができる人
などである。 現状、各種開発サービスの特徴は札束で殴る形式のものなので、何も考えなければとにかく金がかかる。金をかけてどでかいコンテナを買うよりは、収納上手な家政婦さんを一人雇った方がいいケースもあるので、家政婦さんポジションをキープできる人はやはり強い。

他に例を挙げると、
・キャッチアップ・成長率が異常に早い
・サービスをグロースさせるセンスを持っている
・エンジニアリングとデザインの両方に長けている
などの様々な要素があるので、エンジニアリング以外にできる何かを確立しておくと、掛け算的に生存確率が上がるはずである。

経験の浅い人は核となる技術を探すべき

先述した通り、エンジニアにとって技術は刀のようなもので、いざというときに自分を守れる役割を持たせるべきである。最新のフレームワークやツールを追い続けるのもいいが、何も武器がない状態が続くと「顔が広いだけの素浪人」のまま一生を終える場合もあるのだ。まずは核となる技術を身につけて、その上で自分の生産力を最新の技術で倍増させるやり方をオススメしたい。

PythonRails・Laravel・Go・Angular・Vue・Reactを1年ずつ経験しました。得意なものは特にありません」というようなアラサーなど欲しがる人はいない。また、最新技術を追いかけるということは同じ時間を使って技術競争に打ち勝たなくてはならないので、自分が優秀だと自覚していない場合は今追いかけている最新技術の中から自分の核となるものを選び出す必要がある。なおフロントエンドのは場合はまた別で次々に技術が死んでいくので、フロント一本で行く場合はキャッチアップの素早さを磨いていく方が得策かもしれない。

また、快適と思えるような難易度に浸るのも危険だ。例えばProgateでは易しい課題を与えてユーザーのモチベーションを高めてくれるが、実際の案件はそうはいかない。発生している原因が分からない、解決できるかわからない、そもそも問題なのかどうかすら分からないなど、様々な壁にぶち当たると思う。その艱難辛苦を技術で解決する力こそエンジニアリングであり、Paizaのスキルチェックを解き続けたり、寿司打のお勧めコースを食い続けることで身につくようなconfortableなものではないのだ。

paiza.jp

typingx0.net

フレームワークは貴方の生産力を上げるためのものであり、できないことをしてくれるツールではない。貴方にとって不可能なことを可能にするのは貴方自身であるべきである。

ホームページビルダーが夢想した未来

今は昔、「ホームページビルダー」というソフトがあったらしい。私はこの時代のことをよく知らないので詳しくは 分からないのだが、HTMLやCSSの知識がなくてもGUI上でホームページをデザインすることのできる、当時としては非常に画期的なソフトウェアのようだ。
ここでは敢えて「ホームページ」という表現を使わせて頂く。
ただ、細かいカスタマイズについては難しいようで、なかなか個人個人の要望に応える力はなかったように思える。

おそらくホームページビルダーが実現したかった未来というのは、誰でも、専門知識がなく、自分のWebサイトを構築することができるものだったのだろう。そして今、それをPaaSやFaaSで世界の名だたる大企業たちが実現しようとしている。ホームページビルダーが出た当時、もしかすると「このソフトはWebサイト製作者を殺す」と噂になったのではないだろうか。ホームページビルダーがどれほどの猛威を奮ったかは不明だが、クラウドの技術が半端なWebエンジニアを殺し始めているのは明確である。

ホームページビルダーのifが今、形を変えてやってきたのだ。