プログラミングスクールへ通う意義とキャリアへの考え方
<本サイトで申込みの多いAI系プログラミングスクール>
No.1 Aidemy *AI、機械学習特化のオンラインAIスクール
No.2 AIジョブカレ *講師の質がバツグン!AIエンジニアの転職支援まで実施!
No.3 Data Mix *データサイエンティストを目指すならここ!英語の講座もあり!
IT Edtechでは、通う意義のあるプログラミングスクールを厳選してご紹介しています。
私自身もマーケターから、AIエンジニアへのキャリアチェンジを考えており、様々な可能性を探っているところです。
そんな中で、プログラミンスクールという存在にどのような効用があるのか、
また、キャリアをどのように考えるべきかを考え直したので、ここにまとめておきます。
すべて、あくまでも私見という所をご理解ください。
私の簡単な経歴
1.学生時代:機械工学科でロボットの研究
私の学生時代は、機械工学科でロボットの研究をしていました。あまりプログラミングも研究も得意ではありませんでした。ロボットの機構を考えたり、実験装置を作ったりするのは好きで、よく加工室に行ってフライス・旋盤と戯れていました。
また、実験室には3Dプリンタも設置してあったので、これもよく使っていました。
C++とOpenCVを使って、簡単な画像解析をしたり、数値シミュレーションをしたり、多少プログラミングもしていましたが、情報系のバックグラウンドとは異なります。
2.海外インターン:エンジニアとして1年海外インターン
情報系のバックグラウンドはなかったのですが、数値シミュレーションなどをしていたため、エンジニアとしてインターンを行いました。
このときは、医療系のシステムに組み込みシステムの開発を行ったり、デバイスのテストを行ったり、ロボット系の話もやりました。しかし、中心はC++を使ったプログラミングで、情報系バックグラウンドがなく、実装力に乏しかった私は、結構苦労をして仕事について行っていました。
英語で仕事をしていたのですが、英語能力も高くなく、プログラミングスキルもあまりない、という逆境。とりあえずコミュニケーションを取るための英語を2ヶ月間独学で猛烈に勉強して、その後、プログラミングスキルを磨いていきました。
インターン先は大学の研究機関と、そこからスピンオフしたベンチャー企業。そのため、学生と触れ合う機会も多くありました。
中には、33歳でキャリアチェンジのために修士号を取りに来たM1の人や、35歳でD2の人など、国籍もバックグラウンドも多様です。
3.就職先はベンチャー系。ただしビジネスサイド
機械工学を学び、エンジニアとしてインターンもしましたが、結局ビジネスサイドで就職しました。
1社目は社員数6名のスタートアップ
かなり先進的かつ高度な教育プログラムを提供していました。なぜここに入れてもらえたんだろう?と今になっては不思議ですが、、、
10ヶ月で実質クビになりました。
高度な教育プログラムだったので、まずはキャッチアップが必須で、かなり質の高い勉強を求められました。しかし、それまで関心は合ったけれども、勉強したことのない分野だったので、かなりの負荷がかかりました。
自分の学習能力の低さに愕然とし、仕事でもミスをして、メンタルがかなりネガティブなループに落ち込んでいた、自分ではどうしようもない状況で、迷走をしていた結果、社長から「キミに任せる仕事がなくなった」という一言。
「お互いのために転職を考えたほうがいい。年齢は若いほうが有利だから」と。仕事で無力感を感じていたので、特に反論もなく、退職しました。
かなり大きな挫折でした。
2社目はロボット教育の超ブラック企業
海外の学生と過ごしたり、授業も経験した結果、教育に関心を持っていた私は、自分の専門とも近い「ロボット教育」という分野に関心を持ちました。
小学生、中学生、高校生に、ロボットづくりとプログラミングを通じて、そこにまつわる科学を学んでもらおうというものです。
理念としては科学を学ぶ、でしたが、実質はロボットとプログラミングをせっせとやる感じの、科学的な内容ではありませんでしたが。
ここは果てしないブラック企業で、残業時間は200時間overが当たり前でした。休みの日とは「自宅で仕事をする日」という感じの日々。しかし、仕事に社会的な意義を感じていたので、せっせと働きました。
他の社員の業務改善をして、私以外の残業時間は大幅に削減。経営企画・営業・営業企画、教材開発、事業開発など、一人で会社1つ分くらいの仕事をする日々。
私の目指すところは、理念の通り、「ロボットを通じて科学を学べるようにする」こと。しかし、会社としては「ロボットを使って楽しく学ぶ、低学年向けスクール」に舵を切ります。そのため、袂を分かつ形となりました。
3.3社目はアフィリエイトのASP
3社目はアフィリエイトのASPです。かなりこれまでとは異なるジャンルのように見えますが、「初心者からスタートして稼げるまでをサポートする」「シーズの事業をアフィリエイトを使って拡大していく」という、メディアサイド、広告主サイドに教育・コンサル的なポジションで関われることが魅力でした。
ここでプログラミングスクールの担当をしていたことが、本メディアIT Edtechにつながっています。
様々なプログラミングスクールを周り、担当者とかなり腹を割った話し合いをしましたが、「誠実にスクール運営と改善」を繰り返しているスクールと「稼げればOK」的なスクールはクリアに分かれます。
先日炎上していた某プログラミングスクールは「ランキング1位とバーターに特単」というのを好むプログラミングスクールでした。また「学生がメンターについてうまく学習が進まない」、というスクールでは、あまりモチベーションの高くない学生と世間話をしたりしました。そういったスクールは、本メディアでは紹介していません。もちろん、改善が見られたらその限りではないのですが、、、
なぜプログラミングスクールに価値を感じるか?
ひとえに、「日本の大学は社会人からのカムバックに優しくない」ためです。
欧米の大学院には、33歳でM1になったり、35歳でD2だったり、学生に戻る人たちがたくさんいます。これは、大学の持つ給与の仕組みがあります。
TAやRAを行うことで、生活できるだけの給与を得ることができるのです。大学で学びながら。もちろん、贅沢な暮らしはできませんが、十分な生活が保証されています。そのため、気軽に大学に戻って、それからキャリアアップやキャリアチェンジをすることができるのです。
それに比べると、日本はそのようなシステムがあまりありません。もちろん貸与型の奨学金(月々8万円)などを受けることは可能ですが、それは生活するに十分ではありません。
社会人博士は一般的ですが、修士はまた別の話。
そう考えると、社会人になってから、何かを新たに学び直す、ということには大きなリスクとコストが伴います。
そこで、プログラミングスクールが役立つんです。
プログラミングスクールは、「短期間のブートキャンプ」、「会社で働きながら学べる」など選択肢があることがポイントです。
プログラミングスクールはプログラムが書けるようになり、転職もできる
2010年の研究ですが、アメリカのコースタルカロライナ大学で、「ブートキャンプ形式のプログラミング学習の効果(リンクはPDF)」に関する報告がありました。
ブートキャンプ形式(1セメスターに350の短いプログラムを書く)だと、優位に生徒の成績が上がった、というものです。毎年90名近くの生徒が受講するプログラミングの授業で、従来形式だと75%の単位取得率だったものが、95%近くまで上昇しました。
また、生徒に対する授業の満足度アンケートの結果も良いものになりました。
たくさんアウトプットを出したほうが、教育効果が上がるのですね。その後の学習効率も上がることが期待されています。追跡実験もしているそうです。
プログラミングスクールに通うのと、大学院に入り直すのは、入り口のハードルが違います。つまり「大学院入試」。私も現在準備をしているのでわかりますが、数学・英語・専門科目を学習し直す、というのはけっこう大変です。
ただ、これは一般入試の話であって「社会人特別枠」に申し込めるとまた話が違います。筆記なしの面接とレポートだけで入学できる可能性があります。
例えば、自然言語処理で精力的に情報発信している首都大学東京の小町先生の研究室では、ソフトウェア開発経験者が優遇されています。
一般選抜について、ソフトウェア開発経験(プログラミングコンテスト参加経験等含む)のない受験生は GPA 2.5(4点満点)以上の人のみ出願を認めます。ソフトウェア開発経験者は、GPA にかかわらず出願を認めます。また、言語に関するお仕事(アノテーション、言語教育等)をされている方も受け入れてます。
社会人特別選抜について、英語力に関する要件は求めませんが、在職のまま出願(進学に当たり退職する人は社会人特別選抜では出願できません)し、かつ1年間の休職のできる方のみ出願を認めます。退職してフルタイムの学生となる場合は一般選抜で出願してください。
つまり、専門性をいかに高めようとしても、最初のステップ、つまり入試や出願資格の時点でつまづきやすいのです。
その点プログラミングスクールは「未経験からエンジニア」になることができます。特に実践重視のプログラミングスクールでは、たくさんアウトプットを出すことを求められます。
そこでソフトウェア開発経験をつめば、より専門性の高いエンジニアになれる可能性がでてきます。お金と時間を使って、ステップアップの第一歩を得る、と考えれば悪い投資ではないように思います。(もちろん、就職時点でエンジニアを目指し、研修のしっかりした会社に入れるのであればその方がいいように思います)
いずれにせよ、その後の人生をどう過ごしたいかで考えるべきことでしょう。
プログラミングスクールの「理論は置いておいて、コードを書けるようにする」というのは、賛否両論あると思いますが、第一歩と考えれば良いでしょう。
また、このようにプログラミングができて、ソフトウェア開発経験が積めると良いことは他にもあります。単純に「稼ぎやすくなります」。
プログラミングができて、ソフトウェア開発経験があると大学院在学中でも稼ぎやすくなる
インターン、フリーランス、RAなどなど、大学院に行った場合でも、ソフトウェア開発経験を生かして仕事をすることができます。
実装力があることは、CSの研究をする上では強みになる要素です。アルゴリズムやデータ構造を学んだり、データベースの構造を学んだり、全くプログラミングができない状態では辛いですが、どこでどう使われているかのイメージがつくとわかりやすいです。
あるいは、Lancersやクラウドワークスなどで、案件受託をすることができます。勉強や研究との折り合いが必要ですが、稼ぐ手段がある、というのは安心材料の1つです。社会人から学生にカムバックする上で、生活の安定は重要です。(その点NAISTは恵まれています。田舎だけど。)
実務経験が合ったほうが研究も捗る
一般的に、社会人学生の方が目的意識が高く、タスクの処理能力も高い(はず)のため、質の高い研究ができることが多いです。
そのため、社会人学生(修士や博士)を積極的に受け入れている研究室が多くあります。
プログラミングスクールに通って、実務経験を積んだあとに、社会人学生として大学院に行く、というのはとても良い自己投資ではないでしょうか。
もちろん、CouseraやedXなど、オンラインで質の良い講義が受けられる環境や、ハンズオンを中心としたテキスト、自然言語処理100本ノックのようなドリルなど、独学できる学習環境は昔より整っています。
会社に入ればエンジニアの先輩でCSの人はいるでしょうから、どのような勉強をして、どのような本を読んできたのかを聞いて、その範囲を勉強していく、というのもありでしょう。
あくまでも、プログラミングスクールはキャリアのスタートライン
この認識を忘れてはいけないのですが、プログラミングスクールに通って、プログラミングができるようになる、というと大変語弊があります。
私の認識では、プログラミングスクールは、RPGの始まりの城くらいのもんです。城の周りでスライムを倒しながらちょっとずつレベルを上げて、最初の簡単な冒険をクリアして、王様から次の街へ行く許可をもらう、というくらいのレベル。
ひよっこもいいところです。でも、冒険には出られるようになりました。
その後、よりレベルの高い敵を倒して、装備を整えて、というのを繰り返して行く必要があります。レベルが上がらないとジョブのランクアップができない、というのもそれっぽいですね。
そう考えると、いつまでも通わせ続けよう、というスタイルのスクールはあまりおすすめできません。
早くレベルアップして、次のステージに行ってね、というスクールでかつ、実践を重視するところが行くべきところなんじゃないかと思います。
また、一度ソフトウェア開発の職について、実際に仕事をしてみると、欲が出てきます。もっと高度なことができるようになりたい、学びたい、という欲がでてきたら、その時が次のステップを考えるときではないでしょうか?
APIやフレームワークを使うだけがプログラミングではない
特にAI系のスクールで勘違いしがちですが、いわゆるAI系プログラミングスクールで言うところの「AIエンジニア」は、
・機械学習系の理論を数式である程度理解して
・scikit-learnなどの機械学習ライブラリを使ってデータ分析ができる
人材のことを指しています。
重要なのは、数式を実装できるところまでフォローするわけではない、というところ。
例えば、アルゴリズムやデータ構造については、ほとんど触れません。数式の実装方法についても触れません。
まずはライブラリを駆使して、実際の挙動を見てみる、それをどのように活用するか、初歩的な内容を学ぶ、というところに特化しているところがほとんどです。
独学で少なくとも、「ITエンジニアのための機械学習理論入門」くらいは読んで見たほうがいいのではないかと思いまし、その先にも読むべき本がたくさんあります。
日本のAIエンジニアが不足している、とはよく言われる話ですが、「機械学習アルゴリズムの開発」までできる、ハイエンドな人材が大幅に不足しているという意味です。AIエンジニアはあくまでもその入口に過ぎないので、より高度な学習を繰り返して、本当のハイレベル人材になれるようにがんばりましょう。
まとめ:学びたい時が学び時だけど、節目のゴールは常に理解したほうがいい
あなたの興味がビジネスにあり、プログラミングの知識が教養としてあると、仕事が非常に捗る、という場合は、誠実に運営されているプログラミングスクールであれば、どこでも満足がいくと思います。あとは場所と内容の選定の問題です。
エンジニアになって、ものづくりに携わりたい、将来の見えない今の仕事から抜け出したい、という人は、転職重視のプログラミングスクールに行けば良い結果が得られます。
エンジニアとして、大きな仕事をしたい、世の中で活躍したい、という場合には、プログラミングスクールがどのような位置づけで、その後自分のキャリアをどのように作っていくかまで考える事が大事です。
AIを学ぼうと思った時、選択肢はプログラミングスクールだけではなく、大学・大学院など多様にあります。
プログラミングができるようになり、エンジニアになれば、エンジニア向けの勉強会に積極的に参加して、レベルを上げていく、という手もあります。そうすると視野が広がって行く、というループに入っていけるでしょう。
私はいくつものプログラミンスクールを取材して、担当者と議論をして、複数のプログラミンスクールを実際に体験して、今に至っています。
また、教材開発の経験も研究の経験もあることから、教材を見るとある程度その思想を読み解くこともできますし、効果がどのように発現するかもわかります。CSの勉強を専門的にしたわけではないので、限界はあるのですが。。。
そのような観点から、お役に立てる記事を作成していきます。