プログラミングを勉強しようと思っているのですが、何から手を付ければ良いかわかりません。
効率よく勉強してエンジニアとして早く働きたいです。始めるにあたって必要なこと、独学のコツを知りたいです。
本記事のメインテーマ
サブテーマ
こんにちは、はるです。
プログラミング言語はたくさんあるし、特に作りたいものはないのに作りたいものを作れと言われるし。。。
初心者にとってプログラミングをどう勉強していけばいいのか意味不明ですよね。
私も3年ほど独学してきましたが、当時は何から手を付ければ全く分からなかったですし、無意味な基礎学習を永遠に続けて時間を無駄にしたりと非効率な勉強をしてきました。
また、挫折もしまくっており、プログラミングを避けていた時もありました。
しかし、なんとかポートフォリオを複数作成し、無事エンジニアとして内定をいただくことができました。
記事の信頼性
- 普通の専門学生(23卒)
- プログラミングを独学で3年ほど学ぶ
- 2社からエンジニアとして内定をいただく
- ランサーズで開発案件を受注したことがある
私のポートフォリオは下記にまとめてあります。
GitHub
ポートフォリオ一覧
今回は、完全初心者向けにプログラミング学習の始め方を解説していきます。同時に独学で就職する方法も解説。
テキストコミュニケーションが好きな私にとってプログラミングの仕事は最高だなと思っていますし、伸びる業界で収入も上げやすいです。
エンジニアの世界に入ってこれるよう初心者に寄り添って記事を書いていきます(`・ω・´)ゞ
本記事を読むことで、自分は何を作りたいのか、何のプログラミング言語を学べばいいのか、どういうエンジニアになれるのか、就職の流れ、をイメージすることができます。
※就職する企業ジャンルが決まっている方は、以下の記事も参考になるかと思います。
新卒でWeb系へ就職する方法(準備中)
新卒でSIerに就職する方法(準備中)
新卒でSESに就職する方法(準備中)
新卒でWeb制作会社に就職する方法(準備中)
ではさっそく始めましょう!
0章:プログラミングってなに?を理解する
簡単に説明すると、プログラミングとは機械に命令することです。
機械は電気で動いている(0と1しかない世界)ので、パソコンに日本語で話しかけても英語で話しかけても「しーん」ですよね。(Hey,Siri!は例外)
なので、機械が分かるように日本語を機械語に変換するイメージです。
もっと理解したい方は、「プログラミングとは【簡単にわかりやすく解説】」の記事をどうぞ。パズドラというゲームアプリの事例をもとに、プログラミングについて解説しています。
※「プログラミングとは」について分かりやすい動画があったので載せておきます。プログラミングって難しそうというイメージが無くなるので、必ず見ましょう\(^o^)/
1章:ざっくり作ってみたいものを決める
正直、ゴールがないとプログラミング学習がつまらないです。
なので、プログラミング学習を始める前にざっくりでいいので「こんなの作りたいなぁ」というゴールを考えておきましょう。
とはいえ、プログラミングで何ができるのかわからない方が多いと思いますので、実際の世の中の事例を紹介し、作りたいものにあったプログラミング言語とエンジニアの職種を解説します。
※ざっくりと職種を紹介しますが、私はすべてに精通しているわけではないので、詳しく知りたい場合は各自で詳細を調べてみてください。
Webサイトを作ってみたい
Webサイトは、以下のようなものです。
株式会社デンソー
福助株式会社
小島国際法律事務所
プログラミングではないですが、デザインを作りたい方は「Webデザイナー」もありかもです。
Webサイトを作りたい方は、「コーダー」を目指しましょう。
Webアプリケーションを作りたい
Webアプリケーションは、以下のようなサービスを見るとイメージをつかみやすいと思います。
メルカリ
Youtube
note
Webアプリケーションの表面の部分(ユーザーが目で見れる部分)を作りたい方は、「フロントエンド」を目指しましょう。
逆に、「ユーザー登録」「決済処理」「カートに入れる」など裏側の処理や仕組みを作りたい方は「バックエンド」です。
就職する際は、「フロント」or「バック」どちらか選んで1つの技術を学ぶことになります。(会社によっては両方経験できるかも。)
後々フロントエンドとバックエンドが両方できるようになると「フルスタックエンジニア」と呼ばれます。
スマホアプリを作りたい
スマホアプリ開発はイメージしやすいかもです。
Twitter ツイッター
Twitter, Inc.無料posted withアプリーチ
英語アプリmikan-英検®/TOEIC®/大学受験などに
mikan Co.,Ltd.無料posted withアプリーチ
Pairs(ペアーズ) 恋活・婚活のためのマッチングアプリ
eureka,Inc.無料posted withアプリーチ
アプリ開発を学習していくと、将来は「スマホアプリ開発エンジニア」を目指すことができます。
細かく分けると、「iOSアプリエンジニア」か「Androidアプリエンジニア」で分かれます。
データ分析をしたい、自動化処理をしたい
目に見える事例がなくて分かりづらいかもですが、以下のような仕事をしたい場合は「データ分析」や「自動化処理」に当てはまります。
キーワード:データ分析、統計学、AI、機械学習
- 将来株は上がるのか下がるのか予想したい
- お客さんが何を買うのか、いつ頃来るのか予想したい
- 過去の病気のレントゲン画像を集めて、新しい患者が病気かどうか判定したい
キーワード:自動化、業務効率化
- エクセルの操作を自動化したい
- Webサイトから自動で情報を取得したい
- 毎日同じ時間に、指定した動作を自動で行いたい
データ分析を学習していくと、「データアナリスト」「データサイエンス」「AIエンジニア」を目指すことができます。
ただ、データ系として働く際、数学の知識があるかどうかも問われます。(プログラミングよりも数学的思考が大事なので。)
自動化系のエンジニアは「Pythonエンジニア」として、DX、業務効率化、業務改善、自動化などのサービスを提供する自社開発企業に入るのが良いかもしれません。
会計を自動化するクラウド会計ソフト「freee」
チームの仕事を見える化して業務効率できるアプリ「kintone」
オンラインで名刺管理し、転職につなげるアプリ「Eight」
ものとインターネットを繋げたサービスを作りたい
ものとインターネットを繋げたサービス(IoT製品)は、以下のようなものです。
スマートロック:Qrio Lock(Q-SL2)
スマートウォッチ:Fitbit
スマート電球:Philips Hue
機械の知識(ハードウェア)とアプリの知識(ソフトウェア)を学習すると、「IoTエンジニア」として働くことができます。
ゲームを作りたい
ゲームアプリは事例なくても良い気がしますが、念のため。
パズル&ドラゴンズ
GungHo Online Entertainment, Inc.無料posted withアプリーチ
モンスターストライク
XFLAG, Inc.無料posted withアプリーチ
クラッシュ・ロワイヤル (Clash Royale)
Supercell無料posted withアプリーチ
ゲーム開発のプログラミング言語やツールを学習していくと、「ゲームエンジニア」として働くことができます。
今、作りたいものがなくても大丈夫
ざざざーっとプログラミングで作れるものを紹介しました。
それでも作りたいものはないんだけど…
大丈夫です。
まずは基礎であるWebサイトを作ることから始めてみましょう。コーダーと同じ進め方で本記事を読み進めていってください。
Webサイトを作ることで、「Webデザイン」「フロント」「バック」「インフラ」のイメージをより掴みやすくなるので、「何をしたいか」「これはやりたくないかも」を見つけることができます。
2章:学習するプログラミング言語を決める
それぞれの目指すエンジニアごとに、おすすめのプログラミング言語を解説します。
プログラミング言語名がずらずら出てくるので意味不明で怖いかもしれないですが、「ふーん、よく分からんけどこれをやればいいのか」程度に読み進めていってください。
コーダー、フロントエンド、バックエンド
コーダー、フロントエンド、バックエンドは、Webの基礎である「HTML」と「CSS」から学びましょう。
その後は以下の通り。
コーダー
「JavaScript」→「WordPress」→「PHP」の順で学んでいくのがおすすめです。
フロントエンド
「JavaScript」を学んでみましょう。JavaScriptができるようになると一気にできることが増えます。
「JavaScript」の発展版の「jQuery」「Vue.js」「React」も知ると色々なフロント周りを作れるようになるので、プログラミングがもっと楽しくなると思います!
バックエンド
バックエンドは色々なプログラミング言語があります。「Ruby」「Node.js」「Python」「PHP」「Java」「Go」「C」など。
- Ruby → 日本人が開発した言語
- Node.js(言語ではない) → JavaScriptをバックで動かせる
- Python → プログラムを読みやすいので人気な言語
- PHP → HTMLに組み込むことが多くとっつきやすい
- Java → 大規模開発向けの言語
- Go → Googleが開発した言語
- C → プログラミング言語の元祖
バックエンドの方は、働きたい環境で言語を選ぶのもありです。
- Web系の企業に入ってMacで働きたいぜ→Ruby、PHP、Python、Node.js、Go
- お堅い大企業の周辺で働きたい(PCはWindowsかも)→Java、PHP、C
選べません…おすすめは?
習得難易度が低い「PHP」がおすすめ。
いやもはや、初心者でバックエンドを目指すならPHPからで良いと思います。JavaやCはムズいです。
PHPが分かればなんとなくバックエンドが理解できますし、バックエンド言語はみんな文法が似てるのですんなり学習できます。
スマホアプリ開発エンジニア
ダウンロードする端末によって、開発で使うプログラミング言語が変わります。
- iOS、Mac → Swift
- Android → Kotlin
ちなみに、iPhone・Androidを両方開発できる「ReactNative」という便利ツールみたいなものもあるのですが、情報量が少ないので初心者にはおすすめしません…。
データ分析、自動化処理
「データ分析」や「自動化処理」などの処理を作りたい方は、「Python」一択。
PythonはWebアプリケーションの開発もできるので、個人的にお気に入りのプログラミング言語です。
IoTエンジニア
詳しくないので詳細はググってほしいのですが、「Python」「C」「C++」がよく使われるとのこと。
ゲームエンジニア
ゲーム開発も詳しくないので詳細はググってほしいのですが、「C#」「C++」がよく使われるとのこと。
3章:パソコンを用意する
Web系で働きたい、Macでプログラミングをしたい、ならMacがおすすめ。Air,Proどちらでも良いですが、私はMacBook Air
私が使っているMacBook Airのスペックは、「16GBユニファイドメモリ」「256GB SSDストレージ」「M1チップ」です。ユニファイドメモリは8GBでも大丈夫です。
特にこだわりがなければWindowsでも大丈夫です。「Core i5」「メモリ:8GB 」「ストレージ:256GB」のパソコンを選んでおけば動きます。
今は動くものを利用し、本格的にエンジニアとして働き始めたらスペックを上げていきましょう!
1:iOSやMacなどApple製品の開発をしたい場合、Macが必須です。
2:Chromebookはおすすめしません。Chromebookでプログラミングをしている人を見たことがないからです。
初心者はエラーでつまずくことが多いので、皆んな使っている王道の機種を選ぶべき。
4章:ネット環境と開発ツールの準備
パソコンに、インターネットが繋がればOK。
エンジニアは、編集アプリのようなもの(エディター)にプログラムを書いていきます。そのため、パソコンに開発ツールをインストールする必要があります。
各エンジニアの代表的な開発ツールは以下の通り。
- コーダー、フロント:Visual Studio Code
- バック(Ruby,Python,PHP,Go):Visual Studio Code
- バック(Java):Eclipse
- iOS系開発:Xcode
- Android開発:Android Studio
- データ分析,自動化:Visual Studio Code
- IoT:Raspberry Pi
- ゲーム:Unity
各ツールの使い方は、「Visual Studio Code 使い方」のようにググると分かりやすい記事がありますので、そちらを参考にしてみてください。
また、プログラミング言語によってはパソコンに専用の動作環境を作る必要があります。
ただ、「PHP 始め方」「Python 環境構築」などとググればわかりやすく解説している記事がたくさんあるので、不安がらなくて大丈夫ですよ。
プログラムを書く準備ができたら、さっそくプログラミングを学んでいきましょう!
5章:プログラミングを学ぶ
学習手順を紹介する前に、学習マインドを3つ紹介。
1.プログラミングを理解する流れ
- え、動かない(つまずく)
- わけわらん(調べる)
- むずい、つまらん(絶望する)
- お、これじゃね(答えを見つける)
- 動いたー、これってこうなんか(解決する)
- ふむふむ、なんとなく分かってきた(楽しくなる)
上記の流れをひたすら繰り返していくと、プログラミングを理解していくことができます。
動かなかったりエラーで詰まることはあるあるなので、どうしても動かないときは諦めて寝るのがおすすめ。
1歩進んで0.5歩下がる。2歩進んで1歩下がる。。。。10歩進んで、1歩下がる。
やっていけばできるようになる世界。知識は消えない。
2.基礎学習は飽きるので、知ってるところは飛ばしてOK
基礎学習ってなんか飽きません?
基礎を繰り返しても実践しないと覚えないので、飽きたら飛ばして実践(6章:作りたいものを作ってみる(無い方はWebサイトを作ってみる))をやってみましょう\(^o^)/
飽きない真面目な方も、プログラミングはほぼ全員が実践でつまずくので、完璧に暗記することは考えず、次に進む考え方も大事ですよ!
3.おすすめされた教材はすべてやらなくて良い
この章では「〇〇を使って基礎学習していきましょう」という構成なのですが、全て完璧にやらなくてOKです。
本記事はプログラミング学習のロードマップなのでもちろんやったほうが良いのですが、基礎学習はつまらない部分が多いので、楽しくなかったら構わず飛ばしてください。
飛ばしてわからなくなったても、調べれば出てくるので大丈夫です。私も基礎は飛ばし飛ばしてやってきました。
学習マインドを紹介しました。ここからは、目指すエンジニアごとにプログラミングの学習手順を解説します。
以下のリストから、読みたい部分へ飛べます。
コーダー、フロント、バック
「HTML」と「CSS」は一番やさしいですし挫折防止に繋がるので、まずはこの2つから始めましょう。
学習方法は、「Progate」「YouTube」「ドットインストール」「Web記事」の併用がおすすめです。
まずは、Progateから始めましょう。
Progate
なんとなく雰囲気を掴んだら、YouTubeとドットインストールで復習する流れ。これで「HTML」と「CSS」がどんなものなのかが理解できます。
YouTube動画
ドットインストール(一部有料)
- はじめてのWeb制作
- 詳解HTML 基本タグ編
- 詳解HTML フォームタグ編
- 詳解CSS 基本スタイリング編
- 詳解CSS 応用スタイリング編
- 詳解CSS セレクター編
- 詳解CSS フレックスボックス編
- 詳解CSS レスポンシブウェブデザイン編
「Progate」「YouTube」「ドットインストール」の理解度は以下のイメージです。
- 1回目(Progate):動かない、つらい
- 2回目(YouTube):30%くらい分かるかも
- 3回目(ドットインストール):50%くらい分かってきたかな
※参考書での勉強も良いですが、私は眠くなるので学習用ではなく辞書として持っています。
参考書の学習方法
1週目:軽く1周する
2周目:1回目で詰まったところだけやる
3週目:もう一回軽く1周する。
50%〜70%理解できればOKなので、次のステップへ行きましょう!
コーダー、フロントの方
「HTML」と「CSS」が終わったら、「JavaScript」を学びます。
学び方は同じで、「Progate」「YouTube」「ドットインストール」を利用します。
Progate
YouTube
ドットインストール
ここまでできたら、実際にWebサイトを作ってみましょう!
「6章:作りたいものを作ってみる」へ移動する
バックの方
「HTML」と「CSS」が終わったら、それぞれ選んだバックエンドのプログラミング言語を学びます。
※「PHP」を選んだとして進めていきますm(_ _)m。RubyとかGoをやりたい方は、各自調べてみてください。
学び方は同じで、「Progate」「YouTube」「ドットインストール」を利用します。
Progate
YouTube
ドットインストール
オブジェクト指向、クラスなどは一旦スルーでOK
バックエンドを学習していると「オブジェクト指向」「クラス」「継承」といった言葉が出てきますが、概念は難しいので一旦無視しましょう。
興味が湧いたらその時調べるで問題なし。
ここまでできたら、実際にWebサイトを作ってみましょう!
「6章:作りたいものを作ってみる」へ移動する
スマホアプリ開発
- iOS、Mac、Apple系 → Swift
- Android → Kotlin
すみません。スマホアプリ開発はあまり詳しくないので、他の方を参考にしたほうが信頼性があると思います。
Swift
【Swift】学習ロードマップ!iOSアプリ個人開発の注意点
Swiftで簡単なTODOアプリを作ってみよう
【Swift】未経験から実務までのスキルマップ(ロードマップ)
Kotlin
Androidアプリ開発2ヶ月弱の新卒が思う、初学者でも参考になったサイト8選
Androidエンジニアロードマップに沿って学習してみる
ここまでできたら、実際にアプリを作ってみましょう!
「6章:作りたいものを作ってみる」へ移動する
データ分析、自動化
「Python」は幅が広いので、分析系と自動化系でやることをまとめました。
- データ分析:pandas,Numpy,matplotlib など
- 自動化:スクレイピング,openpyxl,pyautogui など
まず基礎でPythonの基本文法を学んだら、それぞれやりたいことを学んでいく流れです。
やりたいことがあるのに基礎で挫折してやめちゃうのはもったいないので、サラッと基礎を抑えて分析や自動化を動かしてみましょう!
Python基礎
詳解Python 基礎文法編
詳解Python 標準ライブラリ編
ある程度Pythonが分かれば深い知識がなくても調べながらプログラムを書けるので、あなたの好きな分析や自動化をやってみてください!
データ分析
基礎が終わったら好きなデータを持ってきて好き勝手データ分析してみようと言いたいところですが、どーやって分析すればいいの?となるはず。
まずは実際にデータ分析している事例を見ながら、手元で自分も動かしてみる勉強法がおすすめです。
自動化
自動化系はやれることがたくさんあるので、書籍を何冊か持っておいて、必要に応じて詳細はネットで調べる感じがおすすめです。
ポイントとして、Webサイトからデータを自動で集めたい方は「HTML」も知っておくと楽ですよ。
HTML & CSS – Progate
ここまで終了したら、実践に移りましょう!
「6章:作りたいものを作ってみる」へ移動する
IoTエンジニア
すみません。IoT関連も詳しくないので、他の方を参考にしたほうが信頼性があると思います。
べすべすさん@モノ創りお兄ちゃん
kyokucho1989@ワクワクIoTエンジニア
ゲームエンジニア
すみません。ゲーム開発も詳しくないので、他の方を参考にしたほうが信頼性があると思います。
ゲームクリエイターになる為のロードマップ。実績20年のクリエイターが解説。
ゲームプログラマーになるためのロードマップ
ゲームの作り方【初心者向け・個人制作に必要な知識を解説】
6章:作りたいものを作ってみる(無い方はWebサイトを作ってみる)
この段落を読んでいる方は基礎が終わった方だと思います。
まずは、基礎突破おめでとうございます\(^o^)/
ここからは、作りたいものを作っていくステージです。
- コーダー、フロントエンド、バックエンド
→Webサイトを作ってみる - バックエンド
→作ったWebサイトに、なにか裏側の処理を追加してみる - スマホアプリ
→簡単なスマホアプリを作ってみる - データ分析、自動化処理
→好きなデータの分析、エクセル自動化などをやってみる - IoTエンジニア
→Raspberry Piを使って何か作ってみる - ゲームエンジニア
→簡単なゲームアプリを作ってみる
作る際に、1つ注意点
完璧なものを作ろうとしなくてOK!
私は過去に「あなたは何歳?」というサイトを作りましたが、見て分かる通りすごくシンプルです。
最初はこんな感じで適当でいいので(笑)、すごく簡単でいいから何か1つ形にしましょう。
完璧主義は捨てて、全力で完成させることを目標に作ってみてください!
作りたいものがなかった方は、ここで作りたいことを見つける(見つかる)
「1章:ざっくり作ってみたいものを決める」で作りたいのがなかった方は、Webサイトを作ってみましょう。
Webサイトを作ってみることで、以下のように興味が湧いてくると思います。
- デザインに興味がある
→ デザイナー、Web制作 - サイトの画像をスライドショーのように動かしてみたい、きれいなボタンを作りたいなど
→ フロントエンド - ユーザー登録、カートに入れる処理を作ってみたい
→ バックエンド - サーバー構築に興味がある
→ インフラエンジニア - Webサイトではなく、スマホアプリ作りたい
→ アプリ開発
興味が湧いたものをぜひやってみましょう!
7章:色々作りながらスキルを磨く
何かしら1つ作成できたら、問題なく独学で色々作れるはずです。
1つでも作れると選んだ言語や開発自体に興味が湧いてきます。
基礎学習ではやらなかったプログラミングの文法を学んでいったり、使ったこと無い便利ツール(フレームワーク、コンテナなど)を取り入れたりして、2つ目3つ目といろいろ作っていきましょう\(^o^)/
8章:それぞれポートフォリオを作る
就職する際には、今までの学習をアピールするためににポートフォリオが必要です。
力を入れて作った作品を1つと、サブで簡単なもの(スキルを磨く上で作ったもの)が3つくらいあればOK。
私が就活で利用していた開発物は「URLねんが」というものです。
サイトの表面は凝ってないのでちょい反省してますが、裏側の画像アップロードの処理は頑張りました。
ポートフォリオのコツは以下の記事で解説しています。
「新卒エンジニアは就活でポートフォリオは必要?(準備中)」
9章:ポートフォリオを公開する
Webサイトをポートフォリオにした場合、採用担当者が見れるようにしたいのでインターネット上に公開しましょう。
「Github Pages」を使うことで、Webサイトを簡単に公開することができます。
「Github Pagesでポートフォリオサイトを公開する方法(準備中)」
また、Web系に行くならGithub Pagesで公開するだけでなく、書いたプログラム(ソースコード)をGithubに乗せておくのがベスト。
以下の記事でGitHubについて解説しているので、参考にしてみてください。
【初心者向け】Githubの使い方【覚えるのは3つだけ】
また、「RESUME」を使うと、プログラミング言語の習得度と制作に関するコメントを表示できたり、ポートフォリオサイトをまとめたりできるので、ぜひ活用してみてください。
私も利用しています。
はる@Python
10章:就職する
IT企業は大きく4つに分かれています。
詳細は「SIer,SES,自社機開発,Web制作とは(準備中)」をどうぞ。
私が就活していて感じた、各企業の雰囲気は以下の通り。
- SIer:堅め、Windows、スーツ
- SES:派遣に近い、エンジニアは外で働いているので、どんな人がいるか不明
- 自社開発:モダンな技術、Mac、私服、ガチエンジニア
- Web制作:不明
Web制作会社は就活でエントリーしなかったので実際の雰囲気は不明ですが、以下のサイトが参考になると思います。
会社によって全然違う!リアルなWebデザイナーの仕事環境
Webデザイナーの自由すぎる職場環境
最近のWeb制作会社のスタイルの傾向を業界内から見た雰囲気で分類してみた。
「それぞれの会社の探し方、内定をもらいやすくするコツ」は、以下の記事で解説しています。
新卒でWeb系へ就職する方法(準備中)
→エージェントを利用したほうがweb系企業を見つけやすい
新卒でSIerに就職する方法(準備中)
新卒でSESに就職する方法(準備中)
新卒でWeb制作会社に就職する方法(準備中)
新卒エンジニアの面接対策のコツを内定者が解説(準備中)
私の就活状況
SIer,SES,自社機開発の3つにエントリーして、SIer,SESから内定をもらい、SESに行きました。
自社開発も魅力的でしたが、社員一丸となって開発するような雰囲気があり、私はどっちかというと一人(少数)で仕事したいタイプだったのでやめました。
SIerは扱うプログラミング言語が古く(C、COBOLなど)、仕事に楽しみがなさそうだったのでやめました。
SESはネットでの評判が悪く不安ですが、派遣ぽく働けて人間関係のしがらみをなくすことができますし、Web系の言語も開発できるとのことで、今の会社を選びました。
SIerとSESの違いは「SIerとSESの違いとは?特徴や仕事内容・労働時間・給料などを徹底解説」で解説しているので、ぜひ参考にしてみてください。
ここまで本当にお疲れま様でした!
自分にあった企業を見つけられることを祈っています\(^o^)/
プログラミング学習に関するよくある質問
プログラミング学習についての質問をまとめました。
- エンジニアにおすすめの本はありますか?
- プログラミングスクールは行くべき?
- どれぐらい勉強すれば就職できる?
- 資格は取っておいたほうが良いの?
上記以外にもプログラミングに関する質問があれば、Twitterで受け付けていますのでお気軽にどうぞ。
Twitter – はる@Python
エンジニアにおすすめの本はありますか?
エンジニアに共通しておすすめできるのが、「リータブルコード
エンジニアは複数人で開発することがあるので、分かりやすいクラス名をつけたり、可読性の良い(読みやすい)コードを書くコツが紹介されていて、チーム開発に役立つ本です。
チームじゃなくても自分が書いたコードが読みやすくなるので、昔自分が書いたコードが何やってるか不明という自体を避けられます。
他におすすめの本は、以下の記事で紹介しています。
エンジニアにおすすめの本5選(準備中)
プログラミングスクールは行くべき?
以下に当てはまる人入っても良いと思います。
- お金がある方
- めちゃんこ熱意がある方
- 独学が楽しかったので、もっと学習したい方
上記の方のみでOKです。
高いお金を払っても挫折してしまう可能性があります。まずは独学で自分にプログラミングがあっているか試してみましょう。
向いてそうだし、プログラミングをプロから教わって爆速でエンジニア就職したいという方はプログラミングスクールがおすすめです。
おすすめのプログラミングスクールは以下の記事で紹介しています。
【大学生向け】おすすめのプログラミングスクール3選!【厳選】
おすすめのプログラミングスクール3選(準備中)
転職サポート付き、おすすめのプログラミングスクール3選(準備中)
どれぐらい勉強すれば就職できる?
プログラミングは、習得に時間がかかることを頭に入れておいて欲しいです。
空き時間はすべてプログラミング学習に当てて早くて3ヶ月、コツコツ学習して半年、挫折しまくって1年くらいかなと。
ただ、ほんとに最初は意味分からんし挫折します。なので、1年くらいを見積もって学習していったほうが焦らず取り組めると思います。
プログラミング入門レベルに達するまで300時間程度みたいなので、1日3時間で100日、1日5時間で60日が目安です。
資格は取っておいたほうが良いの?
Web系の企業に行くなら、資格は基本不要です。実際にプログラムを書いたりポートフォリオを充実させることに時間を割きましょう。
SIerに行く場合は、「基本情報技術者試験」に合格しておくと有利です。というか入社前に勉強させられます。(大手SIerの友人がそうなので)
SESも多分入社前に資格を取るように言ってきます。私の会社も取れーって言ってきたので。
普通に将来プログラミングをして働きたいのであれば、プログラミング系の資格がよいと思います。例えば、「python3 エンジニア認定基礎試験」や「php 技術者認定試験」などです。
理由は、経営者の立場になって考えたときに、プログラミングの仕事を振るならプログラミングの資格を持っている人にやらせたいからです。
将来はコードをあまり書かずにマネジメントなど上流に行きたい場合は、「基本情報技術者試験」や「応用情報技術者試験」などのIT用語や仕組みを理解する資格でも良いと思います。
プログラミングを効率良く独学するコツ
私がプログラミングを独学で学んできた中で、「こうすれば効率よく独学できるな」と感じたポイントを3つ紹介します。
- 期間を決める
- 目標を明確にする
- 楽しむ
期間を決める
だらだらプログラミングを学習するよりも、「〇〇までに△△を身に付ける」と期間を決めて学習するのがおすすめです。
私はだらだらやってしまって後悔しているので、時間を無駄にしないように集中して学習できるとよいですね。笑
目標を明確にする
何のためにプログラミングを学んでいるのかを、はっきり答えられるとベスト。
目標が曖昧だとホントにやる気がでないので、「なぜプログラミングを学ぶのか」をあなたなりに定義しておきましょう。
私は「Web制作で稼ぎたい」とか「Pythonの自動化で遊びたい」など目標を決めて取り組んでいました。
楽しむ
楽しむことでエラーで詰まって辛くても乗り越えることができ、結果的に効率よくプログラミングを学習することができます。
プログラミングが楽しければ、空き時間もプログラミングに触れるので忘れにくくなりますし、挫折もしにくいです。
とはいえ、ある程度基礎が分からないとできることが少なく、楽しくありません。
学習初期の段階から楽しむポイントを作るのがおすすめです。
例えば、プログラミング学習仲間を作ったり、「〇〇が理解できたら好物の△△を食べる」などゲーム性を取り入れて自分にご褒美を与えたり、など。
ツライ学習を継続するには、自分に甘くしましょう(*´ω`*)
プログラミングが上達するコツ
プログラミングを上達させるには、とにかくトライ・アンド・エラーを繰り返すだけです。そこでポイントが3つあるので紹介します。
- 完璧は捨てる
- 間違えてもいいから手を動かす
- 分からないところは質問する
完璧は捨てる
最初からすべて暗記しようとすると間違いなく挫折するので、プログラミング学習においては完璧を捨てましょう。
以下のように、学習と実践のサイクルを回していくのが上達するコツです。
- なんとなく覚えた
- やってみる
- エラーだった
- 調べる
- 解決して少し覚える
また、ポートフォリオ作成の際も、最初からすごいものを作ろうと完璧主義になりすぎるのも避けるべし。
どんなに小さくてもいいので完成させましょう。
今後の自信になりますし、作った後からいくらでも修正できます。(修正し過ぎも切りがないので8割完成でOK)
間違えてもいいから手を動かす
例えば、git で「git push origin main」というコマンドがあります。
ですが、初めて見ても一発で覚えられないし次使う時に忘れているので「git push main」みたいにミスってエラーになります。
エラーを起こす前に分からなければGoogle検索をすれば良いのですが、正直検索に頼りすぎるとなかなか覚えられないです。
あえてエラーを起こして「こうだったかもしれない」と思い出せると次回も思い出しやすくなるので、上達スピードが早くなります。
必死に覚えようとしなくても、間違えてもいいので手を動かしていけば自然と覚えていきます。
分からないところは質問する
すぐに質問することは自走力を鍛えられないのであまりおすすめしませんが、悩みすぎても先に進めないので、1日〜3日くらい同じエラーで詰まっているのであれば誰かに質問してみましょう。
ありがたいことに、プログラミングについてネットで質問できるサービスが2つあります。
どちらも無料で使えるので、遠慮なく使っていきましょう\(^o^)/
他にも、プログラミング講師に聞く、プログラミング仲間に聞く、メンターを付けるなどあります。
プログラミングの相談や質問サービスは以下の記事で紹介しています。
「プログラミングの質問・相談サービス5選(準備中)」
『プログラミング独学あるある』ツライ壁の乗り越え方
独学あるあるのツライ壁を集めてみました。
- エラーで動かない
- 仕組み、概念がよくわからない
- 基礎学習がツライ・つまらない
- モチベを保てない
エラーで動かない
プログラミングをやっていると、エラーで動かないことはよくあります。
むしろ、エラーで詰まっている時間の方がプログラムを書く時間よりも長いのでは?と疑ってしまうレベル。
そんなエラーに対する3箇条があります。
とにかく調べて、他人の人が試したコードをコピーして自分のコードに利用します。
何回も繰り返して、それでも動かなかったら諦めで別のことをするか寝ましょう。
寝ると頭がリセットさせた状態で再開できるので、解決できることがよくあります。(これホント)
仕組み、概念がよくわからない
一旦、無視でOK。
基礎が分かれば自然と「あればどういう仕組なのだろうか」と気になるので、その時調べましょう。
基礎学習がツライ・つまらない
基礎学習ってすごく眠くなります。なんというかあまり面白くない。
そんなときは、いきなり何かを作ってしまいましょう。
ググりながら何かを作りつつ、必要に応じて参考書で調べたり、基礎学習サイト(Progateなど)に戻って該当部分を学習してみたりする方法がおすすめです。
私は過去に「画像共有サイト」を作ったことがあり「Firebase」という技術を利用したのですが、チュートリアル的なものを読む気にならず、よく知らないまま使って開発していました。笑
完璧に知らなくても開発できますし、1度開発すれば開発した技術自体に興味を持てるようになるので、基礎つまらんと思ったら飛ばして実践に行ってしまいましょう\(^o^)/
モチベを保てない
しんどすぎてモチベーションを保てない場合、エンジニア友人を作ってサポートしてもらうか、MENTAなどでメンターを探すが良いと思います。
たまたま私は強い思いがあった(稼ぎたい、作りたい)ので乗り越えられましたが、ずっと1人で学習していたので挫折回数はかなり多いと思います。
今後モチベが保てない方向けに、メルマガかSlackで継続して学習できる仕組みを作ろうかなと考えています。
開始日は未定ですが、以下のリンクからLINE登録していただけると需要があることが分かるので、早めに配信できるように準備します(`・ω・´)ゞ
公式LINE – はる@エンジニア就職支援
プログラミングの独学に役立つ学習サービス8選
プログラミングを独学するにあたってよく利用するサービスを8個紹介します。
- Progate
→分かりやすい画像でプログラミングを学べる - ドットインストール
→動画でプログラミングを学べる - Stack Overflow
→質問サイト、英語情報が多いけど役立つ - teratail
→日本語の質問サイト - Qiita
→いろんなエンジニアの方が役立つ情報を書いている - Zenn
→いろんなエンジニアの方が役立つ情報を書いている - YouTube
→無料でプログラミング学習できる - Udemy
→動画を購入して学習する、評価が見れるので高品質な動画を探しやすい
詳細は「プログラミングの独学に役立つ学習サービス8選(準備中)」で解説しています。
プログラミング学習に躓いたらどうすればいいか
プログラミングの独学につまづいて、どうにもできない。でもプログラミングは続けたい。
そのような場合は、誰かからサポートしてもらいながら続けるのがおすすめです。
- メンターを探して教えてもらう
- スクールでプロに教わりながら勉強する
- 聞けるエンジニアの友達にサポートしてもらう
初心者向けのおすすめのプログラミングスクールは以下の記事で紹介しています。
【初心者向け】おすすめのプログラミングスクール3選(準備中)
プログラミングのメンター探しは、「プログラミング独学中にメンターを探す方法(準備中)」の記事をどうぞ。
※基礎的な内容であれば私も答えられます。
「Web制作 or Python」であれば対応可能です!
Twitterからどうぞ。
Twitter – はる@Python
最後に一言:途中で疲れたら適度に休憩しましょう
ここまで読んでくださったあなたなら熱意があると思うので、休むことも大事だよということもお伝えておきますね。
プログラミング学習は9割が挫折すると言われています。私も天才じゃないので、数多くの挫折を繰り返してきました。
プログラミングと相性が悪くて辞めてしまうのは良いのですが、せっかく「やろう!」と一歩踏み出したのに、基礎でつまづいて辞めていってしまうのはもったいないなと思ってしまいます。
なので、疲れたら休憩していいですし、嫌になったらプログラミングから一旦離れてみるものありです。私もよく休みながらコツコツ進めてきました。
最後までありがとうございました。この記事を読んで、1人でもエンジニア就職できた人が増えたら嬉しいです!
では冒頭に戻って、さっそくプログラミング学習を始めてみてください\(^o^)/
「0章:プログラミングってなに?を理解する」へ移動する
プログラミングに関する質問があれば、Twitterで受け付けていますのでお気軽にどうぞ。
Twitter – はる@Python
コメント