プログラミングスクールについて思うこと

当ブログでは書こうとして没になった記事がたくさんありますが、プログラミングスクールについてもそうでした。2~3個書いて全部ボツになってます。

そうしたところ、下記のような記事がメンション付きで飛んできました。

下記のツイートが当該記事に引用されてたみたいです。

本ツイートは以下も続きます

このツイートは2~3本の記事をボツにしたあと簡潔にまとめた思いでした。年末で暇があるということもあって、やっぱりこのあたりを詳しく書きたいと思います。

そもそも未経験からプログラマになって幸せになるのは大変じゃない

「プログラマだったら当然知ってるよね?という知識一覧」という煽り記事にもおなじ思いを込めて書いたのですが、プログラマって本来は大学で情報科学や計算機科学(あるいはそれに近い工学の分野だったり数学だったり)をちゃんと勉強した人がなる専門性の高い仕事だと思うんですよね。実務でそういう知識が必要とされることはみんなが思っている以上に多いです。

いや、情報なんて勉強してないけどプログラマやってるよ?と思う人も多いでしょう。それでも少なくとも「情報や計算機科学を修めた人がプログラマになるには好ましい」とまでは言える(大体の人が同意する)のではないでしょうか。

なお、情報なんて勉強してないけどプログラマやってるよ?という人の中には時に情報系の学科を卒業した人よりも特定の分野でより深い知識を有している人もたくさんいますし、情報系の学科で勉強する相当のことを独学で、あるいは経験的に理解している人もたくさんいます。そういう人たちはスーパーマンなのだと思います。でも殆どの人は凡人で、「ちゃんとした教育・研究機関で専門の勉強を教わったほうが良い」という話の反論にはなりえないとも思います。

つまり何が言いたいのかというと、未経験の分野でも独学した知識、あるいは短期間の学習で活躍できるスーパーマンの真似を凡人がするのはあまりよろしくないよね、ということに尽きます。

更にいうと基礎である情報系の学問が必要だよねという話はひとまず置いといて「最近のプログラミング言語やフレームワークを使用できる」という付け焼き刃的なレベルに達するにしても、毎日勉強して1~2ヶ月というスパンではかなり難しいと思います。作り方のレールがある程度定まったアプリケーションなり何なりを作っていわゆる「完璧に理解した」フェーズに達するのが限界じゃないでしょうかね。数ヶ月で「ググってコードをコピペして、中身は理解できないが取りあえず動く」コードを書ければ立派なレベルなんじゃないでしょうか。少なくとも私が全くの未経験だったらと想像すると、そこまで達するのもしんどいと思います。

以上、一旦まとめると

  • 凡人は間違いなく大学で情報系の学科を卒業したほうが良い(数年のスパンで勉強したほうが良い)
  • 数ヶ月で一人前のITエンジニアになれるわけがないと個人的には思う
  • 数ヶ月でプログラマになれる人はスーパーマン
  • 数ヶ月でできることは付け焼刃的な知識を得るくらい

というのが私の考えです。

ちなみに、私も凡人のグループだと思ってます。私はITエンジニアの中では勤務形態も待遇もかなり分不相応に良い条件で仕事をしていると思っていますが、それができたのは単に運が良かったことと、大学で情報系の勉強をしていたという基礎がある分他の人よりもちょっと優位に立てる部分が大きかったからかなと考えています。

ここまでの話はそこまで特殊ではなく当たり前の話だと思ってます。どんな分野でも専門の学問を修めた人が活躍しやすいですよね?農業でも畜産でも経営でも化学でも医学でも機械でも。そしてどの分野でも未経験で飛び込んで活躍する人はいます。けれどもそういう人たちがマジョリティではないという事実は重く受け止めておくべきだと思います。

プログラミングスクールに対する不信

以上を踏まえてプログラミングスクールの話を耳にするたび、個人的には不信感のほうが大きくなります。私だけでなく、周囲のプログラマからも否定的な意見をよく耳にします。

例えばx週間で学ぶベーシックコースなどという宣伝を見ても、とても数週間で理解できる内容とは思えないです。基礎として語られることの多いHTML/CSSであっても私は中学生の頃から付き合ってきていますが、全貌を知るには未だ遠く仕様追加も多いので、ついていくのが正直精一杯です。そもそもHTML/CSSは最終的にはレンダラの解釈(つまりブラウザ内部の動作)の話につながるので簡単なわけがないです。

AI短期学習2週間というコースも目にしましたが、現代で言われるAIとは機械学習に近い話であって機械学習は統計の一分野であって統計は数学の一部なわけです。2週間ではそういう線形代数なり統計なりなんなりの基礎まで含めて学習できるわけがなく、一体なにを勉強させているのがすごく疑問です。多分、こうすればうまくいくとわかっている問題に取り組み、書かれていることを写経してわかった気になるので終わるだけではないでしょうか。

中には「このエンジニアスクールを卒業すると、採用担当やエンジニアから一目置かれる」という宣伝をするところもあります。正直、私は周囲のエンジニアからプログラミングスクールに対する評判自体をそもそも聞きません。私自身もプログラミングスクールの具体的な名前もほとんど知りません。ほぼ唯一名前を知っている某スクールは否定的な評判で記憶に残っているのみです。確か、Pythonを「情弱向けの言語」みたいな書き方で紹介していたような…。

私が採用担当だったとしてあくまでも個人的な意見を書かせてもらうと(しかし大幅に世間の感覚とはずれていないと思っている)、実務経験1~2年の人は積極的に取りたいと思いません。なにか仕事を振るにもまだマンツーマンで教えてあげる場面が多々あるだろうなという印象を持ちます。3年以上でまぁタスクを振らせて一人でこなせるかな?という印象を持ちます。30代で数ヶ月スクールに通いましたという人を採用したいというストーリーは正直思いつきません。きつい言い方かもしれませんが、スキルが極端に低い人が作ったコードは後々負の遺産になることが多いからです。

それでも、お金があってエンジニアを育てたいと思っている会社はゼロではないでしょう。でもそういう会社というのは教育に割けるリソースがあって長期的な事業計画を描ける会社であって、つまり大企業が中心です。そして日本の大企業は「新人を育てて戦力にしたい」という場合、新卒を好みます。やはりある程度年齢が行ってからスクールに通ったという新人を採用するストーリーは思い浮かびません。

では数多のスクールで書いている卒業生の輝かしい実績みたいなのは何なのかというと、つまりそれはいわゆる人売り商売とセットになっているからでしょう。IT業界には人売商売という非常に悪しき慣習というか文化というか思想があります。

人売りIT企業とアウトサイダー達の物語
IT業界はクソ客先常駐、SESは奴隷契約です人売りIT企業の実態

ググってトップに出てきた2つの記事が上記ですが、探せばこんな話は他にもたくさんあります。すべてのプログラミングスクールがそうかはわかりませんが、「最低限の教育っぽいものを施したあと人売り商売に納入される」というビジネスモデルをとってるところは多いと思われます。SESとして契約してしまえば中間マージンは取れますから、それでいいのです。実際、エンジニアスクール経営陣のプロフィールとして「大手人材会社で活躍した後」始めた、みたいな話が自慢げに書かれていたりします。

しつこく繰り返しますが、ゼロではないと思います。プログラミングスクールに通ってまともな会社に勤めて幸せになったという人が皆無である(だからやめろ)という主張ではないです。その道はみんなが思ってるよりは厳しいよね、という話です。そして、それができたスーパーマンは「その気になれば誰でもできるよ」という言を流しがちです。スーパーマンゆえなのか、謙遜しているのか、宣伝のため盛ってるのか、あるいは全くの創作なのか何なのかよくわかりませんが。

何度もこのエントリを消した理由

ITエンジニアを目指す人にとっては不快であったりきつい内容を書いてきました。私には相反する2つの思いがあります。

一つはIT業界はきついところもあれば楽しいところもたくさんありますし、仲間が増えてほしいとは思っていますし、後継者がいたほうが自分の仕事が楽になっていくのは当たり前なのでもっとIT業界にチャレンジする人が増えてほしいという思いです。

みんながゆったりと自由な働き方で十分な収入を得ることができる人が増えればそれは誰にとっても良いことでしょう。IT業界はそれに一番近いことができる業界の一つであることには違いないと思います。

もう一つの相反する思いは、結構歳をとってから未経験の異業種に鞍替えするというのはすごく大変だし、IT業界にはそういう人を食い物にしている会社もたくさんあるのでその人本人のためによく考えたほうが良いよ、という老婆心みたいな思いです。

挑戦したいという人たちを多少なりとも引っ張ってあげたいという思いと同時に、無茶なことにチャレンジしようとする若者に説教して思いをくじかせてやるのが年寄りの大切な役目であるとも思います。で、いつも勝っていたのは前者でした。だから記事を書いては消し、を繰り返しました。

私が考える最良の方法

そういうわけで、せめてでも参考になりそうなことを同時に書いておこうと思います。

私が未経験でITエンジニアになりたい!と思ったならばどうするかな?というのを書きます。

ちなみにほぼ同様のことを「【質問#151】プログラマーに転職したいと思っているのですが…」という記事にも書いています。

  • 自分の土俵で戦え

大卒ならば自分が4年間かけて勉強してきた専攻があるでしょうし、そうでなくてもある程度歳を重ねれば自分が戦える分野はここだ、というのがある程度出てくると思います。それをわざわざ見捨てるのはもったいないと個人的には思います。

ITや計算機、情報科学というのはあらゆる分野にまんべんなく役に立つ学問です。わざわざITエンジニアという専業にならずとも、自分の戦う土俵を変えずにプログラマになることは不可能ではないと思います。

たとえば分子生物学の分野でも大量の分子モデルをシミュレートして現実の現象を説明できるものを推測するのにプログラムを書ける人が必要だができる人がいない、みたいな話を昔見た記憶がありますし、最近ではAIの流行もあってか医療の分野で機械学習を活用しようと統計その他とPythonを勉強してる医師もネット上でたまに目にしますね。画像認識でキュウリの選別にチャレンジする農家の人とかも定期的に話題になってます。教育でもプログラミング学習やITの活用という話をよく耳にしますね。

そういう感じで未経験の人がIT分野でチャレンジしてトップになるよりも、すでに自身で知見を有している分野にプログラミングの要素を追加して+αでプログラミングができる貴重な人材として生き残る方向にチャレンジしたほうが成功率は上がるのでは、という気がします。

  • 成果を見せる

IT業界そのものにチャレンジするならば、一番ラクな方法はまずは自分でアプリなりサービスなりライブラリなりを作ってみるのが最も手っ取り早いと思います。プログラマとしての能力を経歴から推し量るのはとても難しいですが、すでにあるアプリやプロダクトを見てどのような技術、レベルが必要だったのかというのはより想像しやすいからです。

ですから見せることのできる自分の実績があればエンジニアや採用担当に「私の能力はこれくらいだ」という話をしやすいでしょう。それが面接官にとってすごいと思わせるような内容ならば、経験年数の短さはむしろファストラーナーであるというプラスの印象となります。

もしくは技術ブログを書くというのも良いと思いますね。ある特定の技術ですごく詳しく解説した記事が多数あり、ググるとそのブログがよくヒットする、というようなブログを運営していたことがきっかけで転職したという話も多数聞きます。(私もその一人かもしれません

ただプログラマだからといってアウトプットが必ず得意ではないですし、アウトプットが得意でないが優秀なエンジニアも山ほどいるのでそういう人たちにはおすすめできないのが難しいところですね。

以上2つは「プログラミングスクールに通う」ということと必ずしも相反する内容ではないので上に至る過程でプログラミングスクールに通うという選択肢が良いと思えばそれもいいと思います。が、個人的には前述したとおり、プログラミングスクールは人売り事業とセットになっている場合が多いと思っているので、多分契約で「卒業後は弊社提携企業で最低いくつのSES契約をこなすこと」みたいなことが前提になった料金体系になってるんじゃないかという気がします。

そうではなくて、受講生から徴収した受講料で講師の給料が支払えるようなスクール(つまり、人売じゃなくて教育でちゃんとビジネスをしてるような会社)だったら良いかもしれないですが…。

補足

中途半端ですが、以上が私の思うことです。

まとめるとIT系のスクールに通えば未経験でもキラキラのエンジニアになれる!!みたいな発想には否定的ですし、そういう宣伝をしているエンジニアスクールにも否定的な考えを持ちますが、そういう人が増えること自体は良いことで、かつ人が増えれば自分の仕事も楽になるので協力したいという気持ちも強いく、私自身も思い悩むことが多いなという感じです。

私にできることといえばそういう人たちの相談に乗るという程度ですので、なにか具体的に聞きたいことがあれば質問フォームからメッセージを送ってみてください。ブログ上で回答します。