Upgrade to Pro — share decks privately, control downloads, hide ads and more …

「プログラミングを習得する」を考えてみた

biwakonbu
October 13, 2023

 「プログラミングを習得する」を考えてみた

プログラミングを学ぶ時や、指導する時に気付いた事やどう考えるべきかをまとめました。
特定の技術を習得する方法ではなく、全般をどう考えてアクションしていくか、マインドの部分に焦点をあてています。

biwakonbu

October 13, 2023
Tweet

More Decks by biwakonbu

Other Decks in Technology

Transcript

  1. 自己紹介 1 株式会社 coroutine 東川 諒央 @biwakonbu 大学教員 ゲームバックエンド フリーランス

    経歴 Go Python JavaScript 実績言語 Ruby 技術顧問 エンジニア教育 業務 設計 プログラミング インフラ etc… Rust Haskell TypeScript 学習中言語
  2. 何故この話を考えるのか? 2 ❏ 教える仕事をしている中で初心者は何をやるべきかを整理したい ❏ 学ぶべき事はたくさんある ❏ 言語構文 ❏ プログラミング的思考

    (文科省指定語句) ❏ ライブラリの使い方 ❏ プロトコル ❏ 環境構築など... ❏ 単純に覚える事が多い上に思考訓練が大変 ❏ 学習者のレベルにもバラツキがあるので粒度が違うと教え難いのもある ...
  3. 色々分類して整理する 3 ❏ ググっても情報多すぎてわけわからん ❏ 結局どの言語やればええんや ❏ Progate は一通りしたけど... ❏

    Git っているか? ❏ とりあえずブログコピペで動いたわ ❏ HTML & CSS (SCSS) は必修 ❏ ターミナルと VSCode の使い方を覚えてもろて ❏ TS & React やって欲しい ❏ そうなると HTTP の基礎も覚えてほしい ❏ あと、公式ドキュメントを見る癖付けてくれ 初心者 ベテラン
  4. 色々分類して整理する 3 ❏ Frontend Developer kamranahmedse / developer-roadmap ❏ ビギナー向けのロードマップ

    ❏ フロントでもこれだけある ❏ ここに React, Vue などのライブラリも ❏ 更に設計やアルゴリズム、 パフォーマンスなども理解が必要に ...
  5. 最初から求めすぎないために 4 ❏ 仕事を任せるために前提とするスキルを定義する ❏ 社内 or チームの技術レベルをざっくり検討、分類する Lv. 0

    タイピング Lv. 1 言語構文 Lv. 2 プログラミング Lv. 3 ターミナル Lv. 4 ライブラリ スキルの幅 Lv. 5 プロトコル Lv. 0 入門したて Lv. 1 アウトプットをす る Lv. 2 インプット を増やす Lv. 3 コーチングを 受ける Lv. 4 情報収集をす る 能力の深さ Lv. 5 探求する
  6. 最初から求めすぎないために 4 Lv. 0 タイピング Lv. 1 言語構文 Lv. 2

    プログラミング Lv. 3 ターミナル Lv. 4 ライブラリ スキルの幅 Lv. 5 プロトコル Lv0. まずタイピングに慣れる タイピングに不慣れだと コーディング中に構文やロジックに集中できない Lv1. 構文をキャッチアップする 最初は条件分岐、繰り返しから覚え、 関数、クラス化を段階的に覚える。 Lv2. プログラムをひたすら書く 写経など、実際に動作確認できるプログラムを書く。 定型の処理などは指で覚えるようにする。 Lv3. ターミナルを触って CLI を覚える 環境のセットアップやファイルシステム、 OS を理解。 プログラムで触る時に向けて準備する。 Lv4. ライブラリを使ってプログラムを書く 実際の仕事で利用するライブラリを習得する。 ひたすら書いて慣れる。 Lv5. プロトコルを学ぶ 動作の原理を知ってロジックの根拠を増やす。 プロトコルに詳しくても目に見えた利益は小さいが、 プロトコルを利用し続けていると知っているメリットをちょくちょく受 ける
  7. 最初から求めすぎないために 4 Lv0. 入門したて 何にしても不慣れな時期なのであまり考えず行動する。 1 個の分野に集中しても良いけど、複数やる事がある方が 長続きしやすい。 Lv1. アウトプットをする

    対象をとにかく触る。情報の取得 (本読んだり、記事読んだ り) よりも、手を動かし、考えを何らかの方法でアウトプットす る。 Lv2. インプットを増やす Lv1 でやっている事に手や思考が慣れてきたらインプットを 意識して増やす。 手を動かす系の本や記事から理論や原理に推移していく。 Lv3. コーチングを受ける 自分のアウトプットに対しレビューを受ける。 議論や他者のフィードバックを受けて考えをアップデートする。 Lv4. 情報収集をする ここまで培った基礎知識や経験をもとに、チームや自身の課題を 解決するソリューションを調査し、試す。 Lv5. 探求する 世の中に知見としてまとまっていない技術や、新しく世に出回った 技術を率先して使っていく。 新しい概念は過去の技術を置き去りにする破壊力を持っている事 が多い。 Lv. 0 入門したて Lv. 1 アウトプットをす る Lv. 2 インプット を増やす Lv. 3 コーチングを 受ける Lv. 4 情報収集をす る 能力の深さ Lv. 5 探求する
  8. 最初から求めすぎないために 4 ❏ 教える時には段階的にやっていく ❏ 基本的には不慣れな事は覚えにくい ❏ 新しいゲームをする時に攻略サイト全部みてからやる人どれだけいますか? ❏ ゲームではなくても基本的に説明を最初に全部みる人はほぼ居ない

    ❏ スポーツもそう ❏ 細かなルールに捉われすぎるとプレイしなくなって身につかない ❏ 慣れる事を意識する ❏ タイピングの慣れ ❏ 変数、関数、クラス定義の慣れ ❏ エラーを出して読む、調べることへの慣れ ❏ 小さなロジックを書く事への慣れなど
  9. なぜ動くのかに意識を向かせない 5 ❏ 学習しているときはモードがある ❏ 体験モード ❏ とにかくやってみる ❏ 脳は理解の方向には働いてない

    (指示に集中しているため ) ❏ 目と手は働いていて、体は慣れによる習得中 ❏ 動作するまでに色々起こるが、その発生したイベントも経験値に ❏ 学習モード ❏ 事象に理由 (原理など) を付けて理解する ❏ 体験後の場合、体と脳の理解が一致すると、理解が深まる ❏ 体験前の場合、脳が先行しようとするが想像力に依存する 理論的に学ぶためには その事象を想像できるだけのバックグラウンドが必要
  10. なぜ動くのかに意識を向かせない 5 ❏ 指導してきた中で伸びる人、伸び悩む人の特徴が分かってきた ❏ 伸び悩む人 ❏ 体験モードの状態の時に考えすぎる人 ❏ 能力の深さ

    「Lv.1 アウトプットをする」で止まる人 ❏ ずっと体験モードになっている ❏ 学習活動をしているのにバックグラウンドが浅い状態になっているのが特徴 ❏ 伸びる人 ❏ アクションに躊躇が無く、似たような事を繰り返しできる人 ❏ 能力の深さ「Lv.3 コーチングを受ける」ができる人 ❏ Lv2 はできても Lv3 ができない人は停滞が長くなりがち ❏ 仕事をしていると越え易い壁 ❏ 伸びる人はインプットの質を変えたり、コーチが居る事でステップアップしている
  11. まとめ 6 ❏ (自他共に) 育成を考える場合、学習フェーズを定義して行動の変化を意識する ❏ 業界経験が長くても以外と頭でっかちにインプットから入ろうとしがち ❏ 例) Docker

    使いたいからドキュメント読んで概念理解しよう ... など ❏ 十分世に広まっている道具や技術は良くわからんまま使うのが近道 ❏ 圧倒的にアウトプットする (ようするに使う) 事で体験的に上手くいく方法を理解 ❏ その後インプット内容をチュートリアル系から理論、概念系に変える ❏ コーチングをお願いできる人が居るなら最初から頼るのも可 ❏ 仕様から教えてくる人は悪い人ではないけど、教えるのは得意ではない人に多い傾向 ❏ 間違った情報を身につけずに技術を学ぶのは不可能 ❏ 間違った理解を恐れず、 目の前のものが前進しない事を恐れる