オブジェクト指向をどう教えるべきか

ホスト技術者がお払い箱になるなんてのは10年前から言われてきているというのに未だに生き残ってしまっているんだけど、さすがに本気でヤバイ状況になりつつある中で若いけどホストしかやったことない人とか、この人ならホストでなくても大丈夫だろって人にJavaとかを教えていかなければならない今日このごろなんですけどね。
そこで問題になるのはやっぱり「オブジェクト指向って」みたいな話です。何しろみんな先頭に変数書きたがるし、1つのソースにたくさん書きたがる。でもオブジェクト指向の全容を掴んで貰う必要があるのかという疑問は常にありますね。
僕達業務システム屋の世界は要件定義ができて、それをシステム化できる人がもっとも重要であり、プログラムをすること自体は重要ではないとみなされがちな部分はあります。ここで言う重要ではない、というのは軽視されているということでは必ずしもなくて、割合が低くてもよい、という意味ですね。つまり、ちゃんと出来る人間が少数いれば、後のプログラマーは作業者レベルでもなんとかなる、という話です。そりゃフレームワーク化されたところにビジネスロジックをちゃんと書ければひと通りなんとかなるようなところまでお膳立てされてるのが重要ですからね。

ということは、その「お膳立てをする人」と「とりあえずなんとか書ける」というレベルの人を作ればよいわけです。正しい設計と見積もりをするためには前者の人は欠かせませんけど、全員がそうである必要はないということです。

必然的に、後者の人にはこういう認識でいてもらうように上手く教えたくなる

クラスは単にユーザー定義型であり、継承は部分型と差分プログラミングを実現する仕組みだととらえるのがいい。
オブジェクトがメッセージを送りあうとかメルヘンの世界には入らず、機能だけ考えるのがいい。

2014-07-18

ただ、ある程度は基礎的な理解がないと「なんの差分で大本はどういう動きをするのか」をわからないまま頓珍漢なプログラムを書いてしまうこともあるんだよな。

オブジェクト指向滅ぶべきとは思わないけどね。