見出し画像

【7300字】【元介護士・元人材営業出身の27歳男が未経験でエンジニアを目指す】学習を習慣化してしまおう。僕がプログラミング学習するときに実践している3つのこと。(TECH::EXPERT22〜25日目)

どうも、オタユウです。

TECH::EXPERTに入ってからというものの既に3週間が経ち、もうじき4週間、誕生日まで残り6日と迫りました。「残り6日」でお気付きの方もいらっしゃると思います。そうです。バレンタインデーです。プログラミング学習中の僕たちには何の縁もないイベントですね。もしかしたらエンジニアになった後も…いえなんでもありません。誕生日祝いお待ちしております。

さて、今回のテーマはこんな方々を対象にしています。

・プログラミング初学者(はじめたて、または今から始めるぞ!という方)
・同じように学習してるけど自分が前に進めているか分からない…という方
・効率の良さそうな学習方法が知りたい!という方
・やる気が出ない…忙しい…など色々と理由をつけて放置気味な方
・最近学習モチベーションが上がらないという方
・何のために学習しているのか分からなくなってきた…という方

そして、本テーマの目次です。

1.僕が学習するときに実践している3つのSTEP
2.学習の心構え5ヶ条
3.オススメの学習効率化ツール
4.学習と勉強の違い

僕はプログラミングスクールで毎日10時間以上は常に学習しています(会社もスパッと辞めたので当然です)が、学習に対するやる気を維持するのってめっちゃ難しいですよね。半年前ぐらいは、会社員(人材営業)と併行してTECH::CAMPでも受けようかなーと考えてたのですが、自分の性格上中途半端になる未来しか見えなかったので、TECH::EXPERTに通っています。僕は習慣化できるまで時間がかかるタイプだと自覚していたので、スクールは「学習を習慣化するための仕組み」が整っていて便利だなあというのが率直な印象です。この辺りは1週間前に書いた記事がありますので、下記をご参考くださいませ。

もちろんこれはWEB教材でも環境自体は用意してくれてますが、同じペースやモチベーションを維持しながら続けるのは本当に大変です。だからこそ、学習を続けられる仕組みを自分で作ってあげる必要があるのではないでしょうか?(スクールいくと良いよ!みたいな話は一切出てきませんのでご安心ください)


それでは、本題に参りましょう。

僕が学習するときに実践している3つのSTEP

結論、こんな感じです。
①TODO:今日やることを決める
 └WHAT(何を) /WHY(なぜ) /HOW(どのように)
  必要ならWHEN(いつ) /WHERE(どこで)の観点も組み込む
②LIMIT:取り組む時間を決める
 └「2分やってみる」ということを決めてやる
 └時間を細かく切り分ける
 └適度な休憩をはさむ
③REVIEW:復習・振り返りの機会を定期的に持つ
 └時間内で何を学べたかを振り返り、記録する
 └朝に昨日の復習、夕方や夜もしくは寝る前に一日の振り返り

繰り返しになりますが、簡単に言うと「習慣化するための仕組みを自分で作っておきましょう」って話です。ただし、前提として、自分なりの目標を持つことと努力の方向性を見誤らないことは大事になってきます。

「何を目標にすればいいか分からない」とか「どんなレベルの目標を持てばいいか分からない」って人は、下の記事に赤裸々に書かれた僕の目標や目的を一つの例として見ていただいてもいいかもしれません。

ぶっちゃけ、答えはご自身の中にあると思いますのでご参考までに。

話を戻します。そもそも学習って嫌々やるもんじゃないですよね。少なくとも、数多ある選択肢の中から自分で選んで取り組んでいる(取り組もうとしている)プログラミング学習においては、ご機嫌に付き合っていきたいですよね。

やる気やモチベーションを頼りに頑張ることを否定はしませんが、僕は根性論が大嫌いなので「自分のやる気スイッチを知っておくこと」や「楽しく学習できる環境づくりを怠らないこと」が重要だと考えています。やる気やモチベーションの下に土台を作ってあげるイメージです。

まずは、やる気スイッチの話。
僕は自分の”慎重な”(あるいは”腰が重い”)性格を自覚しています。物事に対して慎重に、計画を立ててからじっくり取り組みたいと考えがち。この性格の強みは「計画を立てたり、向かうべき方向を決めさえすれば、全速力で目標に向かって取り組めること」。一方、弱みは「計画を立てるまで、なかなか行動に移せないこと」や「高すぎる目標を掲げると、階段の登り方が分からなくなりやすいこと」。

弱点が分かっていると、弱点を逆手に取ることもできますよね。僕の場合はどうやら「目標」と「毎日やること」を決めることが大事っぽいぞ、と。行動のトリガー(やる気スイッチ)が少しずつ分かってきて、次第に操れるようになっていくわけです。

★3つのSTEPの具体例

<学習開始前>
①TODO:今日やることを決める
 ●WHAT(何を):
ProgateでHTMLとCSSの基礎を理解する
 ●WHY(なぜ):サイト制作やLP制作ができるようになりたい!
 ●HOW(どのように):
  ・まずはProgateのHTML/CSS基礎編を一通り学習する
  ・Sublime Text 3を使って、実際に手を動かしてみる
  ・Twitterなどで提供されている入門レベルのサイト模写教材を買ってトレーニングする
  ・理解したことを自分なりに言葉にしてみる。間違っててもいいからTwitterでつぶやいてみる
(以下は適宜)
 ●WHEN(いつ):朝11時から、今日1日6時間で など
 ●WHERE(どこで):自宅、電車内、スクール、もくもく会 など
 ※タイムスケジュールや場所と一緒にTODOを組み込んでおくと、行動するきっかけにしやすい

<学習中>
②LIMIT:取り組む時間を決める
 ・2分〜5分決めてやってみる→いつの間にか集中している
 ・1日6時間など「最低限取り組む時間」を決めておく
 ・決めた時間の中で「25分学習、5分休憩」のサイクルを回してみる
 ・教材がある場合、「1つのテーマにつき1時間」と決めて取り組む
 ※時間は自分に合うように調整を繰り返していくこと
 ※自分が一番集中できるサイクルを作ることを心がけること
 ※制限時間内で何をどこまで学べるか、という効率を意識することが最も大事。1時間以内に終わらなかったからダメ!というのは目的が違う

③REVIEW:復習・振り返りの機会を定期的に持つ
 ●昨日の復習(学習開始前)

  ・メモやTwitterでつぶやいた学習内容を見返す
  ・忘れていた内容があれば、時間を決めて軽く補習する
 ●25分間で学んだこと(学習中)
  ・理解したこと:
CSSのfloat。A要素をfloatによって浮かせると、他の(floatしていない)B要素やC要素はAを見失う。そのため、Aがないものとして配置される。ただし、インライン要素はfloatによって浮いたA要素も考慮した上で、目に見える位置に配置される。
  ・分かっていないこと:実際のfloatの動かし方、float以外の配置方法
  ・次どうするか:HTMLファイルを作ってコードを書いてみる、float以外の配置方法を調べてみる
 ●1日の振り返り(学習終了時点)
  ・今日の学習内容(箇条書きでもOK)
   WEBページが出来る仕組み、HTML/CSSの基礎文法、floatの挙動
  ・学習方法でよかった点、学習したことで得られた気付き
   学習方法:25分学習5分休憩はめっちゃ集中できた!
   気付き:どんな風にWEBページが作られているかが理解できた。floatわけわからん!と思ってたけど、コード書いてみたら動きがなんとなく分かった。あとは実践で覚えていこう。
  ・明日の目標
   今回はサイト模写まで取り組めなかったので、購入したサイト模写教材に取り組んでみる。

遠足が、おやつの買い出しから家に帰るまでが遠足であるように。
学習もまた、学習準備から振り返りまでが学習であると言えます。


では次に、楽しく学習できる環境づくりを怠らないという話。
(読む量はあと半分もないぐらいです!)

学習の心得5ヶ条

結論、「やっぱ楽しく学べる方がどんどん身に付くよねー。」です。

「しんどい思いをするのは当然だ。」みたいな考え方がありますよね。人は原体験の中でしか語れない生き物だと思っているので、過ごす環境によってはそういう考え方になっちゃうよねーと受け入れはします。しかしその上で、僕は「しんどい思いをするのは当然だ。」とは思いません。しんどい状態が続きすぎると、身体が、脳が拒絶していく。いつかは関わっているそのものが嫌いになってしまう。だから、できるだけしんどい思いはしないようにすべきだし、そのために常に良いパフォーマンスが出せる状態に自分を保っておきたい。というか毎日楽しく仕事ができて、妻と幸せすぎる毎日を過ごしたい。オタユウという一人の人間としての本能であり、欲求です。

プログラミング学習も同じ。楽しく学びながら成長できて、それでいて稼げるようになれたら最高。ということで、5ヶ条にまいりましょう。

【その1】自分を常にご機嫌に保ってあげる
 新しいものに触れる、流行を追いかける、美味しいものを食べる、他人から褒められるなど、人にはそれぞれ上機嫌になれるモノ・コトがありますよね。さっきお伝えしていたのは「やる気スイッチ」の話でしたが、こっちは「ご機嫌スイッチ」とでも言いましょうか。
 プログラミング学習において、個人的にめちゃくちゃ大事だと思っているのが、自分で自分を褒めてあげること。僕たちは、出来たことよりも出来なかったことに目が向きがちです。周りと比較して自分なんて…とくよくよしがちです。だからこそ、些細な「できた!」「分かった!」でも自分を褒めてあげましょう。えらいぞ、うんうん、ほんっとお前はなんでもできちゃうなこの野郎^^みたいな。小さな成功体験の積み重ねが、自分の自信になり、楽しい!という感情を生み出す源泉になってくれます。

【その2】ちょっとだけ粘ってみる、を繰り返す
 とりあえず3日続けてみましょう。3日続けられたら次は1週間、次は2週間と取り組むスパンを伸ばしていって、続けられているなら習慣化成功。その調子で頑張って!3日坊主もずっと続ければ強いぜ。

【その3】仮説検証を怠らない
 コードを書けば、どんな結果になるのか?パソコンはどう動くだろうか?画面には何がどんな風に表示されるだろうか?最初に仮説を立て、一度は自力で調べた上で実践・検証すること。分からなければ、誰かに聞く。あるいは答えを見ちゃう。ただし、何故その答えになっているのか?を理解するまでは次に進まない。どうしても無理な場合(1時間粘ったけどマジで無理死にそう助けてみたいなパターン)は他の教材を進める。思考停止で学習するのは自分にとって大きな損失だと考えましょう。

【その4】理解度の指標を持つ
 そういえば、こんなツイートしてました。

 レベルを分けて、理解の螺旋階段を登っていくと良いと思います。「いきなり人に説明するのは無理だから、まずはノートにまとめられる程度には理解しよう。」みたいな。

【その5】インプット過多に陥らないようにする
 アウトプットとのバランス超大事。人はすぐに忘れる生き物です。毎日10時間勉強していても、抜け落ちていることはよくあります。学習したことがその一瞬で全て身に付くわけじゃない。かといって、全てを覚えようとすると、頭の容量も、時間もない。じゃあどうする?
 僕個人としては、すぐに答えにたどり着けるようにしておくことが大事だと考えています。例えば、理解できたことはすぐにEvernoteでドキュメント化する、Twitterでつぶやいてみる、ブログやnoteを書く、コーディングを実践する(ソースコードとして残す)などなど、やり方は山ほどあります。負荷のかかることだと思いますが、引き出しを増やす練習をしているのだと考えて、取り組んでみてはいかがでしょうか。



とはいえ、ここまでお話してきたことをいきなり全て実践するのは難しいと思います。また、この記事以外にも情報はあふれかえっています。逆に、情報が山ほどあるのがネックになってしまっている状態ですね。

そんなわけで、下記にいくつかオススメの学習方法・ツールをまとめます。

オススメの学習効率化ツール

・さっきの3STEPフォーマット
・Evernoteで学習メモをとる
・Twitterやブログでアウトプットすること
・無料のオンライン教材+コーディングができる教材

まあ、ぶっちゃけほとんどありません(笑)受験勉強と違って、正解や到達点がないので当然ですね。ガッカリですか?最短距離で楽してスキル習得!みたいな考えの方はスタンスを見直してください。そんなもんありません。量をこなすことでしか質への転化は起き得ません。歯食いしばっていきましょう。無理な人は回れ右。

↑僕のEvernoteのメモの一部。学んだことを引き出せるようにしてます。

無料のオンライン教材+コーディングができる教材は、いくつかピックアップしておきます。自分に合いそうなものを自分で試してみて確かめてください。実際に手を動かせるもの、何かしらの作品をつくれるものを選ぶと良いです。せっかくなら一石二鳥。

無料オンライン教材
・Progate

・ドットインストール

・ショーへーさん(@showheyohtaki)の#30DAYSトライアル など
 ※取り組んでいる人や成果を出している人を見るととっても面白そうなので、僕も#30DAYSトライアル挑戦+Slackチャンネル参加を決めました。

●コーディングができる教材
・本を買う(下記例)

・ちづみさん(@098ra0209)のコーディング課題(note) など

学習と勉強の違い

さあ、読了までもう一息です!
ここまであえて学習学習と言い続け、わざと「勉強」とは表現せずにいたことに気付いてくださっていたでしょうか?気付いていた方は、これ以上読む必要はないかも知れませんので、noteのいいね機能である「スキ(ハートマークのボタン)」を押してそっとタブを閉じていただいて構いません。

ここまでお読みいただいた方、ありがとうございました!










では、まだこの記事を読んでくださっている方に質問です。
あなたは「学習」と「勉強」との違いを説明できますか?

僕はこの記事を書くにあたって、意味が気になったので調べてみました。能動的に取り組むにあたって、頭の隅に置いておきたい考え方です。

がく しゅう -しふ [0] 【学習】
( 名 ) スル
①  まなびおさめること。勉強すること。 「新しい教科を-する」
②  〘生〙 生後の反復した経験によって、個々の個体の行動に環境に対して適応した変化が現れる過程。ヒトでは社会的生活に関与するほとんどすべての行動がこれによって習得される。
③  〘心〙 過去の経験によって行動の仕方がある程度永続的に変容すること。新しい習慣が形成されること。
④  〘教〙 新しい知識の獲得、感情の深化、よき習慣の形成などの目標に向かって努力を伴って展開される意識的行動。
べん きょう -きやう [0] 【勉強】
( 名 ) スル
①  学問や技芸を学ぶこと。学習。 「 -部屋」 「おそくまで-している」
②  ある目的のための修業や経験をすること。 「何事も-だ」
③  (商人が)商品の値段を安くして売ること。 「 -しますのでお買い下さい」
④  物事にはげむこと。努力すること。 「職業に-する精神あること/西国立志編 正直」
⑤  気が進まないことをしかたなくすること。 「 -して櫓を揺しゐたれば/甲子夜話」 〔中村正直訳「西国立志編」(1871年)では中国古典の「中庸」と同じく④ の意で用いる。「小学読本」(1873年)は現在と同じ意〕

※三省堂 大辞林より引用

あれ?別に一緒じゃね?と思った方はもう少し視点を変えてみましょう。英語のstudy(勉強)とlearn(学習)を例にすると、明確なニュアンスの違いがあることが分かります。

studyは学ぶ過程に着目
・"Study"は、本や教材、学校の授業などを通じて、知識理解を深めようとすることを意味する。
・学ぶ時間やその過程にフォーカスされる。学んだことが身に付いているか否かは問われない。

learnは学んで身につけた成果に着目
・"Learn"は誰かから習う、もしくは本や教材からの独学、練習、体験などを通じて、知識や技術を習得することを意味する。
学びや練習の過程よりも、その成果が身に付いているかにフォーカスされる。

例文などのエビデンスが知りたい方は下記URLからどうぞ。
引用元:https://travelish.jp/learn-and-study-differences/

もうお分かりでしょうか?ごくごく当たり前のことなのですが、あなたは一体何のためにプログラミングを学んでるんですか?ってことです。

僕たちが今取り組むべきことは、Progateのレベルを上げることでもなく、テストの点数の取り方を学ぶことでもない。プログラミングスキルを活かして何を実現させたいのか?を考えながら、ひたすら学習と実践に励むことに他なりません。

もう一度問います。
あなたはプログラミングという手段を使って、何を手に入れたいんですか?
本能や欲求からひねり出しましょう。実現させたい目的の多くはカネ・時間・仲間・名声あたりに分類されるはず。

そして、目的を見失わないように、1日ずつ、1歩ずつ、1cmずつでもいいので一緒に頑張りましょう。習慣化と仕組みの力を身にまとって。

ここまで長文をお読みいただいた方、ありがとうございました!(長らくお疲れ様でした、目を休ませてあげてください…)少しでも今後の学習や行動のヒントになれば嬉しいです。
よろしければ、スキをポチッと押してやってください。


オタユウ

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