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.1k
プログラミング初心者に 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
36k
プログラミング初心者に教えるときは「身近な比喩」が重要なのだ! / Metaphor is Important for Beginner Programmer
kakakakakku
2
5.6k
プロジェクトの成功を支える ZenHub と モブプログラミング / ZenHub and Mob Programming
kakakakakku
1
5.7k
楽しく!アウトプットを習慣化しよう / Let's Enjoy Output
kakakakakku
3
6.7k
さぁ!今すぐプロジェクトリーダーに立候補しよう / Be a Project Leader
kakakakakku
3
9k
プロジェクトをリードする技術 (Kyash 社 再演) / Project Leading is Skill for Kyash
kakakakakku
4
2.1k
プロジェクトをリードする技術 / Project Leading is Skill
kakakakakku
43
46k
Mackerel で ECS をどこまでモニタリングできるのか / Monitoring ECS with Mackerel
kakakakakku
0
13k
[2018/01/30] Redash 初心者向けハンズオン / Redash Meetup #0.1
kakakakakku
0
2.3k
Other Decks in Technology
See All in Technology
RubyでKubernetesプログラミング
sat
PRO
4
150
カップ麺の待ち時間(3分)でわかるPartyRockアップデート
ryutakondo
0
130
Oracle Base Database Service 技術詳細
oracle4engineer
PRO
6
54k
シフトライトなテスト活動を適切に行うことで、無理な開発をせず、過剰にテストせず、顧客をビックリさせないプロダクトを作り上げているお話 #RSGT2025 / Shift Right
nihonbuson
3
2.1k
PaaSの歴史と、 アプリケーションプラットフォームのこれから
jacopen
7
1.2k
あなたの知らないクラフトビールの世界
miura55
0
110
GeometryReaderやスクロールを用いた表現と紐解き方
fumiyasac0921
0
100
三菱電機で社内コミュニティを立ち上げた話
kurebayashi
1
350
Unsafe.BitCast のすゝめ。
nenonaninu
0
190
エンジニアリングマネージャー視点での、自律的なスケーリングを実現するFASTという選択肢 / RSGT2025
yoshikiiida
4
3.6k
KMP with Crashlytics
sansantech
PRO
0
230
信頼されるためにやったこと、 やらなかったこと。/What we did to be trusted, What we did not do.
bitkey
PRO
0
2.1k
Featured
See All Featured
Six Lessons from altMBA
skipperchong
27
3.6k
Making Projects Easy
brettharned
116
6k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
356
29k
Done Done
chrislema
182
16k
Designing for Performance
lara
604
68k
Intergalactic Javascript Robots from Outer Space
tanoku
270
27k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
33
2.7k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
132
33k
Designing for humans not robots
tammielis
250
25k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
27
1.5k
Fontdeck: Realign not Redesign
paulrobertlloyd
82
5.3k
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人にパーソナライズした教え方をする - 「連想できるように身近な例を出す」ことは効果的 - エラーが出たら「探偵」になって,
楽しんでもらう \楽しすぎる/