プログラミング教育は、工場型モデルではなく、探求学習であるべき
- 近代教育制度が生んだ工場型モデルだと、モチベーションが続かない
- 作りたいものを定義して、「探求学習」したほうが長期的に伸びる
初心者向けの技術書って、工場型教育を前提としていると思うんだけど、工場型教育の何が問題かというと、モチベーションが続かないことなんだよな。人間の学習効率の最大化はモチベーションにあると思っているけど、それをうまくデザインできているものは本当に少ないhttps://t.co/dyConiECPy— Dai (@never_be_a_pm) April 25, 2018
チュートリアルでやりたいのは、ジョン・デューイがやってたような、探求学習的アプローチなんだよな。つまりまず先にゴールがあって、そのあとに学ぶものが決まるというもの。探求学習は工場型教育と比べて学びの設計が難しいけど、その分モチベーションをデザインしやすい。https://t.co/b2Kxg0jF2g— Dai (@never_be_a_pm) April 25, 2018
工場型教育は、すべてのパーツを少しずつはめていけば完成できるという前提で、教育する側としては効率的なんだけど、学ぶ側としたら、なんでこれを学ぶ必要があるのかという視点が欠けやすいのよねぇ。 pic.twitter.com/iKdJpB8V51— Dai (@never_be_a_pm) April 25, 2018
プログラミングの学習もやっぱりそうで、もっといい仕組みにできるはずなのに、その仕組みの構築がうまくいってないから、個人でチュートリアル出してもマネタイズできてしまってるわけで。Factory Modelに基づいた教育はモチベーションが死ぬんだよなぁ。— Dai (@never_be_a_pm) April 12, 2018
エンジニアの視点で可読性の高いコードは、初心者からしたらわけわからない
- エンジニアにとってきれいなコード=保守性の高いコード
- でも初学者からしたら、高度に抽象化されすぎてわからないし、つまらない
- 初学者の一番の教材は、アンチパターンをたくさん踏むことなのでは
- アンチパターンをたくさん踏んで、最後に抽象化を学べばいい
- 一番大事なのは、厳密さよりもモチベーションなのでは?
僕の書くコードは独学なのでおそろしく汚いですが、初心者にはなるべくわかりやすい形になっています。プロにとって可読性の高いコードと、初心者にとって可読性の高いコードは違うと思ってるので、これだけ読んでプロのエンジニアになりたい!って方はご遠慮ください pic.twitter.com/zFtqZ4F0v1— Dai (@never_be_a_pm) April 25, 2018
プログラミングがエンジニアだけのものだと思っている人が多いし、そういう人は拡張性やらなんやら気にするけど、リサーチャーだって使うし、なんなら事務の人でも使うわけ。綺麗なコードでチュートリアル書いたとして、そういう人たちが理解できるかというと怪しいと思うんだよな。— Dai (@never_be_a_pm) April 25, 2018
できる人の綺麗なコードが、これから学ぶ人にとってわかりやすいかというとそうでもない。ってか寧ろ僕のチュートリアルではリファクタリングしてない状態なので、アンチパターン学んでもらって、かけるようになってから他のところでリファクタリング学べばよいわけで。— Dai (@never_be_a_pm) April 25, 2018
プログラミング始めたての人に保守性の高いコード教えても、よくわからないでしょ。たくさんアンチパターン踏んで、例えばhogeNameとhoge_name混同してスクリプト書いて、たくさんエラー出してからコード規約学ぶのでもいいと思うし。順番が間違ってると思う。— Dai (@never_be_a_pm) April 25, 2018
コードはエンジニアだけが書くわけではない
いわゆるエンジニアでなくても、絶対プログラミングは学んでおくと得することが増えると思います。だって、ルーティン減るって、その分死んでた時間を取り返すってことですからね。知り合いの営業マンのひとは、朝のルーティン作業プログラミングで自動化してその分ゲームしてるんって言ってましたよ笑— Dai (@never_be_a_pm) April 10, 2018
プログラミングって寿命を延ばす薬だと思うんだよなぁ。今までルーティンで死んでいた時間を排除して、生きている感覚を得られるような時間をプログラミングで得られるなら。そしてその寿命を延ばせる領域は、エンジニアリング意外の仕事が大きそう。例えば保育とか。— Dai (@never_be_a_pm) April 25, 2018
技術が入りにくいところこそ、可能性がある気がするし、そうなってきたときにきれいで抽象的なコードを書ける必要があるかというとそういうわけでもない気がするのよなぁ。— Dai (@never_be_a_pm) April 25, 2018
技術の民主化には、エバンジェリストが必要
- 技術者と初学者の間の翻訳者が必要なので、エバンジェリストは今後需要が高まりそう
- 技術をもっと一般人に落とし込めるように民主化する必要がある
あと、教育の話。やっぱり何かを作りたいと思ってる人は多いけど、できる人はそれをアピールする方向にだいたいいってしまって民主化しない。テクノロジーマウンティング。だけど、それを民主化するエバンジェリスト的な人って少ないけど、実は技術革新が早い時代めっちゃ必要なのかもしれん。— Dai (@never_be_a_pm) April 13, 2018
ちょっとできる人がイキるのって実は大事なのかと思った。じゃないと中間層の知識が下に降りてこないから。そして少し先の世界を見てきた人が発信するコンテンツは実は価値があるものだということも気付いた。(Qiitaのトレンドとかだいたいそうな気がする)— Dai (@never_be_a_pm) April 19, 2018
— 🦀 \ ガッチャン! / 🦀 (@gatchan0807) April 24, 2018
本当そう思います。知識をすでに持っている人の視点と、これから学ぶ人の視点ってまったく違くて、いかに初心者だったり、技術を知らない人の視点に立てるかってプロダクトしかり教育コンテンツしかり重要だと思います!!(専門家のググれは初学者に対する一種の暴力だと思ってます。) https://t.co/dhPoo2CvmR— Dai (@never_be_a_pm) April 24, 2018
技術は、難しいことを民主化するだけでだいぶ需要があるのに、なぜほとんどの人は難しいものを難しいままイキろうとするのかわけわからない。厳密性を求めている場合だったらしょうがないけど、読者の想定一切してない気がする。— Dai (@never_be_a_pm) April 24, 2018
ホワイトボックス vs ブラックボックス
技術界隈で役に立つのって基礎研究やってる人と、その研究をもとにユーザーが使ってメリットが出るレベルに落とし込んで実装する人で、中途半端にロジック勉強して何も実装できないでイキッてるのは僕は嫌いです。僕は誰がなんと言おうがブラックボックスでもとりあえずいいから便利なものを作る派です— Dai (@never_be_a_pm) April 24, 2018
EDX (Education Experience)
プログラミング教育アプリを使っててイラつくポイント— Dai (@never_be_a_pm) April 24, 2018
・作ろうとしているものでテンションが上がらない(電卓システムとか)
・学んでいる断片が全体の中で位置付けられない
・新しいことを学ぶときの前提知識が考慮されていない
・購入する前にどこまでできるようになるのか分からない
特に今学んでいることの意味を見いだせなくなる瞬間、離脱したくなる。意味を見いだせなくなるのは、— Dai (@never_be_a_pm) April 24, 2018
・難しすぎて何をしているのかよく分からない瞬間
・今全体の中でどこにいるのか分からない瞬間
教育工学系で、この辺をレビューしてる論文読みたい。 https://t.co/CC60fWDhD0
学びの最終目標を達成できることを仕様として定義するとき、離脱して戻ってこなくなるのは明らかにバグだよな。これ、学びの品質保証エンジニアリングだなぁ。カリキュラムの品質保証のフレームワーク論文から学びたいところ。 https://t.co/FJL1TRxkpC— Dai (@never_be_a_pm) April 24, 2018
EDXっていう概念を広げたいな— Dai (@never_be_a_pm) April 24, 2018
Educational Experience
教育を受けたときのユーザー体験みたいなもの。もう一回ちゃんと教育学勉強しようかな。
チュートリアルの設計で大事なのは— Dai (@never_be_a_pm) April 22, 2018
・現実上の課題に対して解決している場面をデザインできているか(実用性)
・既知の知識をもとに次のステップを推論できるか(接続性)
・誰が同じようにやっても同じ結果が得られるか(再現性)
・その知識を使ってほかのシチュエーションに対応できるか(応用性)
ネット上にチュートリアルが必要な理由
プログラミングのチュートリアルはまさに、ネットの情報が断片的すぎるので、包括的な学習コンテンツがあったほうがよい!という問題意識から作ってます。 https://t.co/XcZCnkdcHi— Dai (@never_be_a_pm) April 19, 2018
僕は基本コンテンツ無料でだけど、有料化する場合の条件は決めてます。— Dai (@never_be_a_pm) April 19, 2018
1.作業量が膨大すぎて、自分の内発的なモチベーションが続かない
2.だけど需要は大きい
需要が大きくて、やったほうが意味あるなってことなら、有料化してコンテンツ作ります。それ以外は断片的にコードをブログに載せてます。
僕の仮説は、その教育を受けることによってどういうリターンがくるかわかれば、躓いてもトライアンドエラーできるってこと。だからスケベチュートリアルもそうだし、クラウドソーシングもそうだけど、何かしら便利だったり、個人のエンパワメントになるコンテンツがもっと世の中にあっていいと思うだ。— Dai (@never_be_a_pm) April 14, 2018