かずきち
この記事では、「プログラミングってなに?」という初心者の方からでも、完全独学で基礎からプログラミングを学んでいくためにどうすればいいか?という勉強方法やロードマップをお伝えします。
私自身も、未経験初心者から3ヶ月間の完全独学のみでプログラミングを学び、たった1年でフリーランスITエンジニアとして年収1000万円に到達、10社以上での業務経験を持っていますので、独学からそこに至るまでのリアルな成功や失敗体験も参考になるかと思います。
これからプログラミングを学ぶ方、既に学んでいて悩まれている方に大切な事が全て詰まっていますので、お気に入りやはてなブックマークに入れて少しずつ読んでいってください。
※このコンテンツ内容の大半を図解やイラスト付きで分かりやすくしたものが、ウェブカツ!!を仮入部(無料登録)していただくと無料ダウンロード出来ます。
目次
- 1 プログラミング初心者が独学で学ぶ前に知っておくべき事
- 2 初心者から独学でプログラミングを学んだ先の就職・仕事について
- 3 初心者でも独学でプログラミングを学ぶことは可能!必ず現れる壁とは?
- 4 プログラミング初心者が独学を効率よく始めるための最初の5ステップ
- 5 プログラミング初心者が独学から稼ぐためのプログラミング言語の選び方
- 6 プログラミング初心者が独学で学ぶ際によく陥る間違いと対処法
- 7 プログラミング初心者が独学でWEBサービスを作るためのロードマップと言語別学習に役立つ本
- 8 プログラミング初心者が独学で学習をする際に役立つ有料、無料サービス
- 9 プログラミング初心者が独学で学んだ後のITエンジニアとしての働き方
- 10 プログラミング初心者が独学で学んだ後、ITエンジニアへの転職に成功するために
- 11 ITエンジニアの夢をつかみ取った受講生たち
- 12 プログラミングスクールに通う価値ってなに?
プログラミング初心者が独学で学ぶ前に知っておくべき事
プログラミングとは何か?
まずは、プログラミング未経験や初心者の方で「プログラミングって何?」という方はここから学んでいきましょう。
既に分かっている方は次の章へ飛ばしても大丈夫です。
プログラミングできること
プログラミングとは、パソコンやスマホというマシンに、「こんな時にこんな仕事をしてね」という命令を作る仕事です。
その命令を「プログラム(コード)」と言い、そのプログラムが書かれた言語を「プログラミング言語」と言います。
コンピュータはプログラミングによって命令してやらないと、何もすることはできません。
ですから、インターネットでWEBを見たり、スマホのアプリを使ったり、ゲームをするためにはITエンジニアがプログラミングしてやることは必須なのです。
逆に言うと、プログラミングができないと、コンピュータもスマホも使えません。
さらに自動車や電車や飛行機などの乗り物、テレビやエアコンや冷蔵庫のような家電も電子制御されているものには全てプログラムが使われています。
つまり、プログラミングは現代社会の基盤となっている、重要な技術です。
プログラミング言語とは
「プログラミング言語」は英語や日本語、中国語のような自然言語の違いと同じになります。
コンピュータに命令するための言語ですから、コンピュータが理解できる言語ということです。
それぞれの言語ごとに単語や文法が違います。そして、何より使われる分野が違います。
しかしながら、英語や日本語などの言葉は新たに身に着けるのが難しいのに対し、プログラミング言語は一つの言語に習熟すれば、他の言語も似た部分が多く比較的他言語の習得は楽と言えます。
プログラミング言語はたくさんの種類がありますが、ここでは今ITエンジニアの仕事を始めて稼ぎやすい言語、PHP、JavaScript、Ruby、Java,Python、そしてWebページを記載する言語であるHTMLやCSSについて説明します。
詳細は後で説明しますが、ここではそんな「プログラミング言語」というものがあるということ、そして稼ぐエンジニアになるためにはどの言語を学ぶかが重要であることを覚えておいていただければと思います。
プログラミングとは「料理」作りのようなもの
コンピュータのプログラミングは、例えると「料理」づくりのようなものだと考えてもらえると良いです。
一口に「料理」といっても和食から中華、フレンチからイタリアンとさまざまです。
それぞれがそれぞれの食材をアレンジし、それぞれの調味料を使って、それぞれの調理法でひとつの料理が生まれます。
この中華やフレンチ、イタリアンなどの調理方法が「プログラム言語」と考えてもらって良いかもしれません。
この世界にいったどれだけの「料理」があるでしょうか?
それと同じように、ひと言でプログラミングといってもさまざまなプログラムが存在するのです。
そして「料理」を作るとき、あなたはまずどんなことを考えるでしょうか?
パートナーや家族との毎日の「料理」づくりなら、飽きさせず、そして健康にいい「料理」を作ろうとするでしょう。
そして、パーティで友人たちに食べてもらうなら、楽しく会話が弾むような「料理」を用意するでしょう。
恋人の気持ちをキャッチするための「料理」なら、あなたの恋心や愛情を感じてもらうことが欠かせません。
つまり、「料理」づくりは、その「料理」を食べるシーンで求められる狙いに応えることが最も大切なのです。
そして、コンピュータのプログラミングもこの「料理」づくりとまったく同じ。そのプログラムの目的を考えることが、プログラミング以前に最も大切なことなのです。
プログラミングが小学校で必修化された事で、各小学生向けプログラミングスクールが「プログラミング的思考を養おう」と宣伝をしています。
しかし、彼らは「プログラミング的思考」の本質を理解できていません。
「目的に対してどういう手順やステップがあるか」「どういう手順にすると効率がいいのか」というものがプログラミングの基礎的な思考です。
そして、それは「料理的思考」でも全く変わりありません。
ですので、もし子どもを持つ方がいらっしゃれば、わざわざお金を払わずとも子供に料理をさせてあげてださい。
プログラミング初心者が独学で学ぶには文系は不向き?
また、「プログラミングを学ぶには文系には難しい」と言われる理由も、この部分が関係しています。
文系に難しいのではなく、「暗記だけで今まで切り抜けてきた人」に難しくなるのです。
文系であっても例えば弁護士の方は、ロジカルに道筋立てて考える「論理力」、つまり「プログラミング的思考」と呼ばれている力を持っています。
そういった「自分の頭で考える」ことをしてこなかった人に難しく感じるのです。
さらに、「料理」の美味しさを決めるのは作り手ではなく、食べ手ですよね。
同様に、プログラムの善し悪しも、プログラムを書く側の都合や主張ではなく、使う側の使い勝手の良さできまることになります。
しかし、いまIT業界にいるITエンジニアの多くは、実はこの原理原則に気づいていない事が多いのです。
だからこそ、多少スキルは劣るにしても、これからITエンジニアとして活躍するあなたの強みであり、チャンスになっています。
高度な技術や知識を持つITエンジニアではなく、クライアントを喜ばせることを優先するITエンジニアになることが、あなたが稼げるITエンジニアになれる鉄則となることは覚えておいて下さい。
初心者から独学でプログラミングを学んだ先の就職・仕事について
次にプログラミング未経験や初心者の方は「プログラミングの学び方」を学ぶ前にまず「学んだ後」にどういった未来が待っているのか?
そもそもIT業界はどういう業界で、プログラマーやシステムエンジニアという仕事はどういうものなのか?を知っておきましょう。
ITエンジニアの仕事とは?分かりやすく解説!
初心者からプログラミングをこれから独学で学ばれる方の多くは、職に就きたいという方が多いでしょう。
多くの場合、「ITエンジニア」という仕事に就く事になりますが、まずはITエンジニアがどんな仕事なのかを説明したいと思います。
一言でいうとITエンジニアとは「プログラミング」によって、世の中のプログラムやシステムを作る仕事です。
普段意識することは少ないかもしれませんが、現代の世の中はITエンジニアの仕事で満ちています。
例えば、インターネットのWEBサイトは全てITエンジニアが作ったものです。例えば、下記のようなものです。
WEBサービスの開発
- ・Amazonや楽天のようなネットショッピングサイト
- ・YouTubeのような動画サイト
- ・TwitterやFacebookのようなSNS
つまり、ショッピングサイトで欲しい物を購入できる仕組み、YouTubeで動画が流れる仕組み、SNSでメッセージをやり取りする仕組みなどは全てITエンジニアの仕事なのです。
スマホアプリの開発
あなたは一日に何時間スマホを見ているでしょうか? ある調査によれば、若者(10代~20代)は一日平均三時間以上もスマホを使っていたそうです。そのスマホのアプリもITエンジニアが作っています。
- ・LINE
- ・PayPay
- ・Instagram
スマホアプリはスマホで動くので、カメラや加速度センサー、GPS(位置情報システム)などの機能を使うことができます。非常に可能性がある分野です。
ゲームの開発
プログラミングと聞けばゲームを思い浮かべる人も多いでしょう。もちろん左のようなゲームもITエンジニアの仕事で作られています。
- ・PS4やSwitchなどの家庭用ゲーム機器
- ・ポケモンやマリオカートなどのゲームソフト
- ・オンラインゲーム
- ・VR(仮想現実)ゲーム
AI(人工知能)の開発
最近注目が集まっているAI(人工知能)もITエンジニアが設計しています。
- ・SiriやGoogleアシスタント(音声がわかるAI)
- ・Google画像検索やSNOW(画像がわかるAI)
- ・自動車の自動ブレーキ(制御ができるAI)
- ・ショッピングサイトのおすすめ表示(推論と最適化ができるAI)
これらはすでに私たちの生活に深く入り込んでいて、欠かすことのできないものになっています。
業務システムの開発
会社や組織の業務を効率化するシステムの開発もITエンジニアの仕事です。
- ・銀行のATM
- ・コンビニの商品管理
- ・物流の配送管理
など、企業の業務をスムーズに進めるためにITエンジニアのシステムが役立っています。
こういった様に様々なシステムやサービスを作る仕事がITエンジニアという仕事になります。
さらにはこういった色々なカテゴリーの中でもどのカテゴリーの開発に携わりたいのか?でも学ぶべきプログラミング言語など内容は違います。
もし、あなたが特段「これを絶対にやりたい!」という拘りがなく、
「稼ぎたい」とか「定時で帰りやすく、休みも融通が効く職場がいい」と思っているのであれば、「WEBサービス開発」をお勧めします。理由は後半でお伝えします。
プログラマーとシステムエンジニアの違い
IT関連の職業として「プログラマ」や「システムエンジニア」という言葉を知っている人も多いでしょう。
次にITエンジニアとそれらの関係を説明します。
簡単に言うと、ITエンジニアという仕事が「プログラマ」と「システムエンジニア」という職種に分けられるということです。
「プログラマ」はコンピュータやWebが思い通りに動くようなシステムを、プログラミングする仕事です。一方「システムエンジニア」はシステム全体の設計図を描く仕事です。
建築業界に例えていうなら、システムエンジニアは建てる家の設計図を書く「建築士」さんに、プログラマは実際に家を建てる「大工」さんとも言えるでしょう。
しかし、いまはこのシステムエンジニアとプログラマの垣根もなくなりつつあります。
設計からプログラミング言語を使って実際にシステムを作るところまで、ひとりで両方できる人が多くなってきているのです。
この傾向は今後もさらに加速していくでしょう。
その結果どうなるかというと、難しいプログラミング言語を駆使する能力よりも、クライアントが求めるシステムを作れるかどうかということに重点が移るのです。
WEBデザイナーの仕事とは
また、「ウェブデザイナー」という職業も良く聞きます。こちらのお仕事はプログラミングをするより、美しいWebサイトのデザインをする職業になります。
つまり、建築でいうと建物を作るのではなく、看板の絵を描いてデザインするというお仕事です。
最低限のITの知識は必要になりますが、それより美的センスが求められる仕事です。
ただし、ウェブデザイナーは芸術家ではありません。
つまり、自分の美を求める仕事ではありません。お客様がWebを作るということは、集客をしたいとか、会社の知名度を高めたいなどの目的があります。
その目的に対して答えを出すのがウェブデザイナーの仕事です。ここを間違えると、評価も上がらないし稼げない、残念なウェブデザイナーになってしまいます。
プログラマー、システムエンジニアは中高生のなりたい職業No1
若い人達はそんなITエンジニアの可能性に真っ先に気づいています。
いま中学生、高校生の将来なりたい職業をたずねると、ITエンジニアはなんとナンバーワンに位置します。
YouTuberやプロスポーツ選手のような、限られた人の夢の職業がランクインしているのももちろんですが、ITエンジニアという仕事が中学生・高校生にも認知されてきたということは、私たちにとってもとても誇らしいことのひとつです。
以前は人気の高かった医師や教師といった職業の人気は逆に下がっている一方で、未来に生きる中学生、高校生が、ITエンジニアを自分が将来を託す道のひとつとしてあげてくれています。
これはITエンジニアという職業の輝かしい未来への可能性も示していると言えるでしょう。
男子中学生がなりたい職業
1位 | ITエンジニア・プログラマー | 24.0 |
2位 | ゲームクリエイター | 20.0 |
3位 | YouTuberなどの動画投稿者 | 17.0 |
男子高校生がなりたい職業
1位 | ITエンジニア・プログラマー | 20.8 |
2位 | ものづくりエンジニア(自動車の設計や開発など) | 13.3 |
3位 | ゲームクリエイター | 12.5 |
出典:中高生が思い描く将来についての意識調査2017(ソニー生命)
ITエンジニアの求人倍率は10倍?
DODAの転職求人倍率レポートによるとITエンジニアの2019年の求人倍率(転職)はなんと9倍以上です。
2020年に入ってコロナの影響で多少は下がりましたが、それでも7倍程度を推移しています。
これからはさらに上がって、10倍の突破は時間の問題と考えられています。
つまり、1人の求職者に対して、10件の求人案件があるわけです。
しかも、その上昇トレンドは少なくとも今後数年、人によっては10年、20年と続くとさえ予想されています。
スマホが普及し、コロナ騒動で一気にテレワークが進みました。その結果、「DX(デジタルトランスフォーメーション)」が叫ばれ、あらゆる業界でIT化が進んでいます。
例えば、農業・水産業・林業といった第1次産業でも、国をあげてのIT化が促進されています。その結果、それぞれの産業でIT人材の取り合いが起きています。
ITエンジニアの需要がなくならないワケとは?
しかも、このIT化のためのシステム開発は短期で完了するようなプロジェクトではありません。
短くとも1年、少し大きなプロジェクトなら数年以上の期間の仕事になります。
更にはITシステムは作って終わりの仕事ではなく、その後の「保守メンテナンス」や事業環境の変化による「機能の追加」が継続的に必要になるのです。
つまり、ITエンジニアの需要がこれからどんどん増えていきます。それにも関わらず、ITエンジニアの数は少子化の影響もあって増えません。
「求人倍率10倍はバブルだ」と思われている方もいますが、この環境下では求人倍率10倍という数字は決してバブルではありません。
実際、経済産業省が発表した「IT人材の最新動向と将来推計に関する調査結果」では、すでにIT人材供給はピークを達し、むしろ減少傾向にあります。
そして2030年には最大79万人までその不足数が増大すると推測されています。
ビッグテータ、IoT、AIと、いままで馴染みの薄かった新たな分野での先端IT化人材の不足も著しく、すべてのIT業界で人材不足は頭を抱える問題となっているのです。
不況にも強いITエンジニア
前述したように、コロナ渦中といっても、ITエンジニアの求人倍率は7倍程度を推移しています。しかも、他の業種に比べると下落率も低い傾向があります。ですので、ITエンジニアは不況に強い業種と言えるでしょう。
ITはもはや世の中のインフラとなっており、企業が存続する上で必要不可欠なものです。
不況になって、新規開発を凍結するにしても、既存システムの保守メンテナンス作業はなくすわけにはいきません。
IT業界といった特殊な業界があるわけではなく、ほとんどが既存の業界の業務をシステム化し、そのシステムが稼働する限り存続している業界です。
つまり、IT業界は全ての業界に根付いているものなのです。ですので、ITエンジニアは不況といっても、常に仕事はあるわけです。
さらにIT業界は転職が盛んな業界です。ですから、自分の勤める企業の業績が悪かったとしても、転職市場が成熟していて、他の会社に移ることが容易です。
そのため、能力さえ磨いていれば、不況下でも生き残りやすい仕事といえます。
ITエンジニアとして稼ぐための注意点
ここまで、ITエンジニアの未来は明るい、稼げる職業だ、という話をしてきました。しかし、これにはいくつかの注意があります。
まず、スキルの問題です。
例えば「WEB制作」という「ただホームページを作る人」は将来にわたって稼ぐのは困難です。
なぜなら、「1ヶ月〜3ヶ月程度で覚えられる」ため、これができる人はたくさんいるからです。
つまり必要なスキルが低いので、仕事の単価が下がってしまい、更には需要に対しての供給数が圧倒的に多いのです。
一方、「WEBアプリ」といわれる様なプログラミングやデータベースの構築も含めた「WEB開発」となると「WEB制作」より、はるかに単価が高くなります。
次に、コミュニケーション能力です。WEBやシステムを作るためには、その技術力はもちろん、「顧客の要望をくみ取ることができる」能力が必要となります。
というより、どれだけ技術力があっても、顧客の欲しいものがわからなければそれを作ることはできないので、コミュニケーション能力の方が重要ともいえます。この能力がないと高い報酬を得ることはできません。
また、交渉能力も必要です。交渉能力がなければ、ただ黙っていても報酬は上がりません。
実際に私や私の生徒たちは「月60万円」といった常駐案件を交渉して「月70万円」「月85万円」といった単価で契約していたりします。
こういった能力を技術と並行して磨いていかないと高報酬を得ることができないのです。
交渉時もタイミングや何を言うかが大事ですし、良い案件を出してもらえるかもこの交渉能力でかなり差が出てきます。
IT業界では転職エージェントや仕事の斡旋エージェントがたくさんいます。これを利用すれば他の業種のフリーランスよりも簡単に仕事を見つけることは出来ます。
ですので、「フリーランスは不安定」というイメージは、ITエンジニアという職種においては皆無です。しかし、これらのエージェントに頼りすぎると稼げません。
それは仕組み上あたりまえで、エージェントはお客からもらった報酬を中抜きする商売です。
私の生徒にもこの転職エージェントの元営業からエンジニアとなった方がいるのですが、実際に右から左に人材を流すだけで毎月単価の3割、ひどくて5割、毎月25万以上は抜いています。
しかも、エンジニアのために何かをしてくれるわけでもなく、月に1回の状況確認という名の「現場を辞めないか、トラブル起こしてないかの営業側のメリットの確認」をするだけです。
エンジニアよりも顧客企業との関係性の方が大事なので、単価交渉も強くはやってくれません。
私は元々が不動産の競売で、銀行や賃借人と交渉を行っていました。また、保険の営業では顧客の話を深く掘り下げてヒアリングをして、分かりやすい提案をするといった事は得意です。
しかし、ITエンジニアの方はこれが苦手なことが多いです。
ITエンジニアは確かに稼げる仕事ではありますが、何も考えずにただなるだけでは、ダメだということは知っておいて下さい。
プログラマー、システムエンジニアの業界地図を知ろう
これまでITエンジニアの仕事を説明してきました。ここからはあなたがITエンジニアとして働くイメージを持ちやすいように、もう少しITエンジニアの業界を詳しく説明します。
IT業界は大きく、次の4つに分けられます。
- ・インターネット(Web)業界
- ・情報処理サービス業界
- ・ソフトウェア業界
- ・ハードウェア業界
インターネット(Web)業界
インターネット(Web)業界はWebサイトの制作やインターネット広告の作成などを行います。
大企業向けの大きなWebショッピングシステム案件から、中小企業や個人の小規模なWebサイト、SNSなどの構築まで、さまざまな大きさの仕事があります。
この業界はさまざまな働き方ができることが魅力です。
企業の社員として自社のサイトの構築に関わるという働き方、Web制作会社のスタッフとして企業向けの大きな案件に関わるという働き方、小規模案件であれば在宅やフリーランスとして働くことも可能です。
特に女性にとっては、働く場所や時間を選ばないことは魅力的です。
【魅力たくさん!】女性がエンジニアになるメリットを7つ解説情報処理サービス業界
情報処理サービス業界は企業の業務システムなどを提供します。
仕事として、ハードウェア(装置)の選定から、ソフトウェアの開発、データベースの作成、それらの管理や保守のすべての業務を請け負います。
さらに、ITコンサルと言って企業の業務内容を分析して、業務の効率化や課題の解決のコンサルティングサービスを提供する企業もあります。
この業界は例えば、銀行や自治体のシステムなど大規模のシステムも構築するので、スケールが大きい仕事をしたい方にはお勧めです。
ソフトウェア業界
ソフトウェア業界はパソコンやスマホのアプリを開発する仕事です。例えばパソコンで使うワープロや動画編集のソフト、スマホで使うSNSやゲームのソフトを開発します。
この仕事も大規模なものから小規模なものまで広く存在して、大きいものは大人数で組織的に開発しますし、小規模なものは個人でも開発できます。
案件や規模の多彩さが魅力的なお仕事です。
現在では、スマホアプリといったものはWEBでも利用できるものも増えているため、ソフトだけで完結する仕事は少なく、WEB業界の技術やスキルも必要となっています。
ハードウェア業界
ハードウェア業界は例えばテレビや自動車などの特定製品のプログラムを開発する仕事です。
今では自動車も電子制御の塊です。だから、その動作をプログラミングしてやらなければなりません。
この手の製品には「組み込みソフトウェア」と言われ、その装置内で専門の役割を担います。
目に見える製品に結びつくので、ロボットや乗り物など、メカが好きな人にはお勧めです。
初心者でも独学でプログラミングを学ぶことは可能!必ず現れる壁とは?
前章では、IT業界の分野やプログラマー、システムエンジニア(ここでは総称してITエンジニアと度々、呼んでいきます)という職業内容、働き方について触れていきました。
この章では、プログラミング未経験でこれから学ぼうとされている方や、学び始めているプログラミング初心者の方が抱きやすい
「そもそも初心者が独学でプログラミングを学ぶことなんで出来るのかな?」
「これから、どんな困難や壁が待ち受けているんだろう?」
「初心者がプログラミングを独学で学ぶって、どれくらい大変なんだろう?」
といった不安について答えていきたいと思います。
なぜ、プログラミングが難しく感じるのか?
特に文系の方や未経験の方にとっては、「本当にプログラミングなんて習得できるのだろうか?」と不安になっている方も多いと思います。
しかし、「お金を稼ぐこと」を目標とした場合、プログラミングを学ぶことはそれほど難しいことではありません。
まずは自信を持っていただくためのお話をしたいと思います。
まず、プログラミング学習は完璧にする必要はありません。
例えば大学の入試や資格試験の場合、膨大な試験範囲を完全に理解しておかなければなりません。
しかし、プログラミングであれば、現場で多少わからないことがあったとしても、そこで調べて勉強すれば良いだけです。
わからないことがあった時、「何を検索すれば良いか」や「問題解決の手順」を理解しておけば良いのです。
現場で出会う問題は難しいものが多いでしょう。しかし、ほとんどの問題はだれか凄いエンジニアにより既に解決されています。
それを上手にカンニングしてやればよいわけです。
稼ぐためのプログラミングは難しくない
また、エンジニアで稼ぐにはトップになる必要もありません。例えばスポーツ選手であれば、その競技でトップにならないとなかなか満足な稼ぎを得ることは困難でしょう。
そして、プログラミングの世界にも能力が非常に高いスターのようなエンジニアがいるのも事実です。
しかし、稼ぐためのプログラミングであれば、求められるのは総合点です。
プログラミングだけでなく、顧客の業界の知識、営業スキルやマーケティングスキル、ビジネススキルなどのあらゆるスキルと知識を合わせた総合競技になります。
だから、トップでなくても稼げるようになれるのです。
もちろんあなたがGoogleで働きたいとか、業界をリードするシステムを開発したいなど、「技術のみ」で勝負したければ、大学で4年をかけてでも学んだ方がよいかもしれません。
でも実際のところ、ある程度まではスキルと報酬は比例しても、それを超えるとスキルを上げても報酬が比例しなくなります。
博士号でもない限りは、採用側企業から見ればどんぐりの背比べでしかなく、相応な報酬で働くことが難しいです。
だから、稼ぐことが目的あれば、報酬と比例した一定レベルまでを学べば良いだけです。
そこまでのレベルであれば、最長でも1年、しっかり時間が取れるのなら3ヶ月から半年程度ですので「難しい」というほどではありません。
プログラミングが難しいと感じる5つの理由
とはいえ、実際にプログラミングの教材に向かってみると、「やっぱり難しい」と感じることもあるでしょう。
ですので、これからプログラミングが難しく感じる理由を説明しておきたいと思います。これを克服すればプログラミングはとても学習しやすくなります。
プログラミングが難しいと感じる理由、この多くは次の5つにあてはまります。
- ・プログラミングのコードが英語で理解できない
- ・エラーがたくさん発生する
- ・環境構築が難しくて、プログラミングが始められない
- ・学ぶべきことが膨大でどこから手をつけていいのかわからない
- ・モチベーションが続かない。
それでは、ひとつずつ解説していきます。
プログラミングのコードが英語で理解できない
プログラミングのコードは全て英語です。英語に苦手意識がある人はそれだけで「難しい」と感じてしまうかもしれません。
しかし、実はプログラミングを学ぶ上で、英語を読むことや理解できることは全く関係ないのです。
もちろん、プログラミングの情報は英語で書かれているものが多いので、英語ができればエンジニアとして有利なのは確かです。
しかし、ことプログラミングができるようになるかどうかには英語は関係ありません。
なぜなら、プログラミングで使う英語は、用語をそのまま覚えれば良いだけです。
プログラミング用語はキーワードのようなものなので、その意味がどうというより、そのまま覚えれば良いのです。アイコンのようなものと考えた方がよいでしょう。
私自身も英語は中学英語しか分かりませんし、周りのエンジニアにもそういった人は多くいます。
英語が読めることよりも大事なことは「とにかくコードを書くこと」です。例えばあなたが泳げるようになりたいと思っても、本を読むだけでは絶対に泳げるようにはなりません。
プログラミングもこれに似ています。
何度も何度も繰り返すことにより、体に覚えさせることです。書いて書いて書きまくって、指が反応できるようになりましょう。
そうすればプログラミングを習得できます。
最初は生徒さんも半信半疑でやってみるのですが、成長していくほどスポーツに似ている事を感じる様です。
エラーがたくさん発生する
独学で本やyoutubeなど動画教材を使ってプログラムを書いて、いざ実行してみるとエラーが出て実行できないという事はよく起こります。
これは教材自体が悪い場合もありますが、原因のほとんどは「解説の勘違い」「打ち間違い」です。
学校でも同じ先生の授業を聞いてても「話、聞いてた?」というトンチンカンな答えや質問をする人はいましたよね?
しかし、エラーが発生しても落ち込む必要はありません。というのも、それは現役でバリバリ働いているエンジニアでも同じです、彼らも常にエラーと戦っています。プログラミングにエラーはつきものなのです。
ただ、バリバリ働いているエンジニアが違う部分は、それを解決するためにかかる「時間」です。
優秀なエンジニアは素早くエラーを解決します。しかしそれは才能ではなく、何度もエラーに遭遇した経験なのです。
だから、エラーに遭遇したら喜ぶくらいの意識でいた方が良いでしょう。
なぜなら、それを解決することにより、あなたは短時間でエラーを解決する力を身につけられるのです。
とはいえ、実際にエラーが発生したときにどうしたらいいか分からないかもしれません。そんな時にまず自分でできる、簡単な方法をお教えしましょう。
それは、「エラー内容をそのままコピーしてGoogleで検索する」ことです。初心者がつまずくようなエラーの場合、この検索結果の中に解決方法が見つかることがほとんどです。
もし、見つからない場合は遠慮なく、上司や先輩、メンターや先生、オンラインの質問サービスで聞いてみましょう。
環境構築が難しくてプログラミングが始められない
プログラミングをするためにはパソコンの中で色々なソフトのインストールや設定などが必要なプログラミング言語があり、そういったプログラミングを始める環境を整えることを「環境構築」といいます。
先ほどの料理で例えるなら、調理器具などをまず準備する段階という事になります。
ですが、残念ながら、プログラムを始める時に環境構築でくじけてしまう人は多いです。特にJava言語は環境構築がかなり面倒なので、本当のプログラミングに入れないまま挫折してしまう人も多いものです。
この対策としては、まずは環境構築が不要、もしくは簡単な言語を選ぶことをお勧めします。
エンジニアとしてお金を稼ぎたいのであれば、環境構築の技術は最終的には必要ですが、最初はプログラミングになれることを優先すべきでしょう。
JavaScriptであれば、テキストエディタとブラウザがあれば動作させることができてしまいます。
つまり、パソコンであれば最初から入っているので、追加のソフトウェアを入れることなくプログラミングを始められるのです。
また、サーバーサイド言語を学ぶ時も、JavaやRubyではなく、PHPを選べば環境構築は簡単です。MACなら「MAMP」、Windowsなら「XAMPP」というソフトウェアをインストールするだけで、初心者でも簡単に環境構築ができます。
学ぶべきことが膨大でどこから手をつけていいのかわからない
プログラムの世界は広大です。どれだけ学んでも、学んでも人間の一生ごときで学びつくせるものではありません。
まず、「どのプログラミング言語を学べばいいの?」から始まりますが、プログラミング言語は世の中に300種類以上もあり、あまりに多いのでどれから学んで良いのかわからないかもしれません。
でも、これを普通の言語に置き換えれば、簡単にわかることです。
イギリス人と話したければ英語を学ぶだろうし、フランス人と話したければフランス語を学ぶでしょう。
中国人と話したければ中国語を選ぶし、タイ人と話したければ、タイ語を学びます。
つまり、どの言語を学ぶかは目的によってきまるのです。漠然と「アラビア語を学ぼう」なんて人はいませんし、目的を定められないのであればある程度幅の効く「英語」を学ぶという選択になるでしょう。
Webアプリを作りたければ、PHPやRuby、Pythonなどが候補になりますし、ゲームを作りたければC#を学んだ方が良いかもしれません。
Webサイトを作りたいだけならば、HTMLとCSS、JavaScriptを学べば良いです。
やりたいことに必要最低限のスキルをまず身につけるべきです。
さらに言語を決めても、どのフレームワークを学ぶかとか、どの関数を学ぶかとか、膨大な選択肢があります。でも、ここでも答えは同じです。
まず、自分の目的のために最低限の項目を学んで下さい。そして、実際にプログラミングをするうちに、関連する知識も広がっていくでしょう。
逆に言うと、目的もなしに「プログラミング勉強したいな……」と言っている人には、なかなかプログラミングを身につけることはできません。
モチベーションが保てない
このように、プログラミングを学ぶことはあなたが思うより難しくありません。
しかしながら、新しいことを学ぶということ自体が人間には抵抗になってしまいます。
ですから、最初は良くても、黙々とコードを書いているうちにだんだんとつらくなり、学習のモチベーションが保てなくなることもあるかもしれません。
モチベーションを保てない原因はいくつかありますが、その一つには、学ぶ目標がないからです。ですから、目標を設定して、その目標を達成した時に、自分にどんな良いことがあるのかをしっかりとイメージします。
辛くなってきた時には、その未来の自分の姿を思い浮かべると、乗り越えられることでしょう。
また、勉強を続けるためには、毎日の習慣にすることも効果的です。
例えば、「朝に顔を洗う」「寝る前に歯をみがく」が辛くて続けられない、という人はあまりいないでしょう。
なぜなら、これらの行動は多くの人が習慣として、生活にしっかり組み込んでいるからです。
ですから、朝30分とか会社から帰った後に30分など、時間を決めて習慣にしましょう。
頭で考えるより先に、身体がプログラミングを始めるような状態になれば、学習を楽に続けられます。後ほどお話しする「小さなゴール」を作る様にしましょう。
それでも難しいという方の場合は、スクールを利用することを考えてください。独学と違い、仲間や講師がいるので習慣化がしやすくなり、くじけそうになった時に励みになることでしょう。
独学でもITエンジニアとして転職出来る
独学でITエンジニアになることは可能です。なんといっても私自身が未経験から独学でプログラミングを学び、ITエンジニアに転職することに成功していますし、同じ職場にいたITエンジニアの方達や生徒さんもそうだからです。
しかし、そうはいってもプログラミングを学習する道のりが全く見えない、という方が多いことでしょう。
ですので、ここでは独学でプログラミングを学ぶ道筋をこれからご紹介していきますが、「なぜ独学でも転職が出来るのか?」というと企業が何を求めているのか、企業の応募資格を見てみるとその訳がわかるでしょう。
こちらは一例になります。
- A社の場合
- ・20歳~35歳くらいまで
- ・HTMLの基本知識 UNIX、又はLinuxの知識(研修・独学可)
- ・何か1つプログラミング言語の経験(研修・独学可)
- B社の場合
- ・Javaを用いたプログラミング経験
- ・「プログラミングをし続けていきたい」という意欲が高い方と、一緒に働きたいと考えております。
- ・第二新卒歓迎
- C社の場合
- ・システム開発経験者、プログラミング言語知識保有者
- ・VB.NET、Javaの経験者大歓迎!
- ・学歴不問、社会人経験不問
上記を見てわかる通り、ITエンジニアの業界では、学歴や資格は必要とされていないということです。
つまり、知識や経験さえあれば良くて、それが独学でも全く問題がないわけです。
大企業に入るように学歴は必要とされないし、医者や弁護士のように資格がいるわけではないので完全な実力主義の世界だという事を認識して下さい。
プログラミング学習に必要な勉強時間
独学で良いのだ、と言っても知識や経験を身につけるためには、それなりに時間が必要なことは確かです。
一般的にはプログラミングを独学で習得するには「1000時間が必要」だと言われています。
1000時間と言われると途方に暮れる方も多いでしょう。一日5時間勉強したとしても200日、つまり半年以上かかってしまうのです。
しかし、勉強時間が必要なのであれば、単に半年とか1年とか期間を決めて頑張れば良いだけかもしれません。
実際にプログラミングを独学で初めて、9割の人は途中で挫折すると言われています。
それは途中でモチベーションが保てなくなったという方が多いからです。
独力で解決しづらい問題に直面し、その時モチベーションが落ちていると、そのまま挫折してしまう方がほとんどになります。
初心者の方が独学でプログラミング学習を進めると決めたとしても、途中で挫折しないように同じ仲間を持つ友人を持ったり、メンターとなってくれる人を持つなど、人のつながりを持つようにして下さい。
もちろんスクールに通う事も、この問題を解決する手段です。
ちなみに、「ウェブカツ!!」では独習だと1000時間は必要な学習時間を平均550時間程度まで短縮できるカリキュラムになっていて、これで現役エンジニアの4〜5年ほどのスキルをつける事ができます。
ですが、生徒さんのほとんどは漠然と「プログラミングスクールに通えば何とかしてくれるだろう」という考えで入って来る方はほぼいません。
「30代で早く転職しないと後がない」「時間を無駄にしたくない」といった考えから、お金で挫折の可能性を回避したり、時間をお金で買うといった投資選択をされています。
プログラミング初心者が独学を効率よく始めるための最初の5ステップ
STEP1:目的、目標を決める
「いつ」までに「何」を達成するのか
まずは、目的と目標が決まらなければ「何をしていいか」がわかりませんよね。当てもなくプログラミングを学習していけば挫折率はかなり上がります。
私の独学型プログラミングスクールは入会をするとまず「目標」を設定させますが、この目標設定がとてもふわっとしている方は漏れなく挫折していますので注意してください。
- ・なぜプログラミングを学ぼうと思ったのか?
- ・プログラミングを学んで何をしたいのか?
- ・プログラミングを学んで何を作りたいのか?
- ・プログラミングを学んでどういう仕事をしたいのか?
- ・プログラミングを学んで将来どうなりたいのか?どういう状態になっていたいのか?
- ・プログラミングを学んで現状の何を解決したいのか?
- ・それは何年後なのか?
といった目的の明確化と具体的な目標をまずは必ず立ててください。
目標を細かく細分化しよう
目標(ゴール)は必ず細かくしましょう。漠然であるほど達成確率は下がりますし、そもそも「ゴールまでの目標の細分化」する事ができません。
目標の設定方法については、前述の様な具体的なゴールにしなければ、現在からゴールまでの間に「何をいつまでにやるのか」というゴールの細分化を行うことが出来なくなってしまいます。
例えば、ITエンジニアになりたいとしても
- ・フロントエンドエンジニア
- ・バックエンドエンジニア
- ・スマホアプリエンジニア
- ・インフラエンジニア
など多種多様ですし、何を作りたいのかで学ぶべきプログラミング言語が違ってしまいますので、「各目標ゴール」を設定することができなくなってしまいます。
ゴールを明確にしたのであれば、あとはその大きなゴールを達成するためにはこれから「いつ」までに「何を」達成していくのかといった「ロードマップ」を作っていきましょう。
この記事では後ほど、独学初心者からでも学習労力が少なく転職し稼ぎやすい「WEB系」と呼ばれる業界の「フロントエンドエンジニア」「バックエンドエンジニア」になるためのロードマップを後ご紹介します。
STEP2:学ぶべきプログラミング言語を決める
目的によって学ぶべきプログラミング言語は違ってきます。プログラミング初心者の方は「どんなプログラミング言語で何が作れるのか」を学んでいきましょう。
HTML言語
HTML(エイチティーエムエル)言語とはHyper Text Markup Language(ハイパーテキスト・マークアップ・ランゲージ)の頭文字をとったもので、WEBページを作成するための基礎言語(マークアップ言語)になります。
テキストにテキスト以上の意味(ハイパーテキスト)を持たせて、目印(マークアップ)をつけた言語という意味です。テキストに目印をつけることで、どこが見出しでどこがリンクなのかをコンピュータに伝えることができるようになります。
皆さんがスマホやパソコンで見ているホームページはどれもがこのHTMLを使っています。
ホームページ(WEBサービスとも呼びます)を作るのは建築で家を作る事に似ていて、HTMLというのは家の骨組みを作れるプログラミング言語になります。
また、マークアップ言語と呼ばれる様に厳密にはプログラミング言語ではなく「マークをつける言語」になるため、今では小学生でも学んでいる子は多いものになります。
HTMLの意味とは?初心者向けにHTMLの基礎知識をまとめました! HTMLの基本をわかりやすく解説!頻出タグとコード例もご紹介【初心者向け】 誰でもできるHTML&CSSプログラミング|HTML/CSSの基礎 初心者にオススメ簡単プログラミング言語まとめCSS言語
CSS(シーエスエス)言語とはCascading Style Sheets(カスケーディングスタイルシート)の略で、文章にデザインを加えることでWEBサイトの見た目を整える言語になります。
WEBサイトを作る言語にHTMLがありますが、HTMLだけだとWEBページのデザインを細かく作っていく事が出来ないため、どこのホームページでも今ではこのCSSが一緒に使われています。
建築に例えるなら、CSSは外壁や内装のデザインをしていくプログラミング言語になります。
このHTML言語とCSS言語を学ぶと飲食店なり美容室など一般的なおしゃれなホームページはどれも作れてしまいます。
ただし、そういったホームページにユーザー登録や飲食店の予約いった機能をつけたい場合やAmazonなど通販サイトやメルカリ、Facebookの様な動きがついてるものユーザーごとで表示する内容を別々に変えたり毎回違うものを表示させる必要のあるもの、ブラウザ上で動くゲームは作れないので別途、Javascript言語とサーバサイド言語を一つ、SQL言語学ぶ必要があります。
【CSSの基本】初心者が知っておきたい役割と書き方を解説 【初心者向け】CSSの書き方をステップごとで解説! 【HTML入門】スタイルシート(CSS)の基礎知識と書き方を解説!JavaScript言語
プログラミング言語の一つであるJavaScript(ジャバスクリプト)は、Webブラウザ上(ユーザーに見えるところ)で動かすことができ、フロントエンドの言語とも言われています。
HTMLだけでは、静的なページしか作成出来ませんが、JavaScriptを使うことによって、Webページに動きを付けることができユーザーがより使いやすいサイトに仕上げていくことが出来ます。
例えば、このブログでも「モーダル」と呼ばれる画面が少し暗くなって目の前に広告が現れるものはJavascriptで作る事が出来ますし、Twitterでいいねを押すとハートマークに色がついたり数字がカウントアップするのもJavaScript言語で作られています。
こういった動きはJavaScript言語ででしか作る事が出来ないため、これもほとんどのプログラミング初心者の方が独学で学ぶ時に学ぶものになるでしょう。
また、「将来伸びるプログラミング言語で第一位」「現役エンジニアが学んでいる言語で第一位」にもなっていて、私自身もフロントエンドエンジニアやバックエンドエンジニアどちらも経験し数多くの会社で仕事をした中でもJavaScript言語が今後一番使われていき稼いでいける言語だと確信できます。
JavaScriptとは?学ぶ前に読んでおきたい手引き プログラミング初心者にJavaScriptがおすすめな理由とは? 【初心者向け】JavaScriptの基礎知識や勉強法をご紹介! 学ぶべきWeb系プログラミング言語はこう決めるPHP言語
PHP(ピーエイチピー)言語とはWeb開発でよく使われる「サーバーサイド言語」と呼ばれる種類の中でも「スクリプト言語」と呼ばれるものになります。スクリプト言語の中では世界のWEBサービスで最も使用されている言語になります。
HTMLでは静的なWebページ(ユーザーによって表示内容は変わらないページ)しか生成できませんが、PHPを使うと動的なWebページ(見るユーザーによって表示内容を変えることができるページ)を作ることができます。
スクリプト言語というのは、簡単に書ける言語と思ってもらえれば大丈夫です。
後ほど出て来る「Java言語」はPHPと同じくサーバーサイド言語というカテゴリーのものになりますが、その中でも環境構築が面倒だったり書くコードが大変な「コンパイラ言語」と呼ばれています。
前述の様にホームページにユーザー登録や飲食店の予約いった機能をつけたい場合やAmazonなど通販サイトやメルカリ、Facebookの様な動きがついてるものユーザーごとで表示する内容を別々に変えたり毎回違うものを表示させたい場合にはこの「サーバーサイド言語」と呼ばれるものを学ぶ必要があります。
PHPとは?初心者必見の基礎知識・できることや勉強法を解説 PHPとHTMLの違いとは?埋め込み方は?基本を解説します! PHPで作れるものとその未来【もう迷わない言語選び】 PHPとhtmlの違いを理解しよう!プログラミングするなら知っておきたいこと 【PHP入門】ゼロから始めるPHPRuby言語
Ruby(ルビー)言語は、日本人のまつもとひろゆきさんが作らた日本製のプログラミング言語になります。PHP言語と同じくサーバーサイド言語のグループになり、その中でもライトにシンプルに書くことが出来る「スクリプト言語」になります。
サーバーサイド言語は何種類もありますが「書き方が違うだけで出来る事は皆同じ」なため、どれを選択しても作れるものは変わりませんが、学習効率と仕事獲得のしやすさが違ってきますので注意しましょう。
よくプログラミングスクールでRubyを教えているところは多いのですが、世界で見るとPHPに比べるとほとんど使われてはおらず「Rubyってなんか昔あったよね」というのが現状です。
また、現在ではRubyが使われた日本の仕事はかなり減少をしてしまっていますが、未だ日本では日本製ということもありそれなりの根強い人気を保っているため、PHPとRubyとでスクリプト言語の2大巨頭として取りざたされることが多いです。(実際は、頭の大きさが全然違うのですが。。)
Rubyの場合は、ほとんどの場合「Ruby on Rails(ルビーオンレイルズ)」というWebアプリケーションフレームワーク(便利な工作キットの様なもの)を利用して、様々なアプリケーションを開発をしていくため、PHPとは違いRuby言語単体ではほとんど何も作ることができません。
よく「Ruby on Rails」と「Ruby」を別の言語だと思っている初心者の方がいますが、「Ruby on Rails」はRuby言語で作られているためRuby言語をそもそも学ばなければ使う事は出来ません。
因みにPHPなど各言語にこういったWebアプリケーションフレームワーク(略して「フレームワーク」と言います)が存在し、PHP言語の場合は「CakePHP」「FuelPHP」「Zend」「Phalcon」「Laravel」といった何種類かのフレームワークが存在します。
私の運営する独学型スクールでもRubyやRuby on Rails、後述するJavaといったプログラミング言語を学ぶことも出来ますが、関連記事でお伝えしている内容から将来性が乏しいため、プログラミング初心者が最初に選択をする言語としてはオススメしていません。
プログラミング言語のRubyとは?何が作れる?特徴は? Ruby on Railsでできることは?【特徴と開発できるサービス紹介】 JavaやRubyは未経験者は絶対に学んではいけない。Java言語
Java(ジャバ)言語はサーバーサイド言語のひとつで、その中でも「コンパイラ言語」と呼ばれるものになります。
コンパイラ言語の場合は「コンパイラ」と呼ばれる「変換器」の様なものを一回通す事で、自分が書いたプログラミングコードを「機械がより処理しやすい言葉に変換」する必要があります。
そのため、すぐにコードを書いたから動かせるわけではなく、変換までに時間がかかってしまうのが難点で、そのための環境構築が初心者にはとても大変にはなります。
その反面で、スクリプト言語に比べてより「機械が処理しやすい」言葉に変換されているため、処理スピードが早く、コードの不具合も少ないため、大量のユーザーを抱えて処理スピードが求められ、間違いが起こっては一大事となってしまうサービスや業務システム、基幹システムといったものに使用されています。
私自身も大手携帯会社の業務システムでJavaを使っていましたが、ちょっとコードを修正して表示したいだけなのに毎回コンパイル(変換をする)するまでに1時間はかかってしまい、かなり日々の業務スピードが遅いことにイライラさせられた経験があります。
かなり辛抱強い方でないとストレスが溜まりやすい言語と言えるでしょう。
ちなみに「Java言語」と「JavaScript言語」は「メロン」と「メロンパン」くらい全く違う言語なので初心者は間違えやすいので注意しましょう。
これから学ぶ初心者必見!!プログラミング言語の違いC#言語
C#(シーシャープ)言語はマイクロソフトが開発したプログラミング言語で、C++やJavaといった世界的に使われている言語と同じサーバーサイド言語になります。
C#の書き方はJavaに似ている部分があり、C#を使った経験があれば少し学習するだけでJavaも扱えるようになるのが特徴です。ゲームアプリの開発でよく使われています。
Unity開発で使用するプログラミング言語「C#」の基礎知識Python言語
Python(パイソン)言語は、PHPやRubyといったサーバーサイド言語の中でもスクリプト言語になります。
Rubyと似た様なシンプルに書けるのが特徴で、さらに「機械学習」「AI」といった分野に特化しているプログラミング言語になります。
「Pythonを学べばAI開発の仕事に就けるんだ!」と思われるプログラミング未経験者やプログラミング初心者の方も多いのですが、実際にはPython言語を学んでもプログラミングの書き方が出来る様になるだけです。
そのため、その書き方をもとにAIにどういう「ロジックを持たせるか」という部分に関しては、「大学の数学」レベルがそもそも分からないと仕事が出来ませんので注意してください。
ただ、まだまだ仕事の数としてもPHPなどと比べると歴然の差になってしまっています。
Pythonを使ってできることは?開発されたWebアプリをご紹介! 今話題のAIプログラミング!開発言語や習得方法は?Swift言語
Swift(スウィフト)言語は「iOS(アイオーエス)アプリ」と呼ばれるiPhoneのアプリを作るためだけに生まれたプログラミング言語になります。
Swiftが誕生する前は「Objective-C(オブジェクティブシー)言語」と呼ばれる難解な言語を使用する必要があったのですが、Swift言語で作れる様になった事でかなりプログラミング初心者からでとっつきやすく学びやすくなっています。
Kotlin言語
Kotlin(コトリン)言語は、「Android(アンドロイド)アプリ」と呼ばれるAndroidスマホのアプリを作るためのプログラミング言語になります。
こちらも、Kotlinの前は「Java言語」を使ってAndroid開発を行っていましたが、Kotlinの方がシンプルに書けるため今ではKotlinを採用して開発を行っているアプリ開発企業が増えています。
因みに実は「JavaScript言語」を使えればiPhoneアプリもAndroidアプリも作ることが出来てしまいます。そういった一面もあり、「仕事の幅」や「将来性が高い」とも言われています。
SQL言語
SQL(エスキューエル)言語はインターネット上にある「データベース」と呼ばれる「データの格納庫」で使われる言語になります。
皆さんがユーザー登録した際に入力した名前やemailといった情報が常に保存されているのも、このデータベースがあるからになります。
ですので、WEBサービスを作るにはこちらも学習に欠かせない言語になります。
また、ゲームなどスマホアプリ開発でも、セーブデータといった様々なデータがデータベースへ保存されていますので、このSQLを学んでおく必要があります。
MySQLとは?データベースについてプログラミング初心者向けに解説! 【プログラミング初心者必見】MySQLの基礎を解説しますHP制作(WEB制作)をしたいなら
こちらのプログラミング言語だけを学べば大丈夫です。
- ・HTML
- ・CSS
- ・JavaScript
WEBサービス開発(WEB開発)をしたいなら
こちらのプログラミング言語だけを学べば大丈夫です。
- ・HTML
- ・CSS
- ・JavaScript
- ・PHP
- ・SQL
スマホアプリ開発をしたいなら
こちらのプログラミング言語だけを学べば大丈夫です。
- ・KotlinまたはSwift(JavaScriptでのアプリ開発はまだ数が少ないため除いた方がいいです)
- ・SQL
ゲームソフト開発をしたいなら
こちらのプログラミング言語だけを学べば大丈夫です。
- ・C#
- ・SQL
AI開発(機械学習)をしたいなら
こちらのプログラミング言語だけを学べば大丈夫です。
- ・Python
- ・SQL
※別途、大学レベルの数学知識が必要になります
【初心者必見】はじめてのプログラミング言語はこれを選ぼう!STEP3:環境構築をする
学習サービスの中にはProgateなど「オンラインでプログラミングが学べる」というものがありますが、実際に何かの物として作るためには、オンラインではなく自分のPCの中で環境構築を行ってプログラミングをしていく必要があります。
Progateなど学び始めとしてプログラミング初心者の方が利用をするには学びやすいですが、いざ何かの物を作っていくことになると環境構築や環境ごとでの不具合に苦悩する事になりますので、早めに自分のPCでプログラミングを行なっていくといいでしょう。
PCの購入
プログラミング学習のためのPCを選ぶときのスペックとしては
- ・メモリ
- ・HDD(ハードディスクドライブ)
- ・CPU(シーピーユー)
- ・画面の大きさ(画面サイズ)
- ・画面の画質
の3つで選ぶ事になります。ですが、この中でプログラミング学習に重要なのは「メモリ」と「画面の大きさ」「画面の画質」だけになり、HDD容量も256GBもあれば十分ですし、CPUも2GHzもあれば4コアだの8コアだのインテルだの。入ってるだの。というのは気にしなくて構いません。
プログラミング学習でおすすめのメモリ容量とは
PCであればどんなものでもプログラミングを行う事は出来ますが、PCの「メモリ」が少ないとブラウザを開きながらプログラミングを打つ度に固まったり、プログラムをいざ動かし始めると重くなってしまったりと学習効率にダイレクトに響いていきます。
そのため、PCの「メモリ」は最低でも8GBのものを購入しましょう。WEB制作やWEB開発、アプリ開発ともなると「デザイン」が絡んでくる事がほぼになり、Photoshopといったデザインツールは必須になります。
デザインツールはかなりメモリを消費するため、8GBだと足らず16GBは欲しいところです。メモリが少なくても動きはしますが、かなり動作が重く待ち時間が増えて作業効率が悪いので、予算が許すのであれば16GBをお勧めします。
プログラミング学習でおすすめのパソコンはノートブック
PCはデスクトップよりもノートブックがオススメです。
プログラミング学習をし始めると必ず「煮詰まってしまう」時がきますので、いつでも気軽に持ち運べてどこでもプログラミングが行える様にしましょう。ノートブックであれば、カフェなどで気分転換しながら学習が出来ます。
プログラミング学習でおすすめの画面サイズ
また、小さい画面だとコードが見づらくなるため、最低でも13インチのものにしてください。持ち運びはすこし面倒にはなりますが、16インチだとかなりコードが書ける範囲も大きいので見やすくて捗ります。
また、大きなモニターも1つ買っておく事をお勧めします。
動画学習などオンライン教材を使用したり、ブラウザで検索を行いブログを見ながらサンプルのコードを打ち込んでいくとなると画面が1つだけでは、画面を開いては閉じてを繰り返したり、MacBookであれば画面をスライドさせなければいけないなど学習効率がかなり落ちてしまいます。
家でプログラミングをする場合は、ノートブックの画面とモニター画面の2画面(デュアルモニター)にしておくとかなり効率よく学習を行えていいです。(あと株のトレーダーみたいでテンションも上がります)
プログラミング学習でおすすめの画質
画面の画質は「FullHD」以上のものを選びましょう。4Kだとベストです。MacBookAirまたはProであれば「Retina」という画面であれば、4K画質になります。
動画教材やコードといった小さな文字を常に見続けなければならないため、どうしても目がかなり疲れますし、教材も見辛くなります。
特に30代後半以降の方は若い時より目が衰えてかなり見づらく感じますので、最低でもFullHDのものは必須です。
プログラミング学習でおすすめのOS
PCの「OS」はWEB制作や開発を行いたいのであれば「Apple」の「MacOS」にしたいところです。
Windowsでも出来なくはないですが、バックエンドエンジニアでない限りは企業ではMacを使っている事がほとんどのため、いざその時からMacを使おうとしてもかなり操作の違いに手間取ってしまい実際の仕事効率は大幅に下がります。
そういった懸念点は面接時の採用可否にも響いてくるため、予算が許すのであればMacを買ってください。
また、リセールバリューを考えてもMacを買っておくといざプログラミング学習が続かず使わなくなった時でも、売ればかなりのお金が戻ってきます。
なお、アプリ開発でiPhoneアプリを開発するのであれば、MacOS一択になりますので注意しましょう。
IDEやテキストエディターのインストール
PCを用意したら、その中で「環境構築」と呼ばれるプログラミングをするための下準備をしてきます。
この下準備はJavaなのか、PHPなのか、Rubyなのか、アプリ開発なのかでも違うため、それぞれの教材に合わせて行いましょう。
ここでは、PHPかつMacのPCを例にしますが、Macの場合はまず「Xcode」と呼ばれるものをインストールする必要があり、そのあとにプログラミングコードを書くためのメモツールの様なIDE(統合開発環境ツール)もしくはエディターというものをインストールします。
プログラミングの環境構築とは?初心者向けに解説 アプリケーション開発に必要な環境構築【目的に合わせた環境作り】 【初心者向け】統合開発環境(IDE)とは?選び方も解説! 初心者のアンドロイドアプリ開発入門 Xcodeとは何のこと?使い道・特徴を徹底解説! Pythonの開発環境を構築する方法【初心者も使いやすい IDE】 PHPで開発するための開発環境構築方法【初心者向け】MAMPやXAMPのインストール
こちらはPHPの場合ですが、MACであればMAMP、WindowsであればXAMPをインストールするだけでPHPを使ってプログラミングが行える環境構築は完了になります。
WEBサービスを作る場合、どのプログラミング言語でも実際に開発を行いブラウザに表示させるためには「プログラミング言語のインストール」だけではなく「サーバーソフト」や「データベース」のインストールも必要になります。
他の言語の場合、それぞれインストールして細かな設定をしていく必要がありますが、PHPであればMAMPもしくはXAMPのインストールだけで完了してしまうのでかなり楽ですね。
STEP4:タイピング練習をする
プログラミング初心者と一重に言っても「ブラインドタッチ」が出来る人も出来ない人もいます。
プログラミングを学習する以上、ましてやこれから仕事にする以上はブラインドタッチが出来ないと学習効率は10分の1ほどにもなり、業務効率が悪く仕事にもならないため転職すらままなりません。
そのため、プログラミング学習と共に必ずタイピングの練習を行なってください。
タイピング練習は「寿司打」など色々なオンラインタイピング練習サービスがありますので、どれを使っても構いませんが、最終的に平均キータイプが「4キー/秒」は打てる様になりましょう。
寿司打:http://typingx0.net/sushida/
e-typing:https://www.e-typing.ne.jp/(ブラインドタッチが出来ない方はコチラ)
STEP5:1日10分でもパソコンに触れる
最後にプログラミングを始めてから大事なことは「パソコンに触る」ことです。
パソコンでの学習や日々パソコンに触れていない人にとってはパソコンの前で座っているだけでも少し苦痛に感じてしまうこともあります。ですが、パソコンを開かなければ学習はスタートしませんよね。
そして、「パソコンでプログラミングをしている」事が当たり前として習慣化していかなければ、どんどんフェードアウトしていく事になってしまいます。
ですので、まずは「10分だけパソコンに触れる」とか「毎日パソコンを開く」といった小さい事で構わないのでそれを目標にして、まず目標の達成に意識を向けてください。
プログラミング初心者が独学から稼ぐためのプログラミング言語の選び方
プログラミング言語の種類
先ほどまでに「プログラミング言語」なる、言語が存在すること、様々なプログラミング言語が存在すること、どのプログラミング言語を選ぶかが稼ぐため重要なことを説明しました。
ここではプログラミング言語に対して、詳しく説明します。
前述したように、プログラミング言語は本当にたくさん存在しています。Wikipediaの「プログラミング言語一覧」で調べると、なんと320種類以上もの言語が存在しています。
しかし、初心者が比較的マスターしやすく、稼げる(案件が多い)というとある程度数は限られてきます。普通の言語に例えると、スワヒリ語やラテン語を勉強するより、英語や中国語やスペイン語を勉強した方が稼げそうなことはわかるでしょう。
そういう意味でHTML・CSS、Java、Java Script、PHP、Rubyの5種(HTML・CSSは厳密にプログラミング言語ではない)がメジャーなところです。ここでは、これらについて重点的に解説します。
それでは主な言語について解説していきたいと思います。
- ・HTML・CSS
- ・Java Script
- ・Java
- ・PHP
- ・Ruby
先ほども説明したように、この中でHTML・CSSは厳密にはプログラミング言語ではありません。これはWEBサイトを記述する言語になります。ただ、現在のITエンジニアの仕事はWEBが関連したプログラムが大部分ですので、習得は必須です。
とはいえ、プログラミング言語より習得は簡単で、入門書を読んだり、インターネット上の無料学習プログラムで簡単に学ぶことができるでしょう。本格的なプログラミングを学ぶ肩慣らしとして、最初に勉強しましょう。
WEBデザイナーを目指すのであれば、デザインスキルとともに、まずはHTML、CSSさえ習得すれば仕事はできます。
最後は「環境構築」の違いです。環境構築とは、実際にプログラミングをするパソコンに、プログラムを動かせるように設定をすることを言います。言語によってはこの「環境設定」が面倒で、初心者の壁になることがあります。
環境構築は、JavaScriptはブラウザで動くため不要、PHPはMAMPというソフトをインストールするだけ、Rubyは少し面倒、Javaはかなり大変という感触です。
特にJavaの環境構築は大変で、私も挫折しかけてしまい、一週間かけてようやく終わらせました。最終的にITエンジニアとして働くためには環境構築は必須ではあるのですが、初心者がプログラム以前で詰まってしまっては残念なので、最初の言語としてはお勧めしません。そういった点ではサーバーサイド言語の中ではPHPがお勧めといえます。
これらの点を見ると、初心者がサーバーサイド言語を学ぶのであればPHPがお勧めということになります。
また、RubyやJavaはフレームワークというプログラムのひな型のようなものを使ってプログラミングするのが一般的です。しかし、これだとフレームワークがブラックボックスになってしまいます。つまり、その中でプログラムがどのように動いているのか分かりません。だから、初心者のスキルの向上が妨げられてしまいます。そういった点からも、初心者にはPHPがお勧めです。
プログラミング言語による案件数の違い
ITエンジニアとして仕事をするのであれば、案件の豊富さや報酬も重要になってきます。ここではプログラミング言語と案件数についてお話します。
エージェントの持つ案件数を、プログラミング言語別に検索したものが下記になります。
- Java:2,045件
- PHP:1,305件
- Ruby:565件
- JavaScript:1,459件
これを見て、まずわかるのがRubyの件数が少ないということです。Rubyは現在、衰退の一途をたどっており、これから学ぶ初心者が選ぶ言語としては魅力が低いです。
また、Rubyは日本人が作ったプログラミング言語のため、特に日本で多く使われています。逆に、海外ではほとんど使われていないので、将来海外で仕事をしたいという方は気をつけなければいけません。
次に、これからJavaは案件数が多く有望に見えます。しかし、いくつか注意すべきことがあります。
Javaは大規模なシステムに使われているので、人員が必要となり案件数は多いです。しかし、SESといった下請けの末端企業がやっている案件が多いのです。SESの下請けは報酬の中抜きが多く、報酬が低くなります。ですので、やっている業務内容と業務量の割には他の言語より報酬が低い傾向があります。
また、古風な大企業がらみの案件が多いため、スーツにネクタイといった服装に厳しい現場が多いのも実情です。実際に私の同僚や現役エンジニアに聞いてみても、同じような意見が出ます。
他にも、Java言語では「副業できる案件」というものが一気に少なくなります。副業的な案件というのはライトな案件になり、「業務システムを作ってくれ」といった大規模な案件はまずもってありません。大規模案件というのは情報セキュリティが厳しいため、そもそも個人に委託しないからです。要するに「会社の外で稼ぎにくい言語」になります。また、大規模なシステムに関わっているが故に「一つのサービスを1から作れる力」がないエンジニアも多くいます。会社の大きな歯車の一つとして仕事をして、会社全体の経営がわからないといった会社員体質になりがちなのもこのJava言語の特徴です。
これはあくまで傾向で例外もありますが、現場選びに目の肥えた経験者でもない限りは失敗しやすいですし、将来的に自由に稼ぎたいという方にはJavaはお勧めできません。
ちなみにRubyは今風の企業で自由な雰囲気で働けます。ですが、Rubyはスタートアップなどの企業で使われることが多く、求められるスキルが高い割に、報酬はPHP言語とほぼ変わらないという傾向があり、労力対対価が実際は低い仕事が多いのです。
つまり、ここでもサーバーサイド言語としてはPHPがお勧めというわけです。
JavaScript言語とPHP言語の掛け合わせがオススメ
以上から、サーバーサイド言語としてはPHPがお勧めであることがわかるでしょう。
PHPがお勧めの理由は他にもあって、世界で一番ホームページを作るのに使われているのは「WordPress」というシステムです。このWordPressはPHP言語で作られているため、一般的な企業やお店のホームページを作ったり、修正をしたりということはPHP言語がわからないとできないのです。
そして、私としてはJavaScript言語もお勧めしています。というのも、「フロントエンド言語」を使う案件が増えているのにもかかわらず、この10年ほどにできた業務領域のため「できる人材」がとても少ないということがあるからです。
さらに、JavaScriptを使えるとiPhoneやAndroidのアプリを作ることもできます。スマホアプリがこれから伸びるのはほぼ確実ですから、有望性がわかるでしょう。
以上から、今からプログラミングを勉強する初心者には「JavaScript言語とPHP言語」をお勧めします。
プログラミング初心者が独学で学ぶ際によく陥る間違いと対処法
まず、最初に注意をして欲しいのが、独学でのプログラミング学習は出来るし、それで転職も出来る。のですが「効率はどうしてもスクールに比べればかなり劣ってしまう」という点は押さえておいてください。
「いやいやスクールを運営する側だからそう言いたいんでしょ?」と思うかもしれませんが、実際に独学で学習をしていくほどひしひしと感じる事になります。
私も独学で始めた当時、いくつかのスクールを検討しましたが、高額だったので当時貧乏性だった私はケチってしまい、書籍やドットインストールといった動画教材を使用して独学をしていました。しかし、結局のところ現場での中級レベルに到達する頃には死ぬ気で効率の悪い勉強をして2年ほどかかっていて、持ち前の営業能力で周りよりもかなり早く転職して収入を得られただけになります。
独学でやってみると良くわかりますが「かなりの根性か理解力がないと無理」と言ってもいいでしょう。
費用的にも書籍代だけでも10万は超えていますし、詳しくは後述しますが、もっと早くスキルを上げていればもっと早く稼げて投資対効果が高いと後悔しています。引っ越しはお金を払わずとも自分でも出来ますが、引っ越し業社にお金を払ってしまった方が結局は時間対効果を考えると「割安」だという理屈と一緒ですね。
学校教育でも、「学校で学べるのになぜ塾に数百万も払って学ぶのか?」と言えば、周りの競争相手よりも1歩も2歩も効率よく先を行くためですよね。
全てが体系化され一元管理されたカリキュラムを持っているというのがスクールの1つの強みにはなりますが、そうでない独学での学習というものは細切れの教材や情報を全て自分で繋ぎ合わせて理解していく必要があるため、相当な根性を強いられることは覚悟しておいてください。
因みに私が3ヶ月で出来たのは通販サイトの様なWEBサービスを作れる程度で、それでもなんとか交渉で転職し収入も上げられましたが、同じことが他の方に出来るか?というと営業スキルがかなり高くないと難しいので真似できるとは思わない様にしてください。
実際の現場ではその何倍ものスキルが求められるのですが、そこに独学で書籍や無料や格安教材で到達するためにはかなりの労力が誰でもほぼ間違いなく必要になります。
しかし、もちろん「それでも、まずは独学でやってみたい。」ということで構いません。
そういった方のためにこの章では「効率が悪い中でも出来るだけ効率を上げて勉強を継続していくため」のプログラミング初心者がよく陥る間違いとその対処法についてご紹介をしていきます。
教材が古い、分かりにくい、途中からいきなりハイレベルになる
教材もピンキリです。書店やAmazonで本を選ぼうにも書籍がありすぎてプログラミング学習初心者の方は何がいいのか分からず選ぶのが大変でしょう。私も当時なけなしのお金で100冊以上はとりあえず買い漁りましたが、小難しく書かれて解説の分かりにくいものやハイレベル過ぎて呪文にしか聞こえないもの、そもそもの用語の解説も分からないものが多々ありました。
また、最初のうちはよかったのですが、いきなりレベルが上がってしまう教材もしばしば見受けられます。そういった教材で学習をしてしまうとかなり効率が悪く無駄な時間も取られてしまうのと挫折もしやすくなりますので「良質な教材」を使う様に注意しましょう。
教材を見ただけでやった気になっている
教材を見ただけで「やった気」になっている方をしばしば見かけます。プログラミングは座学で身に付くものではなく、どちらかというとスポーツ的な要素が大きいため、実際に手を動かしてコードをどれだけ書いたかで身についていくものになります。
私のスクールでもそういった「やった気」「わかった気」になっている生徒さんはいらっしゃるので、途中に理解度チェックのためのテストを挟む事で「自分は理解出来ていなかった」という事を認識させていますが、独学ではそういった「自分がちゃんと理解できているのかどうか」を認識する事は難しくなります。
ですので、私のスクールでも教えている下記の方法がこれから独学でプログラミングを学ばれるあなたにも有用ですのでぜひ独学に活用してください。
- STEP1:コードをまずはコピーして同じ動きになるか確かめる
- STEP2:一部分だけを変えてみる
- STEP3:一から写経をする
- STEP4:1行ごとに何をしているかコメントをつける
- STEP5:処理フローを手書きで図にしてみる
- STEP6:処理フローだけを見てコードを書いてみる
- STEP7:小さいアウトプットをする
- STEP8:練習問題を解いてみる
STEP1:コードをまずはコピーして同じ動きになるか確かめる
どんな分かりやすい教材であっても教材を見ただけでは身につきませんので、まずは教材のコードをただコピーして同じ動きになるのかを確かめましょう。ブログなどテキスト形式の教材であればコードをまるまるコピー出来るはずです。私のスクールでは動画教材を使用していて補助教材としてコードは全てコピーできる状態になっていますが、動画教材を選択される場合は極力コードが丸っとコピーできるものを選択してください。
書籍の場合は、書いてあるものをそのまま入力してみましょう。ただし、プログラミング初心者の場合は大抵最初のうちは「打ち間違い」が頻発し「ちゃんと打ったのに(打てていないが)動かない(なぜだ。。)」となりやすいので、一つ一つの文字を確認しながら入力していくようにしましょう。
私のスクールでも、学び始めたばかりのプログラミング初心者の生徒さんの「サンプルと同じ様に動かない」は99%が「打ち間違い」となっています。
STEP2:一部分だけを変えてみる
まず、教材と全く同じに入力して同じ様に動く(表示される)のが確認出来たら、一部分だけを変えてみてください。
- 足し算だったらその値を変えてみる。引き算にしてみる。
- 変数の名前を変えてみる。
- if文の中身の判定式を変えてみる。
そういった一部分を変えて動くかを試してみましょう。もちろん、まだよく分かっていない段階だとエラーが必ず出ますが、それでいいんです。エラーが出る事で「何をやったらエラーになる」といったエラーの原因が分かっていき理解がより深まります。
ここで大事なのは「一気に色々と変えすぎない」という事です。一気に色々な箇所を変えてエラーとなった場合に「どこを変更したのがいけなかったのか」という事が分からなくなってしまい原因を突き止めるのに苦労してしまいますので注意しましょう。
STEP3:一から写経をする
コードをコピーしている場合は、1から手で入力をして「コードの写経」を行いましょう。コピーするだけではやはりコードが書ける様にはなりませんし、プログラミング初心者の方ほどキーボードをそもそも打つのが遅い方が多いですので、タイピング速度を上げる練習にもなり、同じコードを書く事で「指が勝手にコードを覚えていく」ようになります。
よく、プログラミング言語に出てくる「関数(メソッド)」といったものを単語カードに書いて丸暗記しようとする方がいますが、そんな事をするよりも「コードで書く」方が何倍も効率よく覚えていきます。覚えようとするよりも勝手に覚えていくというニュアンスが近いでしょう。子供がひらがなを覚える様なもので「何度も書く」が一番効率よく覚えていきます。
ご自身の理解度にもよりますが、写経は基本的に2〜3回もすれば十分です。
STEP4:1行ごとに何をしているかコメントをつける
次に書いたコードにコメントをつけていきましょう。
例えば、下記の様なfor文と呼ばれる「処理を何回も繰り返す」という命令があった場合、変数の中身がこんがらがりやすくなります。こういった時にもコメントをつけることで、処理の流れである「処理フロー」を頭の中で整理できるようになり、どのタイミングで変数に何が入っているかが頭の中だけで最終的にイメージできる様になっていきます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
<script> // 変数numを用意し、10を入れる let num = 10; // 変数resutを用意し、0を入れる let result = 0; // for文を開始する // ①変数iに0を入れ、変数i(中身は0)が変数num(中身は10)より小さい場合にループの中の処理に入る(小さいから入る) // ③変数iをインクリメントして1を足す(変数iの中身はこの時1) // ④変数i(中身は1)が変数num(中身は10)より小さい場合にループの中の処理に入る(小さいから入る) // 〜〜〜 for (let i = 0; i < num; i++) { // ②変数result(中身は0)の中に変数result(中身は0)に変数i(中身は0)を足した値を入れる(最終的に変数resultには0が入る) // ⑤変数result(中身は0)の中に変数result(中身は0)に変数i(中身は1)を足した値を入れる(最終的に変数resultには1が入る) // 〜〜〜 result = result + i; } // コンソールに変数result(中身は45) console.log(result); </script> |
この時に大事な事は最初のうちは「1行1行、変数の中身まで事細かにコメントに書く」という事です。こうする事で処理の流れが頭の中で整理されて掴める様になっていきます。
慣れてきたら、処理フロー(何をしているのか、したいのか)だけをコメントにしていきましょう。
STEP5:処理フローを手書きで図にしてみる
コメントで処理フローを書いてもなかなか理解できない時は、今度は処理フロー図と呼ばれるものを手書きで作ってみましょう。
フローチャート(フロー図)の書き方と記号の使い方。無料のフローチャート作成ツールも紹介
例えば、ウェブカツ!!で1〜3ヶ月目に作るWEBサービスの一部機能のコードですが、これでもプログラミング初心者の方にはこんがらがりやすいため、図にする事で頭がとても整理されていきます。
WEBサービス部:Lesson09「ユーザー登録画面を作ろう!」の処理フロー解説STEP6:処理フロー図だけを見てコードを書いてみる
処理フロー図を書いたら、今度はその処理フロー図だけを見てコードを書いてみてください。
コメントだけで理解出来ている方はコメントの処理フローだけを取り出して、そのコメントを頼りにコードをまっさらな状態から書いてみましょう。
この時に分からない関数名などGoogleで検索をしても構いません。プログラミング初心者の頃は全ての関数の名前など覚える事は困難ですから、忘れてしまったものは気にせずに都度ググって思い出しましょう。それを繰り返していく事で自然と定着してゆきます。
STEP7:小さいアウトプットをする
サンプルと同じ処理のコードを書ける様になったら、そのカリキュラムで教えたかった要点を元にして自分なりに新たなコードを書いてみましょう。
ユーザー登録をする機能といった大きなコード量になった場合や既に作る機能が決まっている場合は自分でオリジナルで書くといっても結局同じ処理に行き着くだけですので、その場合は、ある機能とある機能を組み合わせてみるといった複合的に組み合わせた処理をアウトプットしてみましょう。
STEP8:練習問題を解いてみる
ウェブカツ!!では「鬼連」といった練習問題を公開していますので、そういった問題を解いてみましょう。また、実務に即した問題をコードを書きながら解いていく「SCOUTER」というスキルチェックサービスも運営していますので活用してみてください。他にも「Paiza」といった練習問題サービスもありますのでそういったものも活用していきましょう。
ただし、自分が今学んでいる内容に即した問題である事が重要です。
Paiza:https://paiza.jp/challenges/info
実務に即したWEBエンジニアのレベルを測定「SCOUTER」:https://itengineer-scouter.com/
エラーやバグが出ると慌ててしまう
前述でもありましたが、初心者のうちはエラーやバグ(不具合)が出ただけで慌ててしまい、さらにはエラーに慣れていないため一気に頭の中がショートして気持ちだけが焦ってしまい通常の思考が出来なくなっていきます。
エラーは現役のエンジニアでも仕事をしていて当たり前にある事で、そういう時は必ずまずは「深呼吸」をしましょう。
そして、英語で出てくる「エラーメッセージ」をそのままGoogleで検索してエラーの内容を確認し、「デバッグ」という方法を使って1つ1つエラーの箇所を根気よく探して行ってください。
エラーメッセージというのは「こういうエラーがあるよ」とパソコンが教えてくれているものですので、パニックにならずにきちんと冷静にエラーメッセージを読んでいく癖をつけていきましょう。
それでも見つからない事もありますので、そういう場合は「1日待ってみる。」というのがオススメです。1日経って次の日にPCの前に向かうと何故か原因が見つかる事が多々あります。
これは生徒にもアドバイスすると最初のうちは半信半疑なのですが、実際に皆そういう経験をします。
エラーになるほど人の脳というのはヒートアップしてしまい処理能力がどんどん落ちてしまうため、一度冷ましてあげるだけでもかなり違ってきます。
よく現役のエンジニアの方でも風邪でもないのに「冷えピタ」をを頭に貼って仕事をしたりしているのですが、こういった部分があるからです。
モチベーションが保てない
私が2万人以上の生徒に教えてきた中で、モチベーションが保てない原因というのは大きく3つしかありません。
- エラーやバグが解決できない
- なかなか勉強時間が取れない
- 成長している実感がない
エラーやバグが解決できない時の対処法
エラーが解決できないのは「質問が出来ない」という環境もあるでしょう。
プログラミングスクールなどにお金を払う価値というのは質問が出来ることや教材に解決方法が既に書かれていることが1つありますが、初心者から独学でプログラミングを学んでいく場合には「teratail」といった無料の技術QAサービスを使用するのがよいでしょう。
ただし、無料のサービスですので「答えてくれる人の質」が保たれているわけではなく、初心者には難解な解説の回答が返ってくることもしばしばありますので注意しましょう。
なかなか勉強時間が取れない時の対処法
社会人や主婦の方ともなると仕事や家事、子育てをしながらプログラミングの学習をしていかなければいけません。なかなか時間が取れない。。という方もいるでしょう。
ですが、1日は24時間と誰にも平等に与えられて、同じ社会人であれば皆時間がないのは当たり前なので、その中で頑張って「時間のやりくり」を行う他ありません。
そのため、「24時間を何に時間を使っているのか」をまず洗い出しましょう。
プログラミングはもちろんPCを開いて行った方がベストではありますが、電車の中や料理中、トイレ中に本を読むだけでも勉強になりますので無駄に使っている時間や優先度を下げられる時間を見つけ、そういった細切れの時間ででも学習をするようにするといいでしょう。
成長している実感がない
私も2万人以上を抱えるプログラミングスクールを運営する中で、よく「モチベーションが続かなくて挫折してスクールへ来ました」という方も多くいます。
その多くの方に聞いてみるとまず「目標」がありません。漠然と「プログラミングが出来る様になったらいいな」と目標がないため、壁に当たったらすぐに挫けてしまうのです。
また、目標がない事により「成長している実感」もありません。「自分は今目標まであとどれくらいなのか」「どこまで進んだのか」という事が目標がないことによりわからないため、いつまでもゴールのない道を走っている心理状態に陥ってしまいます。
ゴールの分からない道をひたすら走り続けられる人というのはまずいません。昨日より今日の自分は成長しているな。進んでいるな。という実感がなく走り続ける事は困難です。
ですから、まずは「1年後に○○会社へ転職をする」「30歳で年収1000万円フリーランスになる」といった出来るだけ具体的な目標を立てることです。この時に必ず「いつまで」に「何を」という具体的目標にする事です。
「1年後にプログラミングを習得する」では漠然としていて、
「何か作りたいのか」
「転職をしたいのかフリーランスなのか、いくらの収入が欲しいのか」
「フロントエンドエンジニアになりたいのかバックエンドエンジニアなのか」
といった事をまず決めなければ学ぶべき内容が決まらず、進むべき道も決まる事はありません。
ゴールが決まったところで、あとは逆算してやっと「何をいつまでにやるか」「何をどこまで学ぶべきか」を決める事が出来ます。
自分でそういった部分を決めるのが難しいプログラミング初心者の方は、プログラミングスクールで相談して決めていくというのも一つの戦略になるでしょう。
モチベーションよりも仕組み化しよう
また、ビジネスの世界で優秀な方というのは実はモチベーションに頼っていません。そうではなく、「仕組み」に頼っています。仕組みというのは「習慣」です。歯磨きの様に「毎日朝起きたらPCを開く」といった行動を決めておくことで、習慣化されてゆくのです。
「モチベーションが下がっているから今日は歯を磨くのやめよう。。」
という方は流石にそうはいないでしょう。それは行動をモチベーションに頼らず「習慣」という仕組みに頼っているからです。実際に私自身も独学でプログラミング学習を始めた初心者の頃は「枕元にノートPCを置いて寝る」という事を習慣化していました。
そうする事で、PCが近くにあればつい開いてしまいますし、1分でもプログラミングのコードを読み始めれば5分、10分は結局見ているからです。
すぐに達成できる様な小さなルールをいくつか決めておくことでそれが習慣化され、日々のモチベーションに頼らずに学習を進めていく事ができますので、ぜひ試してみてください。
実は「自分の努力次第」ではなく、「言い訳次第」
私が2万人以上に教えてきたデータの中で成長する人しない人の特徴としては、「言い訳の差」というものがあります。成長というのは実は「能力差」よりも「言い訳差」がカギになっています。
皆さんも、何かを達成する間に言い訳をしようと思えばいくらでも出来ますよね?
独学であろうとリアルな対面のプログラミングスクールでも、オンライン非対面型のマンツーマンでも、オンライン独学型でも、そもそも継続できるかどうかは「言い訳次第」なのです。
私は、筋トレが趣味でライザップなどジムのトレーナーとも親しいですが、「マンツーマンレッスンに通っても来ない人は来ないしそういう方は最低でも2割ほどはいる」と言っています。これには、同じく指導する立場として私も同感できます。
ですので、言い訳を出来るだけしない事です。
整った環境など絶対にきません。「時間があればやる。」という人のほとんどは時間がなくてもやりません。
いつか読もうと思っていた本はちゃんと全て読んでいますか?「いつか時間が取れたら、、」と言っているうちに何度も時間が取れる機会があったはずです。でも、やらなかったのは「自分が自分に言い訳をしたから」ではないでしょうか?
もちろん、四六時中監視されていれば別ですが、そうなればトレーナーにいくら払う事になるでしょう?24時間の時給4000円だとしたら半年では1700万を超えてしまい、そういった指導を受けるというのは現実的ではありませんよね。
結局のところ「言い訳」をしている限りは成長はしないという事にいかに早く気付けるかが独学であれ、何であれ達成するためのポイントになります。
見える化をしよう
企業のコンサルティングでも行われている方法ですが、なぜ人は動けないのかというと「見えていない」からです。もちろん、肌感ではなんとなくはわかってはいるものの実際に間近でそれを見せつけられてからでないと動けないのです。
「本を読んでいないなぁ。」と思いつつも結局は読まずにいる(Actionをしない)のは、「読んでない本が本棚に入っているから」です。
ですが、寛いでるリビングのテレビボードの目の前に読んでいない本を積んで見える化されていれば、読む気は起きやすくなりますよね。
見える化で大事なのは「パッと見てすぐ分かる様にする」ということです。
なので、「すぐ見えるところ」に「すぐ分かる形で残す」というところが大事になります。
普段あまり見ない本棚に押し込んでいては「現状が見えていない」「パッと見てどれだけの量があるのか分からない」という事になります。
ちなみに私はAmazonのKindle本はほとんど買いません。
何故かというと先ほどの話の様に「見えない」からです。スマホを開いたところに見えている訳ではなくアプリを開かなくては分かりませんし、アプリを開いたら色々な読んだ本と読んでない本がごちゃごちゃしていて、全体像として「どれだけの本が読まれていないか」が分からないからです。私は、毎月数十冊の本を読むため、あえてそうしています。
プログラミング学習での見える化とは?
同じ様にプログラミング学習でも最初から「学習時間」や「今日何をやったか」という日記を必ずつけてください。
出来るなら日記もパソコンで書くのならフォルダに入れるのではなく、デスクトップに一つにまとめましょう。
私の生徒さんにはブログを書くのが1番だと伝えていますが、あとあとで見返しやすく、さらには後々の転職活動でもポートフォリオの一つとして「どんな努力をしてきたのか」が伝わるため有利に役立ちますし、言葉の整理と伝える能力が養えるからです。
ブログを書いて言語化し、見える化する
優秀な方というのは必ず言語化が行えます。
ITエンジニアも人と話す機会も多くそちらの能力が長けていると重宝されるため、頭の中の言語化出来ていないものを整理して言語に落とし込む事を毎日行うと自然と人と話すときも論理立てて会話をする事が出来る様になります。
技術を提供する仕事ではあるものの、作りたいものをヒアリングしたり質問したり、出来ない事や提案の説明を技術が分からない顧客達に説明する機会はとても多くあり、そもそもそこが出来ないと顧客の要望が正しく把握も出来ず円滑なコミュニケーションも取れないため、社内でも平社員のままになりやすく、個人でも仕事を請ける事が出来ません。
コミュニケーションの基本は言語化です。
そもそも頭の中で言語に出来なければあいてに伝える事が出来ないからです。ですので、理論的な言語化能力が養えるブログ日記をお薦めします。
これがそもそもできていない人というのは9割9部が人と話す能力が低く、能力が低い傾向が強くあります。私も最初のうちはブログ1記事書くのに1、2時間もかかっていましたが、1ヶ月もすると10分、20分で書けるようになるのでぜひトライしてみてください。
また、ここで大事なのは「ブログを日記の様につけてしまう人」がいることです。
「人に何かを説明する」能力を向上させるために書いているのですから、ダラダラと書いていては成長にはなりませんので、きちんと大見出し、中見出し、小見出しと分けて簡潔に書きましょう。
ダラダラと書かれた日記を転職活動で採用担当に見せてももちろん「この人は能力が低いのかな」と逆に悪印象となってしまいますので注意してください。
トイレやリビングにカレンダーを貼る
その他にも、トイレやリビングなどいつも必ず見る場所にカレンダーを貼り、学習をした日に「マル」など記しをつけましょう。
それだけで、パッと見た時に自分がどれだけやっているのか、やっていないのか一目瞭然になり、行動を起こすキッカケとなってくれます。
また、やる気の出ないモチベーションが下がっているタイミングで見返した時には、「なんだ案外自分こんな成長してるじゃん」と必ず自分のモチベーション維持に役立ちますのでやってみてください。
プログラミング初心者が独学でWEBサービスを作るためのロードマップと言語別学習に役立つ本
それでは、実際にWEBサービスを作っていくためのロードマップと学習にオススメの書籍をご紹介していきます。
プログラマーの勉強は「本」で!作りたいもの別プログラミング本12選ITエンジニアとして稼ぐためには、Webサイト(HP)を表示するシステムを開発できることが重要です。現在の案件はほとんどがWebサイト絡みの仕事がだからです。
Webサイトを表示させているソフトを「ブラウザ」と呼びます。WindowsだったらMicrosoft Edge(エッジ)、MACやiPhoneだったらSafari(サファリ)、AndroidだったらGoogle Chrome(クローム)が標準的なソフトウェアです。
つまり、Webサイトを表示するシステムとは、ブラウザ上で動くシステムを開発すること、と考えていただいて良いかもしれません。
そして、この開発は大きく二つに分けられます。
一つは飲食店や美容室などのお店、個人のプロフィールサイトといったページです。これらのHPは写真や文章を表示させるだけのシンプルなものです。これらのHPを作ることをWeb制作と呼んでいます。
一方、SNSや通販サイトなど、もっと複雑なページです。例えば、買い物の機能や投稿などの機能を含んだものです。これらはWeb開発と呼んでいます。
Web制作とWeb開発、言葉は似ていますし、どちらもWebサイトが作れるということは同じに見えます。しかし、実際にはレベルが全く異なっていて、料理で例えるのであればWeb制作が地元の小さな個人経営の飲食店、Web開発が何百店も店舗数を持つような大手レストランチェーンと考えていただければ良いです。
もちろんWeb開発の方が難しく、稼げるエンジニアになるためにはこのWeb開発まで学ばなければいけません。しかし、世の中でITエンジニアと呼ばれる人の中では、Web制作までしかできない人も多くいるのが現状です。
Web制作の場合に学ぶ言語はHTML、CSS、JavaScriptの3つになります。
簡単に役割を説明すると、HTML言語はWebページに文章や写真を表示させるもの、CSSは文字の大きさや色などWebページの見栄えを指定するもの、JavaScriptはWebサイトにアニメーションやスライドショーなどの動きをつけるもの、ということになります。
Web制作の場合はこの3つができれば十分で、このスキルでもITエンジニアにはなれます。実際にこの程度のスキルのITエンジニアも、世の中にはたくさんいます。
ここから稼げるエンジニアになるためにはWeb開発も身につける必要があります。
Web開発の場合はHTML、CSS、JavaScriptに加えて、ログインやユーザー登録といった複雑な機能を実現できるPHPと呼ばれる言語を習得しなくてはいけません。さらに、ログインやユーザー登録時に入力された情報を、サーバーと呼ばれるインターネット上の情報倉庫に保存するために使われるSQLという言語の習得も必要です。
つまり、Web開発のためには、さらにPHP言語とSQL言語を身につける必要があるわけです。もちろん最初は、Web制作のスキルから身につけていきます。しかし、最終的にはWeb開発まで習得するという広い視野をもって、学習を進めるようにしましょう。
この全体像の話は「ウェブカツ!!」に仮入部(無料登録)すると、参考動画を見ることができます。仮入部は無料ですので、ぜひ見てみて下さい。
HTML、CSSの学び方
HTML、CSSとは?
まず、Web制作に使われるHTMLとCSSについて説明します。
HTMLとはHyper Text Markup Languageの略で、Webサイトと呼ばれるいわゆる「HP(ホームページ)」に表示したい情報(文字や写真など)を記述する言語です。
そしてCSSとはCascading Style Sheetsの略で、HTMLのスタイルを指定するための言語です。例えば、文字の色や大きさを指定したり、そして背景の色を決めたりすることができます。
HTML、CSSと分けて書かれていますが、HPを作るためには両方の知識が必要ですので、一緒に学ぶことになるでしょう。
家づくりに例えるなら、HTMLは家の柱や屋根や窓を作る言語で、CSSは内装や外装の色、カーテンなどのインテリアを決める言語と考えて良いでしょう。いずれが欠けても、お客様に提供する家は作れません。
誰でもできるHTML&CSSプログラミング|HTML/CSSの基礎独学でのHTML、CSSの学び方
HTML、CSSを学ぶ全体像について説明します。学習ステップは下のように二つに分かれます。
- STEP1:HTMLとCSSでHPを作れるようにする
- STEP2:Bootstrapを学ぶ
STEP1の知識でWebページは作れるようになります。しかし、エンジニアとしてはそれだけでは不十分で、Bootstrapと呼ばれる、HPのひな型のようなもの(フレームワーク)の理解が必要になります。
細部を説明しましょう。
まずはSTEP1でゴールはHPを作ることです。そしてHTMLとCSSを学ぶことはHPの作り方を学ぶことと同じになります。ですので、最初に下のようなWebデザインの入門書でWebページを作りながら、HTMLやCSSの設定の方法を学んでいきましょう。
次に下のような少しレベルの高い本で、複数画面のあるWebページなど複雑なデザインの方法を学んでいきます。今はスマホ対応のWebページが必須となっており、その知識も本書で学ぶことができます。ここまでできるようになれば、STEP1(HTMLとCSSでWebページを作れるようにする)は完了です。ここまでのスキルでクラウドソーシングを使って1件10万、20万の仕事を取ることは可能になります。つまり、これだけで月10万〜20万は稼げるスキルは手に入れられるため、わざわざ数十万も払って高い情報商材なりS社の様なマンツーマンスクールに通う必要は全くないという事です。
もちろん、技術スキルの他にどのように営業をするかという問題もあるので、案件が獲得出来るのかは別問題です。
次にSTEP2として、bootstrap(ブートストラップ)を学びます。これはHP構築用のフレームワークです。つまり、すでにある程度の骨格ができているひな形を使って制作するので、手間を減らすことができます。これを使うとスマホ画面のサイズに対応したHPやボタンなどのデザインを簡単に作れるので、現場の仕事でもよく使われています。
さらに現場でレベルの高い仕事をしたいのであれば、フレームワーク(bootstrap)に頼るだけではなく、自分でCSSを設計するレベルのスキルが必要になります。そのため下のような本で「sass」や「css設計」を学んで下さい。
この程度の知識を理解して、実際に使えるようになれば、HTML & CSSについては稼ぐための「中級レベルのスキル」が身についたと言えるでしょう。
それに対して、オンライン学習プログラムは『1冊ですべて身につくHTML & CSSとWebデザイン入門講座』のレベルで終わっていることがほとんどです。
Java Scriptの学び方
Java Scriptとは?
Java Scriptはプログラム言語の一つで、ブラウザ上で動かすことができます。つまり、ユーザーが見ているところ(スマホやパソコン)で動かすので、フロントエンドの言語とも呼ばれています。なお、Javaというプログラミング言語とは全く別物なので、混同しないようにして下さい。
HTMLやCSSだけでは、静的なWEBサイト(HP)、つまりいつでも同じものを表示しているページしかつくれません。
一方、JavaScriptを使うと、WEBサイト上でプログラムを動かせるので、動的なWebサイトを作ることができます。例えば、ユーザーの入力をチェック(例えばパスワードが一致しているかなど)したり、複雑なアニメーションを作ったり、ゲームなども作ることができます。
何より、JavaScriptはフロントエンド言語として広く使われているので、文献や情報も多く、フレームワークも充実しているので、フロントエンド開発をするのであれば、まず身につけて欲しい言語です。
また、JavaScriptはブラウザで動作する言語なので、ある程度のHTMLやCSSの知識が必須になります。こちらが不安な場合はまずHTML、CSSから学ぶようにして下さい。
独学でのJavaScriptの学び方
まず、最初は慣れることが大事です。下のような易しい本でJavaScriptに慣れてみましょう。簡単なプログラムでも、自力で作成してみると得るところは大きいです。
最低限の基礎を身につけたら、次はjQuery(ジェークエリー)について学びましょう。jQueryとはJavaScriptを簡単に書けるようにしたプログラミング言語の仲間です。これを使うと、HTMLを簡単に制御できて、Java Scriptをより簡単に使うことができるようになります。
また、JavaScriptはブラウザ上で動きますが、ブラウザの違いによって同じ動きをしない場合があります。例えば、MicrosoftのEdgeとGoogleのChromeで動きが異なることがあります。それを避けるためにもjQueryが使われます。
ただし、実務上ではjQueryだけでは不十分なので、次のようなややレベルの高い本を使って、JavaScriptの理解も深めていきましょう。
ここまで勉強して、JavaScriptにある程度慣れてきたら、現場で使われているフレームワークを勉強します。
JavaScriptのフレームワークは、vue.jsやreact.jsというものが良く使われています。現場の実務に対応するためには、どちらかができることは必須で、両方できると現場で重宝されます。
この程度のフレームワークの知識を持ち、実用スキルがつくと、ようやく現場で通用するレベルに到達できます。
PHPの学び方
PHPとは?
PHPはプログラム言語の一つで、Web開発で良く使われています。PHPを使うと動的なHPを作ることができます。例えば、ユーザーが投稿する掲示板を作ったり、お客様のお問い合わせフォーム、ネットショップのショッピングカートなど、いわゆる「WEBサービス」と呼ばれるものもPHPで作ることができます。
一方、先ほどのJavaScriptも、動的なHPを作るための言語でした。PHPがJavaScriptと違うのは、JavaScriptが「フロントエンド」のプログラミング言語であるのに対し、PHPは「サーバーサイド」のプログラミング言語であることです。
この「フロントエンド」と「サーバーサイド」という言葉について、もう少し詳しく説明します。
フロントエンド言語のJavaScriptはHPを閲覧するためのブラウザ、つまりPCやスマホといった機器がコードを受け取り実行します。そのため、どのようなコードが実行されたのか、PCやスマホといった機器側から見ることができますし、処理はPCやスマホといった機器側で行うので機器側の処理能力が遅いと実行に時間がかかります。古いPCやスマホを使っている場合、その機器に入っているCPU(シーピーユー)といった内部のスペックが低いため、ゲームのような複雑アニメーションなどを実行すると、カクカクしたり止まってしまうこともあります。飲食店で例えるなら、セルフサービスでお客さんに料理を調理してもらうようなイメージです。
一方、「サーバーサイド」のPHP言語はサーバー側で処理が行われます。ですので、サーバー側にあるデータベース(MySQLなど)と連携させたりすることが可能になります。また、この場合どのようなコードが実行されたのかはクライアント側からはわかりませんし、処理はサーバー側で行うのでクライアントの処理能力には依存しません。飲食店で例えるなら、キッチンで調理をしてからお客さんのテーブルの前に出しているイメージです。
「フロントエンド」と「サーバーサイド」は上記のような特徴がありますが、どちらが良いというものではなくWebサービスのためには両方必須な言語です。JavaScriptとPHPを習得して、どちらも使いこなせるエンジニアになりましょう。
PHPはデータベースとの連携が容易で、MySQLやPostgreSQLなどの様々なデータベースと簡単に連携することができます。
さらにPHPはHTMLで記述したファイルの中に埋め込んで使うこともできます。ベースはHTMLで作り、一部だけPHPで記述して動的に内容を生成する、といった使い方もできます。
また、PHPはWordPressというブログなどで良く使われるWebアプリケーションの記述言語です。利用者が多いので、カスタマイズの需要があって副業にも最適です。
このようなPHPですが、Javaなどの他のサーバーサイドのプログラム言語に比べて、学びやすい言語になっています。
文法がそもそもわかりやすくできていて、メジャーな言語なので関連書籍もたくさんあります。しかも、ネット上にも情報が多くて問題を自己解決しやすいです。さらに、利用者が多いので、ライブラリと呼ばれるエンジニアの方が作ったプログラミングの便利パーツの様なものも多く、初心者が最初に始めるものとしてもお勧めの言語です。
独学でのPHPの学び方
新しいプログラム言語を学ぶ時には、まず簡単な本で基礎を学ぶことです。PHPだと下のような本がお勧めです。
簡単なので、読んだだけですませたくなるかもしれませんが、必ず手を動かしながら学ぶようにして下さい。プログラミングはスポーツのようなものです。いくら頭で理解しても、手を動かさないと身につきません。
これをマスターしてから、下のような少し難しい本に進みましょう。
ここまで勉強してきてPHPの使い方をマスターしたら、次はWebサービスの作り方について学びましょう。
プログラミングは目的を考えて勉強しましょう、という話をしました。PHPを学ぶ目的はWebサービスを作ることです。下のような本で、Webサービス作りにおける簡易的な企画や設計、開発、運用の知識をつけることができます。
Webサービスの勉強が終わったら、次はデータベースの勉強をします。Webサービスを作るためには、データベースに情報を保存したり取り出したりといったやり取りが重要になります。ですので、SQLもしっかり学ばなければいけません。ここではPHPで使えるデータベースの代表である「MySQL」の本を紹介します。
次に開発したWebサービスをどのように公開するか、どのように運用するかという知識を学びます。
プログラミングが終わったらおしまいではなく、公開や運用までの知識や経験があると「稼げる」エンジニアに近づきます。
そして、PHPのフレームワークを学びます。
PHPのフレームワークには「Laravel」「CakePHP」「FuelPHP」と色々なものがあります。しかし、基本的な仕組みは同じですので、どのフレームワークを学んでも、一つ学んでおけば他の理解も容易になるでしょう。
ただ、最近はLaravelを使った現場が多くなっているため、下の本でLaravelを学んでみるといいでしょう。
実際にはフレームワークは2個は学んだ方が理解度がグンと上がるので、もう1つ学んでおくと更にいいでしょう。
ここまでの知識を身につけて、初めて現場で最低限の仕事ができるサーバーサイドのエンジニアとなれます。
この様なロードマップで学んでいくといいでしょう。
プログラミング初心者が独学で学習をする際に役立つ有料、無料サービス
独習で進める場合は、本を読んだり、エンジニアが書いているブログなどの記事を読んだり、無料か安価なプログラミング学習サービスを使うというのが定番の方法です。
特にオンラインのプログラミングサービスは無料でも良くできているものもあり、学習をサポートしてくれるでしょう。
【無料、有料】プログラミング学習サービス
有名なところは「progate」や「ドットインストール」です。
Progate:https://prog-8.com/
ドットインストール:https://dotinstall.com/
CODEPREP:https://codeprep.jp/
今は「progate」が人気ですので、まずはこれを始めてみましょう。
ただ注意しなくてはいけないのは、この学習オンラインサービスでは就職できるまでのレベルのスキルを習得する事は困難です。学習サービスの中でも初級、中級、上級と別れていますが、これらは現場レベルから比べると、全て初級レベルにしかなりませんので、注意して下さい。
私の生徒でもよくProgateでレベルMAXまで行っている方が来られて「Progateの後に何をしていいのか分からない」と相談に来られますが、「Progate難民」と巷ではよく言われ結構な割合でそうなってしまいます。
また、独学でプログラミング初心者から現役エンジニアになれるレベルまで学習をするとなると書籍かもしくは動画教材の購入の2つの選択肢しかありません。
動画教材はUdemyが有名ですが、こちらも全てを網羅した体系的なものはなく、別々の講師がそれぞれ好きな事を教えていますので、そういった教材を何十個も買う必要があり、結局のところ最低でも10万円〜はかかる事は覚悟しておきましょう。
皆さんは「独学=スクール以外」という考えかと思いますが、本を含めて教材を色々買い込んでいくとスクールに通うのと最終的に変わらない金額となってしまう事もあるので注意してください。
ちなみに私も教材を買い漁った挙句に結局はスクールに通った方がコストも労力も時間もかなり少なくて済んだ経験をしてしまっため、「独学の頃にこれが欲しかった」というノウハウを元にウェブカツ!!という独学型のプログラミングスクールを自分で立ち上げました。
【無料】プログラミング練習サービス
学習サービスと何が違うのか?というと練習に特化して「問題形式」となっているのが特徴です。
一般の学業での学び方と同じく、何度も練習問題や試験をこなす事で理解というのは深まっていきますよね。ただ「見て書いた」だけではほとんど成長はしないのでこういったサービスで練習を行いましょう。
「Paiza」:https://paiza.jp/challenges/info
「SCOUTER」:https://itengineer-scouter.com/
スカウターの方が初心者から現役エンジニアの実際の業務により近い問題が出題されるためオススメです。ただし、答えの解説はないため注意してください。
HTML&CSSの練習問題に挑戦!おすすめ問題ややり方をご紹介!
【無料】質問サービス
業界では言わずと知れた技術情報のQAサービスになります。
プログラミング初心者用というよりも、現役エンジニア達のためのQAサービスのため、私もこういったサービスを独学時に使っていましたが「そもそもの言っている単語が分からない」「解説が小難しい」といった点がプログラミング初心者には難点になります。
「terattail(テラテイル)」:https://teratail.com/
【無料】技術情報共有サービス
こちらは、現役エンジニアは毎日の様に使っている日本最大の技術情報共有サービスになります。
ブログ記事の形式になっていて、現役エンジニアが自身の技術を披露し合っています。
ちなみに私のプチ自慢なんですが、独学でフリーランスエンジニアとなった一年目に書いた技術情報でもない記事がQiitaで連日ランキング1位を獲得し、ユーザーランキングも50位以内、今では限られたユーザーにだけ送られるブロンズ褒賞を頂いています。
「Qiita」:https://qiita.com/
【有料】マンツーマンマッチングサービス
先ほど、学習のモチベーションを維持するためには、仲間やメンターを持つのが良いという話をしました。しかしながら、仲間はともかくとしても、メンターなんていないという方がほとんどでしょう。こんな時に、便利なシステムがあります。「MENTA」というオンラインでメンターを探せるシステムです。
「MENTA」:https://menta.work/
MENTAは早い話、プログラミングを教えてくれるオンラインの家庭教師を紹介してくれるシステムです。月数千円~10000円程度でサポートしてくれて、スポット(短期間)の対応をしてくれる人もいるので、スクールより安くすませられる事もあります。
ただ、ここまで来るとそもそもが「既にそれは独学なのか?」とは感じますね。
MENTAでは、講師が指定する本など教材以外の質問をする場合、講師側としてはその教材を読み込まないと答えられないため、そういった場合には利用が難しかったり高額になりがちです。
また、MENTAは単なるマッチングサービスであって講師の品質を担保して保証しているものではないため、講師によって教え方や教える品質にバラつきが大きいのが現状です。ですので、講師の選定に時間をかけてしまったり変更を繰り返して、結局時間とお金を無駄にしてしまうというリスクが伴う事にも注意してください。
さらにはウェブカツ!!を無料登録されると視聴できるオリエンテーション動画でも解説していますが、週1、2時間程度のマンツーマンだけでスキルが身につく事はないのです。
仮に高品質なカリキュラム教材を使用して学習時間が最低500時間必要だったとしても、週1、2時間ではどれくらいの期間かかるでしょうか? ほとんどが「自習」となる事は想像出来るかと思います。
しかも、MENTAでのマンツーマンの場合は教えている内容自体は99%が出版されている本に基づいています。つまり自分で本を勉強できるのであれば、メンターは必要ないというわけです。また、講師やサービス運営会社があなたの成長にコミットするわけでもありません。こういった点から、自分の目標を講師に達成してもらうというよりも、独学で分からない部分をスポットで質問する感覚で利用をする以外はないと思ってください。
実際にウェブカツ!!でも過去にマンツーマンコースを提供していた時期があるのですが、やはり同じく
- 「同じ料金を生徒が払っているにも関わらず講師によってかなり教育差がバラついてしまう」
- 「週1、2時間ではほとんどが質問への回答で終わってしまう」
といった問題から、
- 「マンツーマンは支払う金額に見合うほどの生徒さんの成長へは寄与していない」
- 「マンツーマンでは優秀な講師が抱えられる人数がとても少なく、講師を増やしたところで良質な教育のまま多くの人に提供するのは困難」
であるという事実が判明したため、コースの提供をあえなく終了しました。
プログラミング初心者が独学で学んだ後のITエンジニアとしての働き方
ITエンジニアの働き方
これまでの説明でわかったと思いますが、ITエンジニアと一口で言っても業界は多種多様です。ですから、ITエンジニアとしての働く場合、正社員か派遣社員かフリーランスか、常駐か在宅勤務かなど、働き方も多種多様になります。それがこの仕事の魅力でもあるのですが、混乱するかもしれませんので、ここで整理して説明します。
- 1.正社員として企業で働く
- 2.正社員でSESとしてクライアント企業に常駐して働く
- 3.派遣社員としてクライアント企業に常駐して働く
- 4.フリーランスとしてクライアント企業に常駐して働く
- 5.フリーランスとして在宅勤務で働く
1.正社員として企業で働く
正社員として企業で働く方法はイメージしやすいと思います。IT企業に正社員として勤務して、会社の命令に従ってプログラムなどの仕事をします。この場合、就職した会社の中で働く場合の他に、クライアント企業に常駐する形もあります。近年、正社員の在宅勤務も広がってきていますが、出社して働くことが基本になります。
この場合、正社員なので福利厚生が良いとか、身分が安定しているというメリットがあります。長期雇用を前提としているので、教育投資も多い傾向があります。半面、仕事内容や勤務時間、勤務場所を会社に決められてしまうため、働き方の柔軟性はありません。なお、給料は他の働き方より多少は高いですが、実際は後述するフリーランスの方が稼げることも多いです。
更には1、2年での転職が盛んなITエンジニア業界では、教育投資コストが回収出来ない事が多いため、大手でないとなかなか教育投資が手厚くできないという現状があります。特に業績低迷時では、未経験から教育投資に時間とお金を割く企業は一気に少なくなり、いかに独学で技術力やその他の能力をつけて、上手くアピールするかが内定獲得のカギとなります。
- メリット: 給料は比較的高い、身分が安定している、大手なら教育投資が手厚い
- デメリット: 時間・場所など働き方の柔軟性が低い
2.SESとしてクライアント企業に常駐して働く
エンジニア業界ではSES(システムエンジニアリングサービス)という言葉が良く出てきます。これは正社員として採用されますが、実際にはクライアント企業に常駐して開発するというものです。法律上は指揮命令系統や成果物の定義など派遣社員とは異なるのですが、働く側からみた待遇は派遣に近くなります。
この場合、仕事内容や勤務場所などをある程度選べるのと引き換えに、自社内で働く正社員より安定性や給料は低くなります。なぜなら、常駐先企業から支払われる給料が中抜きされてしまうからです。一方、さまざまな常駐先で経験を積めるメリットもあります。ただ、社員への教育投資が少なく、特に未経験などスキルが低い人の場合は雑用ばかりでスキルが身につかないという場合が往々にしてあります。これはエンジニアにとっては致命的なので、気をつけましょう。
- メリット: 職場を選ぶ自由が多少はある、様々な現場で多用な経験を積める
- デメリット: 給料は安くなりがち、雑用ばかりでスキルが身につかない場合がある
3.派遣社員としてクライアント企業に常駐して働く
次に派遣社員としてクライアント企業に常駐して働く方法です。これは普通の派遣社員のイメージと同じと考えて下さい。派遣会社に所属して、派遣先のクライアント企業でほぼ正社員と同じように働きます。法律上はSESとは明確に異なりますが、働く側から見たメリット、デメリットはほぼ同じです。ただし派遣社員の場合は、契約期間が終わる毎に更新か契約終了になります。つまり、基本時給計算な分、SESよりも収入が悪くなる可能性が高いです。
- メリット: 職場を選ぶ自由が多少はある、様々な現場で多用な経験を積める
- デメリット: 給料は安くなりがち、雑用ばかりでスキルが身につかない場合がある。
4.フリーランスとしてクライアント企業に常駐して働く
次がフリーランスとしての働き方です。まずフリーランスとして、クライアント企業に常駐する働き方があります。これは派遣社員と何が違うのかというと、一般的にフリーランスであれば案件探しや金額交渉を全部自分でやらなければならないということです。だから、ある程度の営業力や交渉力が要求されます。しかしながら、SESや派遣会社と違って、報酬の中抜きがされることが無いので、収入は多くなります。一方、組織に属さないので、社会的な安定性や福利厚生は派遣社員より悪くなります。
ただし後述しますが、これはあくまで一般的な外から見た人の話であって、実はそうでもありません。
- メリット: 職場を自由に選べる、給料が比較的高い
- デメリット: 身分が安定せず福利厚生がない、常駐先との交渉が必要
5.フリーランスとして在宅勤務で働く
最後がフリーランスとして、在宅で働く方法です。この場合は自分で「受託開発案件」という完全成果報酬型の仕事を見つけて、在宅で仕事をします。「自分で仕事を見つける」というと大変な気もしますが、今はクラウドソーシングサイトやエージェントもありますので、思うよりハードルは高くありません。
在宅ですので、求める成果さえ出せば勤務場所も勤務時間も縛られることがありません。とても自由度が高い働き方ので、望むのであれば「南の島で働く」ということも可能です。実際に私の会社でもマレーシアにいる主婦の方がリモートで働いていたり、卒業生の方は海外のビーチで仕事をしてます。別に仕事を持っている人が副業としてITエンジニアを行う場合もこちらになるでしょう。
コロナでこの辺りも少し様変わりし、さきほどのフリーランスとして企業に常駐する場合であっても「リモートワーク(在宅)」で働ける事が多くなってきました。しかしそれでも、週1回や月数回は出社するといった会社がほとんどです。
- メリット: 出社の必要がない、時間にもとらわれない
- デメリット: 身分が安定せず福利厚生がない、クライアントとの交渉が必要
プログラミング初心者が独学で学んだ後、ITエンジニアへの転職に成功するために
未経験からITエンジニアの転職を成功させるためには、事前にいくつかの準備事項があります。他にもいくつかありますが、主にこれらのポイントを押さえることにより、ITエンジニアへの転職の可能性を広げることができるでしょう。
- ・ 新しい知識を取り込む意欲・向上心をもつ
- ・ ITエンジニアになったあとのキャリアを見据える
- ・ 実際にプログラミングの実績を作る
ITエンジニアの能力で特に求められるのは、最新の技術や業界トレンドを取り込む意欲や向上心です。ここは面接の際に重要になるポイントです。
IT業界は毎年のように新しいトレンドが生まれて、消えていきます。その中で業界に入った後も、勉強し続ける姿勢が求められています。「今、必要とされている技術は何か?」「志望する企業の業務で特に相性のいい言語は何か?」など、常に最新情報をキャッチするようにしておきましょう。
たまに「常に新しいものを学ぶなんてしんどい」と言う方がいるのですが、医者でも「新しい術式や医療知識」は常にアップデートしなければなりませんし、どんな職業であってもそうでしょう。反対にそうしていないとすればかなり危うい人材である可能性があります。
また、IT業界も技術力だけではありません。コミュニケーション能力や問題解決能力などの一般的な能力も重要です。異業種からの転職の場合はこれらのスキルをアピールすべきです。既存の現役エンジニアの方達は、恐らくあなた方が思っている以上に話せない人がとても多く、ナイーブでガラスハートです。
私も大手現場でマネジメントを行なっていましたし、IT業界のマネジメント職の方からはよくある悩みなのですが、「話は達者でタフだが技術能力がてんでないエンジニア」や「技術能力は高いがコミュ力に難があり自分のこだわりに時間を使ってしまうエンジニア」といったように、バランスの取れたエンジニアというのは実はこの世界ではかなり少ないのが実情です。
それだけ、切実に現場では求められています。
IT業界は人の入れ替わりが速い業界なので、早期に退職する人も多いです。現在のIT業界ではエンジニアの早期離職がとても多く、教育コストがやっと回収でききてきた頃に辞めてしまうといった事が問題になっています。
そうなれば、企業側からすると「教育コストをそもそもかけなくていい人材だけ雇おう」「スクールなり自分で教育コストを払ってもらってスキルUPしてもらおう」という方向へどんどんシフトせざるをえなくなります。
よく、「採用側としてどこまで真剣にITエンジニアという職に向き合っているかも問われる」と言った話が囁かれますが、その真意がここにあります。
実際にITエンジニアという職で一生食っていく真剣さなどを採用側は求めてはいるわけではなく、「教育コストの元が取れてきちんと利益が出てくれるまでいるのかどうか」がとても心配なわけです。
ですので、どう「辞めない人」だと思われるようにアピールするか、逆を返せば「辞めそうな要因や懸念を相手に見つけられないようにするか」が大事になります。
また、面接というのは「就職させてもらう場」ではありません。あなたという「商品」を売り込み「買わせる場」です。面接では「営業マン」にならなければいけないのです。
そうなれば、面接時は採用担当者という「お客様」からどういった質問をされるのかを事前に予測し、その回答を用意して自宅で必ず練習をすることです。「何を当たり前な」と思われる方もいるでしょうが、実際これが出来ている人はとても少ないのです。
ウェブカツ‼️では、「進路相談」という形で面接対策などについて相談ができ、生徒が実際に受けた面接内容をヒアリングしています。実際のところ、相手が欲しい答えとは違った方向に答えている方が度々見受けられるので、その度に指導を行なっています。
また、今まで生徒が面接で聞かれた膨大な内容をデータ分析し、面接対策用の「質疑応答リスト」として卒業生にお配りしていますが、こういった事前準備をしっかりやっているかどうかで内定確率がかなり違ってきます。
これはIT業界に限った話ではありません。こういった部分も「外で食べていく力」の一つです。
最後に実際のプログラミングの実績です。実力や実績が重要視されるIT業界では、実際にプログラムを作ったという経験は有利に働きます。
そのため、一度でも自分でアプリの制作経験があれば、ぜひアピールしておきましょう。制作物の出来がよければ、技術力の高さやプログラミングの理解度を相手に伝えられます。プログラミングの実績は、ポートフォリオ(実績や成果物をまとめた作品集)としてまとめておきましょう。
プログラミングスクールをお勧めする理由は、未経験でもスクールで高品質なポートフォリオを作ることができる、ということもあります。
ITエンジニアの夢をつかみ取った受講生たち
以下の様な生徒さん達も実際にウェブカツ!!といった独学系スクールを使いながらも未経験からでも転職出来ていますので、皆さんもこれから独学で根気よくプログラミング学習を学んでいかれてください。
40代主婦からITエンジニアへ
- ITエンジニアへの道のりをお話しましたので、次は夢を叶えてITエンジニアに転職していった方々の話をします。私の運営する「ウェブカツ!!」では、未経験からITエンジニアの転職を決めたり、フリーランスとして高単価な案件を受託している卒業生がたくさんいます。
- その中には高校を卒業していない方や40代の主婦で未経験からチャレンジされた方なども含まれています。
- Kさんという女性は大学卒業後、地方の中小企業に事務員として入社します。数年の後に結婚、そして出産を機に退社されて、その後10年以上専業主婦として育児に専念します。
- 子どもが大きくなって、仕事をしようと考えられた時にITエンジニアを意識されました。当時、彼女は全くの未経験で、パソコンはブログを書いたりネットサーフィン程度しか使っていませんでした。
- その彼女が決意して、「ウェブカツ!!」に入会され、9か月の勉強の後に無事フロントエンドエンジニアとして、WEBサービスの開発・運用の職を得ることに成功したのです。
- Rさんという28歳の女性は全く未経験のパチンコ店の店員から、「ウェブカツ!!」に入会されITエンジニアへの転職を成功されました。
- しかも彼女は企業の研修で成績優秀だったので、通常半年以上の研修期間が必要なところを3か月で終えて、現役エンジニアと肩を並べて業務をスタートされました。
- また、33歳介護福祉士からの転職、育児中で在宅のWebデザイナーとなった女性など、未経験からIT業界に入った方はたくさんいます。もちろん努力は必要ですが、ITエンジニアになることは決して不可能なことではないのです。
7ヶ月でITエンジニアになった営業マン
- Sさんは大学卒業後、ある企業に入社して法人営業を担当されていました。特に営業という仕事が好きというわけではなかったようですが、入社してからは着実に営業スキルを伸ばし、仕事に手ごたえを感じられるようになっていました。
- しかし、次第に「ノルマに追われる日々」や「お客様と会社の板挟み」に疲れてきて、転職を意識するようになったそうです。そこで転職エージェントに相談しましたが、マッチングするのは営業の仕事ばかりでした。
- 営業という職に疲れていたSさんは営業職以外を探しますが、人事や経理などのバックオフィス系の求人が少しある程度で、どれもSさんにはしっくりきませんでした。
- そこで、エージェントから聞かれたのが、「プログラミングとか興味ないですか?」という一言でした。Sさんは「その手があったか!」とITエンジニアを目指すことになります。
- ITエンジニアになるためには、まずプログラミングの知識を学ぶ必要があります。学び方は「独学」か「スクール」の二択です。Sさんは効率を重視して「スクール」を選びます。
- そして、慎重な検討の後に、選んだスクールが、当社が運営している「ウェブカツ!!」でした。
- 前職を続けながらの学習でしたので、出社前や出社後、休日に時間を絞り出して、勉強時間にあてられたそうです。「継続すること」と「周りと比べないこと」を意識されて、コツコツと勉強を続けました。
- 勉強を始めて3か月ほど経った後から、転職活動を始めて面接に行き始めました。早期に内定が出た企業もありましたが、我々と相談して辞退したものもありました。結局、それから数か月勉強したのち、納得できる転職先に採用されることになりました。最終的に4社の内定を得ることができました。
これが未経験からITエンジニアに転職される方の典型的な例です。
実際のところ、現職を続けながら勉強時間を確保することは簡単ではありません。それに、学習する教材のレベルが高いほど挫折してしまう人が多いことは確かです。しかし、それでもウェブカツ‼️の挫折率は2割ほどで、30人クラスで例えるなら6人程度の赤点者しか出していません。
合格率で言えば8割の大学受験が難関校なのかどうか、ということになります。
思いを持って勉強すれば、必ず道は開けます。本書を読んで、あなたの夢を叶えて下さい。
プログラミングスクールに通う価値ってなに?
このような手順でHTML、CSS、JavaScript、PHPと学ぶことにより、1000万円プレーヤーのエンジニアに必要な技術力の一端を学ぶことができます。
ここでお話しした以上に詳細の話はウェブカツ!!で全て公開されていますので、ご興味のある方はウェブカツ!!に仮入部(無料)して、各部活を覗いてみて下さい。
しかしながら、学ぶことの多さに「こんなにたくさんのことを学べるのか?」と不安になる方も多いと思います。
確かに、独学でこれだけの事柄を学ぶことは簡単ではないと思います。なぜなら、「続かない」ことと「ビジネスレベルまで上がらない」ということです。
「続かない」は前章でも説明した、モチベーション維持の問題です。
「ビジネスレベルまで上がらない」という問題は、本で部分的な知識は身につけられても、体系的には学べないということ。そして、実務で必要となる細かな使い方、どんなときにどんなものを使うかという優先度まではわからないということ。だから、あくまで趣味としての机上の知識に留まってしまう方が多いのです。
例えば当社には顧問弁護士がいますが、弁護士の勉強でも「教科書の上での法務知識」と「現実としての法務知識」は異なると言われます。私がいた不動産の世界でも同じく、宅建で学ぶ知識というのはあくまで「机上」「上辺」に過ぎません。結局、実務の知識がないと現場では使えないのです。
私自身が学ぶ時は貯金が10万円しかなく、今ほどプログラミングスクールが充実していなかったため、独学を選ばざるを得ませんでした。
しかし、今はプログラミングスクールが増えてきています。だから、レベルの高いところまで教えているスクールを選べば、独学で4、5年かけて学ぶことを半年で学べてしまいます。
なぜなら、スクールには学習を続ける仕組みがあり、カリキュラムが管理されているためビジネスレベルのスキルを最短で学べるからです。
この「カリキュラムが管理されている」ということが重要です。例えばエンジニアとして実際に働いている人でも、先ほど説明したJavaScriptがしっかり書けない人が普通にいたりします。私が7年ほど現場にいた経験からも、5年やっていてもJavaScriptがきちんと書けない人が半数以上いました。Web開発のエンジニアにJavaScriptのスキルは必須です。しっかりカリキュラム管理されているところで体系的に学ばないと、こういった人と同じ道を歩む可能性があります。
年収1000万円に到達するまでの時間を、あなたはいくらで買うでしょうか?
あなたが稼ぐために、事業としてやるのであれば、かかったコスト以上に収益を上げられるのならば、コストをかけてでも時間を取るという判断が大切になります。企業がM&Aで企業を買うのは、時間をお金で買いたいからです。
1から事業を作っていくよりも、既にあるノウハウ、そこまでに行き着くための時間を買ってしまうわけです。経営者もコンサルタントに1時間数百万とか、1年で1億という高額のお金を払い、そのノウハウを買っています。そういった思考をしているからこそ事業として成長ができています。ジムで痩せられるにも関わらず、わざわざお金を払ってRIZAPに通う方が多いのも、学習塾に皆通わされているのも(当の本人は気づいていませんが)、そういった理由の1つですよね。
では、実際にもし学ぶために5年かかるプログラミングが1年に短縮され、早くに年収1000万円に達した時の年収をみてみましょう。
スクールに通って、時間を買った場合
- 1年目:350万
- 2年目:1000万(フリーランス)
- 3年目:1000万(フリーランス)
- 4年目:1000万(フリーランス)
- 5年目:1000万(フリーランス)
スクールに通わなかった場合
- 1年目:350万
- 2年目:350万
- 3年目:400万
- 4年目:450万
- 5年目:1000万(フリーランス)
なんと4年の時間を買うことにより、トータルで1800万円の差が出ます。
しかも早いうちにお金を得ることにより、そのお金をまた別のスキルに投資することができますから、そう考えるとこの差の大きさがわかるでしょう。
実際にこの効果を体感している生徒さんがつぶやかれています。
ウェブカツに支払ったコスト 60万円(1年半合計)
卒業後〜半年 単価85万円/月(年収1020万円)
半年後〜 単価90万円/月(年収1080万円)
正社員時代 年収600万円
改めてROIが高すぎだと思いました。#ウェブカツ
— やまと (@ya_matsuoka) January 9, 2021
ビジネスの現場では常にROIでの投資判断が求められていますが、この生徒さんの頃と比べ現在はプランを一新しサブスク型で1年学んでも26万円ほどとなっていますので、今ではまた更にROIが高く投資対効果の高いスクールとなっています。
学費はアフィリエイトで回収も出来る
また、弊社ではアフィリエイトも行っています。
ウェブカツ!!は単なるプログラミングだけを教えるわけではなく、最終的に「自力で稼げる力」を養いますので、アフィリエイトを行うとモチベーション維持と共に伝える力や売る力を培う事が出来るため、ウェブカツ!!で学ばれたい場合には、こちらもやるといいでしょう。
例えば、アスリート部員のアフィリエイト報酬は1人の入部で約1.5万円が受け取れますので、レギュラー部員で入られている方の場合、毎月たった2人に入部してもらえればなんと学費が賄えてしまうのです。
実際に生徒さんの中にはアフィリエイトで毎月50万、60万もの金額を稼いでいる方もいます。
ですので、「プログラミングだけを学べばいい」という会社員の中でしか働けない思考回路をいち早く脱却して、「能力がないからやらない」ではなく「能力がないから学ぶためにやろう」という将来のために学習の一貫としてどんどん活用していきましょう。
最後は弊社の紹介となってしまいましたが、私もこれを読まれている恐らくプログラミング初心者のあなたと同じく独学でやっていた当時、必死になってストレスで頭が禿げるかと思うくらい(笑い話ではなく真剣にです)食らいついてなんとか独学を乗り切って今があります。
ですので、あなたも良い教材と根気さえあれば乗り切る事は絶対に出来ます。
皆さんの独学を応援しています。