IT・プログラミングの勉強を始めたい人にまず最初に読んでほしい前説

# 自己紹介
こんにちは。
プログラマー歴10年、現在32歳で現役でプログラマーをしています。
現在はwebフロント開発を中心に、少し前まではバックエンドのシステム構築やゲームアプリ開発、動画像処理システム開発等を広く浅く行ってきました。

最近は僭越ながら、趣味がてら他の方にITやプログラミングについてお教えさせて頂く機会が増えてきました。
その実体験をもとに、これからITやプログラミングを勉強したい、勉強し直したいという方にお伝えしたいことを主観ベースで週1ペースで書いていきます。

至らぬ点も多いと思いますが、どうぞお付き合いいただけますと幸いです。

# はじめに
なぜITやプログラミングを教える活動を始めたのかについて簡単にお話させてください。

昨今はITの基盤技術が成熟してきて、ちょっと学べば大抵のものはパソコンで簡単に作れるようになってきました。
そこで、趣味や副業で何かを始めたいときのツールとして、大学生や社会人でもプログラミングを学びたい、という方が増えてきました。
もしくはもっとカジュアルに、「小学校でも授業でやるようになるくらいだから、基本的なIT知識程度をまず知っておきたい」という方もいらっしゃいます。

そんな背景もあり、最近はITやプログラミングのスクールが増えてきました。
ただ、その授業の中で「勉強が続かなかった」「知識が身につかなかった」という悩み相談を個人的に受ける機会も徐々に増えてきました。

※世の中の多くのスクールを批判するつもりは全くありません。良質なカリキュラムで誠実に、非常にためになる授業をされているところも多くあることも知っております。

話を聞いていると、その方々により良い勉強方法を提案できたり、勉強をする意味であったりをもっと伝えられそうだなと思いました。
それがきっかけで個別にスクールの真似事のようなことを始めたのですが、ありがたいことに気づいたら直接お教えする方の数が30名程まで増えてきました。
その中には、今まで全くパソコンに触れてこなかった初心者・初学者の方から、現役でプログラマーをされている方まで様々いらっしゃいます。

そこでお話する内容はだいたい毎回一緒なので、いっそテキストにまとめて見ていただいた方が、内容もブラッシュアップされるし、より多くの方に見ていただけるだろうと思いこの文章を書いています。
拙書ですが、お目通しいただけると幸いです。

※特に記事の中でどこのスクールがおすすめ、などの有料コンテンツの宣伝的な話をする予定は今の所ありません。

# そもそもITとかプログラミングって何？
明確な定義の話をすると難しくなってしまうので、個人的な意見でざっくり、
・IT: プログラミングも含めた、コンピュータに関する技術の総称
・プログラミング: プログラムを書くこと
です。

ITの勉強では、例えばMicrosoft Word や Excel などのソフトを使えるようになるであったり、もっとシンプルなところでは、パソコンの基本的な使い方やメールの送り方を学ぶ、ということも含みます。
プログラミングでは、複雑な説明は端折りますが、コンピュータを自分の思う通りに動かすための手順書を特別なフォーマットで書く、というイメージでしょうか。
プログラミングについての詳細は追々書きますが、今はざっくりとした雰囲気だけ書いておきます。

### 勉強のメリット

ITについて勉強する一番のメリットとして、日々の仕事や勉強をより効率的にこなすことができます。
パソコンの基本操作を3時間勉強すると、この先の人生1日当たりの作業効率を20分ずつ早めたりできる場合もあります。(例えばより早いタッチタイピングやショートカットキーの暗記など)
そこで空いた時間を趣味に使ったり、より効率UPのためにさらに勉強したり、など有意義に使うことができます。

さらに発展すると、仕事や副業に活用することもできます。
現在、プログラマーの需要はどんどん高まってきているので、ある程度実践的なITスキルを身につけておけば、それを副業や就職/転職の際に活かせる可能性があります。
また、今既に会社などで働かれている方であれば、自身のスキルの幅を広げることで今の業務より更に活躍・チャレンジの機会が生まれるかもしれません。

### 勉強する上で
ここで最初にお伝えしておきたいのが、ITの分野は非常に広く、全てを勉強しようとしてもキリがないということです。
何を出来たら勉強のゴールとするか、という目標を自分の中で決めておくことが心折れずに勉強をするために大事になってきます。

例えば、

- 『タッチタイピングで、キーボードを見ずに秒間4キー以上の速さで文字を打てるようにする』
- 『メールの送受信ができるようになる』
- 『Microsoft Word を使って提案書を書き、印刷して提出できるようになる』
- 『Microsoft Powerpoint を使ってプレゼン資料を作り、実際にプレゼンする』
- 『自分のホームページを作って、世界中の人がそのページを見られるようにする』
- 『スマホでゲームアプリを作って、実際に App Store でダウンロードできるようにする』
- 『AWS で会員制の ec サイトを構築して、実際に運用してみる』

など、何を学んだらではなく、何が実現したらゴールとするか、を明確にするイメージです。

# どうやって勉強を始めれば良いの？
具体的な勉強法の前に、まずおすすめしない勉強法をまとめました。

## おすすめしない勉強法

### ×質問や相談をできる人がいない環境で勉強する
一人で勉強をしていると、つまづくことや分からないことがあったときに心が折れやすくなります。
また、勉強をしていても自分が今どのくらいの達成度なのかを確認できないと、暗闇の中ゴールの見えないマラソンをし続ける感覚でやはり心が折れてしまいます。

相談できるプログラミングスクールがあればそこでも良いですし、知人のIT系に詳しい方でも構いません。
身近にいない場合、Twitter や Qiita 等のネット上で探すのも一案です。
一人で勉強せず、何かあったときに聞ける環境で勉強すると良いと思います。

### ×目標やゴールを設定せずに勉強する
前述の通り、ITの分野は非常に広く、全てを学ぶことはほぼ不可能です。
なので、明確に自分のゴールを決めてから勉強し始めましょう。
さらに、何日もしくは何ヶ月でそれができるようになるか、という時間も決めておくと良いです。

もし目標設定を自分で行うのが難しければ、相談できる人と話して課題を決めると良いです。
その課題を終えたら次の課題を、というように、一段ずつ階段を登っていくイメージで勉強できるとよいかと思います。

### ×インプットのみを行い続ける
最近はIT学習に関するサイトや本や動画など、勉強するためのコンテンツはたくさんあります。
ただ、何も前提知識や目標無くいきなり本やサイトを見ても、「難しい用語ばっかりで、結局何言ってるかさっぱりわからない…」で終わってしまうケースも多々あります。

ベストなやり方として、明確な目標を決めて、まずはそのために **必要な知識に絞ってインプット** する、
そして **実際に手を動かして試して** みる、
その後にうまく行ったことだけでなく、うまく行かなかったことも人に話したり文にまとめたりなど **アウトプット** する、という流れを組めると一番良いです。
わからなかったところや自分が作った成果物を誰かに見て(聞いて)もらい、フィードバックをもらって徐々に改善していく、ということが一番勉強になると思います。

これは、インプットのみだと、自分が学んで理解したことが本当に正しいのか自分で判断できないためです。
本やサイトに書いてあることが誤っているケースは多々あるため、学んでその通りに試したけどうまく動かない、といったケースも多分に考えられます。
アウトプットすることで答え合わせができるとともに、自分の知識も定着し、もしかしたら役に立つ周辺知識も一緒に教えてもらえるかもしれません。

## おすすめの勉強法
ではどんな勉強法がオススメかというと、言ってしまえばおすすめしない勉強法の逆です。
相談できる人が周りにいて、目標をきちんと設定し、アウトプットを忘れずに行えば、ITの勉強は非常にスムーズに進みます。

ではもっと具体的にどうすればよいか、という方法については、次回以降の記事で書いていこうと思います。

- 実践的なITの基礎知識を広く浅く勉強するためにまず何をするか？
- 技術ブログをまず書いてみよう
- 自分のポートフォリオを作ってみよう

という内容の記事を書く、という予告を自分のメモ用に残しておきます。

# 最後に
今回は勉強法にフォーカスした話になり、だいぶ抽象的な話になってしまいました。
次回はもっと具体的な話ができればと思います。