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
66
「プログラミングを習得する」を考えてみた
プログラミングを学ぶ時や、指導する時に気付いた事やどう考えるべきかをまとめました。
特定の技術を習得する方法ではなく、全般をどう考えてアクションしていくか、マインドの部分に焦点をあてています。
biwakonbu
October 13, 2023
Tweet
Share
More Decks by biwakonbu
See All by biwakonbu
Django を使い続ける理由
biwakonbu
0
98
爆速なPythonフレームワーク
biwakonbu
0
120
HTMX触ってみた
biwakonbu
0
130
スタートアップの技術顧問を3年間続けて発生した事と気付き
biwakonbu
0
310
プログラミングを体系的に学べる言語 Python を推したい
biwakonbu
0
110
プログラミング言語F#を学びはじめました
biwakonbu
0
230
開発の生産性を高める事を考える
biwakonbu
0
120
Python の型事情について
biwakonbu
0
73
ESLint使ってますか?
biwakonbu
0
92
Other Decks in Technology
See All in Technology
DevFest 2024 Incheon / Songdo - Compose UI 조합 심화
wisemuji
0
250
ヤプリQA課題の見える化
gu3
0
150
三菱電機で社内コミュニティを立ち上げた話
kurebayashi
0
210
Fabric 移行時の躓きポイントと対応策
ohata_ds
1
120
実践! ソフトウェアエンジニアリングの価値の計測 ── Effort、Output、Outcome、Impact
nomuson
0
1.3k
Oracle Base Database Service:サービス概要のご紹介
oracle4engineer
PRO
1
16k
デジタルアイデンティティ人材育成推進ワーキンググループ 翻訳サブワーキンググループ 活動報告 / 20250114-OIDF-J-EduWG-TranslationSWG
oidfj
0
110
知っててうれしい HTTP Cookie を使ったセッション管理について
greendrop
1
110
新しいスケーリング則と学習理論
taiji_suzuki
9
3.6k
C++26 エラー性動作
faithandbrave
2
880
ハイテク休憩
sat
PRO
2
190
怖くない!ゼロから始めるPHPソースコードコンパイル入門
colopl
0
240
Featured
See All Featured
The Illustrated Children's Guide to Kubernetes
chrisshort
48
49k
Keith and Marios Guide to Fast Websites
keithpitt
410
22k
No one is an island. Learnings from fostering a developers community.
thoeni
19
3.1k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
6
490
The MySQL Ecosystem @ GitHub 2015
samlambert
250
12k
Into the Great Unknown - MozCon
thekraken
34
1.6k
The World Runs on Bad Software
bkeepers
PRO
66
11k
Faster Mobile Websites
deanohume
305
30k
A Philosophy of Restraint
colly
203
16k
Art, The Web, and Tiny UX
lynnandtonic
298
20k
Scaling GitHub
holman
459
140k
How GitHub (no longer) Works
holman
312
140k
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. エンジニアのための学習・交流を行うコミュニティスペースを作っています 勉強したい人や人と繋がりたい人に向けてサービス提供していきます 色々なご相談にも対応します ・就活・キャリアアップ相談 ・業務に関する相談 ・個人的な学習の相談 大阪でのエンジニアコミュニティを応援します ・勉強会場として無料で場所貸し ・むしろ開催応援のギフト券なども考えています
・長く続く開発者コミュニティ作りを実行します
おわり