見出し画像

Computer Scienceの学位がなくてできる仕事・求められる仕事

現在、Computer Scienceの技術分野と前提知識をまとめた記事の学士版を書いてますが、割込みで前回の補足記事です。前回、IT業界マップとして知識と記憶を中心に書かせて頂きましたが、日本で主流なSI業界とWeb業界以外があまり見えてないから漏れ多そうと思ってたところ、Courseraに良い記事があったので、それを基に、その日本語版、として書かせて頂きます。前回書いたのは下記の記事です。

今回の元ネタの記事

今回の記事は前回の補足と下記の記事+αです。CSや近い専攻の方で元記事を英語で読める人はそっちを読んでここはそっと閉じて頂いても構いません。自分の利益になる方法で自分の出す情報は使ってください。

正直、インフルエンサーの発言に違和感がすごく多くて、記事を書いている中で少しずつ、この違和感の原因が見えてきました。まず、すごく思ってるのはWeb開発ってそんなに難しい仕事か?ということです。同時にやりたいことか?とも。自分はWebサイトを高校生の時に独学で作ってましたし。当時まだWebサイトも少なく、同じ趣向の人のたまり場が作りたかったのでWeb開発は手段で目的ではありませんでしたが。

「え、それ高校生が一人でできたことだよ?」と感じるSNSでのドヤリ発言もチラホラ…。正直SI業界にいた15年前に最初の現場でWebフレームワークばかりいじってて、ゲーム業界に移ってからWebベースのゲームでAngular.jsいじったりもしましたが、CSの修士取って戻ってきて、インフルエンサーの発言を見て、正直、CSの学位取ってまでする仕事かな?と思ったところ、最近この記事を見ました。正直、自分はWebには早々に飽きて、というか技術力や作れるものの限界を感じて他の業界に移りました。と言っても、手段としてUIで使わざるを得ないのですが、本職にはしたいと思わないです。

CSの学位が求められないことが多い職種

まず、元ネタの記事に出てこない仕事、なろう系インフルエンサーが激推ししてるWebエンジニアと言う仕事です。その仕事のトップという位置にいるのはFull Stack Web Developerでしょう。FrontendもBackendも両方やる、一時期憧れられたタイトルのフルスタックですが、実はWeb開発に特化したエンジニアだと最近調べてて知りました。

前述の通り、ちょっと日本でのこの職種の認知が歪み過ぎてる気がするので、再度取り上げたいと思います。Frontend/Backend、両方合わせたFull Stack Web Developerなどなどありますが、今回のメインではないのでまとめてフルスタックだけ取り上げ、その先のキャリアの提案も提示します。

Webエンジニア/フルスタック(Web)開発者

下記の記事にもありますが、CSの学位はあった方が良いけど、なくてもなれる仕事とのことです。専門的に勉強した人がなる職だと思って、noteでもSNSでも「未経験からWebエンジニアになれた方法」みたいなタイトルの記事がいっぱいあるようですが、違うんです。世界的にWebエンジニアは学校に通わなくてもなれる仕事です。というか、SI業界が大きくない海外では未経験の入口レベルの仕事のようです。前回の記事のCoding Bootcamp出身者の就く仕事でも上位がWeb系が独占でしたが、CS卒ではWeb系はランキングに全くありませんでした。

下記の記事ではFull Stack Web Developerもソフトウェアエンジニアも最初の給料は近いけど、フルスタックは頭打ちが早いので、フルスタックを足掛かりにキャリア後半でソフトウェアエンジニア(SWE)に、というキャリアパスも、というようなことも言ってます。これは同意です。向いてる人ならSWEまで来たら良いと思います。特に非CS自然科学系専攻卒の人。

ちなみにWeb開発についてGoogleの方は下記のページで散々なコメントをしています。

簡単に言うと「もはや静的ページやただのコンテンツ管理はスキルと関係なくなるよね、と。更に、12-15年前にWordとかExcelが自在に使えるよ、というのと変わらなくなってきてる。その技術はもはや一般的なデスクワークになるのでは?例えスケーラブルなWebサービスすらクラウドで簡単に作れるし。」とのことです。デザインすら選択で作れて良いんじゃないくらいな。

手に職付けたかったのに、WordやExcelと変わらなくなる、と言われてしまう技術をスクールで高い金…。自分も全く同感だったのですが、世界のトップレベルの企業のエンジニアには新しいものがどんどん出てくるけど、それは自動化を進めるためで、手間がかかるから手間をなくしたい部分の進化という認識だと思います。募集が多いのは当然です。面倒で手間がかかるから。次の記事でも書きますが、CSにおけるWeb開発という領域は前提となる知識が少なく、数学もデータ構造も求められない、非常に専門性の低い分野になります。なので参入障壁はかなり低いです。ちなみにWEBは知ってるか知らないかで差ができる世界で、知ればすぐ追いつきますが、専門性の高い分野では理解してるか、できるかで差が付きます。

日本で人数の多い職種は何か調べてみると良いと思います。どういう職種が人数が多いか。そういう事です。職種の人口と給与の相関関係も調べてみては?調べなくてもわかる気はしますが…。簡単にバイトでなれる常に人不足の仕事は高給でしょうか?ただし、今はIT音痴の日本では過渡期で多少インフレ気味ですが、時間とともに妥当な額に落ち着くでしょう。そうでなければ日本はできるエンジニアは外資に属して、本来多くのエンジニアがやりたくないWeb開発の下請けの国になってしまうかも知れない。インフレで頭数減るので本来3人分の給料で2ヶ月で終わる仕事を2人で3ヶ月かけてることになってる印象。

日本のWebサービスはユーザー参加型のサービスや、ECでの出店の場所貸しがメインな大手も多く、大半がコンテンツ管理(基本的にほぼCRUD)に近い状態だと思います。基本的にそういう仕事では言語の基本的な使い方を身に付けたら、フレームワークとライブラリを知って使うことがメインで新しいものが出てきはしますが、基本的にはフレームワークやライブラリ、ミドルウェアやクラウド周りなどをツール的に詳しくなって使いこなす、を繰り返すことになり、ググればできる仕事です。そういう仕事を5年10年続けるとWebなら調べれば何でもできるけど、実際は何もできない人の完成です。

昔hatenaで書きましたが、ググってできる仕事は技術とは呼べないし、あなたでなくてもできる仕事です。ググれば誰でもできる事で技術者だ!というなら、それはプロググり師なのでは。検索技術者という感じ。まぁ、公式ドキュメントを読んで理解して書ける、なら普通にエンジニアですが。正直、コンピュータが好きで、プログラミングが好きでCSを専攻した好奇心旺盛な人が何年もやる仕事ではありません。そもそも、そのフレームワークやライブラリやツールを提供する側も"手間がかかることを簡単に、誰でもできるように"しようとしてるので、どんどん簡単で技術が要らなくなっていっています

いや、いいんですよ、技術者であろうとしてなくて、事務職の気持ちで開発してるなら。でもねぇ、それで「エンジニアなんて簡単」、「未経験でもすぐにプロ!」と言われると、週末だけ子守して、たまにゴミ出しして「家事なんて簡単だよ」、と言ってる父親を見る主婦という感じですね。主婦経験ないけど。

前も書いたけど、車作ってるのがソフトウェアエンジニアで車に乗って商売してるのがライブラリとか使ってるWebエンジニアで、車乗れた!通用する、とかドヤられても、そりゃ簡単に乗れるように、なるべく事故が起きないように作ってんだよ、としか…。同じ「車関係の仕事」なのかも知れないけど。

そして、使うフレームワークやライブラリこそ変われど、抽象的に見れば同じことをやるための要素を置き換えてるだけで同じようなことを繰り返す、という仕事は給与の頭打ちも本来早いというわけです。やや複雑な単純作業。転職すれば給料上がる、と言ってもガラスの天井は超えないよ?と。頭数が必要な仕事なので、日本では特にマネージメントに移るなどすれば年収上がると思いますが、技術好きなら微妙なキャリアパスですし、マネジメントなら技術関係なしに最初から学べます。SI業界じゃないんだから、開発経験しないとマネジメントできないわけじゃない。開発者がしっかり自分のタスクを見積もり、進捗の報告ができヘルプを出せれば技術を知らなくてもマネジメントはできます。と言っても、そういう当たり前ができない駆け出しエンジニアが大多数で炎上するという側面もあるのですが。

下記のページのように逆にデザインに興味があるなら、フロントエンドは興味を持てるかもね、と言ってる人もいますが、基本的にバックエンドは自動化の方向です。

日本人に多いように思えるWebしかできないエンジニアは自動化が競合で不要になる方向に業界は動いているので、危機感を持った方が良いです。自分も触ってRailsはただのWordやExcelのようなツールになりつつあるよう感じました。

結局、未経験からなれた方法、を商材として売ろうとしてる人が一定数いますが、元々未経験からなる人の方が多い職種と言っていいでしょう。2000年代に未経験からSI業界に入った人とかかなりの割合が今はWebにいそうだけど。未経験からなれて俺スゲーとどやってる人達とWebエンジニアになりたい、と憧れる未経験のエンジニア志望の方は現実を知っておいた方がよいのでは。おそらく周りの先輩も結構未経験上がりだと思いますよ。

元々未経験やホビーストが多いジャンルで普通になれるし、世界的にも未経験からの方が多いのでは、という事です。希望持てますか?頭打ちは早いとは言え、給与水準は高めです。逆にCS卒の人はむしろここでなくソフトウェアエンジニアとして、たとえWebメインで携わるとしても、Webエンジニアの人達が使うフレームワークやライブラリを作る側に回った方が良いと思います。でないと、何のために時間とお金払って基礎固めしたの?という感じです。

繰り返しになるけど、海外でそうなようにWebエンジニアとかWeb系エンジニアというのはむしろ独学やスクールで未経験や他業種の人が学んでなる、なれる職種であり、せっかくCSの学位を取ったならもっと刺激的で専門性の高い職種を選ぶべきだと思います。まぁ、海外だとCoding Bootcampでもデータ構造やアルゴリズムは当たり前にやるみたいですが。もちろんデザイン系が好きでFrontendをガッツリやりたい、ならWebエンジニアは適職だと思います。デザイン系専攻とダブルメジャーなら最強でしょう。CTOも目指せるでしょう。

日本はSI業界とWeb業界の比率が高過ぎるので大手だから、とうっかりCS卒で行きかねない気がするので、ホントこれ注意です。もしそれが原因で日本のCS卒の技術力がWebの狭いスコープで止まってしまうなら専門性に対する大きな損失だと思います。

考えてみたら、自分も未経験からのSESで転職する頃、フルスタック的にスクラッチでWebシステム組める感じになってました。ゲーム業界でサーバーサイドもクライアントサイドもやって、そこから留学してCSの修士号を取って、戻ってからはソフトウェアエンジニア(機械学習系=>ロボティクス系)やってます。

とはいえ、完全未経験から自社サービス開発のWeb系はお薦めしないです。よっぽど儲かっててお金が余ってるところ以外まともな会社ではないでしょう。SESは現場に出さえすれば給料分は回収できるので、未熟でも"育てること"の意味がありますが、自社開発で完全未経験の給料に見合う仕事を探すのは難しい=新卒並みの給料になります。その上向いてなければ、会社にとって赤字人材なので、心が広い上司でもモラハラを我慢しながら働く状況になりかねないです。センスあれば無理とは思いませんが、お薦めはしません。

でも、今、SESもSES経験ほとんどなさそうなインフルエンサーに先導されて叩きまくったせいで未経験エンジニアのSESというかSESの全体的に受け入れ減ってるという噂も。未経験自分達で自分の首絞める、という。まぁ、それで内製増えてSESが入ってたとこを完全未経験で置き換えられてる、ならありかもですが、そんな上手くいきますかね。

Webエンジニアのその先

Web開発やWebサービスでの向かう先はおそらく、デザイナーでもむしろ企画でもバックエンドを気にせずWebサービスを作れること、でしょう。デザイナーやUI/UXエンジニアがデザインしたものを実現する、考えてみるとSI業界で言うプログラマ職に近い気はしますが、デザイナーやUI/UXエンジニアで実現できるならその仕事要らなくないですか?まぁ、それに気付いて某インフルエンサーは技術で勝負しない、ノーコード、上流を主張してるのかもですが。デザイン職が自分で実現できるなら、それでいいですよね。認識の齟齬も起きない。APIの連携もJSONで返るとわかってたりするなら、さほど遠い未来ではない気が。もちろんインタラクティブな部分でフロントエンドの仕事は残るでしょうが。デザインがメインになった時、あなたは美大出身と勝負できますか?

技術的には色んなライブラリやフレームワークを使ってると組み合わせだけでできることが多いので技術力高いと勘違いしがちですが、自分で何か新しいものを作ろうとしたら、最適化どころか総当たりもまともに書けないかも?自分もそうだったんですが。技術はあなたのコードでなくライブラリの中にあって、それを使うだけで技術と言えるのだろうか。ボールに勝手に当たるバットを見つけ出して(謎のオーパーツ?)、それで首位打者になったとして、それはあなたのバッティング技術がすごいのでなく、バットを作った人の技術がすごいわけです。気付いてしまった時、すごい危機感を覚えた記憶があります。

数学や競プロ的な技術を求められないことで薄々気付いてるかも知れませんが、専門性はそういうところから来ます。簡単に言うと、画面の中だけで済む話ならたいてい数学も複雑なアルゴリズムも必要ないです。ある意味デザインの延長みたいなもので。ただ、画面の中に物理法則を持ち込んだり、現実を予測したり、現実の複雑さと向かい合う時にはそういう現実を記述する言語である数学であったり、スペックで殴ってもびくともしない問題にはアルゴリズムが必要になるわけです。そういった問題を扱う職種が基本的にソフトウェアエンジニアになります(一部では勘違いした人事がWebで完結するのにソフトウェアエンジニアと名付けてることもありますが)。もしくは専門名を関したエンジニアとなります。

楽天とアマゾンでは画面の中でしか開発できない技術力と画面から出ても開発できる技術力で発想の制約が生まれて圧倒的な差ができたのではないか、と個人的には思っています。ソフトウェアエンジニアはWebも触りますが、開発の場は、エンジニアリングの対象はWebに限りません。現実世界とつながる技術(アルゴリズム)や言語(数学)を持っているのが一般的です。

ここで嬉しいお知らせですが、日本は奇特な国で、ソフトウェアエンジニアに学位が求められない会社も多いです。まぁ、最近の強強スタートアップは求めるのが一般的な気はしますが。ただし、当然ですが、CS学位を持ってる人と同等と言える知識が必要です。データ構造やアルゴリズムは当然求められるので、勉強して下さい。ちなみに応用情報技術者レベルでも全然CS卒の基礎に達してない感じです。アルゴリズムイントロダクションを読んだり、離散数学とか、Courseraもあるし、基礎的な勉強はしっかりやって下さい。正直、自分でやりきれない人は大学に入った方が良いと思いますし、今なら海外の大学を夜間にフルリモートで受けて学位取れたりもします。

独学でやろうという人は次回以降書く記事でCSで習う技術とその前提となる知識(数学の科目とか)も書くので、参考にして頂ければ、です。非自然科学系卒のインフルエンサーのせいでWebエンジニアが、フルスタックエンジニアがIT業界の頂点のような捉え方がされてそうですが、5合目と考えて下さい。ちなみに、学位持ってると、いきなり新卒で5〜6合目から始める人もいます。

当然ですが、非自然科学系専攻からいきなり機械学習エンジニアを目指すのは無理ゲーです。それは更に上です。まともな機械学習系の企業は雇わないです。Webエンジニアのトップレベルでも機械学習の基礎が理解できないエンジニアがいてもおかしくないです。だって、基礎がないんだから。基礎がガッチリ組み上がったところにある研究職に近い職種です。前も書きましたが、CS卒より物理系の博士とかの方ができたりもしますが。せめて、機械学習に研究者がいるところの製品化のソフトウェアエンジニアから入るといいです。

CSの学位が求められることがほとんどの職種

だいぶ前半長くなりましたが、ここからが記事にあるCSの学位を取ることで就職に有利になる、もしくはないと応募ができないことが多い職種・業種です。前回と結構かぶるので簡潔に説明していきます。

AI/機械学習エンジニア

前回書いた通り、現在最も評価の高い職種の一つです。第4次産業革命の中心的なプレイヤーです。各産業の中で革命的な役割を果たそうと…しかしPoCで終わってしまうケースも多いという現状ですが、アカデミアとインダストリーが共同で推し進めることの多い最新の業界です。若干過熱感は落ち着きつつある気もしますが、すごい勢いで進化しています。

給与レンジはかなり高く、学会で安定して採択されているような研究者などは世界的にも引く手あまたで奪い合いでしょう。博士号はかなり強く、修士で論文がその分野であることが望ましく、修士は出ていて欲しいですが、CSに限らず、自然科学系の修士号取得者は通用しやすいと思います。

ライブラリのモデルをそのまま使うようなエンジニアはこのジャンルでなく機械学習ライブラリを使用できるソフトウェアエンジニアという扱いになります。

ロボティクスエンジニア

現実の複雑さと戦う画面と画面の外をつなぐような仕事です。マルチスレッドとかは必要ないですが、現実世界を記述するのには数学が求められることもあると思います。また、AI/MLと相性がよく、その辺が絡むと計算量の問題は出てきたり、エッジコンピューティングの知識も必要になったり。後はデバイス間の通信などでネットワークのやや深めの知識も求められたりします。

特許など、権利関係にも繋がりやすいのと、意外と発想次第で現実の物理的な問題は解決したりするので、自由な発想が求められたりもします。モノづくりど真ん中なので、変な人、面白い人、なんでも作っちゃう人、3Dプリンター所持率の高い業界でのお仕事です。

Computer forensics(サイバー犯罪捜査官)

なんか聞きなれない職種出てきました。日本では科捜研とかサイバー犯罪対策課のエンジニアと言う感じでしょうか。Webエンジニアの延長じゃ絶対無理なやつですね。警視庁だと高度情報処理試験とか技術士の資格が求められる模様。あれ、自分応募できますね。SESやった時に取ったやつ。というか、元記事の区分で出してしまったけど、警視庁は学位求めてないかもです。

ドラマに出てくるあれ、画像の高解像度化とかAIとかも使ってそう。

サイバーセキュリティ&倫理的ハッキング

サイバーセキュリティとホワイトハッカーとか、そういったセキュリティ関連です。計算理論の領域。脆弱性検査とか、そういった領域でしょう。ぶっちゃけ、自然言語系の専攻出てない人間が、独自暗号化編み出しました、とか言ってもこの辺の人達には子供向け知恵の輪位の難易度にしかならない気がします。量子力学とかやってた人は逆に強かったりするかもしれない。

なんて思ったらこんな記事が。CSと何かのダブルメジャーは結構最強な気がします。

ゲームデザイン

デザインと言ってますが、ゲーム開発者ですね。本来ここは未経験は厳しい領域です。確かに自分が留学前、人文科学系学士のエンジニアだった時、ゲーム会社では基本的にサーバーサイドとかCMS周りを担当してて、異例でゲーム部分の担当に移りました(スマホ担当で)。基本的にコンピュータアーキテクチャやCGとか物理シミュレーションもわかった方が良いと思います。この辺は物理専攻上がりとかはかなり強い分野だったりはします。

Bioinformatics(生物情報科学)

また耳慣れない話が出てきましたが、核酸医薬とかの安全性の確認の遺伝子検索とかもITの検索の領域ですね。ものすごい長い配列から、特定の組み合わせや1文字違いのあいまい検索をしたり。

ビッグデータの解析とかもありそうだけど、研究職に近い位置づけもしくはその手伝いとなるツール作りという感じの印象です。

https://biosciencedbc.jp/event/symposium/togo2020/files/poster11_2020_naito.pdf

UXデザイン

やっと耳慣れたものが現れました。とはいえ、このUXはWebページに限定しません。例えば、Amazonの倉庫であったり、アックススローイングの機械採点のための施設の配置かも知れない。要件や課題点、懸念点を洗い出し、いかにユーザー体験を優れたものにするかをデザインします。

内容としてはA/Bテストやペルソナの設定、モックアップでの画面の確認など様々で、情報収集と分析、方向性の提案など製品のあるべき姿に近づける仕事、と言ってもよいかも知れません。

ふと気づいたけど、この数十年で最強のUXデザイナーはSteve Jobsだったのでは。映画とか見ても実はCEOというよりUXデザイナーな気がする。あれくらいの権限を持たないと本当のUXデザインは難しいのかも知れないですね。PdMがUXデザイナーだと良いのかも知れない。

ビッグデータエンジニア

ビッグデータを収集し分析するような仕事です。数値表現や視覚化(visualization)も含んで、数学的な要素もありそう。また、計算量との戦いもありそうです。場合によっては次元削減やカーネル関数を当てて情報の角度を変えて価値を見つけ出すようなこともしそう。データマイニング的な知識を要求されそうな、あまり詳しくないところです。学習データとしてビッグデータを使ったりはしていましたが。

ここはCSだけでなく、数学であったり、社会学とかも統計の面では強いのかも知れない。

Internet of Things(IoT)

IoTはかなり幅広い気がします。アグリテックとかもIoTですかね。スマートホーム関連とか。ウェアラブルもそうですね。IoTは5Gとの組み合わせで飛躍的に伸びる世界です。この辺も現実世界と繋がるので、純粋に面白いと思いますが、電子工作的な要素も関わってきたりして(そこはHWエンジニアがやりそうだけど)、専門性が上がります。

最後に

そういや、インフラあったな、と思ったんですが、本来インフラエンジニアってCS専攻なのね。日本のインフラエンジニアと世界のは違うのだろうか。サーバーもネットワークもやるよ、という情報は見つけたけど、ネットワークがどの程度なのか。ちなみに、下記の記事でソフトウェアエンジニアとのスキルのオーバーラップ0%とか…。なんで、インフラ系のインフルエンサーがプログラミング教えようとしてるんだ?という。

https://www.glassdoor.com/Career/how-to-become-infrastructure-engineer_KO14,37.htm

しかし、USで学位持った上でなったインフラエンジニアに平均時給換算$50弱と言ってる(=$102,665/年)という仕事に$1=100円時代で考えると結構近い額出してる日本企業は相対的に出し過ぎだとは思いますが。まぁ、内容が違うのかも知れないけど。いや、簡単な方に違いそうなので、更に出し過ぎ感。やりたくないからいないのはわかるけど。

これだけじゃわからないので、もう少し調査してまた記事にしたいと思います。どうも日本での仕事の内容がUSでの仕事内容と一致してない(のに同じ給料求めてる)IT職種が多いような気がしています。この国のITはガラパゴスから抜けてまだ10年程度ですからね。

しかし、Webエンジニアが最強、というような風潮は何とかして欲しい。基本的に専門性が低く、誰でもできるように進化していっているのがWebという業界です。

なんにせよ、5GにAI/ML、メタバースなどなど、今後はどんどんWebという画面の中の世界でなく、現実世界と繋がるエンジニアの需要が上がってくると思いますので、技術にどっぷりハマって楽しみたいという非自然言語系エンジニアの方はCSの大学・大学院での学び直しも検討してみてはいかがでしょうか。もしくは、SWEとして、もっと深く面白い世界にダイブして、一緒に業界を盛り上げて頂ければ、ということで、次回は少しアカデミックなお話です。

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