こんにちは、がく(@syasya_cat)です。
突然ですが、プログラミング、やってますか?学んだことはありますか?
ここ最近、「プログラミングは誰しもが学ぶべき」なんて論調をよく見かけますが、それだけ重要性だと言われている割りに、できる人は相当少ないんじゃでしょうか。
「一度学んでみたことがあるよ!」という人は結構な割合でいるとは思うのですが、大抵挫折しているか、アウトプットまで結びついてはいないでしょう。例えば、HTMLのタグ学んで、おしまい、とか。
これには明確な理由があるので、紹介します。
わたしは完全独学でプログラミングを習得していますが、その中で感じたことも含めて共有です。
1. 前提条件が人によって違いすぎる
まず、1つ目の理由がこれ。プログラミングの勉強を始めるにあたって、人によって前提条件が違いすぎます。
その中でも大きなものをあげると、
- デジタルデバイスの慣れの違い
- 目指している先の違い
の2つ。
デジタルデバイスへの慣れというのはかなりのレベル差があって、
- PCがなんとなく触れる、触れない
- カンタンなショートカット(コピペとか)がわかる、わからない
- タッチタイピングができる、できない
- PCの基本的な仕組みがわかる、わからない
- Webの基本的な仕組みがわかる、わからない
etc… 色々あるんです。
この、あらゆる状態にある人が、案外いきなりプログラミングを学ぼうとする。これはキツイです。
極端にたとえれば、英単語何にもしらないけど、いきなり英語の論文を書き始める、みたいなことが往々にして見受けられます。
だから、PCの扱いになんとなく慣れていないな、という人はまず慣れ親しむことから始めなければいけません。
特に、タイピングは重要。完璧なタッチタイピングができるように、とは言いませんが、それほど苦がなくタイピングできるくらいじゃないと、プログラミングなんてとてもじゃないけど大変です。
タイピング、練習しましょう。案外、カンタンに習得できます。1日30分から1時間も確保できれば、1ヶ月もなしに大半の方は習得できると思います。
もしこの機会にタッチタイピングを習得したいという方は、こちらのnoteを、よろしければどうぞ。
前提条件のもう1つは、「目指している先」の違い。これも結構違う。
端的に言えばプログラミングを学ぶ目的なんですが、
- プログラミングを教養として学びたい
- 何か自分のサービスを作ってみたい
- IT系に就職したいから学びたい
など、様々。自分のサービスを作ってみたい、という方は目的が明確なので、「何を学ぶか」や「どう学ぶか」選びとるのは比較的カンタンです。
問題は、そうじゃない人たち。初期のプログラミングは結構苦行なので、この辺が曖昧だと選択肢が多すぎるので、悩んで結局進められない、みたいなことが起きがちです。
- 学ぶ言語はどうすればいいのか
- 環境はどうすればいいのか、PCはどうすればいいのか
- Webなのか、アプリなのか、システムなのか
などなど。
じゃあこれはどうすればいいのかっていうと、Webかアプリかだけ選んで、レイアウトづくりを学ぶ というのがBetter。
ただでさえ挫折しやすいプログラミングなので、結果が見えやすいことが重要。あと、後述しますが環境構築がとにかくカンタンなことが重要だからです。
言語で言えば、Webなら HTML/CSS、アプリなら今使っているスマートフォンに合わせてiPhone(iOS)ならSwift、AndroidならJavaを学びましょう。
2. 教材選びを誤る
さて、学ぶものが決まっても、大抵の場合教材選びで誤ります。わたしもそうでした。
いきなり中級者向けの本を無理やり熟読して、ものすごく非効率な学び方をしてました。こうはならないようにしましょう。
で、どうやって選ぶのか、ということですが、WebならまずはドットインストールあるいはProgate。アプリなら、できるだけ新しい「作って学ぶ系」の書籍がオススメです。
これらの共通点は、「言語」を学ぶことに注力しすぎず、まず1つ作り出すことに集中できる、という点。
そして、ある程度網羅的に学ぶことができる、という点です。
決して、Web上の記事なんかを参考にしないでください。あれは、大半プログラミング経験者向けだと思ったほうが良いです。初心者なら、誰向けなのか、という判別も難しいはずなので、やめましょう。
ここでのポイントは、「まず1つ作り出す」ということなのですが、これは英語でいえば「まず話してみる」ということに似ています。
実は、プログラミングの言語というのも、ぼくらがいつも話している言葉と同じで、奥が深いんです。いくら母国語でも全ての単語や文法を知ることができないのと同じように、1つのプログラミング言語とっても無数の書き方があったりします。
なので、「プログラミング言語だけを学ぶ」というのは、「英単語だけ覚える」ようなもので、実質的な意味はありません。
だから、まず1つ作り出すことが重要なんです。
Web系なら、ランディングページと呼ばれる1枚のページ。アプリなら、自分の写真や文字を表示して、自己紹介できるアプリなんかを作ることを、まずは目指してやってみるといいでしょう。
3. 環境構築が難しい
実は最大の鬼門なんじゃないか、というのがこれ。
プログラミングの上級者でも時たま苦戦するやつなので、初心者が詰まると半永久的に抜けられなかったりします。
「環境構築」というのは、その名の通り、プログラミングを始めるための環境をつくりあげる作業です。
やりたいことによっては、プログラミング初心者が苦手な真っ黒な画面を使ってよくわからないコマンドを打っていく必要があります。
書籍やサイトに書いてある通りにやって、それでうまくいけば良いのですが、結構な頻度でうまくいかないのがいやらしいところ。
これは、各自のPCの環境や、随時アップデートされるプログラミング言語やその周りの環境が引き起こすものなので、参考にした書籍やサイトが悪いわけではないです。
が、学ぼうとする側からはたまったものではない。
なぜうまくいかないのか、全くわからないですからね。
そこでどうすればいいかというと、最初は環境構築が圧倒的に楽なもの をプログラミングの題材として選ぶのがセオリー。
上でもオススメした、Webの表側(レイアウト)や、アプリ開発は比較的環境構築が楽です。
Webの表側(よくフロントエンド、なんて言います)なんかは、Webブラウザとテキストエディタさえあれば最低限動きますからね。特に大変な設定がありません。
アプリ開発も、他のWeb系の言語に比べたら楽なことが多いです。XcodeやAndroid Studioと呼ばれる、開発ソフトをインストールすれば、だいたいOK。最低限のことはできるようになります。
まとめ
正直なところプログラミングの独学は難しいので、PCと普段から親しい人以外、できるだけ誰かに教わったり、有料のサービスを使って学ぶのが賢明です。
ただ、独学派の人も結構な割合でいると思うので、そんな人はWebのフロントエンドやアプリ開発から初めてみてください。
余談
最近、noteというサービスでの有料記事が流行っていますが、結構初心者向けの技術書を書くのに向いてるんじゃないかと思う。
有料で買ってもらう代わりに、プログラミング言語のアップデートに応じて、加筆・修正する、なんてこともできますからね。
うーん、noteで技術書っぽいの書いてみるのも面白いかなあ
— がく📱0➡︎1エンジニア (@syasya_cat) April 26, 2018
書くなら0からできるiOSアプリのつくりかた、とかそんな感じ?
#note
Twitterでの反応もそこそこいいので、実はこっそり準備中です。
気になる方は、ぜひフォローなどしてくれると、すぐにお届けできると思います。