こんにちは!
フリーランスエンジニアのかたやまです。
このサイトは、プログラミング学習の第一歩を、どこよりも優しく解説することを目的としています。
「はじめの3ステップ」シリーズでは、プログラミング学習を始める方に向けて、必ず知っておいてほしい3ステップを解説します。
さっそく、プログラミング学習の最初のステップに行きましょう!
ステップ1は、「プログラミングの学習方法を正しく知る」です。
※ステップ2は、こちら
※ステップ3は、こちら
最近、「プログラミングは将来の役に立つ」という著名人の発言や、「小学校でプログラミングの授業が必須化された」などの影響で、プログラミングが注目されています。
その影響で、世の中にはたくさんのプログラミング学習が生まれ、これからも新しい学習方法や、学習スクールは増え続けると思います。
この状況を見て、エンジニア歴7年の私が感じることは、あまりにも間違った学習方法が多いということです。
今回のステップ1では、まず前半で「間違った学習方法」を説明して、皆さんがプログラミング学習に失敗することをふせぎます。多くの人がやりがちな間違いを事前に押さえておけば、少なくとも大きな失敗はふせげます。
後半は「正しい学習方法」を説明して、プログラミング学習の正しい道のりを学びます。これであなたのプログラミング学習は確実に良い方向に向かうはずです。
3つの基本用語
学習を進めていく前に、よく登場する基本用語の説明をします。
以下の3つは頻繁に登場します。なんとなくで良いので、区別しておいてください。
①プログラミング
コンピュータに「このように動いて欲しい」と伝えるための行動。
②プログラミング思考
プログラミングをするために必要な考え方(思考方法)。プログラミング的思考と呼ばれることもある。
③コーディング
プログラミング言語を使ってコードを書くこと。コーディングはプログラミングの作業の一部。
間違ったプログラミング学習 Top3
では、さっそく間違った学習方法を見ていきましょう。
1.いきなりコードを書くこと
間違ったプログラミング学習の1つ目は、いきなりコーディングを始めることです。
ほとんどの入門書や学習サイトでは、なるべく早い段階で「コードを書く」というステップに移ります。理由は、簡単なモノやサイトをすぐに作った方が、学習の「達成感」が得られるからです。たしかに学習において「達成感」は重要です。ただし、私はこの方法に疑問を抱いています。
なぜなら、いきなりコーディングを始めることは、「長期的」な学習を妨げる可能性があるからです。すぐに手を動かして試してみるというやり方は、あくまで短期的な、その場しのぎの学習方法です。見せかけの達成感では、プログラミング全体の知識を深めることはできません。
具体的に、いきなりコーディングを始めることには、以下のようなデメリットがあります。
- 言われたとおりに文字を打ち込むだけの「作業」になってしまい、プログラミングを深く学ぶための「学習」にならない。
- 「役に立つ」プログラミング言語ではなく、「教えやすい」だけで「役に立たない」プログラミング言語を学習する危険性がある。
- いきなり見慣れない英語だらけのコードを見るのが嫌になって挫折する。
- たまたま最初に学んだプログラミング言語に執着して、自分の目的とあっていないプログラミング言語をやり続けてしまう可能性がある。
では、どうすればいいのでしょうか?
答えは、「いきなりコードを書かないこと」です。
コーディングをしなければ、プログラミングが身につかないのでは?と思う人もいるかもしれませんが、そうではありません。
プログラミングを学ぶ上で、もっとも大切なことは、プログラミング思考を完全に理解することです。なぜなら、プログラミング思考はすべてのプログラミング作業に必要な不変のルールだからです。この不変のルールを時間をかけて学ぶべきだと思います。
このプログラミング思考については、後半の「正しい学習方法」で詳しく説明します。
2.目的を決めずに始めること
間違ったプログラミング学習の2つ目は、目的を決めずに始めることです。
あいまいな目的はできるだけ避けるようにしてください。「エンジニアに転職したい」や「何となく将来役に立ちそう」という目的はよく聞きますが、このような漠然とした目的の場合、結局何から手を付けたら良いか分からず、遠回りしてしまう可能性があります。
また、プログラミングをする場合は、自分の目的に合わせてプログラミング言語を選択する必要があります。しかし、プログラミング言語は現在200種類以上あります。このプログラミング言語の選び方は就職と同じで、かなり慎重に選ばなければなりません。
例えば、言語によって以下のような違いがあります。
- 作れるもの(アプリ、ゲーム、サービス、通販サイト、ホームページ、大規模システムなど)
- リモートワーク・ノマドに向いているかどうか
- 大人数/少人数での開発に向いているかどうか
- 最新技術かどうか
- 言語別の平均年収
- 言語の普及率
- 学習の難易度
自分がプログラミングを学ぶ目的を決めず、「入門本で紹介されていたから」や、「スクールで進められたから」という理由で、プログラミング言語を選んでしまうのは危険です。条件を決めず適当に就職先を決めているようなものです。
まずは、プログラミング思考で全体を理解し、その後自分の目的と向き合い、プログラミング言語を選択することで、失敗や挫折を防ぐことができます。
そのためにも、プログラミング学習を行う目的を明確にすることは大切なステップです。
3.高額スクールを受講すること
間違ったプログラミング学習の3つ目は、高額スクールを受講することです。
もし、あなたが高額の授業料を払い、プログラミングスクールの授業を受講しようと思っているなら、一度立ち止まって考え直すべきです。そしてもし、あなたが受講する理由が「就職成功率が上がる」であれば、確実にやめた方が良いと言えます。
大前提として、日本はすでにエンジニアが不足しています。その影響で、多くの企業で、未経験就職は歓迎されています。入社後の教育システムがしっかりしている企業も多く、就職後、給料も貰いながら学んでも全く問題ありません。就職成功率が高いことは、ごく当たり前のことです。
また、プログラミングスクールで扱っているプログラミング言語を学び、言われるがままに就職を目指しても、あなたが想像している将来像とはほど遠い仕事を行う可能性もあります。
就職を目指す場合は、プログラミング思考だけを学び、すぐに自分の興味がある企業に入社することをお勧めします。また特定のプログラミング言語を学びたい場合は、ドットインストールなどの無料学習サイトで十分な知識が得られます。
もちろん、「独学ではなく人に教えてもらえる」というのはプログラミングスクールの強力なメリットです。ただし、有限な時間とお金を守るためにも、プログラミングスクールの活用は慎重に考えてください。
正しい学習方法 3つの順番
ここまで間違った学習方法を見てきました。避けるべき学習方法を理解したあとは、正しい学習方法を学んでいきましょう。
この3つの手順が正しい学習方法の基本です。
1.プログラミング思考を学ぶ
前半で、コーディングはいきなりしなくても良いということを説明しました。
コーディングを行う前に最初に学ぶべきことは、「プログラミング思考」です。
プログラミング思考は、すべての言語に共通する考え方です。この考え方を身に付けることで、どのプログラミング言語を選択しても、学ぶスピードは早くなります。
私の過去の実体験を紹介します。
私は、システムエンジニアとして7年の経歴があり、今ではフリーランスエンジニアとして、メーカーの開発支援をしたりしています。ただし、フリーランスエンジニアに成長するまでには、険しい道のりがありました。
大学を卒業して、未経験でIT業界に飛び込み、プログラミングを仕事として選びました。入社してすぐに、コーディングを行う仕事を任されましたが、はじめはさっぱり理解できませんでした。それでも諦めず、目の前の仕事を一生懸命行い、数年経つと仕事はある程度できるようになりました。ただし、プログラミングとは何か?という全体像については、いまいち理解できないままでした。
しばらくたった後、プログラミングの全体像を改めて勉強したとき、点と点が線でつながった感覚を感じました。勉強してわかったことは、プログラミングやコーディングを行う前に絶対に知っておくべき不変のルールがあることでした。それが「プログラミング思考」でした。
私は、プログラミングを仕事にして、20を超えるプログラミング言語扱ってきましたし、10を超えるプロジェクトに携わってきましたが、この不変のルールはどの状況においても役に立ちました。
あなたにはこのルールを「最初に」知ってほしいと思っています。
このルールを知ることで、プログラミングとは何かを学ぶことができます。
※プログラミング思考の学習は、ステップ3で解説します。
2.目的を決める
プログラミング思考を学んだあとは、目的を決めます。
この順番を見て、「目的を決めるのが先では?」と考える方もいらっしゃると思います。簡単に理由を解説すると、理由はプログラミング思考を学ぶと、選択肢が圧倒的に広がるからです。
プログラミング思考を学ぶと、世の中のあらゆるものにプログラミングが活用されていることが分かります。このことによって、「自分が大好きなものにプログラミングが使われていた!」などの嬉しい発見もあります。このように、目的を決めるための選択肢が広がるという理由で、プログラミング思考は最初に学んでおく必要があります。
話を戻します。目的を決めるには、初めに感じた感情を深堀りしていく必要があります。例えば、「エンジニアに転職したい」という理由で、プログラミングに興味をもった場合は、何を作りたい?どんな業界?年収は?など、具体的に目的を決めましょう。
具体的な目的の例
- ファッション業界で、通販サイトを運営するチームで活躍したい
- ノマドで、Webサイト制作の仕事をやりたい
- 副業で、月5万円を稼ぐことができる技術を習得したい
- ゲーム業界で、新作のゲームを開発するチームに入りたい
- 携帯電話業界で、5Gの開発に携わりたい
- パソコンでの仕事を効率化するためにプログラミングを学んで、会社業務のIT化を促進する立役者になりたい
- 安定を目指して、20年以上必要とされ続ける技術を身に付けたい
- 脱サラして、フリーランスエンジニアとして月60万稼ぎたい
目的は人それぞれ違うと思います。
なりたい自分を具体的に想像してみてください。
3.目的に合った学習方法を選ぶ
目的が決まったあとは、目的に合わせて学習方法を選択します。
目的は人それぞれなので、学習方法も人によって違います。
今回は、流れを理解してもらうことが目的なので、大きく「入りたい企業(業界)がある場合」と「作りたいものがある場合」に分けて、解説していきます。
入りたい企業(業界)がある場合
入りたい企業がある場合は、まず企業の「採用情報」をチェックすることから始めてください。「採用情報」には、求める技術が明確に書かれています。業界は絞れたけど企業は悩んでいるという方も、自分が入りたい業界の企業を5つほど選んで、「採用情報」を確認してみましょう。
「採用情報」には、開発プログラミング言語やOS、開発ツールなど必要なスキルが1つずつ書かれています。最初は、見慣れない言葉が多くあって当然なので、不安になる必要はありません。徐々に学んでいきましょう。
「採用情報」に記載されている開発プログラミング言語に合わせて、無料学習サイトや書籍で学ぶことがもっとも効率的です。
作りたいものがある場合
作りたいものがある場合、作り方をインターネットで調べてみましょう。作るものによって学ぶ技術はある程度決まっています。例として、以下のような検索結果が出てくると思います。
- 「ホームページ」を作りたいなら、HTMLやCSS、JavaScriptを学ぶ。
- 「iPhoneアプリ」を作りたいなら、Swift
- 「大規模システム」を作りたいなら、Java
- 「人工知能」を作りたいなら、Python
- 「3Dゲーム」を作りたいなら、C#、Unity
先ほどと同様に、検索結果に合わせて、開発プログラミング言語に合わせて、無料学習サイトや書籍で学ぶことがもっとも効率的です。
目的別の学習方法はこのサイトでも随時発信していきます。分からないことがあれば、SNSなどで私に直接質問してください(*^^*)
次のステップへ
プログラミングの学習方法を正しく知ることができました。
正しい学習方法は、最初にプログラミング思考をしっかり理解して、視野を広げ、土台を作る。その後、目的を明確にして、目的にあった学習方法を選択することです。この流れを意識して学習を進めてください。
次のステップでは、プログラミング学習がすべての人に必要な理由を深堀りしていきます。これを理解することで、プログラミング学習を行う上でのモチベーションアップになったり、習得後の未来像を具体的に思い描けるようになります。