Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
「プログラミングを習得する」を考えてみた
Search
biwakonbu
October 13, 2023
Technology
0
65
「プログラミングを習得する」を考えてみた
プログラミングを学ぶ時や、指導する時に気付いた事やどう考えるべきかをまとめました。
特定の技術を習得する方法ではなく、全般をどう考えてアクションしていくか、マインドの部分に焦点をあてています。
biwakonbu
October 13, 2023
Tweet
Share
More Decks by biwakonbu
See All by biwakonbu
Django を使い続ける理由
biwakonbu
0
96
爆速なPythonフレームワーク
biwakonbu
0
110
HTMX触ってみた
biwakonbu
0
120
スタートアップの技術顧問を3年間続けて発生した事と気付き
biwakonbu
0
310
プログラミングを体系的に学べる言語 Python を推したい
biwakonbu
0
100
プログラミング言語F#を学びはじめました
biwakonbu
0
220
開発の生産性を高める事を考える
biwakonbu
0
120
Python の型事情について
biwakonbu
0
71
ESLint使ってますか?
biwakonbu
0
90
Other Decks in Technology
See All in Technology
英語が苦手でも学びが得られるWorkshopについて / About the workshop of re:Invent 2024
taquakisatwo
0
500
Zero Data Loss Autonomous Recovery Service サービス概要
oracle4engineer
PRO
1
4.8k
TSKaigi 2024 の登壇から広がったコミュニティ活動について
tsukuha
0
170
OCI技術資料 : ファイル・ストレージ 概要
ocise
3
11k
Opcodeを読んでいたら何故かphp-srcを読んでいた話
murashotaro
0
340
ゼロから創る横断SREチーム 挑戦と進化の軌跡
rvirus0817
3
620
2024年にチャレンジしたことを振り返るぞ
mitchan
0
160
普通のエンジニアがLaravelコアチームメンバーになるまで
avosalmon
0
600
Google Cloud で始める Cloud Run 〜AWSとの比較と実例デモで解説〜
risatube
PRO
0
120
Storage Browser for Amazon S3
miu_crescent
1
320
スケールし続ける事業とサービスを支える組織とアーキテクチャの生き残り戦略 / The survival strategy for Money Forward’s engineering.
moneyforward
0
120
Fanstaの1年を大解剖! 一人SREはどこまでできるのか!?
syossan27
2
350
Featured
See All Featured
Keith and Marios Guide to Fast Websites
keithpitt
410
22k
A designer walks into a library…
pauljervisheath
205
24k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
44
6.9k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
49k
Producing Creativity
orderedlist
PRO
342
39k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
191
16k
Testing 201, or: Great Expectations
jmmastey
41
7.2k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
226
22k
Large-scale JavaScript Application Architecture
addyosmani
510
110k
Gamification - CAS2011
davidbonilla
80
5.1k
Making the Leap to Tech Lead
cromwellryan
133
9k
GraphQLとの向き合い方2022年版
quramy
44
13k
Transcript
「プログラミングを習得する」を考えてみた 株式会社coroutine 東川 諒央
自己紹介 1 色々分類して整理する 3 最初から求めすぎないために 4 何故この話を考えるのか? 2 5 なぜ動くのかに意識を向かせない
6 まとめ
自己紹介 1 株式会社 coroutine 東川 諒央 @biwakonbu 大学教員 ゲームバックエンド フリーランス
経歴 Go Python JavaScript 実績言語 Ruby 技術顧問 エンジニア教育 業務 設計 プログラミング インフラ etc… Rust Haskell TypeScript 学習中言語
> 何故この話を考えるのか?
何故この話を考えるのか? 2 ❏ 教える仕事をしている中で初心者は何をやるべきかを整理したい ❏ 学ぶべき事はたくさんある ❏ 言語構文 ❏ プログラミング的思考
(文科省指定語句) ❏ ライブラリの使い方 ❏ プロトコル ❏ 環境構築など... ❏ 単純に覚える事が多い上に思考訓練が大変 ❏ 学習者のレベルにもバラツキがあるので粒度が違うと教え難いのもある ...
> 色々分類して整理する
色々分類して整理する 3 ❏ ググっても情報多すぎてわけわからん ❏ 結局どの言語やればええんや ❏ Progate は一通りしたけど... ❏
Git っているか? ❏ とりあえずブログコピペで動いたわ ❏ HTML & CSS (SCSS) は必修 ❏ ターミナルと VSCode の使い方を覚えてもろて ❏ TS & React やって欲しい ❏ そうなると HTTP の基礎も覚えてほしい ❏ あと、公式ドキュメントを見る癖付けてくれ 初心者 ベテラン
色々分類して整理する 3 ❏ Frontend Developer kamranahmedse / developer-roadmap ❏ ビギナー向けのロードマップ
❏ フロントでもこれだけある ❏ ここに React, Vue などのライブラリも ❏ 更に設計やアルゴリズム、 パフォーマンスなども理解が必要に ...
色々分類して整理する 3
色々分類して整理する 3
> 最初から求めすぎないために
最初から求めすぎないために 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 探求する
最初から求めすぎないために 4 Lv. 0 タイピング Lv. 1 言語構文 Lv. 2
プログラミング Lv. 3 ターミナル Lv. 4 ライブラリ スキルの幅 Lv. 5 プロトコル Lv0. まずタイピングに慣れる タイピングに不慣れだと コーディング中に構文やロジックに集中できない Lv1. 構文をキャッチアップする 最初は条件分岐、繰り返しから覚え、 関数、クラス化を段階的に覚える。 Lv2. プログラムをひたすら書く 写経など、実際に動作確認できるプログラムを書く。 定型の処理などは指で覚えるようにする。 Lv3. ターミナルを触って CLI を覚える 環境のセットアップやファイルシステム、 OS を理解。 プログラムで触る時に向けて準備する。 Lv4. ライブラリを使ってプログラムを書く 実際の仕事で利用するライブラリを習得する。 ひたすら書いて慣れる。 Lv5. プロトコルを学ぶ 動作の原理を知ってロジックの根拠を増やす。 プロトコルに詳しくても目に見えた利益は小さいが、 プロトコルを利用し続けていると知っているメリットをちょくちょく受 ける
最初から求めすぎないために 4 Lv0. 入門したて 何にしても不慣れな時期なのであまり考えず行動する。 1 個の分野に集中しても良いけど、複数やる事がある方が 長続きしやすい。 Lv1. アウトプットをする
対象をとにかく触る。情報の取得 (本読んだり、記事読んだ り) よりも、手を動かし、考えを何らかの方法でアウトプットす る。 Lv2. インプットを増やす Lv1 でやっている事に手や思考が慣れてきたらインプットを 意識して増やす。 手を動かす系の本や記事から理論や原理に推移していく。 Lv3. コーチングを受ける 自分のアウトプットに対しレビューを受ける。 議論や他者のフィードバックを受けて考えをアップデートする。 Lv4. 情報収集をする ここまで培った基礎知識や経験をもとに、チームや自身の課題を 解決するソリューションを調査し、試す。 Lv5. 探求する 世の中に知見としてまとまっていない技術や、新しく世に出回った 技術を率先して使っていく。 新しい概念は過去の技術を置き去りにする破壊力を持っている事 が多い。 Lv. 0 入門したて Lv. 1 アウトプットをす る Lv. 2 インプット を増やす Lv. 3 コーチングを 受ける Lv. 4 情報収集をす る 能力の深さ Lv. 5 探求する
最初から求めすぎないために 4 ❏ 教える時には段階的にやっていく ❏ 基本的には不慣れな事は覚えにくい ❏ 新しいゲームをする時に攻略サイト全部みてからやる人どれだけいますか? ❏ ゲームではなくても基本的に説明を最初に全部みる人はほぼ居ない
❏ スポーツもそう ❏ 細かなルールに捉われすぎるとプレイしなくなって身につかない ❏ 慣れる事を意識する ❏ タイピングの慣れ ❏ 変数、関数、クラス定義の慣れ ❏ エラーを出して読む、調べることへの慣れ ❏ 小さなロジックを書く事への慣れなど
> なぜ動くのかに意識を向かせない
なぜ動くのかに意識を向かせない 5 ❏ 学習しているときはモードがある ❏ 体験モード ❏ とにかくやってみる ❏ 脳は理解の方向には働いてない
(指示に集中しているため ) ❏ 目と手は働いていて、体は慣れによる習得中 ❏ 動作するまでに色々起こるが、その発生したイベントも経験値に ❏ 学習モード ❏ 事象に理由 (原理など) を付けて理解する ❏ 体験後の場合、体と脳の理解が一致すると、理解が深まる ❏ 体験前の場合、脳が先行しようとするが想像力に依存する 理論的に学ぶためには その事象を想像できるだけのバックグラウンドが必要
なぜ動くのかに意識を向かせない 5 ❏ 指導してきた中で伸びる人、伸び悩む人の特徴が分かってきた ❏ 伸び悩む人 ❏ 体験モードの状態の時に考えすぎる人 ❏ 能力の深さ
「Lv.1 アウトプットをする」で止まる人 ❏ ずっと体験モードになっている ❏ 学習活動をしているのにバックグラウンドが浅い状態になっているのが特徴 ❏ 伸びる人 ❏ アクションに躊躇が無く、似たような事を繰り返しできる人 ❏ 能力の深さ「Lv.3 コーチングを受ける」ができる人 ❏ Lv2 はできても Lv3 ができない人は停滞が長くなりがち ❏ 仕事をしていると越え易い壁 ❏ 伸びる人はインプットの質を変えたり、コーチが居る事でステップアップしている
> まとめ
まとめ 6 ❏ (自他共に) 育成を考える場合、学習フェーズを定義して行動の変化を意識する ❏ 業界経験が長くても以外と頭でっかちにインプットから入ろうとしがち ❏ 例) Docker
使いたいからドキュメント読んで概念理解しよう ... など ❏ 十分世に広まっている道具や技術は良くわからんまま使うのが近道 ❏ 圧倒的にアウトプットする (ようするに使う) 事で体験的に上手くいく方法を理解 ❏ その後インプット内容をチュートリアル系から理論、概念系に変える ❏ コーチングをお願いできる人が居るなら最初から頼るのも可 ❏ 仕様から教えてくる人は悪い人ではないけど、教えるのは得意ではない人に多い傾向 ❏ 間違った情報を身につけずに技術を学ぶのは不可能 ❏ 間違った理解を恐れず、 目の前のものが前進しない事を恐れる
まとめ (こういう気持ちで日々たたかっています) 6 俺たちは雰囲気で技術を使っているんだ 技術なんも分からん (笑)
P.S. エンジニアのための学習・交流を行うコミュニティスペースを作っています 勉強したい人や人と繋がりたい人に向けてサービス提供していきます 色々なご相談にも対応します ・就活・キャリアアップ相談 ・業務に関する相談 ・個人的な学習の相談 大阪でのエンジニアコミュニティを応援します ・勉強会場として無料で場所貸し ・むしろ開催応援のギフト券なども考えています
・長く続く開発者コミュニティ作りを実行します
おわり