もしプログラマが引退してプログラミングの個別指導教室を開いたら
転職とかではないです。思考実験に近いもの。引退は必須要件ではない。妻が個人がやっているアートスクールに通っているのを観て、「プログラミング教室」のようなものを今後運営する人は出てくるだろうなと思ったのが背景。*1
なにやらプログラミングが初等教育に入るらしいし、大人にも需要はあるだろう。専門学校があるではないかという意見もあるが、個別指導が暗黙知の伝達において効率がよいのはペアプログラミングをやったことがある人ならわかるはずだ。
生徒のさまざまな要望
プログラミングといっても実現できることは無限に存在する。プログラミングを手段としてゲームを作れることは小学生の時点で理解できるだろうし、果ては芸術的な創作活動もプログラミングを手段とすることができる。
問題は2つある。
- 初等教育の筋トレ的カリキュラムを楽しめる人は少ない
- 高等教育の段階だと先生に教えられないことが多すぎる
筋トレ段階のつまらなさ
もちろんカリキュラムに沿った筋トレをたのしめる人もいるにはいる。プログラミング自体が好きな人種だが、たぶんこのひとたちは希少種である。
多くはプログラミングを手段として自己実現や労働手段を得るのが目的だろう。このひとたちにとっては、「数あてゲーム」や「FizzBuzz」なんて面白くないことは容易に想像ができる。
ある程度熟達して経験を積んだプログラマなら、「アルゴリズムとデータ構造」がどれだけ大事かわかるものだが、基礎知識の重要性を初学者段階から理解できるのは一部の運がよい人たちだけである。
結局、初学者は
- カリキュラムに沿ったコース
- 野放図に好きなことをやり、サポートだけ先生に求めるコース
を選ぶことになる。当然後者のコストが前者に対して高いので、「先生」になる人は後者を認めないことも可能である。
ピアノ教室に通っていたころ先生に言われたことがあるのだが、大人は後者の実践コースを選びたがって基礎を身につけずに、形だけでやりたがる人が多かったらしい。
実践に近い教育のむずかしさ
例えば生徒がゲームを作りたいとする。サーバ開発者がバックグラウンドの先生はゲーム作りの疑問に答えられるだろうか?
アートスクールでは、「xxは私(先生)はもっていないので何も言えないが、ooが**な点はよいと思う」のように素直に知らないことは知らないと伝えるそうだ。
プログラミングでは、さまざまなフレームワークや言語、OSなどの目的によって全く異なるといってよい環境の違いがある。たぶん生徒が、謎のフレームワークでハマっていても一緒にコードを追ってドキュメントを読むことしかできないだろう。*2
基礎になるとすれば、
くらいだろうか。アートスクールと同様に共通に使える暗黙知だけ共有して、ちゃんと褒めていくくらいしかとれる手段はないだろう。
英語は正直なところどうしようもなくて、読めない人に英語を教え始めるのはなかなか重い仕事になると思う……。
ゲーム制作専門の教室
なにかの領域を専門とする高等教育の教室があればよい問題でもある。適切に住み分けることは、教室同士の生き残りにもつながるだろう。
集団開発の機会
プログラミングを手段として一人で実現できるシステムの大きさにはやはり限界がある。当然、組織的な開発を行ったほうが大きなものを作れるし、企業同士の競争のなかでプログラマという職が存在している。そのため、手に職を求める人にとっては集団開発の経験はあればあるほど有利である。
しかし、個別指導ベースの教室で「集団制作のチームを組んでください」と言えるだろうか……。あるいは、「先生といっしょにシステムを作りましょう」を低コストで実現できるだろうか……。
この問題も、ひとつの教室で賄わずに外部化し、斡旋するネットワークを持っておくくらいが妥当な解ではないだろうか。
個別指導に向いているのは
- 素直に褒めるのがうまい
- 言語化がうまい
- 専門外の知識を薄くは持っている
素直に褒めるスキルの時点で私を含めた大半のプログラマが向いてなさそう。専門家であり感情労働的でもあるので、向いてない人はやらないのがよいと思う。しかし、向いている人であれば引退あるいは副業とするのもおもしろそうな業である。
まとめ
- プログラミング個別指導ありでは
- カリキュラム的にやりたいが大人にはつまらない問題がある
- 実践教育は責務を分けたほうがよい
- 集団開発も責務を分ける
- 向いている人だけやればよいのでは