30代、プログラミングを独学、就職は無理?どうすれば?を本気で考えた結果
私は日頃から専門学校や職業訓練、自分で運営しているスクールなどで、Web制作やプログラミングなどを伝える講師の仕事をしています。かれこれ11年ほど経ちます。
また、私自身もWeb制作やシステム開発の仕事に携わっていることもあって、そういったお仕事をしたいと考えている方々と多くお話する機会もあります。その中で感じるのは、もちろん一般的に言われていることですが「すごぉーく挫折する人が多い!」ということです。とても多いです。というか、ほとんどが挫折されているように感じます。9割が挫折する、と言われているようですが、肌感では9割以上だと感じます。
また、30代からプログラマーやSEなどの仕事に転職するハードルがとても高いように感じています。未経験で、しかも独学で、となればなおさらです。
どうして難しいのか?何を克服すれば独学でもできるのか?
30代からプログラマーなどの仕事に転職するためには何が必要なのだろう?
私なりに本気で考えた結果を書いてみたいと思います。
とはいえ、念のため、長年、仕事をしてきた中で感じてきた私の私感も多く含んでいます。
絶対の答えではないということを念頭に読んでいただければ幸いです。
1.プログラミングを独学で学ぶリスク
さて、先ほども書きましたが、プログラミングの独学はそのほとんどが挫折してしまうようです。
でもなぜそんなに挫折してしまうのだろう??と、特にこれから学習を始める方は不安に感じるでしょう。
ここでは簡単に、挫折してしまうポイントを整理してみましょう。
①プログラミングするための開発環境を作るのに挫折する
プログラミングを学習するにあたって、そのプログラムを動かすための環境をPC上にセットアップする必要があります。
もちろん選択するプログラミングの言語によっては、特別な環境がなくても学習を始めることができるものもあります。
HTML、CSS、JavaScriptは特に、特別な環境を用意しなくても、極端な話、メモ帳とホームページを閲覧するブラウザ(EdgeやChromeなど)があれば、とりあえずは学習を始められます。
ですが、その環境の中で学んだだけで就職ができるかというと、それは難しいと思います。
基本だけをおさえることはできても、それを武器に就職する、となると、それはできないと思うのです。
特に30代からの転職を考えた場合、ある程度プロのレベルに近づかなければ、就職は厳しいです。
そのプロ達はもちろん、開発するための環境を用意して仕事をしています。
ならばやはり、プロレベルになれるように学習を進めるためには、いずれ、プログラミングを行う環境を整える必要があるのです。
学びたいプログラミングによって、必要になる開発環境は変わってきます。また、インストール方法もいろいろです。
インストーラーと呼ばれる、インストールをするソフトをダウンローしてクリックすればできるものもあれば、コマンドプロンプトという、黒い背景に白い文字だらけの画面上に、コマンドという命令を入力してインストールする場合もあります。
さらにさらに、Windowsを使っている場合、Macを使っている場合、インストールする環境のバージョンや、現在のPCの状況などによって、開発環境の設定方法、構築方法は変わってきます。
そういった開発環境を用意する、というその時点でまずは挫折する人が多いのです。
書籍やインターネットに情報はたくさんあるのですが、どの情報が自分の状況とマッチするのか判断しなければなりません。
場合によってはエラーが出て、うまくインストールできない場合もあります。
そういったエラーにも対処しなければなりません。
英語だらけのメッセージだったりします。エラーも専門用語だらけだったりします。そもそも書籍やインターネットの解説も、専門用語が多かったりします。
PCに少し精通している場合は何とかなるかもしれませんが、たいていの方は「???」となってしまうのです。
②ネットや書籍を見てもわけがわからない
ネットや書籍で情報を収集することがしやすい時代になりました。
昔よりも情報過多で、とにかく検索すればたいていのことが解決するようになってきたように思います。
ただ、ネットの情報は基本の内容と応用の内容が混ざっていたり、境界があいまいではっきりしていなくて、何から調べたらいいのかわからないことも多いです。
記事の内容が応用的な内容だった場合、書いている内容が理解できるようになるためには、理解するための前提の知識がある程度必要だったりもします。
そもそも、今わからないことをなんて検索すればいいのか?と思うことが出てきます。
自分が調べたい情報がうまくヒットしないことも多く、何度も検索を繰り返したり、無駄な記事を読まなければいけないこともあります。
実は、調べる検索ワードにもコツがあったりして、プロの方はそういった検索の方法にも長けているものです。
また、IT業界の流れはとても早くて、一年前の情報がすでに古くなっていることも多々あります。
ネットや書籍の情報が古くなっていることも多いのです。
ネットも書籍も誤植が結構あったりして、書いてある通りにプログラムを入力しても動かない・・・ということも実は結構あります。
理解していれば「あぁ、これは違うな」と分かったりもするのですが、初心者の方や学習を始めたばかりの方は、なかなか苦労するところです。
「ちゃんと書いているのに、動かないじゃないかーー!!なんでだ??」と困り果てて、学習が止まってしまう、という方の相談を何度も受けたことがあります。
独学の頼みの綱であるネットや書籍も、疑いの目を持ちながら情報収集する必要があって、それは独学者にとって挫折の要因になっているように思います。
③プログラムしてみたものの、エラーの解決ができない
プログラミングを書いていると、必ずエラーに遭遇します。これはプロでもそうです。エラーを一度も出さずに仕事を終える、なんてことは、不可能です。
ただこのエラー、プログラミング独学者にとって、とても苦しい悩みの種になります。3日考えたけど解決できなかった、なんてことはよくあります。そうなると、学習が3日進まない、ということになります。そもそもその3日、エラーに苦しめられて、学習そのものが苦痛になってしまうものです。
プログラムはほんの少し違うだけで、意図しない動作をすることがあります。
スペース一つない、セミコロンが足りない、全角スペースが入っていた!など、普通にPCを使っていてそれほど気にしていなかった細かいことが、プログラミングの世界ではエラーを生む原因になりがちなのです。
それは独学者、初心者にとって、挫折する原因に繋がります。必ず、です。
絶対にエラーを出さない、なんてことはありえない。
そのエラーの原因がわかりづらいものが多い。
しかも独学の場合、このエラーを自分で解決しなければ学習が進まない。
学習が進まないから苦痛になってくる。いやになる。
・・・これじゃぁ、挫折するのは当然です。
④どのレベルまで学べばいいか?本当にそれは今のトレンドなのか?
これもよく質問を頂くのですが「どの程度まで勉強すればいいんですか?」ということです。
プログラミングは実はとても奥が深くて、基本構文からアルゴリズム、フレームワーク、設計手法など、プログラミングといっても学ぶ内容はとても広いです。
初心者の方、独学者の方は、まずこのプログラミングという分野について全体像が把握しづらいと思います。
プログラミング言語の種類だけでも250種類ほどの言語があるといわれています。その中で何を学ぶのか?いくつ習得する必要なのか?を判断しなければなりません。
また、プログラミング言語の学習と、それを使ってどのように開発していくのかは別の話なので、学習範囲が想像以上に広いのです。
その全体像を初心者の方、独学者の方が直感的に把握するのは難しいでしょう。
そもそも、今学ぼうとしているフレームワークは、現在のトレンドか?なんてことも考える必要がありますので、それを調べるだけでも初心者の方にはハードルが高いのです。
実際、どのレベルまで学べばいいか?と言われたら、私は「プログラミング言語の基本とフレームワークを使いこなせるようにはなりたいです。できれば設計手法も学んで、自分でWeb制作やアプリ開発ができるようになりましょう。コピペしただけのコードではなく、自分のコードで。正しく理解したうえで。プロと品質がそれほど違わない程度に」と答えます。
・・・え、無理じゃない?っとたいていの方は言われるのですが、そのくらいの実力がないと、30代からの転職はどんどん厳しくなっていくように思います。
実際、私がお伝えする場合は、その程度までは伝えたいと思ってレッスンや授業をさせて頂いています。
⑤プログラミングを学ぶ、その道筋は正しいのか?
ではそのくらいのレベルに到達するために、どのくらいの時間が必要なのか?
・・・そうです、多くの時間を要します。
そして独学の場合、スクールや経験者に教えてもらっている方に比べると、はるかにその時間が増えていきます。
なぜなら、学ぶ道筋は無数にあって、少し間違うと、理解が難しい道にどんどん迷い込んでしまうからです。
例えば、以前担当したクラスの生徒さんに「わたしは絶対にWebアプリを開発する仕事をしたいんです!」と言われた方がいました。それまでIT系の仕事の経験はない方でしたが、とても覚えが早くて、勉強すれば夢は叶うだろうなぁ、と思っていました。
ですが、その方が最初に手を出したのは「Laravel」です。LaravelというのはPHPのフレームワークです。
確かにその選択は間違いではありません。Webアプリを開発したいと考えているのであれば、いずれ勉強するべき内容だと思います。
ですが、PHPの基本などすっ飛ばして、いきなりLaravelの書籍を購入して学習をしていたんです。
「わかりますか?」と聞いたら「まったく。全然わかりません。挫折しそうです・・・」と言われていました。
ある程度内容を理解している人であれば全員口を揃えて「それはそうだろう」と答えるでしょう。
それだけ無謀な挑戦をされていたのです。
正しい学習の道のりを通らず、いきなりゴールにすっ飛んだようなものです。
九九を知らずに微分積分の問題を解こうとしているようなものです。
包丁の使い方を知らないのに、フランス料理を作ろうとしているようなもの???
とにかく、とっても無謀なことをしています。
LaravelはPHPのフレームワークなので、まずはPHPの基本を学ぶ必要があるでしょう。
そしてPHPとHTMLは相性がよく、連携をとることもしばしばありますので、HTMLの勉強も必須となります。
またPHPはサーバーサイドで動くプログラミング言語なので、サーバーの知識やネットワーク、HTTP通信についての知識も最低限必要になってきます。
そういった学ぶべき内容を抑えたうえで、Laravelに手を出すべきだと、プログラマーのたいていの方はそう答えるはずです。
正しい道のりは、学習をある程度終えた人だからこそわかることでもあります。でも独学者、初心者の方は、その道筋がまずわからないので、遠回りしてしまいます。
結果、挫折しかねない状況になってしまうのです。
⑥プログラミングの書籍の選び方がわからない。表紙だけで選んでしまう。
Laravelの学習を始めたといわれた先ほどの方に、
「どうしてその本を手に取ったんですか?」と聞きました。
すると当然のように「え、初級者向けって書いてるから」と言われまして、
「あー。それは、PHPを勉強した人、という前提で、Laravel初心者の方向けの本ですね」と応じると「えっ?」と。
独学の場合はインターネットか書籍を使うと思いますが、その書籍を選択するうえで、どのような本を選んだらいいかわからないことも多いと思います。
中を開いて読んでみても、書いていることがよくわからないので、結局は表紙の「入門」「初心者向け」「簡単に」といった文言で選んでしまう方も多いようです。
私は仕事柄、毎月10冊近くの専門書を購入します。何万もお金が飛んでいく・・・わけですが、入門者向けの本も、上級者向けの本も購入します。
その中で感じるのは、確かに入門者向け、初心者向けの本は簡単に書かれているものが多いです。
ですが、初心者の方でも理解しやすいように、内容を厳選し、あまり深い内容まで触れられていないものも多いです。
「なんとなく動く」「とりあえずできる」といったレベルの本も多いように感じるのです。
本を読み終えた後「で?なんとなくできたけど・・・結局、自分の力では作れないなー」と感じることも多く、「プログラミングは難しい」と感じる人が多いようです。
結果、挫折してしまう、という流れになってしまいます。
⑦無意識に暗記してしまい、結局何がわからないか見失う
挫折してしまう方に多い傾向かなと感じるのですが、プログラミング学習は暗記してしまうと失敗します。暗記はダメです。
書籍に書いているプログラムを一生懸命暗記しても、同じプログラムは2度と使わないかもしれません。
書籍やネットなどのサンプルプログラムは、覚えるためのものではありません。
理解して、その考え方を応用するためのプログラムです。なので理解なしの暗記は絶対にしてはいけません。
私もいまだに、新しいフレームワークを使って開発しようとする場合、書籍やネットの情報で勉強をします。
もちろんそれなりにプログラムを書く仕事をしてきていますので、学習と開発と並行することもあります。
しかし、たいていは、いったん数冊本を読んでインプットしてから開発を始めます。
その際に意識的にしているのは、
理解する、
理解して覚える、
どう応用できるか、どう利用できるかを具体的に想像する
ということです。
特に、理解する、応用する、は大切だと思います。そのうえでインプットを進めていきます。
暗記してしまう方は、この「理解する」の過程がおろそかになりがちです。とりあえず「こんなものだ」と覚えちゃえ!いつかわかるときがくるだろーと思われる方も多いようですが、リスクは高いと思います。
もちろん、学習を進めて改めて見返すと理解できる点もあります。そういった意味ではいつかわかる時が来ます。
ですが、何でもその考えで学んでいると、いつか「何がわからないのかわからない」状況に陥ります。
もしスクールに通っていたり、誰か学習をサポートしてくれる人がいた場合「あぁ、これは今勉強してもわからないよ。もう少し先に進んでから、改めて戻ってくればいい」とアドバイスしてもらえることもあります。
独学の場合は、そのサポートがないので苦しいのです。
2.30代からプログラミングを独学し、就職するために必要なこと
では次に、プログラマーなどのIT系の仕事に就くために必要なことは何なのか?
特に、30代から、ということを踏まえて考えると、レベルはぐんと上がってきます。
思いつく限り書いてみたいと思います。
①プログラミングだけではなくITの基本を学ぶ
当然といえば当然です。
基本がわからなければいけません。
学ぼうとしているプログラミング言語の基本。
構文について、その記述の仕方、考え方を学びましょう。とても大切です。
そしてプログラミングだけではなく、IT知識の基本も必要だと感じます。
IT知識といってもいろいろあると思うのですが、具体的には「基本情報技術者試験」に合格する程度の知識は必要なのでは?と個人的には思います。
資格試験を受験するかどうかは関係なく、プログラムやPCというものを理解するうえで、勉強しておいたほうがいいと思います。
これを勉強することで、プログラミング的な思考やPCの理屈を理解できるので、プログラミングの学習にも生きてくる部分が多くあります。
実際、私自身もIT系の学習を始めたころはプログラミングの理解が進まず苦労したことがあります。
ですが、並行して基本情報処理技術者試験にも挑戦し、そちらが合格できた頃になると、不思議とプログラミングのロジックを組み立てられるようになっていました。
今になって振り返ると、基本情報の勉強がロジックの組み立てのための思考というか、プログラミング脳というか、そういったものを育てていたのだと感じます。
②ロジックを自分で組み立てられるようになる
プログラミングの基本を理解したら、次は自分でロジックを組み立てられるようになる必要があります。
「設計書があるところから、プログラミングできるようになる」というのはもちろんですが「プログラミング言語の仕様を理解したうえで、自分で設計できる」までのレベルになりましょう。
そのためにはロジックを自分で組み立てられる必要があります。
これはプログラム脳を育てる、という意味でもあると思います。
プログラム脳、なのですが、正直に言うと、これはもともとお持ちの方と、そうでない方といらっしゃいます。
多くの方にプログラミングをお伝えしてきた経験から、そう実感します。
音楽が得意な方、体育が得意な方がいるように、プログラミングがもともと得意な方、がいらっしゃるのです。
「それなら私は無理だ―」と思われる方もいらっしゃるかもしれませんが、無理ではありません。プログラム脳を育てればいいのです。
そのためには、基本を抑えたうえで、プログラミング以外の理解を深める必要があります。
10のことをしたいのであれば、20の理解をしましょう。
プログラミングをしたいのであれば、それ以外の倍の知識を得ましょう。
もともとプログラミングが得意な方は10のことをするために8くらいで何とかしようとすればできちゃったりします。
ですが、「私は苦手かも」と感じる方は、ぜひ頑張って倍の知識を得る学習をしてみてください。
そういった意味でも、先ほどの①のお話に繋がることになります。
基本情報レベルの知識は最低でも持ちましょう。
③就職したい仕事の方向性に合ったプログラミング言語のフレームワークを学ぶ
基本を学び、ある程度ロジカルなことができるようになったら、次はフレームワークを習得しましょう。
例えば、Web系の開発をしたいのであれば、PHPのフレームワークであるLaravelだったり、Javaで開発するのであればSpringだったり、Pythonの場合はFlaskだったり・・・です。
実務の現場では、開発したい対象に合わせて環境を選択します。
そのうえで、たいていの場合はその環境に合ったフレームワークを選択して開発することになると思います。
なので、フレームワークが使える、くらいのレベルであれば、実務でバリバリっと働ける印象を受けます。
転職を考えた場合はフレームワークまで習得しておくと、武器になりますので、ぜひ習得しましょう。
④設計手法を学ぶ
フレームワークの仕組みを学んだら、ぜひ設計手法を身に付けましょう。
その学んだフレームワークを使って開発するために、どう設計すればいいのか?と考えましょう。
行き当たりばったりでシステムを開発する会社さんもあるようですが、それは非常にリスキーです。
もし私が就職した会社が行き当たりばったりな方法をとる会社だったとしても、私が仕事をするプロジェクトについては、ひっそり設計しちゃうと思います。
そのほうが、将来的にも効率がいいからです。
設計手法は会社、プロジェクト、人によってさまざまなようです。
昔はURLを使って設計することもありましたが、最近私の周りではあまり聞かなくなりました。
私自身が設計する場合は、エクセルなどで設計書を書いたりします。
自分がわかるようにざぁーっと書いて、ほかの方に見せる必要がある場合は、分かりやすいように書き換えます。
設計の難しさは、実際にやってみないとわからない点も多いです。
何で躓くのか、何が必要なのか、やってみないと実感できないことも多いです。
どのような手法をとってもいいと思います。いったん設計、という段階を自分で踏んでみることをお勧めします。
⑤GitやZoomなど、チームで開発するために必要なスキルを習得する
Web制作やシステム開発は、一人で完結することもありますが、たいていの場合はチームでプロジェクトに携わることが多いと思います。
あなたはこの、あなたはこれ、といったように仕事を割り振って、一つのものを作り上げていきます。
その際によく利用されるのが、GitHubといったアプリだったり、Zoomだったり・・・。
そういったチームで開発するために使用するアプリの使い方について、基本を学んでおくといいと思います。
いつか必ず使用することになりますので、早い段階から使い慣れておきましょう。
⑥就職活動を意識したアプリやポートフォリオを作成する
就職活動をするためには、結局のところ、自分の実力を説得力のある形で説明しなければなりません。
何年勉強した、簡単なアプリを作ったことがある、といった話だけではなくて、実物を見せてしまったほうが説得力があります。
なので、面接した際に「ポートフォリオはありますか?」と聞かれることは多いと思います。
実際、私の生徒さんも多くの場合、ポートフォリオの提出を求められています。
いつ求められても提出できるように、自分の力を証明できるポートフォリオを作成しておきましょう。
これは就職活動には必須だと考えておいて間違いないです。
そのポートフォリオも、見せるコツ、作るコツがあるように感じます。
よくポートフォリオを作るためのテンプレートなどが公開されていて、必要な部分だけ書き換れば完成するようなものがありますが、それは使わないほうがいいと私は思います。
テンプレートを使ったポートフォリオは、ちぐはぐな印象を受けます。
その人自身を映していないというか、統一性がないというか、魅力的でないというか、不思議なのですが、プラスのイメージを受けにくいです。
また人事担当者の方は、多くの方のポートフォリオを見ています。
自分が「このテンプレートいいな」と思ったものは、ほかの方も同様に「いいな」と思っている場合が多く、ほかの方が同じテンプレートを使っている場合、人事の方は「あ、これテンプレート使ってるな」と一目で見抜きます。
その時点で「テンプレートを使わないとポートフォリオが作れないレベルなんだな」と判断されがちです。
掲載する内容も、自分の技術レベルを載せると思います。
例えば「HTMLのレベルは5段階中の3くらい」みたいな感じで、星のマークを使って表したりしませんか?
これも見せ方の一つとしてアリだと思いますが、では3だと思った根拠は何だろう?と私は思ってしまいます。
人によって3のレベル、は違うと思うので、もう少し具体的に説得力を持たせたほうがいいように思います。
例えばWebコーディングの場合は、
「このサイトはモックアップの値を忠実に再現して制作しています。そのために、XDの機能を使って数値を洗い出して、レスポンシブする場合は%を計算して割り出しました」とか、
Webデザインの場合は、
「このサイトのコンセプトは〇〇で、ペルソナは〇〇です。これを洗い出すために、マインドマップを書きました。このマインドマップはこのようになっていて、この内容から推測しています。
サイトのゴールは〇〇なので、このようなユーザーの導線を設計し、〇〇を工夫してユーザーが到達しやすいように設計しています」
といった、自分がその作品を作るにあたって、どのような過程を経て、どのような努力、作業をしたのかを具体的に説明したほうがいいのでは、と思います。
他にもポートフォリオの作成のコツはあるのですが、テンプレートなどを流用せず、説得力があるものを作りましょう。
3.プログラミングを独学で就職。結局、手っ取り早い方法は・・・
結局のところ、初心者が独学で、そして30代からプログラミングなどの技術で就職をする、というのは、かなりハードルが高いと思います。
初心者でもいいよ、自分の会社で育てるよ、という優しい会社に巡り合う奇跡がなければ、たいていはうまくいきません。
精神論ですが、かなりの根性がいります。ものすごく強靭な不屈の精神が継続しなければ難しいです。
オンラインスクールや、専門学校など、誰かプロに習うのが一番手っ取り早いと思います。
私の教室にきていただいている生徒さんも、最初は独学で頑張ろうとされていた方が多いです。
ですが、どこかのタイミングで挫折してしまい、プログラミングの仕事に携わっている人に相談すると「お金出してでも、誰かに習ったほうがいい」と言われたと、お話される方がとても多いです。
私もそう思います。
特に30代からの転職の場合、時間が限られています。
勉強する時間も、転職するまでの時間も、限られています。
それなら、やはりお金をかけてでも効率よく学んだほうが賢いと思うのです。
皆さんにとって一番いい方法を選択していただければと思います。