脱オブジェクト指向のススメ
知り合いから相談に乗ってやってくれと頼まれたので、ある若手プログラマと会って話をした。お題はスキルパスについでだ。大学を卒業後、独学でプログラミングを学び、現在は中規模開発会社で、主に業務システムの開発に携わっているそうだ。
で、相談の内容は、「このまま現在の業務を続けるか、辞めて、専門学校などでゼロからプログラミング(というかシステム構築)を学びなおすべきか」というものだった。
で、「どうして?」って聞いたところ。
「やっぱり、オブジェクト指向とか、きちんと理解していないので、基礎からやり直したいんです」とのこと。
で、よくよく話を聞いてみると、要は、現場の開発において発生するいろいろな課題を解決できないのは、オブジェクト指向などをよく理解していないからでは?と思いこんでいるようである。
「・・・・」
この手の相談を受けるたび、正直私は気が遠くなるのだ。ITmediaの紙面上で書くのは少々気が引けるが、全国の悩める若者のために勇気を振り絞って書くことにしよう。
「オブジェクト指向などクソの役にも立ちません!」
あー、書いちゃった・・・。いや、やっぱり、
「ときどき、役に立つときもあります」
くらいにしておきます。確かに役に立つときもあるなあ・・・、飲み屋でプログラマと会話するときにはオブジェクト指向を理解しておく方が会話がはずむかもしれません。あと、無垢なプログラマ初学者に先輩面するときにも役立つかもしれません。
嫌味な書き方ですみません・・・。でも、しょっちゅう、この手の悩みを相談されてると、心がすっかり歪んでしまうのです。心が乱れてしまうのです。
あなたが、業務システムの開発において、クラスを継承する機会がないからといって、世間を怨んではいけません。インターフェースを実装する機会に恵まれないからといって、生まれてきたことを呪ってはいけません。ましてや、「オブジェクト指向を理解していないから」なんて思ってはいけません。
業務システム開発やWebシステム開発において、オブジェクト指向の導入?により、飛躍的に生産性が向上するといったことは(あまり)ありません。VBがVB.NETになったからって、何か変わりましたでしょうか?。PHPのバージョンが4から5になったからって何か変わりましたでしょうか?。
一般的な開発の現場では、「誰だ!わざわざこんなのクラスにしやがったやつは!」と迷惑の種になることはあっても「オブジェクト指向の導入で再利用性飛躍的UPね!」なんてことはほとんどありません。リソースの再利用性を高めるためには、きっちりとした仕様書を書く訓練や、他の開発者とのコミュニケーションスキルをUPした方がずっと実務的ですし、上司も評価してくれるでしょう。
開発のスキルをUPさせるためには、とにかく、コードを書くこと。寝ても覚めてもコードを書くことです。そうしているうちに、いつの間にか、オブジェクト指向も身に着く(というか、その本質が何かに気づく)でしょう。
あと、「流行ってる技術=役に立つ技術」というわけではないということをしっかりと認識しなければなりません。今の技術者にもっとも必要とされる能力は、バズワードと本当に必要な知識を区別する能力かもしれません。
で、冒頭の若者プログラマはどうなったかって・・・。かえって悩みが大きくなったようでした。怨むのなら私を紹介したあなたのおじさんを怨みなさい。