|
前回の記事では、是か非かについては一切書いていない事をあらためて読み返して気づきまして、急遽その2を書くことにしました。
是か非かと問われると、是だと私は答えます。
でも、大中小のソフトハウス(殆どのソフトハウス)では、非なのです。
それはただでさえ多い残業,休日出勤,持ち帰り作業というとても余裕が無い環境で働いている事が原因だと考えます。
要するに、オブジェクト指向なんて考える余裕も無いし、初期コストが従来より多少かかったり、何よりアジャイル的な手法で開発していくために何時終了するのかが今までの工程管理に適わないからというのが理由だと考えます。
Smalltalkで開発している人の話を聞くと、客先の方にヒアリングしながらメモ代わりにコードをジェネレータで掃き出して、「こんな感じですけどどうでしょう」的に仕事を進めておられるという話しを聞きました。
これはSmalltalkだからこそ出来る技なんです(コードビルダーと一体化した環境)が、そういうラピッドプロトタイピングを行なうという事は、工程管理する上で不向きなんですよね。
ある程度のものを客先で作って動きを見てもらいながら作成してしまい、社に戻り再分析,再設計,ビルド,デバッグを繰り返しながら品質と不要なモノのそぎ落とし不足分の足し込み行なっていくというスパイラルをするわけです。
なので、仮に一週間のある人の作業を毎日同じ時間に状況を聞くと、常に「再設計中です」とか「再ビルド中です」なんて笑えない報告をされてしまう事になります。
そういった進捗状況を上司が何と感じるかと思うと、「そんな事はとんでもない、今すぐコーディングしてデバッグしなさい」って事になるわけです。
近視眼的にみるとそんな光景になるのですが、やがて社内で作成したリポジトリ上には汎用的に使えるオブジェクトクラスがどんどん蓄積されており、それらを組み合わせれば、一日で請け負ったシステム開発が完了するって事もまんざら夢物語ではありません。
しっかりとした物事とか事象について分析された、実装されたものが増えれば増えるほど、再利用されていくのです。
再利用したオブジェクトクラスを継承して作成したオブジェクトクラスもまた抽象的であれば、そいつも他のプロジェクトで再利用する事が出来ます。
初期コストはかかるものの、その後には簡単にペイ出来るだけのメリットがある事についてまで許容する環境であれば、是非とも導入すべきなんです。
というよりその様な開発形態でトータルなコストダウンをしないと、中国・インドあたりにどんどん仕事が流れていきます。
もう既に中国・インドへの外注委託化が進みつつあったり合弁企業が出来てたりして、国内で作成していたシステムがどんどん国外で生産されるようになり、SEは日本人が行なうというビジネスモデルが出来上がっているという現実もあります。
ですが、SEって何するの?って要するにエンドユーザに対する御用聞きなんですよね。(言葉は悪いですが)
ですが、ノートPC一台持ち込んでお話ししながらこんな感じで如何でしょうって具体的に折衝するのと、客先で打ち合わせした議事録からガリガリ提案書・仕様書を作成するっていう従来の方法でどちらが楽できるかって、明らかに前者の方がコストダウンしているんです。
海外発注してコストダウンするより、現場SEがオブジェクト指向により分析しながらプロトタイプをその場で作成した方が絶対的にコストが低くなるんです。
そのあたりが、トップ・取締役会・管理職・現場のそれぞれが、そういった仕事の仕方を想像できないって所が非常に歯がゆい所ですね。
という話だけは皆聞いてくれるんですが、実際実践させてくれるわけではありませんので、私自身実はこの業種自体に興味が無くなっているのも事実なんです。
うつも結局根本的にそういった限界を感じたからかもしれません。
オブジェクト指向は是か非かという問いに対する答えですけど、私は必須と思ってます。
なんてこったい。
|
はじめまして。
私はオブジェクト指向を開発に取り入れてます。
仕様書もなく三日に一つは変更があるという素晴らしい(!)現場ですが、リファクタリングしながら開発するうちに、機能は増えるがクラス構成は逆に整理されてきて GUI の大変更にも容易に修正が出来る構造になりました。
「リファクタリング」と「オブジェクト指向のこころ」の二冊はお勧めです。
2010/2/23(火) 午前 1:14 [ ひらぽん ]
ひらぽん様
ようこそいらっしゃいました。
これからも宜しくお願いいたします。
> 私はオブジェクト指向を開発に取り入れてます。
それはステキな環境ですね。
リファクタリングの重要性は痛感しております。
但しリファクタリングした際の、正常処理における論理的な整合性を検証する事はやはりテストしか無いと思いますが如何でしょうか。
リファクタリングしても整合性をソース上から検証出来るような、スプレッドシート形式でのIDEを一時期考えてた事がありJavaで途中まで組んでいましたが、日々の生活に追われ結局完成出来ませんでしたけど。。
ですがウォーターフォール型開発形態からアジャイル開発への移行が業界で一般化するのは、後どれ位かかりますかねぇ。
スケジュール管理上、ウォーターフォールの方が管理する側は楽なので、まだ先だと思っています。
結局いびつな構造化手法→データオリエンテッド開発→オブジェクト指向開発という流れで段階的に移行しなかったという所が致命的だったと思ってます。(作業標準という縛りで開発モデルが出来てますから。。)
2010/2/23(火) 午後 8:27 [ かわじゅん ]
準:ペーパー版を、休憩ごとに少しずつ読み...
で、思う事。
> 4.オブジェクト指向は是か否か(その1)
> 5.オブジェクト指向は是か否か(その2)
javaを簡単に書く為のフレームワーク中には、
勝手に、各種のclassを作る物もあり、書いた
本人自身、本来再利用すべきclassの仕様が判ら
ない... だが、お客の要求に従い、早く安価に
仕上げる為に、そういったフレームワークを
導入(時に、依頼者からフレームワークの指定が
あることも...)オブジェクト指向の本来的な意味
から離れていますね。
2010/9/21(火) 午後 4:11 [ Hoo Poo ]
Hoo Poo様
俗に言うGUIビルダーって奴ですね。
あれは、プログラマーの質を低下させるモノという認識です。
メソッド名とかデータ名が自動で出てきたりして、目だけで処理を作成出来てしまうって所が、ちょっと受け入れがたい所です。
分かってて使うのなら良いのですが、「プログラミングとは何ぞやとか分かっていない状態からGUIビルダーを使うってどうよ」って思うのはオジサンだからですかねぇ。
でも絶対プロジェクト毎にクラスを作り、横方向に共有するリポジトリを作っている現場もなかなかお目にかかりませんしねぇ。
全て一から作るってのがアホらしいです。
2010/9/21(火) 午後 10:53 [ かわじゅん ]