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
プログラミング初心者に Rails を教えるコツ / Tips for Teaching Rails
Search
Yoshiaki Yoshida
January 11, 2018
Technology
5
4.3k
プログラミング初心者に Rails を教えるコツ / Tips for Teaching Rails
「プログラミング初心者に Rails を教えるコツ」を発表した
http://kakakakakku.hatenablog.com/entry/2018/01/12/102123
Yoshiaki Yoshida
January 11, 2018
Tweet
Share
More Decks by Yoshiaki Yoshida
See All by Yoshiaki Yoshida
技術ブロガーを育てる!ブログメンタリングで何を教えているのか / Passion for Blog Mentoring
kakakakakku
8
37k
プログラミング初心者に教えるときは「身近な比喩」が重要なのだ! / Metaphor is Important for Beginner Programmer
kakakakakku
2
5.7k
プロジェクトの成功を支える ZenHub と モブプログラミング / ZenHub and Mob Programming
kakakakakku
1
5.8k
楽しく!アウトプットを習慣化しよう / Let's Enjoy Output
kakakakakku
3
6.9k
さぁ!今すぐプロジェクトリーダーに立候補しよう / Be a Project Leader
kakakakakku
3
9.1k
プロジェクトをリードする技術 (Kyash 社 再演) / Project Leading is Skill for Kyash
kakakakakku
4
2.2k
プロジェクトをリードする技術 / Project Leading is Skill
kakakakakku
43
47k
Mackerel で ECS をどこまでモニタリングできるのか / Monitoring ECS with Mackerel
kakakakakku
0
13k
[2018/01/30] Redash 初心者向けハンズオン / Redash Meetup #0.1
kakakakakku
0
2.4k
Other Decks in Technology
See All in Technology
AWSを利用する上で知っておきたい名前解決のはなし(10分版)
nagisa53
10
3.3k
エンジニアが主導できる組織づくり ー 製品と事業を進化させる体制へのシフト
ueokande
1
130
slog.Handlerのよくある実装ミス
sakiengineer
4
500
20250910_障害注入から効率的復旧へ_カオスエンジニアリング_生成AIで考えるAWS障害対応.pdf
sh_fk2
3
280
AIエージェント開発用SDKとローカルLLMをLINE Botと組み合わせてみた / LINEを使ったLT大会 #14
you
PRO
0
140
未経験者・初心者に贈る!40分でわかるAndroidアプリ開発の今と大事なポイント
operando
6
850
CDK CLIで使ってたあの機能、CDK Toolkit Libraryではどうやるの?
smt7174
4
200
フルカイテン株式会社 エンジニア向け採用資料
fullkaiten
0
8.8k
Unlocking the Power of AI Agents with LINE Bot MCP Server
linedevth
0
140
測りにくい成果を測る — BtoB SaaSにおける効果検証への挑戦 / Shirokane Kougyou vol 20
sansan_randd
2
160
今日から始めるAWSセキュリティ対策 3ステップでわかる実践ガイド
yoshidatakeshi1994
0
140
株式会社島津製作所_研究開発(集団協業と知的生産)の現場を支える、OSS知識基盤システムの導入
akahane92
1
1.5k
Featured
See All Featured
How to train your dragon (web standard)
notwaldorf
96
6.2k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
29
1.9k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
252
21k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
23
1.4k
Gamification - CAS2011
davidbonilla
81
5.4k
Product Roadmaps are Hard
iamctodd
PRO
54
11k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
30
9.7k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.5k
Build The Right Thing And Hit Your Dates
maggiecrowley
37
2.9k
Side Projects
sachag
455
43k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Transcript
プログラミング初心者に を教えるコツ 2018.01.11 表参道.rb #30 吉田慶章 @kakakakakku
吉田慶章 @kakakakakku - インフラ, サーバサイド, 認定スクラムマスター, 技術広報など - 趣味は「ブログを書くこと」 -
http://kakakakakku.hatenablog.com/ - 「アウトプット芸人」もしくは「アウトプットアスリート」
今日は「プログラミング講師」の話を
副業 - 2017年1月から プログラミング講師 (Rails) の副業をはじめた - TechAcademy「ウェブアプリケーションコース」のパーソナルメンター - 1年間で,
30名以上の生徒さんを担当した - ビデオチャットで実施する
「教える」を仕事にする - 「技術を教えること」を仕事にしたかった - 「生徒さんが挫折せず学び続けられるように導くこと」が最大のやりがい - 良い講師になる素質は「生徒さんと同じ目線で考えられること」 - 決して「メタプログラミングなど黒魔術に精通している」必要はない -
コミュニケーション能力は確実に必要
1年間の講師経験から学んだコツを紹介
コツ1 : 連想できるように身近な例を出す - 例えば, each - 例えば, Router +
MVC
例えば, each members = ['A', 'B', 'C'] members.each do |member|
puts member end
処理フローを連想できない members = ['A', 'B', 'C'] members.each do |member| puts
member end どこから来た member ? each って何のこと ? | って何 ?
コンビニのレジとお客さんを連想する A B C B C C A B
処理フローを連想できるようになる members = ['A', 'B', 'C'] members.each do |member| puts
member end 1番前にいる お客さん レジで接客を受けているお客さん お客さんが並んでいる
例えば, Router + MVC Router Controller Model View なぜ, 細かく分類するの
?
株式会社 Rails (大企業) を連想する Router Controller Model View 複数の部署があり ハンコをもらって
承認を進める感じ (役割を明確に) データが必要な場合は モデル部に依頼する
Router は道案内を連想する Router 「東京」に行くなら「下の道」ですよー 「/users」に行くなら「users#index」ですよー
連想の繰り返し - 文字列 / シンボル / 配列 / ハッシュ -
Bundler と Gemfile - rails db:migrate - rails console ( REPL ) - belongs_to / has_many / has_many through - STI (Single Inheritance Table)
ポイント2 : プログラミングの原則を押し付けない - 例えば, DRY / KISS / TDD
- 例えば, パーシャル
プログラミングの原則とは - 例えば - DRY (Don’t Repeat Yourself) - KISS
(Keep It Simple, Stupid) - TDD (Test-Driven Development) - 「ツライ過去を経験しているから」わかることだったりする - プログラミング初心者にとっては, 遠回りのように感じる
例えば, パーシャル <%= render 'shared/items' %> なぜ, ファイル名と同じように _ を付けないの
? なぜ, わざわざ別のファイルに書くの ?
実際に「バグを経験してもらう」 b.html.erb c.html.erb a.html.erb xxx を yyy に変更してみましょう! yyy yyy
xxx 「あー!修正忘れました!」
ポイント3 : エラーを解決するプロセスを楽しんでもらう - 例えば, NameError - 例えば, SyntaxError
エラー = 恐怖体験 ? - エラーが出ると, 思考停止してしまう - 学習するモチベーションが一気に下がってしまう (英語もよくわからない)
- 挫折する原因の1つ - 職業プログラマでも, エラーは大量に出るよ!ということを事実として伝える - 「いかに早くエラーの原因を特定できるか」がスキルであることも伝える
例えば, NameError Did you mean? は超ヒント このあたりにミスがありそう
例えば, SyntaxError 構文が間違ってそう 既に動いている実装を見比べればわかるかも?
エラー探偵になってもらう & 解決できたときの喜びを大切にしてもらう ある程度慣れてきたら binding.pry もペアプロ形式で教えることが多い
第11章「Ruby のデバッグ技法を身につける」 - バックトレースの読み方 - print デバッグ - トラブルシューティング方法 -
などなど 初心者にも参考になる
まとめ
まとめ - プログラミング初心者に教えるのは, エンジニアリングとは別次元のスキルだと思う - 1人1人にパーソナライズした教え方をする - 「連想できるように身近な例を出す」ことは効果的 - エラーが出たら「探偵」になって,
楽しんでもらう \楽しすぎる/