見出し画像

プログラミングを学ぶ前に「知っておきたい」7つのコト

まず最初に私の職業はWEBデザイナーであり、専業のプログラマーではありません。(まず「お前誰だよ?」どんなデザインしてんだよ?って方は、「簡単な作品集のnote記事」を見てやってください。)

そんな私が実際にプログラミングを学んでどうだったか?

畑違いの私が実際にプログラミングを学んで「プログラミングを学ぶ前に知っておいた方がいいと痛感した事」を後世に語り継ぐためにこの記事を書いています。(WEBデザインとプログラミングは畑違いと言えるくらい違う)

つまり「プログラミングを学ぶ前のマインドを整理」をするための記事になっていますので、軽い気持ちで読んでみてください。

もちろん無料です。

1.プログラミングに向いてる「最強の2トップ」タイプの人

「プログラミングに向いている人ってどんな人だと思いますか…?」

話を引っぱっても仕方ないので結論から言うと

●自分の為に「具体的に作りたいもの(サービス・アイデア)」がある人
●他人の為の「モノづくり・論理的思考」が好きな人

はい、この2タイプの人は最強です。あなたはプログラミングに向いているので、今すぐプログラミングを学んでプログラミング道に突き進んでいきましょう!

ただ、上記の2タイプ以外の人や「まだ当てはまるかどうかもわからない」って人も「向いていない」と決まったわけではないので、この記事を読み進めながら、自分の気持ちや考えを整理していきましょう!

2.なぜプログラミングを学びたいと思ったのか?

では「なぜプログラミングを学びたいと思った」のでしょうか?人によって数多な理由があると思うので、一度自分の中で整理してみましょう。

・何か作りたいものやサービス・アイデアがあるから (←最強)
・プログラミングを使った物づくりや論理的思考が好きだから (←最強)
・便利なシステムを作って社会を変えたいから
・単純にプログラミングという仕事に憧れるから
・趣味でプログラミングをカジッてみたいから
・プログラミングは将来的に需要がずっとありそうだから
・プログラミングは自宅でリモートワークできそうだから

これ以外にもあるかもしれませんが、「なんとなくプログラミングを学んでみたい」といった感じで、具体的なイメージが無い人も多いでしょう。

ではまず初心に戻って、プログラミングの良さや面白い点を整理してみましょう!

3.プログラミングの面白さ

実際にプログラミングをやってみると見えてくる、その面白さをピックアップしてみますので、その良さを少し想像してみましょう。

・説明書の無いロボットを作るような感覚で「動いた!」という感動
・動くだけで満足せず、効率の良いコードやロジックを考える奥深さ
・イメージした機能やアイデアを「形にできた」時の喜び
・自分が作ったものを「人が使って喜んでもらえた」時の感覚
・制作物によって利用者の「能率アップ」や「社会に貢献」できた時の喜び
・作るモノによっては「社会を変える程の可能性」を秘めている

これを見てその面白さがなんとなく想像できると思いますが、これを大きく分けると「作る工程の楽しさ」と「作った後の恩恵」があることがわかるでしょう。

つまり結局は「モノづくり」の面白さなんです。

「革製品」を作ったり、「お菓子」を作ったり、「家」を作るのと同じで、作る工程の楽しさと、作った後の恩恵があるのがモノづくりの楽しさでありそれを実現するために、革製品は「革や道具」を使って、お菓子づくりは「食材と料理道具」を使って、家は「木材や工具」を使うのと同じで、プログラミングは「プログラミング言語とパソコン」を使ってモノづくりをする行為なのです。

そして共通して言えるコトは「作る対象物が好きである」もしくは「作る工程そのものが好き」である必要がある点。

逆に「違い」を見出すのであれば、プログラミングは手に取れるモノを作るのではなく、利用者が便利になる無形の「システム」を作る点であり、それを作るには、「ロジカルな思考」と「プログラミング言語という道具の知識」を使って組み立てていく工程であり、それらが好きになれるかどうかという確認が必要になるでしょう。

言ってるコトは分かるが、話が抽象的なのでイメージしずらいでしょう。

では具体的にプログラミングを使って何ができるのか?を知ってみましょう。

4.プログラミングで何を作る事ができるのか?

プログラミングを使って具体的に何を作る事ができるのでしょうか?

簡単に言うと、世の中にある電気で動いているものは大なり小なりほとんどがプログラミングによる制御で動いており、具体的には大きく4つのジャンルに分ける事ができるのではないでしょうか。

1.WEB上のシステムやアプリ・ゲームなど
2.銀行や行政・インフラなどの大規模システム
3.小規模企業向けの業務システム
4.家電製品や車・飛行機などの電子機器の制御システム

これらのジャンルを見て、自分が携わりたいジャンルはどれなのか?なんとなく想像しておくといいかもしれません。

これらを踏まえた上で、上記の4つのジャンルは、実際に「プログラミングを使った仕事のジャンル」としても分かれており、上記の番号に合わせて言うと

1.WEB系 → オンラインのコンシューマー向けシステム
2.汎用系 → 大規模システム
3.オープン系 → 企業向け業務システム
4.組み込み系 → 電子機器の制御システム

などというジャンル名で別けられている事が多く(もっと細かく分けられる事もある)、そのジャンルや内容・特性によってどのプログラミング言語が多く使われているかも変わってくるのです。

5.どのプログラミング言語を学ぶべきか?

前項で説明したように、自分がどのジャンルに進むかによって、学ぶプログラミング言語も変わってくるので、各ジャンルの特徴や、多く使われている言語を知っておく必要もでてくるでしょう。

プログラミング言語の種類は、数多く存在し、前項のジャンルによって選ぶ言語をある程度選別する事もできるので、その選び方はを詳しく書いた、以下の記事を参考にしてもらえるのではないでしょうか↓

https://stand-4u.com/programming/howto-choose.html

6.私が選んだWEB系ジャンルの体験談

せっかくなので、実際に私が選んだWEB系ジャンルの体験をお話します。

最初に説明したとおり、私は元々WEBデザイナーという仕事をしており、その流れもあって、日々仕事で携わる事があるWEB系のシステムを自分で作ってみたいと思うようになりました。

元々HTMLやCSSといったフロントエンド系のコーディングをする事ができたので(もちろん最初は勉強しました)、その発展系とも言えるバックエンドシステムを学ぶ事を決意しました。

WEB系のシステムとは具体的な例を挙げると

・LINEやTwitter、メルカリなどのWEBサービス
・ホームページ上での店舗の予約システム
・AmazonなどのネットショピングのECサイトシステム
・スマホ・タブレット向けのアプリやゲームの開発
・アメーバブログ、はてなブログなどのブログシステム

などなど、まだまだ例を挙げればキリがないほどあります。その中でも私は、企業のWEBサイトを作る仕事をメインとしていたので、その流れで企業のホームページで使えるシステムを作れる言語を学ぼうと考えた末

選んだ言語は「Ruby」と「PHP」いう言語でした。

WEB系のバックエンドには、その他にPythonやJava、Swiftなど様々な言語が使われているのですが、私が選ぶジャンルだと、「Ruby」か「PHP」の2択ではないかと思い、時期をずらして「Ruby」と「PHP」の両方を学習する事にしました。

実際それまで「HTMLやCSSやJavaScript」といった言語を学んでいく中で、独学で学習する事の大変さや、独学だとかなり時間がかかる事を知っていたので、値段を安く抑える事ができる「オンラインプログラミングスクール」で学ぶという選択肢を選びました。

オンラインプログラミングスクールも数々存在し、どのスクールが良いか徹底的に調べた中で、Rubyを学ぶ際は「テックアカデミー」というスクールで学び、その1年後くらいにPHPを「コードキャンプ(CodeCamp)」というスクールで学びました。

結論から言うと2つのスクールのどちらもそれぞれに良さがあり、簡単に言うと

  • 初心者向け → コードキャンプ(CodeCamp)

  • 中級者向け → テックアカデミー(TechAcademy)

という感じでしょうか。2つのスクールで実際に体験して良かった点・悪かった点などの体験談は、次のそれぞれの記事を参考にしてみてください。

●実際私が「テックアカデミー」を受講した体験記として
・受講前に思った疑問点とその答え
・具体的な学習内容と学習の流れ
・テックアカデミーの良い点・悪い点
・安く受講できる、お得な申し込み方法
などをまとめた記事がこちらなので、参考にしてみて下さい↓

●私が「コードキャンプ」を受講した体験記として
・コードキャンプの良かった点・悪かった点
・神コース「オーダーメイドコース」は本当にいいのか?
・実際に受講して何ができるようになったか?
・メンター(講師)の質はどうか?
などをまとめたこちらの記事も参考になります↓

両スクール共に実際に本当に良いスクールで、基本的に両スクール似たような学習システムで、オンライン上の教科書で学習しながら、分からない点をチャットやビデオ通話で講師に質問しながら、課題をクリアしつつ、実際のアプリをいくつか作って学んでいくというシステムで、基本的には挫折せずに、Ruby・PHPをしっかり学ぶ事ができました。

両スクールの「比較」をしたい方は、両スクールを受講しためずらしい存在として書いた、こちらの記事を参考にどうぞ↓

では、どのようにして挫折せずに学べたかは、少しコツとアドバイスがあります。

7.プログラミングを挫折せずに学ぶ「最強」の方法

実際プログラミングを学ぶにあたって、「挫折しないだろうか?」という不安を持っている人が多いかと思います。

実際私も同じで、独学でPHPやJavaScriptなどを学習していた時は、何度も挫折しましたし、大量に無駄な時間を過ごした事もありました。

それもあって、テックアカデミー・コードキャンプというスクールを受講したのですが、スクール自体は良いスクールでオススメなのですが

本当に大事なのは、どのスクールで学ぶか?が問題ではなく、自分のやる気次第だと言う事に気づきました。

もしスクール選びで悩んでいる方は、まず「自分のやる気と最後までやる切るという決意」を高める事を考えた方が良いと思います。

その上で挫折せずに学習をやり切るには、その「最後までやり切るという気持ちをどうやって維持するか?」が問題なのです。

そこでやる気を維持する工夫をいくつか紹介します。

・スクールなどのお金を自分で払う
・つくりたいモノをあらかじめイメージする
・スクールの講師にしっかり監視してもらう様、お願いする
・身近な人にかならずプログラミングを習得すると宣言する
・学習時間をしっかり確保する

順番に解説すると

●自分である程度高額のお金を払う

というのは、かなりモチベーション維持力があると思います。10万円〜20万円程度のお金を自分で払えば、絶対損したくないと思いませんか?

少なくとも簡単に投げ出したりしないようになります。プログラミングの学習は簡単ではないので、自分のモチベーションを維持する為にも、こういった人間の心理を上手く利用する事は重要となります。

●作りたいモノを決める

次に「作りたいモノがある」とかなりモチベーションが変わります。絶対にこのシステムを作ってやるという具体的なモノがあると、それを作るにはどんな機能が必要か?どんな知識が必要か?という必要に応じた学習ができるからです。

また自分が作りたいものだと「もっとこういう機能をつけたい」という欲も出てきます。こういう欲は、学習意欲にもつながるという事になるのです。

●第三者の監視の目

次は、スクール講師に進捗を監視してもらったり、身近な人にプログラミングをマスターすると宣言する事で「他人の監視の目」を作る事が重要になってきます。人間どうしても誰かに監視されないとサボってしまう生き物だからであり、誰かに監視される事で、こういう穴を予め閉じておきましょう!

●最後に「学習時間の確保」です。

物理的に忙しかったり、学習する時間が無いと、いくらやる気があっても難しく、仕事が忙しくて深夜の学習になったりすると、疲れて眠くて集中できないという理由で、挫折に向かってしまうのは至極当然の流れ。

この悪い流れをできるだけ作らない為にも、学習時間はしっかり確保しましょう。

仕事を言い訳にせず「有給を使ったり」遊びを優先せず「休日をしっかり学習に使ったり」とにかく2ヶ月程度の期間でいいので、空いてる時間はすべて学習に捧げるくらいの覚悟をしましょう!

人生に一度くらい「本気で頑張る期間」があっても良いのでは無いでしょうか?

プログラミングを学ぶ前に「知っておきたい」事のまとめ

結論として、プログラミングを学ぶ前に次の事を知って

・なぜプログラミングを学びたいのか?
・プログラミングは何が楽しいのか?
・自分はプログラミングに向いているのか?
・プログラミングを使って何をしたいのか?
・実際に何を作って、どんな言語を学ぶのか?
・プログラミングを挫折せずに学習するにはどうしたらいいか?

後悔する事なく自分に合ったプログラミングを学んでほしいという事です。

●プログラミングが向いている人とは

・モノづくりが好きで、作ったモノに感動できる人
・論理的思考が好きで、試行錯誤できる人
・話すより、黙々と作るタイプの人
・作りたいモノがあり、それに向けて全力で走れる人
・最先端の技術に興味のある人
・楽する為の道具を、頑張って作るタイプの人

全部当てはまらなくても、1つでもあればトライしてみてもいいと思います。

人生一度キリなので「やらずに後悔するより、やって後悔した方がマシ!」せっかくプログラミングを学ぶなら、自分の将来にあった内容を楽しく学んで、これからの人生に役立つ学びとしましょう!

この記事が気に入ったらサポートをしてみませんか?