July 03, 2003

Simple is best, hack の哲学。

[ SE ]
現状のJavaによるシステム開発は、オブジェクト指向言語は使っているけれどもオブジェクト指向デザインにはなっていなかったり、UMLと繰り返し型開発スタイルを採用してはいるけれども、なぜかシステムの開発効率も拡張性や再利用性も高まっていない(かえってUMLなどの新技術の採用で学習コストが上がっている)という状況も見聞きします。

UMLを用いたオブジェクト指向開発なんて言うと聞こえは良いのですが、現実はこの引用文にもあるとおり、それが生産性を下げる原因、要はオーバースペックなんてのは良くある話です。確かにある一定の規模のプロジェクトになってくると、ある時を境にオブジェクト指向開発が威力を発揮しはじめるポイントというのが存在したりします。

ですが、一生懸命UML図を描いて「このクラスはこうあるべきだ」なんていう理想論を振りかざして美しい設計/コードを書くことに徹した結果、その後保守拡張など一切なくて、それまでの苦労がなんの意味がなかった、てなこともこれまた良くある話です。

山形浩生氏は次のように記しています。

「ハッカーは、正しいことを雑にやる。スーツどもは、まちがったことを綿密にやる」という格言のようなものがあるけれど、まさにこの「正しいことを雑に」が hack ってことなの

本来見るべきところを見誤りそうになったとき、見誤ってしまったとき、この記述を思い出します。「ああ、なんか変な方向に頭が傾いてるなあ」と。

ハッカーの世界、Unix の世界には、「Simple is best」という哲学がある。既存のものを使ってさらに積み上げるのをよしとする文化がある。きまじめさよりはひらめきを愛する気風がある。あるいはそれ以外でも、半年かけて完璧なものをつくるより、その場でいい加減でも使えるものが必要な場面ってのはたくさんある。そんなときに、 hack というのは最高のほめことばだ。

特に運用系の仕事をしているときに、「その場でいい加減でも使えるものが必要な場面」に遭遇することが頻繁にあります。障害が発生してその原因を突き止めて修復しなければならない、そんな状況とか。あるいはあのアプリケーションはどのぐらい使われてるかちょっと知りたいんだよねなどと軽く依頼があったようなとき。

自分の仕事をちょっと効率的にしてくれるようなツールを作るとき、既存のものにちょっと細工してやれば面白そうなものが作れそうなとき、そんなときも「hack」の出番です。スクリプト言語なんかで問題をささっと解いてやることがうまくできたりすると、気持ちがいいものです。案外、人が喜ぶ生の声が聞けるのもそんな瞬間だったりします。

ただ、「Simple is best」だし最新の開発技術にこだわる必要はないわけだから、学ばなくていいやという考えにならないように気をつけなければとも日々思います。新しい技術を学ぶことを面倒くさがって、それを正当化するために「銀の弾丸は無い」と言うのは誰にでもできることです。僕の目指ざしたいのは、大型クレーンで高層ビルを建てることができるけど、ナイフと接着剤で「お?」っと注目される小粋なオブジェを作れる技術者かなと思っています。まだまだ、果てしなく遠い道のりですけれど。

Posted by naoya at July 3, 2003 12:58 AM | トラックバック (0)  b_entry.gif
トラックバック [0件]
TrackBack URL: http://mt.bloghackers.net/mt/suck-tbspams.cgi/244
コメント [4件]

まだ開発効率や再利用性のある開発には携わっていないなぁ。

とりあえずやってみようと、ちまちま一人でやってると(それさえ ほとんどやってないが。)、それらの有効性とかありがたみが感じられないよね。
研修では多少感じられたから、それを思い出すと「あ、意識しなきゃ、勉強しなきゃ」と思うが。

と、システム系話に食いつきました。

[1] Posted by: nari at July 3, 2003 11:34 PM [返信]

意識しなきゃ、勉強しなきゃって思う反面、勉強してもなかなかそれを生かす場がないと、せっかくの知識がどっかにいってしまうよね。若いうちに色々経験積んでおきたいなあと思う今日この頃ですよ。

[2] Posted by: naoya at July 4, 2003 12:03 AM [返信]

オブジェクト指向まわりの話、耳が痛い(^^;
いろいろ書きたいことがあるけど、一言でいうと「結局再利用性なんか同じプロジェクト内でしか通用しない」と思う(苦笑)
UMLやXPなんてあくまでツールなんだから、必要に応じて使わないとね。

新技術習得の話だけど、ツールでもなんでもなにかちょっとしたモノを作る時に、技術的テーマを決めて取り組むとよい感じです。
「今回はデータをXML+DOMで扱おう」とか「このライブラリ使ってみよう」とか。
規模が小さいので重くないし、新鮮な気持ちで取り組めます。
いざとなったら従来の手法でささっと作れるから、いつでも逃げれるし(^^

勉強する時間は自分で作り出さないとねー。
(そういうオレは最近、「PHP+MySQL」か「Perl+shスクリプト」ばっかりだけど(^^;)

[3] Posted by: ooba at July 8, 2003 02:49 AM [返信]

結局のところ適材適所ってことなんでしょうね。つまらない結論ですけど。

技術的テーマを決めて取り組むというのは分かる気がします。その反面、テーマに縛られてしまったばかりにこのエントリのようなことに陥ってしまうこともしばしば。w

[4] Posted by: naoya at July 8, 2003 11:52 PM [返信]