勉強法について考え続けた自分が行き着いた『アジャイル勉強法』というひとつの答え
🏃 はじめに
今度、このような勉強会が開催されます。
ここで、「もし自分が"勉強法"を説明するならどうするか?」をふと考えていると、観点が2つあることに気づきました。
- 学習のワークフロー
- 学習の方法それ自体
この二つの観点から自分の勉強法について言語化してみようと思います。ただし前提として、ソフトウェアエンジニア向けというのがあります。
📚 アジャイル勉強法が Zenn Book になりました!!
この記事で説明している以上に詳しい内容を Zenn Book の方には書かせていただいております!
この記事を読んでみて、より詳しく知りたいとなった方はぜひ Zenn Book の方もよろしくお願い致します。
1 章は無料で読めます!
⏰ 学習のワークフロー
サイクルはこんな感じです。
- 年間の計画を立てる
- タスクに細分化して GitHub Project に登録していく
- 週単位で消化するタスクの目標を立てる
- タスクを消化(=勉強する)
- 週単位でタスクの消化を振り返る
- 月単位での達成状況を振り返る
- 年間の振り返りを行う
基本的には 4 がずっと回り続けている感じです。
そして、この 4 への取り組み方が一般的に「学習法」と呼ばれるものなんだと思っています。
まずは以下で学習のワークフローについて補足します。
♻️ 計画とふりかえり
毎年年初、毎月末の日曜、毎週末の日曜に実施します。
この note に書くというのが重要で、より多くの人に見られている場所に目標を出すことで目標達成に緊張感が生まれます。
なにかの論文でも、目標を人目にさらすことの重要性が発表されていたはず。
🪧GitHub Project とタスクの細分化
GitHub Project はカンバン機能を提供してくれているので、これを活用しています。
- Keep = 定期的に実行すべき課題
- Todo = 予定しているタスク
- In Progress = 取り組み中のタスク
- Done = 今月完了したタスク
あと右の方には、思いついたタスクを溜めておく場所があります。
ただし、GitHub Project はスマホからだととても使いづらいので、突然思いついたタスクは「Google Keep」にメモしておいて、後で GitHub Project に起こします。
Done に入ったタスクは、1ヶ月の振り返りが終わった後に削除しています。
📚 学習の方法
この本の内容に基づいてやってます。
じゃあ、その内容に基づいた自分の勉強法ってなにか?という話を。
まず、勉強を始めるにあたって、対象を以下の二つに分類しています。
- 初めて取り組むテーマ
- 既に知っていることに対して取り組むテーマ
これのどっちになるかによって、やり方が変わってきます。
トータルで意識していることは、インプット:アウトプットが2:8くらいになるようにすることです。
アウトプットの方が圧倒的に大事です。
🤔 既に知っていることに対して取り組むテーマ
すでに基礎知識がある状態なので、その知識を掘り下げていきます。
その際にやることはこんな感じです。
- 疑問に思ったことに対して掘り下げ、技術記事を書いていく
- 自分で一本 Web アプリを作ってしまう。その際疑問が出てきたら掘り下げて技術記事にしていく
- 勉強対象を利用している OSS のソースコードを読み込んでいく。その際疑問が出てきたら掘り下げて技術記事にしていく
上のことをやる際に常に意識していることは、
- とにかく手を動かす
- 疑問を抱く
- 抱いた疑問を徹底的に掘り下げる
- 掘り下げに行き詰まったら、誰かに質問する。というか質問できる相手がいるなら積極的に質問する。
- アウトプットを必ず人目につくところに出す
この 4 つです。このポイントは、先に紹介した『東大独学』の内容です。
特に質問に拒否反応を示す人は多いのですが、聞くのはタダなのでとりあえず聞くだけ聞いてみることです。
まさにこれになります。
🙄 初めて取り組むテーマ
この場合は、先の「既に知っていることに対して取り組むテーマ」で挙げたことの前に一つ工程が追加されるだけです。
- 基礎を習得していく。そのために本を 1 冊もしくは動画(Udemy)などを、内容を覚えてしまうくらいまでやりこんでいく
これだけです。
基礎がなければ疑問を抱くことも、手を動かすこともできないのでまずはインプットから始めます。
このインプットの際は、プログラムの模写や資格取得なんかも有効だと思います。
🚀 まとめ
イメージとしては、アジャイル開発を自分自身に対してやっている感じです。
こんな感じで学習フローと学習法を実践しながら、1 週間でスプリントを回しています。
というのが自分の勉強法なのですが、これが必ずしも正解というわけでは全くないです。
なんならこの形に行き着いたのはつい最近の話で、これからも自分の勉強法は変わっていくと思います。今と全く違う形になることもあるはずです。
いずれにしても、今後もより効率良く効果的な学習を続けていくために、今度の勉強会で他の方の勉強法が聞けるのがものすごく楽しみです 😊
他にも、「突発的にやるべきことが発生したらどうするの?」とか「2 週間にまたがるような場合はどうするの?」とか「単に本を読むといった行為をするときはどうするの?」という疑問があるかと思います。
このあたりはもし今回のイベントが大人気で、また『勉強法の勉強会』が開催されたとき発表するか、この記事がめちゃくちゃ人気だったら書こうと思います。
📢 Kobe.tsというTypeScriptコミュニティを主催しています
フロント・バックエンドに限らず、周辺知識も含めてTypeScriptの勉強会を主催しています。
毎朝オフラインでもくもくしたり、神戸を中心に関西でLTもしています。
盛り上がってる感を出していきたいので、良ければメンバーにだけでもなってください😣
Discussion
技術学習の方法としてとても参考になりました!
学習のワークフローの1で「年間の計画を立てる」とありますが、Kanonさんは急な計画変更についてはどのように対処されていますか??
Web周りの技術は進歩が早いこともあり、計画を立ててタスクを進めている最中に、当初の計画には無い技術にも興味が出てくることもありそうだなと感じました。
コメントありがとうございます!
そうですよね。普段から学習されている方であれば、その疑問を絶対に抱かれるだろうなと思っていました😅
まず自分の場合は、「急な計画変更が必要か?」を結構吟味します。
このときに考えるポイントは「いまやっていること以上に、それをやる必要があるか?」ということです。
で、必要がある場合は自分の場合は記事の通りGitHub Projectでタスクを管理しているのですが、記事の画像には見えていない右のほうにある「あとでやること」のボードに一旦タスクを放り込んでしまいます。
で、週または月の振り返りの際に「後回しにしたけどやっぱりやる必要がある」ならTODOへ戻すし、「やはり必要ない」となれば計画からは削除してしまいます。
この学習を行ううえでの一番の目的は、「いかに効率的に効果的な学習効果を得られるか?」なのでそこに寄与するorしないで判断したうえで、しないのであれば早々に取り組みをやめてしまいます。
…という感じなのですが、ご期待に添える回答になっていれば幸いです💦
丁寧なご回答ありがとうございます!
振り返りの機会をとても有効に活用されていますね。
そもそも「急な計画変更が必要か?」を吟味するところがまさにアジャイルだなと感じました!
参考にさせていただきます。
Have a happy study life!!
自分の勉強法について考える良い機会になりました!
ありがとうございました!
などがとても参考になったのでやってみます!
参考になったようで記事を書いた甲斐がありました!
らいとさんの勉強効率が上がれば幸いです😊
開発対象を自分という存在に置き換えるイメージですかね!🤔
その発想は出てこなかったので非常に参考になりました。
プログラミング学習だけではなく、筋トレや読書などもGithubプロジェクトでタスク管理するの面白そうだと思ったのでやってみようと思います!