2024.02.06最終更新日:
2024.02.06
こんにちは、井上です!
現在、学生の方の中には、、、
- プログラミングを習得したいけど、何から勉強していけばいいかわからない。
- 情報系の専攻ではないけど、プログラミングを独学で始めることは可能?
というような疑問・悩みをお持ちの方も多いかと思います。
実は、文理や専攻問わず、プログラミングを学習してエンジニアとして稼いでいくために必要な学習手順や内容は、
ほとんど決まっています。
つまり、誰でも、
- 決まった内容を
- 決まった手順で
- 決まった時間だけ
学習すれば、ほぼ確実にエンジニアとして稼いでいくことができるようになります。
理由として、、
- プログラミングに特別なスキルや能力は必要ないため。
- インターネット上やその他の媒体で、安価で良質な学習教材がすでに出回っているため。
確かに、プログラミングには論理的思考力や数学的な考え方が必要になるケースはあります。
ただ、それらは「地頭が良くなければできない」ということではありませんし、数学的な考え方といっても「対数」「集合」など限られたものだけなので、誰でも習得できます。
また、インターネットが普及した現代において、未経験者や初学者にもわかりやすく内容を解説してくれてる記事や教材が多く出回っています。
そういったものを使って正しく学習を進めていけば、理解に困るケースが限りなく少ないと言えます。
よって、一度始め方や手順を知ってしまえば、あとはそれぞれのフェーズごとの目標(ゴール)を目指して、必要な学習を確実にこなしていくだけで十分エンジニアとして稼いでいくことは可能です。
私は過去、大学入学時にコロナが流行したことをきっかけにプログラミング学習を初めて、約7ヶ月間の学習後、大学在学中に就業型インターンに1年半ほど参加しました。
現在では、本業でWebエンジニアとして活動しつつ、副業としても複数の案件を行って月20万円前後の副収入を得ています。
この記事では、上記のような経験をもとにプログラミングの経験やスキル・収入を得ていくためには、まずは何から始めれば良いのかについて解説しています。
そのようにして得た知識を活かして、中長期的に活躍していけるようなエンジニアになるための方法についても触れていきます。
この記事を読んでいただくことで、以下のことがわかるようになるかと思います。
- プログラミングを使って稼いでいくための手順や全体像がわかる。
- プログラミングを習得するには何をどのように始めていけばよいかがわかる。
- 今日・明日から具体的に、何に取り組んでいけば良いかわかる。
それでは、次のような手順で解説していきます。
(プログラミングに関する概要等をすでにご存知の方で、とにかく始め方だけ知りたい方は**「【手順③】環境を整える」**から読んでみてください!)
- 【手順①】そもそもプログラミングとは?(飛ばしてもOK)
- 【手順②】プログラミングで「稼ぐ」って何?(飛ばしてもOK)
- 【手順③】環境を整える
- 【手順④】基礎学習(Web系の言語がおすすめ!)
- 【手順⑤】成果物(ポートフォリオ)を作成する
- 【手順⑥】インターン活動→個人案件を行う
【手順①】そもそもプログラミングとは?
プログラミングをざっくり説明すると、
「コンピュータに命令をする」ことだと言えます。
かなり大雑把な説明ですが、人がコンピュータに対して何らかの命令を出すことによって、あらゆるシステムが成り立っています。
例えば、ホームページを例に取ってみても、、、
- ここの文字を太くしなさい
- ここの背景に色をつけなさい
- ボタンはここに配置しなさい
- ボタンがクリックされたら、次はこのページに飛ばしなさい
のように、命令の連続によって、構成されています。
今回はホームページを例に取りましたが、この世のほぼ全て(と言って良いほど)のデジタルシステムは、人の手によってプログラムされて動いています。
そのため、インターネットなどのサービスやホームページ、その他のシステム等の数だけ、プログラマーやエンジニアと呼ばれる人がいることになります。
【手順②】プログラミングで「稼ぐ」って何?
先に結論から言うと、
プログラミングで「稼ぐ」とは、、、
プログラミングスキルを駆使してシステムを構築し、その対価としてお金をもらう
と言うことになります。
「プログラミング」と聞くと、以下のような印象を持たれる方も多いのではないでしょうか?
- 「なんか難しそう。」
- 「かなり専門的な知識が必要なんじゃない?」
- 「自分にできるかな??」
全て「Yes」です。
プログラミングは最初は難しいですし、専門的な知識が必要ですし、何の知識もない人ができることではありません。 しかし、だからこそ「稼ぐ」ことにつながるんです。
先程、「インターネットなどのサービスやその他のシステムの数だけエンジニアやプログラマーがいる」と言いました。 それは、裏を返せば「エンジニアやプログラマーがいなければ、この世のインターネットサービスやシステムは存在しない」ということでもあります。
と言うことは、これだけインターネットが普及した現代において、エンジニアやプログラマーは「なくてはならない存在」ということになります。
欠かせない存在であるために、個人が、会社が、そして社会がプログラミングスキルを持った人を求め、そこに対してお金が払われます。 これが、「プログラミングで稼ぐ」ということです。
【手順③】環境を整える
環境としては
PCを用意する
だけで十分です。
お勧めするPCについては、Macbook がお勧めです!
(日本の)エンジニア業界は基本的にMacbookが主流ですし、学習を修了して案件を持ったり、企業で働くことになったとしても、環境構築の手順書や説明書はMac向けに書かれていることが多いです。
また、シンプルに使いやすいです! 使用感やUIに関しては、もはやMacに勝るPCはないかなと個人的にも思います。
おすすめのマシンとスペックに関してはM1 Macbook Airがお勧めです。
おすすめのスペックの詳細に関しては別記事で解説するので割愛しますが、メモリに関しては最低でも16GBは欲しいかなと思います。(基本的には、上記の通りにスペックで購入して頂いて問題ありません。)
少々値段は張りますが、エンジニアとして稼いでいく上では必要経費かなと思いますし、最高のパートナーになってくれる思います!
無理して購入しなくても良い
ただ、多くの学生さんにとってPC1台を新しく購入するのには、経済的な事情ではばかれる方も多いかと思います。
あるいは、
「どうしてもWindowsでやりたい!!」
と思いの方もいらっしゃるかもしれません。 その場合は、無理に新しいMacを購入せずとも、プログラミング学習はできますので、問題ありません。
これからPCを購入する方や、元々PCを新しく購入予定だった方は是非とも上記でお勧めしたMacbookを用意してもらえればと思いますが、難しい場合は現在お持ちのPCで始めましょう!
【手順④】基礎学習
基礎学習のポイントは
「7割理解で、なるべく早く終わらせる」
ことです。
基本的な考え方として、
「頭の中にとっかかりを作る」
程度に思っておいても良いと思います。むしろそのぐらいでなければ、間違いなくポートフォリオ作成に辿り着くまでに挫折します。
Web系の言語がおすすめ
エンジニアとして稼いでいくためには、Web系の言語を習得しておけば良いかと思います。
Web系の言語とは、、、
- (HTML / CSS)
- JavaScript
- PHP
- Ruby
などが挙げられます。
Web系をお勧めする具体的な理由に関しては、別記事で解説するため割愛しますが、
ざっと列挙すると以下の通りです。
- 向き不向きが比較的少ない
- ネット上に参考となる情報が豊富にある
- 何より、稼ぎやすい
それでは、基礎学習のステップを解説します。
それぞれの項目の詳細は別の記事で解説しているので、そちらも併せて参考にしてみてください。
基礎学習を進めるにあたり、基本的には以下の学習手順を参考にしていますが、実体験をもとに内容を取捨選択してお伝えしていきます。
Web系エンジニアにジョブチェンジするための学習順序と教材一覧|勝又健太@雑食系エンジニア実務未経験からWeb系エンジニア(主にバックエンドエンジニア)へジョブチェンジするための学習順序と学習教材の一覧に関しては、私のYouTubeチャンネルのこちらやこちらの動画でも解説しているのですが、note.com
ポートフォリオを完成させることを目的(ゴール)とする
基本ステップを解説する前に、大前提ですがゴールを設定しておきます。
プログラミングの基礎学習におけるゴールは、
「ポートフォリオ(作品)を完成させる」
ことで良いかと思います。
ポートフォリオとは「portfolio: 作品集」と訳されるように、自分で開発した作品のことです。
これを読んでいただいているのはおそらく未経験の方が圧倒的に多いかと思うので、その場合は、高品質なポートフォリオを作ることでクライアントや企業に対してアピールしていきます。
これから解説する「基礎学習」はポートフォリオ作成の手段でしかありません。
そのために、基礎学習に関してはこの章の冒頭でお伝えした**「なるべく早く終わらせる」**ことが重要なんです。
基礎学習のステップ
- コンピュータサイエンス
- HTML / CSS
- JavaScript
- Ruby
- SQL
- Ruby on Rails
上記の順序で学習していけば良いかと思います。
以下でそれぞれの項目に関して順番に解説していきますが、現時点で覚えておく必要はなく「こんなことを学ぶのか」程度に思っておくぐらいで十分ですので、気になるものだけ目を通してみてください。
詳細な学習方法に関しては別記事で解説しています。
1. コンピュータサイエンス
すでに大学の学部が情報系などの場合で、基礎的な内容がある程度理解できている人は飛ばしてもらっても良い内容なります。 プログラミング学習の入門として、まずはコンピュータやネットワークについてある程度理解する必要があります。
内容的には、
- n進数
- デジタルデータ(ビットとバイトなど)
- CPU・メモリ
- ハードウェア・ソフトウェア
- データベース
- ネットワーク
- セキュリティ
などになります。
おすすめの教材等は別記事で解説しています。
2. HTML / CSS
HTMLとCSSはWeb技術の根幹となるような言語になります。 初心者が学習する1歩目の言語としては比較的ハードルが低いですし、基本的な内容になりますので、言語学習の一歩目として取り組んでみてください。
(プログラミング「言語」かどうかに関してはしばしば議論が分かれるところですが、便宜上、言語として話を進めていきます。)
今回は、言語の解説記事ではないので、詳しく触れませんが学習を進めていく中でどんなものか理解していきましょう。
まず、HTMLは
Webサイトの骨組みを作る言語
とだけ理解してもらえれば、現状は問題ありません。
次にCSSですが、これは、
骨組みとなるHTMLに装飾を加えるためのもの
とだけ認識を持っておいてください。
例えば、
- 文字の大きさを変える
- 背景をつける
- 要素に色を加える
などです。
上記の2つの言語だけでもホームページは十分に作れます。
ここまでの学習を完了させることができましたら、以下のようなサイトを模写(真似て作る)しながらアプトプットできるサイトがありますので、最も難易度が低いものから自分なりに模写コーディングしてみてください。
Codejump【旧 Codestep】 | 作って学ぶコーディング学習サイト(HTML、CSS、JavaScript、WordPress)Codejump(コードジャンプ)は、HTML、CSS、JavaScriptの基礎学習を終えた方が、模写コーディングやデザインカンプからのコーディング練習を通して、より実践的なWebサイト制作のスキルcode-jump.com
このHTMLとCSSの学習 + サイト模写で合計1ヶ月程度で完了できればかなり順調です。(ちなみに、筆者はこの段階で挫折しかけました(笑))
なので、そのぐらいの期間を目安に学習を進めていきましょう。
ちなみに、ここまでの学習だけでも一部の案件は対応できます。
例えば、
こちらのお仕事では、CSSの編集を依頼しています。
このように、CSS (やHTML)の知識があればこなせる案件もあるので、アプトプットもかねて積極的に応募してみるのもありかもしれません。
3. JavaScript
HTML・CSSの学習がある程度済んだら、いよいよ「プログラミング言語」としてJavaScriptを学んでいきます。
HTMLやCSSの学習と比べてもやや難易度が上がってきますが、現在のWebの開発のシーンではJavaScriptはほぼ必須と言えるほど使われている言語になりますので身につけておきましょう。
JavaScriptとは、
クライアントサイド(フロントエンド)と呼ばれ、
JavaScriptを使うと、ユーザーのアクションに応じてインタラクティブに(対話的に)アプリケーションを動かすことができます。
例えば、、
- (ユーザーが)ボタンをクリックしたら、商品詳細ページに遷移する。
- 右にスライドしたら、画像が切り替わる。
- ブラウザバックしようとしたら、画面終了の警告アラートが表示される。
これらの、ホームページでよく目にする挙動は全てJavaScriptによって動作しています。
なお、実際の開発現場では、フレームワークやライブラリと言われるJavaScriptをもとにして作られた便利ツールを用いて開発を行うことが多いです。
そのため、このフェーズでは基礎的な文法や概念について把握できれば問題ありません。
期間としては、約2週間程度で基礎を終わらせられればベストかと思います。
(具体的な学習教材や学習方法については別記事をご参照ください。)
4. Ruby
Rubyはサーバーサイド、要するにサーバー側で動く言語になります。
JavaScriptはクライアントサイド、つまりはクライアント=ブラウザ側で動く言語になりますので、役割が異なります。
クライアントサイドのJavaScriptに加えて、サーバーサイドのRubyを習得するすることで一連のアプリケーションを構築することができます。
Rubyを学習する理由に関しては沢山ありますが、中でも、
- コードがシンプルで経験や知識の浅い未経験者にもとっつきやすい
- 求人が多い(間口が広い)
- フレームワークを使って様々なアプリケーションを開発できる
などが主な理由として挙げられます。
3つ目の「フレームワーク」に関しては下記の、「6. Ruby on Rails」の部分で解説します。
Rubyの基礎文法学習に関しても期間としては、約2週間程度で終わらせましょう。
5. SQL
Rubyに関する解説のところで、
「Rubyはサーバーサイドの言語」
ということをお話しました。こうしたサーバーサイドの言語はデータベースと呼ばれる「データを蓄積しておく本棚」みたいなものと連携することも役割の一つとしてあります。
SQLは、その
「データベースとのやりとり(連携)」
する時に使われる、コンピュータ言語になります。(問い合わせ言語とも言われます。)
現時点では、
「なんかデータベースとのやりとりに使われるんだなぁ」
程度の理解で問題ありません。
SQLに関しても、エンジニア(特にサーバーサイドのエンジニア)にとっては必須の内容になりますので、Rubyの学習等と並行して行うようにします。
期間はこれも、2週間程度を目安に終わらせましょう。
6. Ruby on Rails
最後にRuby on Rails(ラスボス)について学びます。
Ruby on Railsは名前から連想されるかもしれませんが、Rubyをもとにして作られたいわゆる「フレームワーク」と呼ばれるものになります。
簡単にいうと、
「Rubyのコードを少なくかつ単純な記述で開発できるようにした便利ツール」
おそらく現在の開発の現場では、Rubyを単体で使ってアプリ開発することはまずないと思います。
このようなフレームワークを使うことで、簡単にアプリ開発できるようになります。
ラスボスということもあり、なかなか理解に苦しむ部分も多々出てくるかもしれませんが、3 ~ 4週間を目安に基礎学習を終えられるといいでしょう。
どうやって勉強するか
何を学習するか(What)がある程度わかったところで次に、どのように学習するか(HOW)についても少し触れておきます。
方法として大きく分けて2種類かと思います。
- 書籍を使って学習する
- オンライン教材を使って学習する
書籍を使う
書籍で学習するための順序は以下の通りです。
- 1周目:書籍の内容にざっと目を通す(3~4割程度理解する)
- 2周目:もう一度読みながら、実際に手を動かしてコードを書いてみる。(7割程度理解する)
全部で2周こなせば十分かと思います。
2周目の「手を動かす」というのが重要で、読んだだけではなかなか理解が追いつかないですし、眠くなりますよね(笑)
なので、書籍に一通り目を通したら、「実際に手を動かす」ことを実践してすると理解が深まると思います。
初学者にとって、内容を全て理解することは至難の技なので、最終的に7割程度理解してれば何の問題もありません。
結局忘れるものなので、自分の成果物作成の段階になった時にまた巻き戻ればOKです!
オンライン学習教材を使う
今は、ネット上で無料or安価で良質な教材が沢山手に入る時代なので、これを活用しない手はありません。
おすすめは以下のサイトで学習するのが良いです。
Progateは実践型で、ソースコード書きながら各レッスンを進めていく形式になります。
ドットインストールとUdemyは動画での講義になっていて、動画で基礎を解説してくれていて、それを真似しながら進めるといった形式になっています。
人によって好みが分かれますが、個人的にお勧めしたいのはProgateとドットインストールを並行して使う方法です。
理由としては、Progateが実践型ということもあり、解説がやや不親切なところがあります。それをドットインストールの動画レッスンで保管しながら、理解を深めることができるからです。
まとめると以下の通りです。
- ドットインストールの動画を見て理解する。
- 該当箇所をProgateを使って手を動かしながら実践する
また、先述の通り、良い意味であまり理解しすぎないようにしましょう。
わからなくなったら少しググってみるのは問題ありませんが、そこで立ち止まってしまっては時間を消費する一方なので、
「7割理解で進む」
意識を持ちましょう!
「後から理解できた」なんてことはザラにあります。
【手順⑤】成果物(ポートフォリオ)を作成する
1ヶ月半 〜 長くて2ヶ月程度で基礎を学習したら、次はいよいよ自分の成果物を作っていきます。
とはいえ、いきなり「作れ!」と言われてもテーマが思い浮かびませんよね。
その場合は、
「メディア系のサイト」
を作れば良いと思います。
メディア系のサイトとは、X(旧Twitter)やFacebookなどのSNSのようなアプリケーションのことです。
とはいえ、「SNSを作れ」と言われてもハードルが高いですので、以下のような要素を持ったメディア系のWebアプリケーションが良いかと思います。
- 投稿一覧画面で投稿が見られる
- 投稿できる
- 投稿にコメントできる
- 投稿削除できる
- 投稿を更新できる
このような要素を含むアプリが良いでしょう。
私が過去、同じ技術スタックで作成したアプリの場合、
「誰でも手軽にレシピが投稿できて、コメントなどで交流できるレシピサイト」
を開発しました。
アイデアに関しては十人十色なので、自分らしいポートフォリオを設計してみてください。
そうした独創性もアピールポイントの一つとなります。
これ以降のポートフォリオ作成の詳しい手順等に関しては、別記事で解説していますので、基礎学習を終えられたらその際にまたご参照ください。
【手順⑥】インターン活動→個人案件を行う
基礎学習も終え、アピール材料となるポートフォリオを作り終えたら実務にチャレンジしていきましょう。
学生であれば比較的多く時間が取れるかと思いますので、その時期に実務を経験して多くの実績を積んでおくことは、今後のキャリアにおいて、かなりのアドバンデージになります。
まずはオフラインのインターンから始める
学生が実務を経験する方法としては大きく分けると、、、
- インターン活動をする
- 個人で案件を獲得する
上記の2つかなと思います。
個人的には
インターン活動(オフライン) → 個人案件
流れがおすすめかなと思います。
理由としては
実務未経験の状態では、オフラインの業務にコミットすべきだから
です。
前提の話として、インターン活動は基本的にはオフラインで実施されることが多いので実際に企業で働くのと同じように会社に出勤して日々の業務をこなす流れになることが一般的です。
一方で個人案件は、会社に勤務して業務を行うケースもありますが、基本的にリモート勤務となることが多いです。
学生の方はまだ社会人経験が少ない人が多数かと思いますので、そういった意味でも「いきなり個人で案件を取ってリモートでバリバリやっていく」のは少しハードルが高いかと思います。
また、オフラインのインターン活動を行うメリットとしては、
- エンジニアとして働くことのイメージが持ちやすくなる。
- エンジニア同士のコミュニケーションによって、得ることや学びとなることは多い。
などがあります。
エンジニアとして働くイメージに関しては、リモート勤務の個人案件ではなかなかイメージしにくい部分がありますし、学びや情報量としてもやはり、オフラインの活動に軍配が上がると思います。
また、1週間や1ヶ月程度で終わってしまう短期のエンジニアインターンに関してはあまりお勧めしません。
理由としては
- 実績になりにくい
- 十分な経験を積むことが難しい
- バイトの代わりにならない(学生にとっては重要)
短期のインターンは、中身問わず軽視されがちで、実績になりにくいというのが私自身の見解です。
いろんな案件の応募をみても「経験年数1年以上」など、年単位で条件指定されている応募が多い印象です。
また、1ヶ月あるいは1週間という短い期間で、実務レベルの開発経験を積むのは正直かなり難しいです。 (ヘタをすると、最初の環境構築で終わってしまうぐらいの期間ですね(笑))
その反面、長期でいけばそれなりに時給はもらえる(最初から1500円ほどもらえるところもあります。)ので、他にバイトをしなくても良いというメリットがあります。
経験を積みながら、それなりの期間お金がもらえて一石二鳥です。
このような理由からインターンに行く際には短期ではなく、なるべく長期で行くことをおすすめします。
インターンの経験を個人案件に活かす
インターン活動の経験が個人案件の獲得につながるケースは多々あります。
実際、私自身もインターンでも約1年半の経験をもとに案件獲得していきました。
私の感覚値的なお話になって恐縮ですが、 インターンの活動をそれなりの期間継続してある程度の経験を得られれば、それ以降の案件獲得はかなりスムーズになると思っています。
当然経験のアピールや、インターンでのエピソードを語れる必要ありますが、1年以上経験していればある程度その辺りもアピールしやすくなると思いますので、案件獲得にはインターンでの実務経験がキーになると考えています。
ここまで行けたらその後はかなり選択肢も増えてきて、インターンでの経験を活かして、思い通りのエンジニアキャリアにしていける可能性がグッと高くなると思います!
個人案件の探し方やおすすめのエージェント等に関しても、別で記事にしていくい予定ですので、そちらも是非参考にしてみてください。
まとめ
あまり時間をかけすぎても、挫折の可能性は高くなりますので、3 ~ 4ヶ月以内にポートフォリオ作成まで終わられせるイメージを持っておきましょう。
- 基礎学習
- コンピュータサイエンス基礎→HTML/CSS→JavaScript→Ruby→SQL→Ruby on Railsの順で学ぶ。
- ポイントは「なるべく早く終わらせる」こと。
- ポートフォリオ作成
- テーマはメディア系のアプリがお勧め。
- インターン活動→個人案件を行う
- 実務未経験者にはオフラインでのインターン活動を行うことがお勧め。
- 短期インターンではなく長期のインターンに行くのがお勧め。
- インターンでの経験は案件獲得にとって重要。
終わりに
ここまで読んでいただきありがとうございます。
ここまでの話ですでにお気づきかもしれませんが、エンジニアとして稼いでいくことは決して楽なことではありません。
筆者も最初はわからないことばかりで、何度も挫折しかけましたが、なんとか踏ん張りながら継続したことで結果が出てくるようになりました。
なので、皆さんも今回紹介した始め方を一歩づつ実践していただければ確実に結果は出ますし、皆さん自身が望んだ結果を掴むことができると思いますので、本記事をきっかけに是非チャレンジしてみていただきたいと思っております。
また、今回の内容に含めきれなかった詳細な内容に関しては別途記事を用意していきますので、そちらも併せて参考にしてください。