プログラミングスクールを卒業してすぐにITエンジニアになれると思わないでくれ
ITコンサルで大家で雑コラ職人のケビン松永です。
ケビンさん、30代半ばでITは未経験なんですが、エンジニア目指したいのでになりたいのでプログラミングスクール行こうと思うのですが、どう思いますか?
みたいな相談が定期的にTwitterのDMやメールで舞い込んできます。
忙しい中でも私なりに真剣に考えてお答えするのですが、私は基本的にそれまでのキャリアを御破産にするようなキャリアプランはお勧めしておりません。
30代半ばで未経験者がプログラミングスクール通ったところで、情報系の学部に通っている大学生と比べたら既に15年も差がついていて、どんなにコミットしてもスキル面・待遇面ともにその差は埋められるとは思えませんので...。
常日頃からそんなことを感じている折に、サロン内に灯籠が流れてきました。
有名フリーランスエンジニアを見てプログラミングを始めないでくれ
【東雲マンさん】
最近のTwitterでのプログラミングでITフリーランスをもてはやす流れは、長い間ブラック業界として君臨してきたIT業界の人間としては、ITエンジニアが日本に増えるのは純粋に嬉しい一方、大した努力や知識や経験を積まずに一人前のエンジニアを語る輩が増えるのを危惧しています。
【Anmaさん】
同じく、ここ最近のITエンジニアになろう!の盛り上がりに困惑しています。向き不向きがある業界ですし、20年弱IT業界にいる私でも凡人以下だな。と思ってる中、スクール行って一人前と言われると…。と…。
まあ「自分のキャリアを変えたい!」という需要は昔からあって、昔はユーキャンだとかTACとか、高額な行政書士のテキストだとか、そういうところが受け皿になっていたのを、現在はプログラミングスクールが受け持っているんでしょうが
それとは別に、個人的に大きな関心を持っているテーマがあります。
20年前と今を比較した時、ITエンジニアになるハードルは下がったのだろうか
私が学生の時なんて、プログラミングをやろうしたら
・まず開発環境作るために新規にLinuxインストールしてみる
・なんだかよく分からないけど、見よう見まねでライブラリをインストールしてみる
・etc/config配下の設定ファイルを書き換える? → エディタの使い方が分からないから、まずそこから勉強する
・なんとか設定ファイルを書き換えた → 反映されない
・おまじないの再起動したら反映された → サービスの止め上げが必要らしい
みたいな感じだったわけですよ。何かをひとつやろうとしても、目的地に辿り着くためには、周辺の技術も含めて勉強していかないとたどり着けない。
結果的に、少ない情報を調べながら、ハンズオンでトライアンドエラーしながら、時間をかけて学習していくスタイルでした。
それと比較すると今は、勉強のためのコンテンツも増えたし、開発環境を整えるのも格段に楽になりました。
一方で、システム開発に要求される技術のスタック、カバー範囲も飛躍的に増えていて、結果として山頂はかなり高くなっている気もします。
スタックの下からどんな知識が要求されるかを列挙してみますと
(1) CPU、スレッド、メモリ領域のようなコンピュータ単体の知識
(2) TCP/IPの各プロトコル、ネットワークに関する知識
(3) 仮想環境に関する知識
(4) DB・APサーバーの冗長構成に関する知識
(5) セキュリティに関する知識
(6) プログラミング言語に関する知識
(7) アプリケーションフレームワークに関する知識
(8) AWS、Azureなどのメジャーなクラウドサービスに関する知識
(9) 商用の製品、メジャーなオープンソースに関する知識
(10) SaaSに関する知識
思いつきだけでもざっとこんな感じです。
プログラミングはITエンジニアの仕事の一部にすぎない
また、上記は技術面の話だけでして、仕事でシステム開発をやろうとすると
開発フェーズ:要件定義、基本設計、詳細設計、開発、テスト、移行、保守
業務:人事給与、会計、販売、生産管理etc
業種:製造、金融、公共、小売、建設、サービスetc
という軸で、それぞれのエリアで専門知識・経験があるかと思います。IT界隈、めっちゃ幅が広い。情報処理技術者試験の体系を見てほしい。
さらに、IT技術者の宅建にあたる、応用情報技術者試験のシラバスを見てください。プログラミングの占める割合が少なくて驚くかもしれません。https://www.jitec.ipa.go.jp/1_13download/syllabus_ip_ver5_0.pdf
これから入門する人はどういうカリキュラムで学んで行ったらいいのでしょうか
改めて「20年前と今を比較した場合、ITエンジニアになるハードルは下がったのだろうと考えてみると
・入門するハードルは下がったけど
・高尾山ぐらいの山が、ヒマラヤ山脈みたいになった
というように感じていますが、いかがでしょうか。
正直、自分の子供など本当のIT初心者に対して、Scrachなどのお遊びプログラミングではなく、正統派のITスキルを時間をかけて教えていこうと思ったら、どういうカリキュラムを組んでいいんだろうか悩んでいます。
よし、サロンで聞いてみよう
ダメだ、インターネット老人会に聞いても役に立たない。
よし、若い人に聞いてみよう
【ケビン松永】
さぎのみやさんは、ご自身のITスキルを紐解いてみると、どんな順序・方法で身につけてこられた感じですか?
(インターネット老人会じゃない人の話を聞いてみたいなと)
鷺ノ宮らび さん:大学4年生。来年から東京の会社に入社予定だけど、学生時代から個人事業主でゲーム開発とかWeb編集とかやってるスキル高い人
どこまでITスキルとみなすかわかりませんので、大まかに書いてます。順序は忘れているところがあるため、多少違うかもです。
【PCを動かす】
大学生になって初めてまとめにPCを触りました。色んなWebサービスを使っていくことでPCでの操作に慣れました。(まずこのレベルから始めないといけませんでした)
【プログラミング言語「Java」】
次になにをすればいいかわからなかったので、とりあえず全世界で使われている言語であるJavaを本で学びました。スッキリわかるJava入門を利用して一通りの文法とオブジェクト思考って何?みたいなことを学びました。なにか作ったわけではないです。
【サーバー、ドメイン、サイトの作り方】
次にWordpressを利用してサイトを作り、サーバーとかドメイン、サイトってどのように作られているの?みたいなことを学びました。仮想通貨系のメディアや簡単なクラウドソーシングサイト作りました。
【プログラミング言語「JavaScript」】
本で学びました。サイト修正するときに使いました
【プログラミング言語「Ruby」】
Rubyを使ってみようとしましたが環境構築でつまづきそのまま終わりました。
【プログラミング言語「Python」「R」】
PythonやRを利用して、データ分析、テキスト解析、スクレイピングを行いました。本やUdemyで学びました。
【再びプログラミング言語「Java」】
次に学校でJavaの授業がありました。ここでJavaの基本構文について復習して、会計システムを作りました。
【コンピューター単体のこと、プロトコル・ネットワーク、クラウド、要件定義、情報システム活用、知的財産、ソフトウェア関係、UIUX、人間工学、開発プロセス】
学校の講義で、コンピューター単体のこと、プロトコル・ネットワーク、クラウド、要件定義、情報システム活用、知的財産、ソフトウェア関係、UIUX、人間工学、開発プロセスのことを軽く学びました。
【ゲームエンジン「Unity」】
Unityを本やUdemy、学校の友達に聞いて学びました。ゲーム作ったりちょっとしたシュミレーションを行い学んでいきました。
【Adobe系のソフトウェア】
メディアに必要な画像や動画を編集するためにAdobe系のソフトウェアを使いました。ググったりUdemy、本で学びました。
【知的財産】
ドメインに「unity」という文字列をいれてUnityアフィリエイトを利用できなくなってしまいました。そこで知的財産について学びました。
【プログラミング言語「R」】
学校の講義でR言語を利用しました。企業分析を行いました。
【プログラミング言語「PHP」】
サイト修正をするために少しだけ学びました。ググって学びました。
【タイピング】
ブラインドタッチできるようになりました。寿司打を利用し習得しました
【UI/UX関連】
研究室とインターンでアプリのデザインを設計する必要があったため、UIUXを多少学びました。本で学ぶのはもちろんのこと、使いやすいと思うアプリを30個程度選び、画面のスクリーンショットをすべてAdobe XDに出し、参考にしながらアプリのデザインを考えました。
【データベース】
学校の実験で使うために学びました。
【ハードウェア】
学校の実験で説明されましたが、ほとんど覚えてないです。あまり好きでもない。
【マルチメディア】
学校の講義でやったけどあまり好みではなかったです。
【プロジェクトマネジメント】
学校の講義で学びました。かなり面白い。
【仮想化・セキュリティ系の知識】
就活で必要になったため学びました。またIT系のイベントで学びました。
すべての知識を覚えているわけではないですが、どんなIT関係の知識も学ぼうと思えばなんとかなると思います。経営、マーケティング関係のことは講義や本、メディア運営していく際に学んでいきました。またマーケティングについてはのらえもんさんにも教えてもらいました。
フレームワークについてはあまり知りません。Laravelってのがあると聞いたぐらいです!
うーん、鷺ノ宮さんのITスキルのスタックを見ていて、やっぱりプログラミングスクールで学んでITエンジニアになろう!に無理があるわな...。目指しているところのレベル感にもよるけど、こういう人が新卒で入ってくるのが現代なわけで...。
そして、大学で情報系の学部に通うって、アドバンテージ大きいと感じました。学校の授業でも概要学べるし、そこを起点として自分で興味を広げる時間がある。
締めはITベンダー幹部社員の方からの一言から
【元野ラ犬さん】
このスクールにしても、学校でのIT教育も「プログラミング万能」みたいな風潮に違和感がありましたので書いてみました。
・たかがプログラミング
アプリ開発の全体工数の内、プログラミングが占める割合はニ割合程度です。残りは要件定義、設計、テストなのでプログラミングだけできてもアプリ開発はできません。プログラマー単金で安く使われるだけ。危険です⚠️
・されどプログラミング
ではプログラミングは習得不要かと言うとそれは違うと思います。現在のコンピューターのほとんどがノイマン型である以上、それが動く原理・原則なので、プログラミングの習得は必須と考えます。
プログラミングを理解していないと、正しい設計はできないし、正しい設計ができないと正しいテストもできません。
IT教育を謳うのであれば、アプリ開発全体を学べる様にするべきです。その基礎・取っ掛かりとして、まずはプログラミングから学ぶは、とても良いと思います。
皆さんはどう考えますか?
先日、SAPのトライアル環境を作ってみたんですよ。クラウドサービス上に自分の環境を構築していいよっていうのがあったので、自分のAWSアカウントで試してみるかーってやってみたんです。
SAPのサイトでトライアル環境構築ボタンを押して10分待ったら....
ま、マジか!!そんなに簡単に環境できるの!?
気が付けば、AWS上に4台のバーチャルマシンができていて、そのうちの1つにWIndowsのリモートデスクトップで接続して、思う存分実機検証できるんです。
もうハードウェアとかネットワークの知識なんていらなくなるのかな。会社にアセンブラ自慢のおじいちゃんとか居たけど(今もたまにいるけど)、今後は身に付ける必要のない知識もどんどん増えるのかな。
ただ、物理的な部分がブラックボックスになっていて、仕組みがよく分かっていない人が肝心なところでめちゃくちゃな判断(発言)をすることもあったりして悩ましいところです。
自分の子供などこれからの若い世代が、時間をかけて本格的にITスキルを身に付けていくとしたら、どういうカリキュラムで学んで行ったら良いと思いますか? ぜひあなたのお考えをお聞かせください。