Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
「プログラミングを習得する」を考えてみた
Search
biwakonbu
October 13, 2023
Technology
0
64
「プログラミングを習得する」を考えてみた
プログラミングを学ぶ時や、指導する時に気付いた事やどう考えるべきかをまとめました。
特定の技術を習得する方法ではなく、全般をどう考えてアクションしていくか、マインドの部分に焦点をあてています。
biwakonbu
October 13, 2023
Tweet
Share
More Decks by biwakonbu
See All by biwakonbu
Django を使い続ける理由
biwakonbu
0
90
爆速なPythonフレームワーク
biwakonbu
0
110
HTMX触ってみた
biwakonbu
0
120
スタートアップの技術顧問を3年間続けて発生した事と気付き
biwakonbu
0
300
プログラミングを体系的に学べる言語 Python を推したい
biwakonbu
0
100
プログラミング言語F#を学びはじめました
biwakonbu
0
210
開発の生産性を高める事を考える
biwakonbu
0
120
Python の型事情について
biwakonbu
0
68
ESLint使ってますか?
biwakonbu
0
89
Other Decks in Technology
See All in Technology
Will Positron accelerate us?
lycorptech_jp
PRO
1
130
実務につなげる数理最適化
recruitengineers
PRO
3
140
コーポレートデータマスター構築への道
kworkdev
PRO
0
130
Nihonbashi Test Talk #3_WebDriver BiDiと最新の実装状況 / WebDriver BiDi latest status
takeyaqa
1
160
How is Cilium Tested?
yutarohayakawa
5
300
Advancing the 3D Geospatial Ecosystem in Japan via Global Collaborations
osgeojp
0
190
密着! Bedrockerがre:Invent 2024で過ごした5日間を紹介
minorun365
PRO
3
330
GeminiとUnityで実現するインタラクティブアート
hokkey621
0
640
プロセス改善とE2E自動テストによる、プロダクトの品質向上事例
tomasagi
1
3.8k
Oracle Base Database Service 技術詳細
oracle4engineer
PRO
5
52k
2024/12/05 AITuber本著者によるAIキャラクター入門 - AITuberの基礎からソフトウェア設計、失敗談まで
sr2mg4
2
580
開志専門職大学特別講義 2024 デモパート
1ftseabass
PRO
0
210
Featured
See All Featured
How to Think Like a Performance Engineer
csswizardry
21
1.2k
Building Your Own Lightsaber
phodgson
103
6.1k
No one is an island. Learnings from fostering a developers community.
thoeni
19
3k
The MySQL Ecosystem @ GitHub 2015
samlambert
250
12k
Why You Should Never Use an ORM
jnunemaker
PRO
54
9.1k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
28
9.1k
How to Ace a Technical Interview
jacobian
276
23k
GraphQLの誤解/rethinking-graphql
sonatard
67
10k
Facilitating Awesome Meetings
lara
50
6.1k
Designing Experiences People Love
moore
138
23k
Documentation Writing (for coders)
carmenintech
65
4.5k
How STYLIGHT went responsive
nonsquared
95
5.2k
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. エンジニアのための学習・交流を行うコミュニティスペースを作っています 勉強したい人や人と繋がりたい人に向けてサービス提供していきます 色々なご相談にも対応します ・就活・キャリアアップ相談 ・業務に関する相談 ・個人的な学習の相談 大阪でのエンジニアコミュニティを応援します ・勉強会場として無料で場所貸し ・むしろ開催応援のギフト券なども考えています
・長く続く開発者コミュニティ作りを実行します
おわり