Life Geeker

ワクワク働きたいアラサーリーマン。本業も副業も楽しく面白く稼ぐ」

プログラミング未経験者が独学はじめてすぐに挫折しない方法

f:id:hacchan320:20190527222852j:plain

プログラミング未経験者が独学はじめてすぐに挫折しない方法

(2019年6月加筆)


グローバル社会だなんだと騒がれた近年、英語がビジネスマンの間で必要だと言われてきましたが、その英語に続いて、新たに注目を集めるビジネススキルとして徐々に浸透しつつあるのが、プログラミングではないでしょうか。


最近は企業で働くプログラマーやシステムエンジニアだけではなく、iphoneやandroidなどの携帯端末で動くアプリなど、消費者であるエンドユーザーの方々とも接点が多いため、徐々にではありますがとっつきやすいスキルとしても認知されていると思います。
または専門的なスキルを身につけて手に職をつけたいという思いから始める人も多いのではないかと思います。

そこで多くの人が、じゃあ、実際にやってみようと、本屋にあふれいろんなプログラミング入門の書籍を読み、よく分からないけどamazonのレビューで1番だったからという気持ちで本を選び、やってみたが


・まずプログラミングを行うための環境が準備する途中でつまづく
・いざやってみるとよく分からない
・頭の中でイメージしづらいカタカナが並び、しまいにつまらなくなってやめてしまう

となり、途中で諦めて挫折する人があまりにも多いのでは。


大手WebサービスでR&Dのインターンや大手SIer、フリーランスの開発経験がある自分ですらも、プログラミングははじめは大変でした。
なにが正解なのかがわからない状態でした。


今や本屋にいけばあらゆる種類のプログラミングの書籍が連なり、
webサイトでもプログラミング学習のためのサイトがたくさんあり、有効に活用すれば誰でもプログラミングを習得して
好きなものを自分の手で作りながら、スキルとして身につけることができると思います。

ただし、英語などとは違い、残念ながら独学で習得する方法について書かれているものはあまりにも少なく、何からはじめたらいいのかもわからない。
場当たり的に手をだしてみたが、結局挫折してしまう。

そんな方も多いのではないでしょうか。

  • これから新しくエンジニアとして働くことを考えているためプログラミングを学習したい
  • エンジニアとの業務で専門用語で会話できるようになれるようにプログラミングを学びたい
  • 自分の興味の幅を広げるためにプログラミングで何かをつくりたい

このような方々に読んでいただけると幸いです。

そんなわけで、新しくプログラミングをはじめる人が挫折することなく取り組むべきプロセスやtipsをご紹介いたします。


  1. そもそも現時点から1ヶ月続けてプログラミングで表現できることを知る
  2. 最終的なゴールを明確にする
  3. 「わからない箇所がわかる」まで◯◯入門系書籍にはに手を出さない、ひたすら突き進む
  4. 作ったものを評価してもらう
  5. 答えはすべてgoogle先生と周りの友人だけが知っている

1.そもそも現時点から1ヶ月続けてプログラミングで表現できることを知る

まず、なにを習得する上でも最も大事なことは「学習動機」です。

・なにができるようになったと言いたいのか
・なにをつくりたいのか
・なにに活用したいのか

英語と同様にプログラミングは手段なので、目的に合わせて学習するのが最も望ましいと思います。
まずは自分が何を目的にプログラミングを勉強するのかを考えるのが、やはりセオリーであることに間違いはありません。



では目的意識が明確ではない人はどうすればいいのか。
ここで重要なことは、プログラミングという言葉につられた非情報系の方には、世の中にあるプログラミングの可能性を知る必要があるということです。

例えば1ヶ月、プログラミングについて勉強するとします。
1ヶ月後にプログラミングを勉強すればここまでできる、という具体的な像を知ることで自分のやりたいことを具体化します。


個人差や内容によってですが、一例として1ヶ月もあれば以下のことは簡単にできます。

・スマホアプリを作る
・webシステムを作る
・SNSのサービスから自動で投稿・情報取得
・データの解析や計算、音声の変換、画像の加工
・画像認識、音声認識、レコメンドエンジン



具体化を行う理由は、上述した通りプログラミングはあくまで手段なので、だんだん勉強しているうちになんのためにこれを勉強しているのかがわからなくなり、モチベーションの低下を防ぐのが狙いです。


ということで、まず自分は何をアウトプットとしてプログラムを書きたいのかを明確にしましょう。



2.最終的なゴールを明確にする

1でプログラミングという曖昧模糊なスキルでだいたいなにができるのかを知った後に、実際にゴールを明確にします。

  • twitterのbotを作りたい
  • webサービスを一人で作れるようになりたい
  • 簡単なiosアプリを作ってAppleストアに売りたい
  • プログラミングコンテストに出て周りと競い合ってみたい…etc.


粒度や評価はまちまちでOKだと思いますので、なんとなくなんのためにやってるのかを明確にする程度で大丈夫です。

なんども言いますが、一番大事なことは何を作るかを決めることです。



だいたい、興味を持てないことを手段のために続けることは本当に時間の無駄だと思っていますので、
とりあえずここで決めた目的を達成した後にどうも合わないなと思ったらスパッとやめるのが正解だと思いますよ。


3.「わからない箇所がわかる」まで◯◯入門系書籍には手を出さない、ひたすら突き進む


作る物を決めた後に、手を出す順番と手を出す物を選びます。
最も重要なフェーズであるといっても過言ではないかもしれません。


経験上、学習の進め方は以下の感じです。

  1. webの入門サイト(Progateなど)で一通り入門で手を動かす
  2. わりかし入門サイトでやったことが書かれてるレベルのことがかかれていて、自分が作りたい物が作れそうな本を探しつつ、Progate2週目をこなす
  3. 作りたいものの手順が書かれている書籍に手を出す
  4. 途中、わからない箇所がでてきたら、入門書と並行して取り組む
  5. わからない箇所もわからない場合には、すぐに放置→友人に聞く


はじめからコツコツプログラミングの入門書を見て、作りたい物の書籍にとりかかれるなら、それもそれでOKですが、
だいたい無理だと思いますので、Progate後に「Java入門」とか手を出すのはやめた方がいいです。

塊 of 才能でない限り無理です。
好奇心があったり、サクサク進める人でない場合はお勧めしません。


なので、まずは動画などが見れるwebサイトの入門サイトであらかたやってみる
→作るものの本の入門書を買う(botを作るのか、webサービスを作るのか、カメラアプリを作るのかなど)
→わからないところが入門サイトでできそうならあらかた進めて再度取り組む
→もはや何もわからない場合には、友人に聞く


というのがお勧めです。


とくに教材に触れるタイミングを考えずに進めてしまうと、2つのパターンで失敗すると可能性が高いです。


①世に溢れた「◯◯言語プログラミング入門」にきちっと入るパターン


このような多くのプログラミング書籍は、大多数の需要に応えて本を売るために、あくまでプログラミングを行うための手段に重きを置きすぎているのです。
それゆえに、無駄にいろんな説明を盛り込みすぎていたり、目的となるアウトプットがまったくイメージできないなどで挫折することがあります。



②世に溢れた「◯◯アプリ開発入門」など、特定の目的が誰かに決められた物に手を出すパターン


アプリ開発などはプログラミングの目的に合わせた本ももちろん多くありますが、それらは専門的すぎて目的の部分を決めるための本ではありません。
自分の目的がはっきりしていないと、だいたいここで楽しくなくなってつまづきます。

①②どちらも、自分がやりたいこととレベルに沿った本にはなっていないので、その本に手を出す前に自分と向き合うプロセスが必ず必要になってきます。




入門サイトをまとめた記事はこちらにあるので、参考までにどうぞ。

programming-study.com






4.作ったものを誰かにみてもらう


さあ、いよいよ紆余曲折あってプログラミングでつくりたい物がつくれました。

次に大切なことは社会との接点をもつことです。

褒められないで勉強を続けられるほど夢中になっているなら、それはもう何もいうことはありません。
どんどん好きなことつくっちゃってくださいという感じです。


ですが多くの人は、苦労して作った物が誰からも作ったものが評価されないと、モチベーションが続かないことも事実です。

業務や研究でプログラミングを行う場合には誰かに評価したりされることもあると思いますが、普通の人はあまりその機会を得ることは難しいです。
やはり、人間ですからなんとか試行錯誤して、プログラミングでできあがったものが、何かフィードバックを得られればそれはとても嬉しいですよね。


簡単にFacebookとかtwitterとかinstagramとかにあげていいねもらうくらいでいいんです。
アプリならアプリストアにあげてもいいですし、友達に見せてもいいですし。


ある程度プログラミングできるようになってくれば
・プログラミングコンテストやハッカソンにとりあえず出てみる
・作ったものをエンジニアコミュニティ(githubなど)で公開する

などなど、経験者との接点を持つことでより楽しみが増えるのではと思います。



5.答えはすべてgoogle先生と周りの友人だけが知っている

いやいや、最後の友達に聞くってwwww乱暴www
と思うでしょうが、やっぱり教えてもらう人を作ることがどの本を買うよりも一番効率的ですよぶっちゃけ。


あと多くの非エンジニアの人が勘違いしているのが、多くの人が独学でガリガリプログラミングをしているのではないかということです。

実際には業務でも趣味でも、わからない点は人に聞いちゃうことばかりです。
みんなで手の差し出し合いです。

また、多くの人がハマるのが、プログラミングの途中で生じる疑問については本などでまとまっていないということです。
そのため、必要な情報を自分で調べたり、周りの人に聞いたりする機会が普通の勉強よりはるかに多いです。

本に書いてないじゃん!と本を恨むのは、残念ですが仕方のないことですと割り切るのが幸せだと思います。
ITの分野とは、そういうネットなど不特定多数の集合知にアクセスすることがとても多いのです。
業務でも研究でもそうなのですから。


それでもわからないことはたくさん出てくると思うので、そういう時は周りにすぐ聞いちゃった方が早いと思います。
特にはじめたての頃はすぐにポイで。悩んだら負けくらいの気持ちで。

聴きやすい人が周りにいない人は・・・

正直なところ、周りに聞く人がいると、学習スピードは独学よりもはるかに早いと思います。

cookpadなどエンジニアの新卒採用のカリキュラムでは、未経験の人でも現役のエンジニアに聴きながら、一通りwebサービスを開発して、ものすごい速さで開発スキルを身につけていると聴きました。

現場のエンジニアに聞けるサービスとしては、最近はTechAcademyCodeCampなど、現役のエンジニアが直接指導してくれるサービスがたくさんあります。

今は無料体験サービスをやっているみたいなので、実際に開発でぶち当たった悩みをぶつけてみて効果を実感してみるのもありだと思います。

Tech Academy オンラインブートキャンプ 無料体験ページをみてみる

~約8,000名の受講生と80社以上の導入実績~

現役エンジニアのオンライン家庭教師CodeCampのページをみてみる


まとめ

  • 入門書を買うな。チュートリアル動画でサンプルプログラムを動かせ。
  • プログラミングで作れるものを体感しろ。
  • 作りたいものを決めろ。
  • 友達やGoogle先生に頼ることが近道と知れ。