脱オブジェクト指向のススメ

http://blogs.itmedia.co.jp/tamaki/2006/06/post_57ab.html

「このまま現在の業務を続けるか、辞めて、専門学校などでゼロからプログラミング(というかシステム構築)を学びなおすべきか」というものだった。

ある程度の経験を積んで独学でもそれなりに勉強しているのであれば,専門学校程度で得られる物がどれほどあることか.リスクに見合うメリットがあるかは疑問だ.

やっぱり、オブジェクト指向とか、きちんと理解していないので、基礎からやり直したいんです.

その心意気や良し.
しかし「ソフトウエア開発の技術的な基礎をみっちり勉強したい」という意味でなら,まあ行くまでもないかな.

オブジェクト指向などクソの役にも立ちません!

OOPを知らない人ほどこういうことを言う*1.『銀の弾丸』ではないが無用の長物でもない.

業務システム開発やWebシステム開発において、オブジェクト指向の導入?により、飛躍的に生産性が向上するといったことは(あまり)ありません。

これは事実.使っている人の能力が低すぎるからOOPを使いこなせていない.また使いこなせる人材を大切にせず,使い捨てにされているのも原因の一つ.あとはアレかな.こういう太古の「生きている化石」が,化石化した知識を振りかざして,自分たちが理解できないという理由で新技術の導入を頑なに拒むことかな.*2

VBVB.NETになったからって、何か変わりましたでしょうか?。PHPのバージョンが4から5になったからって何か変わりましたでしょうか?。

これらで何が変わったかと言えば「互換性が無くなった」の一言に尽きる.経営者的には些細な問題なのかもしれないが,開発現場的には致命的な変更だ.

さて本題だが,VBPHPも非オブジェクト指向言語だよね.非オブジェクト指向言語プログラマーが,ある日言語が変わった途端にオブジェクト指向のことを理解して使いこなせるようになるなどということはない.それはまるで「昨日野球を始めたばかりの小学生が,プロ用のバットやスパイクを使うことでプロ野球選手と互角に試合ができるようになる」と言っているようなものだ.

普通は今後も非オブジェクト指向的な書き方を踏襲することになる.これはかつてC++でもあったことだし,今でもあるだろう.

開発のスキルをUPさせるためには、とにかく、コードを書くこと。寝ても覚めてもコードを書くことです。
「流行ってる技術=役に立つ技術」というわけではない

これも『字義通りには』事実です.ただし書いてさえいれば理解できる,スキルは自然と上がると思っているので有れば,それはあまりに楽観的に過ぎる.「流行ってる技術=役に立つ技術」ではないが,「流行っている技術=役に断たない技術」でもない.OOPに関して言えば流行っているというよりは,既に当たり前になりすぎていて注目されないくらいだし,間違いなく実践的な役に立つ技術だ.JavaRubyくらいの言語を使いこなしていれば,あまりにも当たり前に至る所でOOPが利用されている.


たしかに今や「オブジェクト指向」はバズワードにされてしまった.だがそのこととは関係なく,(本物の)OOP技術はそこに存在する.開発効率を上げたければOOP技術を知らないでは済まされない.もっと言えば,それを理解していないソフトウエア開発者は二流だ*3.だがそれを学ぶ方法として,専門学校へ行ったり,セミナーに参加したりというのはお奨めできない.今の日本で,それを教えられる講師が存在するか疑問だからだ.

良い専門書を読むこと*4.良いコードを読むこと.良いコードを書くこと.英語を学ぶこと*5.そして,優れた開発者と巡り会い教えを請う,或いは共に切磋琢磨すること*6

こういったことでしか身につける術はないだろう.

*1:理解してない人が,誤った「オレオレオブジェクト指向」を広めてくれた反動だとも思う.最初にああいうのに触れてしまうと悲惨だ.

*2:時代から取り残された老兵は,さっさと消え去って欲しいものだ.

*3:それだけを理解していても一流ではない.「オブジェクト指向」を振りかざす人に三流が多いのも事実.

*4:http://d.hatena.ne.jp/JavaBlack/20060224#p2
http://d.hatena.ne.jp/JavaBlack/20050909#p1

*5:良い専門書,良いホームページの多くが英語で書かれている.英語が分からないということは,手に入る情報が量的に1/3以下,質も含めると1/10以下になるのと同義と思ってもらって良い.

*6:今の日本ではこれが一番難しい.ほとんど不可能と言って良い.救いのない話だ.