追記
2021/1/25 あとがきを追加しました。
概要
半年近くとあるプログラミングスクールでメンターをしていましたが、諸事情で辞めました。これは決してネガティブな理由でやめたわけではないのはお断りしておきます。半年間メンターをしてみて、SNSでの悪評なども踏まえた上でプログラミングスクールに通うという選択についてどう思うのか個人の意見として書きます。内容は鵜呑みにはせず参考程度に考えてもらえると幸いです。ちなみにこの記事はスクールの比較記事ではありません。なのでおすすめのスクール紹介等は一切ありません。
結論
最初に結論を述べておきますが、プログラミングスクールに通うという選択自体は悪くないです。ただし、どのスクールを選択するのか、スクールの利用の仕方、自身の考え方によってはお金の無駄になる場合があると思っています。ただ個人的にはスクールに通う必要性というものは全くなく、好きな時間に質問できる環境や転職保証としての利用であればアリ程度です。
スクールに通うメリット
箇条書きで書き出しますと、以下の通りです。
- 学習の手順が明確なので手を動かしやすい
- お金を払っているのでどんな内容でも堂々と質問できる
- お金を払っているため自分を追い込んで学習ができる(継続しやすい)
- 学習の過程で一応ポートフォリオが作成できる
- 通うスクールによっては転職まで保証されている
以上です。特に最後の転職保証の面は大きいと思います。とはいえ、必ず優良な企業に入れるという話ではないと思いますし、入社後の話(例えば試用期間で切られる等)は保証外なのではないかなと予想してますので、必ずしも安心というわけではないと思っています。もし入社後の試用期間終了まで保証範囲なのであればとても大きなメリットですね。逆にお金を出しているという縛りがないと継続できないのであれば向いてないのでエンジニア転職はお勧めしません。
スクールに通うデメリット
デメリットは以下の通りです。
- お金がかかる
- 界隈でエンジニアスクール卒の評判が悪い
以上です。評判が悪いので書類にスクール卒と書いているだけで切られるみたいな話もたまに耳にしますが、それはごく少数の企業だと思うのであまり気にしなくてもいいかなと思います。だいたいはポートフォリオをさらっと眺めてから切ります。
通うべきかどうか
メリットとデメリットを挙げさせてもらいましたが、個人的にどうすべきかという事を述べさせていただきますと、お金に余裕があるならば通っても良いです。ただし、通ったからといって必ず技術が身につくわけではないですし、必ず転職に成功してエンジニアになれるというわけではないと思ってください。個人的には独学できちんとしたポートフォリオを作成している人の方が転職には成功しやすいと思っています。理由は後述します。
スクールに通っても転職に成功しない理由
必ずしも成功しないわけではないですし、エンジニアスクールの中にはとても素晴らしいサービスを提供しているところもいくつかあります。受講生の中でも素晴らしいなと思える人も何人かはいました。ただしエンジニアとして転職に成功する、ひいてはエンジニアとしてキャリアを積み上げていく上で、エンジニアスクールに通うことは必ずしも良い選択ではないという話です。
スクールのサービス
前述の通りサービスの内容は悪くないです。カリキュラムも一通りマスターすればエンジニアとして仕事はある程度できるでしょう。ただ、僕の経験したスクールは一つしかないので全てのスクールのサービスについて断言はできません。あくまで僕がメンターとしてお手伝いしていたところのカリキュラムの内容としては悪くありませんでした。
メンターガチャと評価
お金を払ってサービスを享受するわけですが、必ずしも料金に見合ったものを受けられるわけではないと思っています。メンターと一括りに言ってもその教え方はメンターそれぞれで違ったりします。例えば...
-
教え方
- 答えをすぐに教えてくれる
- 答えをすぐに教えてくれない、質問を質問で返される
-
教えてくれた内容のソース
-
ソースはQiitaの記事
-
ソースは公式ドキュメントやGitHubのREADMEやソースコード
と言った具合です。ちなみに受講生さんからの評価が高いのはそれぞれ前者のメンターです。
答えをすぐに教えてくれる
受講生さんからすれば、自身の抱えている課題を素早く解決してくれる良いメンターに映ると思います。メンターも素早く問題が解決できてさぞ気持ちの良い事でしょう。僕もそうしろと言われれば喜んで素早く解決します。win-winで誰もが幸せに見えます。ただし、ここで受講生さんには、なんのためにスクールに高いお金を払って通っているのか一度冷静に考え直していただきたいですね。ちなみに受講生さんからのフィードバックでは素早く解決してもらう事で手が止まらないので高評価です。課題の提出期限が迫っている場合も多いみたいですしね。
受講生さんのゴールは「カリキュラムの完遂」や「ポートフォリオの完成」ではなく、「カリキュラムの理解」であったり「ポートフォリオ作成を通しての知見の習得や問題解決能力の向上」であるべきなのです。これを上記のようにわからない事をメンターに質問してすぐに答えをもらうようではこれらは何も身に付かないのです。
僕は性格が悪いので何がわからないのかをしつこく受講生さんに確認するようにしていました。例えば「エラーが出ていてそれを解決したい」という内容であれば...
- エラーメッセージがどこに表示されているのかがわかるか?
- エラーメッセージに書かれている英語は読めるか?
- エラーメッセージの言っている意味はだいたいはわかるか?
- エラーがどこで起こっているかわかるか?
- エラーの種類(原因)はなんとなくわかるか?
- エラーを解消するためにどういったアプローチが必要かなんとなくでもわかるか?
- エラーを解消するための具体的なコードの記述がわかるか?
だいたいこれくらいの粒度で確認します。
受講生さんからいただく質問の内容的には「エラーの解消」なので4か5くらいの理解度を想定して対応しますが、実際には1にも達していないそもそも「エラーメッセージを読んでいない」という場合がほとんどです。話になりません。
上記の1~7は解決までの大まかなプロセスでもあります。エラーメッセージを読んでエラー内容を理解しないことにはいつまで経っても解決は無理です。
このような状態で僕がすぐに解決のための修正コードを示し、解決したとして受講生さんは何か得るものがあるのでしょうか?きっとまた同じ質問を繰り返すことでしょう。それではなんの意味もないと思いませんか?
ちなみにこのような対応をし続けた結果、受講生さんからは「時間がかかりすぎる」「無意味な質問を繰り返される」といったフィードバックをいただいておりました。
ソースはQiitaの記事
**これに関しては論外です。**もちろん参考になる素晴らしい記事はたくさんありますが、それをソースに誰かにものを教える、しかもそれでお金をいただくというのはあってはならない事です。必ず一次情報をソースに物事を教えるべきですね。ちなみに受講生さんからのフィードバックでは、Qiitaの記事をソースに教える方が理解しやすかったりコピペで機能を実現できるので高評価です。
なぜQiitaの記事等をソースにするべきでないかは、簡潔に言うと信用できないからです。ライブラリの作成者が作っている公式のドキュメントや実際のソースコードをベースに教わる情報の方が明らかに信用できるというのは明白な事だと思います。それとQiitaの記事は内容が間違えているものが多々あります。理由は簡単で受講生さんと同じような初心者が「使ってみた」という内容のものが多いからですね。僕の今まで書いてきた記事もまさにそれです。初心者の「使ってみた」という記事を100%信用できますか?
僕は公式のドキュメントや実際のメソッドが定義されているソースコードを共有しながら、どういう使い方をするのか、レシーバのオブジェクトはなんであるのか、引数はどこに何が来るのか、中身の処理はどうなっているのか、といった話をしておりました。これに対するフィードバックはまぁまぁ好評でしたが、散々説明した挙句「とりあえずQiitaの記事を参考にやってみます」という方がほとんどだったので意図した結果にならず少し悔しい思いをしました。
メンターの見極め方(?)ですが、質問に答えてくれた後に「学習のために参考資料をください」とメンターに聞いてみてください。記事があれば流れは掴みやすいので、何かしらの記事を教えてくれるメンターが多数だとは思いますが、それと一緒に公式のドキュメントを教えてくれるメンターは当たりだと思っていいと思います。本当はそれが当然だと思うんですけどね...。
といった具合でメンターガチャというのはあります。これらはあくまで僕個人が思うメンターのあるべき姿とそうでない姿であり、僕のこの考えが自体が間違えている場合は僕自身が反面教師であったという話でもありますが...。
受講生さんの学習態度
一番の問題はやはりここです。お金を払っているのは受講生さんなので是非ともそれに見合った結果を手に入れて欲しいと思っているのですが、受講生さん自身が目的を持って学習しているのか疑問に思う瞬間が多々ありましたので意見を述べたいと思います。
受講の目的
受講生の皆さんはなんのためにプログラミングスクールに通っているのでしょうか?それは転職のためですよね?なぜプログラマーになりたいのでしょうか?お給料がいいから?何か作りたいサービスがある?なんとなく?
この辺りの動機がきちんと定まっていない方はプログラミングスクールの受講はお勧めしませんし、ひいてはエンジニア転職自体をお勧めしません。エンジニアはキラキラして見えるのかもしれませんが、プライベートを犠牲にしてでも進化し続ける技術について勉強し続ける必要がありますし、この勉強を「プライベートを犠牲にしている」と思ってやっているようでは続きません。そういう業界です。
受講生さんの多くは入学当初はエンジニア転職という崇高な目標を掲げて頑張っていますが、途中から課題を課せられ始めてからは課題の完了やスクールの卒業が目標になっています。質問自体も課題の提出日が近いからエラーを解決して欲しい、機能の実装方法を教えて欲しい、といった内容が増えてきます。僕たちは構いません、お金をもらっているので機能の実装方法でもなんでも教えてあげます。でもお金を払っている受講生さんはそれでいいのでしょうか?
ポートフォリオは完成すれば転職に有利なものというわけではありません。完成はなんならしてなくても良いのです。大事なのはRailsアプリならRailsの基本を押さえている事、自分の実装している内容を説明できる事、その上でアプリケーションの独自性をアピールできる事、ポートフォリオ作成を通しての工夫点など経験を話せる事です。人に実装してもらった機能を面接の場で説明できますか?ちなみにポートフォリオで自分で実装したはずの機能を説明できない時点で採用は基本的にないと思ってもらって良いと思います。
これから受講を考えている方、もしくは現在受講しているという方は今一度、転職の動機を含めたこの辺りを考え直してみてはいかがでしょうか?
メンターの話は絶対ではないし正解でもない
あんまりこういうことは言いたくないのですが、間違った知識、アンチパターンな実装を平然と教えるメンターは存在します。それは大学生のアルバイトであったり、現役エンジニア(笑)みたいな方もいますが、きちんと仕事のできる方でも間違えることがあったり、苦手な分野を一生懸命調べながら教えた結果間違えているというケースもあります。なので受講生の方は教えられた内容を鵜呑みにせず、きちんと後から自分で検証、裏取りをすることを徹底して欲しいです。何もこれはメンターが信用できないという話ではなく、技術が進化している過程で人の知識は劣化しています。当時は正しい知識であっても現在はアンチパターンであったり非推奨なケースは多く存在します。これは技術記事にも言える話であり、Qiitaなんかも1年過ぎていると記事の頭に注意書きが出ていたりすると思います。このように調べて得た知識が本当に正しいのか、Bestなのかどうか検証する必要があるのは仕事としてプログラムを書き始めてからも同じですので、早いうちからそういう癖をつけて欲しいと思っています。
現在の市場の話
エンジニアは現在人手不足です。Railsエンジニアも例外ではありません。では、未経験エンジニアは転職しやすい環境なのでしょうか?
答えは「否」です。理由は簡単で、未経験のエンジニアは入社後に育成のコストがかかります。その育成には社内のエンジニアのリソースを使います。わかりますか?未経験のエンジニアを採用すると、期間限定ではありますが、さらに人手不足になるということです。この育成にかかる期間が見通せない人材ほど、未経験としての採用は絶望的だと思ってください。
さらに現在は追い討ちをかけるようにコロナ禍です。コロナが流行っている中、多くの企業はリモートワークを採用しています。このリモートワーク中は未経験の育成がとても難しいです。近くで作業してれば細かく気を利かせて教育もできようもんですが、リモートだと相手から何かしらアピールされないと気づけなかったり、そもそも離席してて気づけなかったり、教わる側も相手の状況が分からないので質問しづらかったりと最悪の環境と言ってもいいです。 ~~まぁ僕は育成係をしたことがないので今話したことは全部予想ですが。~~なので未経験の採用にはどの企業も消極的なのではないでしょうか。
ちなみにこれらは人材自体を商品としている会社には当てはまりません。そちらではやる気と体力次第で大歓迎されると思います。何がなんでもエンジニアになりたいという方は、待遇面や環境には一旦目を瞑って、まずはそういった会社に入って経験を積むという選択も悪くないと思います。
「独学できちんとしたポートフォリオを作成している人の方が転職には成功しやすい」について
最初の方で述べた話について触れておきますが、個人的にはそう思っています。これはエンジニア転職をするに当たって必要な「問題解決能力」に関わってきます。独学であれば勉強の方法やプログラムの書き方、問題にぶつかる度にその解決方法、全て自分で探して解決しなければなりません。このような過程を経てポートフォリオ完成までたどり着ける方は必然的に問題解決能力が高いです。一方スクール卒の方はわからないところを全てメンター任せにしている場合この問題解決能力は皆無です。企業の目線で考えるとどちらを採用したいと思うかは一目瞭然だと思います。
ぶっちゃけプログラミングの知識は後からの研修でどうとでもなるので、問題解決能力や自走力、あとはやる気と興味が未経験には求められます。これらがスクール卒の方には不足している傾向がある、環境がそうさせていると思っているため「独学できちんとしたポートフォリオを作成している人の方が転職には成功しやすい」と思っています。
まとめ
スクールの話からそれた内容もありましたが、だいたいここで述べた通りです。スクールはお金があれば通うメリットはそれなりに多くありますが、その恵まれすぎる環境が故に自分をダメにしてしまう可能性があります。スクールに通うのであればなんのために通うのか、そこでどんな対応を望むのか、これらを自分のエンジニア転職の動機と合わせてしっかり考え、きちんと定めた上で適切に利用してください。改めて言いますが、スクールを卒業してもエンジニアになれるとは限りませんし、ただスクールを卒業しただけの人材は誰も必要としていません。
あとは別にスクールを利用しなくても、色々教わることのできる環境は多数存在します。それは無料のプログラミング学習サービスであったり、地域の技術系コミュニティーであったりします。Rubyの地域コミュニティーも都会から地方までたくさん存在しますので、お金を払ってメンターに教わるよりも、地元のコミュニティーに参加して色々質問して教わる方がお金もかからないですし質も良かったり赤裸々に色々な事情を知れたり、なんならそこの参加者経由で採用の話まで漕ぎ着けるかもしれません。おすすめです。なのでちょっときつい言い方になるかもしれませんが、スクールに通わないとまともに勉強できないと思ってしまう時点で自分に必要な情報を調べる能力が足りてませんのであまりプログラマーに向いてないかもしれません。
あとがき
一部で少し意図とは違う捉え方をされてしまったようなので訂正させていただきたくあとがきを追加しています。内容的にスクールの批判のように捉えられていますが、スクール自体はちゃんとやっています。広告は誇大だと思いますが、どのスクールも受講者には転職に成功して欲しいと日々試行錯誤していますし、メンターも適当なことを教えようとやってる人は一人もいません。受講者さんも転職したい思いは強いでしょうし、お金を払ってまでプログラミングを学ぼうという意欲や熱意があるのは事実です。記事中でも触れていますが、受講者さんの中にもきちんと目的を持ち、適切にスクールを活用できている有望な方もいます。「スクールに通ったから問題解決能力やモノを調べる能力は低い」というのは少し飛躍しすぎで、「環境的にそうなってしまう可能性が高い」という話に過ぎません。
エンジニアとして働く中で当たり前でも未経験の方にとっては未知のことがたくさんあります。例えば僕はエンジニアとして働くまでは、「プログラマは仕事中調べ物をするなんて許されず、自分の知識だけでプログラムを書いている」と本気で思っていましたし、人の書いたコードをレビューするなんて工程があることも知りませんでした。なので、そういう知らないことを知る機会としてもスクールで現役のエンジニアと関わることや、学習の過程でチーム開発を経験することにはとても意味があることだと思っています。もちろん現役エンジニアと関わるだけであれば地域のコミュニティーを調べて参加すれば良いんですが、そのコミュニティーは未経験者にモノを教えるために存在しているわけじゃなく、参加者各々が自分の知見を深めるために参加しているので、なんでも聞きゃ答えてくれるような環境ではありません。その点スクールはなんでもメンターに聞き放題なので、上手に利用すれば多くのことを知ることができると思っています。
何が言いたいかというと、プログラミングを学ぶためにスクールに通うのはとても良い選択だと思っていますが、プログラミングを教わるためにスクールに通うことはあまりいい選択ではないという話です。人間受け身になると、必要最低限のことしかやらなくなるので、あまり成長はないですし、カリキュラムをこなすだけであれば独学で検索したチュートリアルこなすのと大して変わらない、むしろそっちの方が自力で解決する分ためになるよという話です。
転職についてもスクールに通えばサポートがつきます。これは十分なメリットと言えますが、どういったところへ転職できるかは保証されていません。大学等で経験されたことがある方もいるかもしれませんが、「就職率99%」のように謳っている学校でもその就職先は万年人手不足の企業だったり、興味のない業種でもエントリーさせられ、とりあえず内定が貰えたところへの就職を勧められるといった実態だったりします。これと一緒とまでは言いませんが、望む就職先へ必ず進めるとは思わない方が良いと思います。進学も就職も同じですが、自分の望む組織へ入るためにはライバルに差をつける必要があり、それ相応の才能や努力や運が必要です。就職先にこだわりがないのであればとりあえずスクールに通うという選択もありですが、望む業種があるのであればそれを目指して必要な情報を集めて最善の努力をしていく必要があります。
僕はどんな動機や経緯であれ、新たに門を叩く新人エンジニアやそれに準ずる方たちを全て歓迎したいと思っています。他の現役エンジニアの方も企業の採用者もそうであって欲しいと願っています。ただし、それと採用の話は別なので、学習中の自称「駆け出しエンジニア」の方たちは横ではなく上を見て、必要な知識や情報をかき集めて、使える環境や人は正しく使って、力を蓄えてください。そうして一緒に働きましょう。
みなさん年末年始にこんなポエムに目を通してくださりありがとうございます。スクールは現状敬遠されがちですが、未経験者がプログラマーを目指す上での敷居を下げてくれる有意義な存在でもあると思っています。スクールを潰さず、より良く適切に利用してもらい、業界にたくさん人が入ってくれるよう、建設的な意見交換をしていけるようになると良いですね。