<< 健全に成長するシステム | main | エンタープライズアプリケーションのモデリングパターン >>

システムの歪め方 【アンチパターン】

情報システムが、全体として、健全に、成長し続けるための実践方法を、いろいろパターン(候補)として書いてみた。

・成長し続ける全体 a growing whole

・将来像を語り続ける
・事業の言葉 enterprise language

・不健全さを取り除く
・ひとつずつ配置する
・周囲に気を配る
・人に気を配る

これを、ひっくり返せば、それが、システムの成長を歪める、アンチパターン集になる。

成長を止める 【アンチパターン】


作ったまま、できるだけ手を加えない。

動いていて、使われているシステムに手を加えない、というのも、ひとつの考え方。

でも、システムは、手を入れ続けないと、かならず、腐敗していくと思う。

「現状の維持」というのは、幻想だと思っている。

成長を続けているか、腐敗が進んでいるか、どちらかしかない。

放置しておくと、システムは、必ず劣化していく。

利用者のニーズや事業環境は、日々変化している。企業のシステムが「固定」され、成長が止まっていて良い理由はない。

また、IT(情報技術)も、日々、変化を続けている。
放置したシステムは、数年もたてば、アプリケーションの基盤( ハード、OS、ミドルウェア )が、賞味期限切れになり、誰も手を出せない存在になってくる。

こうなると、情報システムは、企業の事業活動の足かせになり、重しになりはじめる。
その既存システムがあるが故に、事業活動や業務のやり方を歪めて、システムに事業・業務をあわせる、という、とんでもない本末転倒になる。

成長が止まったシステムは、事業活動に確実をダメージを与え続ける、負の遺産なんだ。

将来像を語らない 【アンチパターン】


アプリケーションの追加や変更を行う時に、「将来像」を誰も語らない。アンチパターン。

運よく、その追加や変更が、将来像への歩みになっているかもしれない。
でも、ほとんどの場合、そんなことはありえない。

将来像なしの、ソフトウェアの追加や変更は、全体を歪めるだけで、ソフトウェアの価値をどんどん落としていく。

このアンチパターンの典型が、マイクロソフトのオフィス製品だと思っている。

機能の追加や変更を繰り返してきた。
でも、開発チームが、将来像を語り続けてきたとは、とても思えない。
これからも、バージョンアップを繰り替えすのだろうけど、どういう方向なのか、まったく、想像できない。

いま、マイクロソフトのオフィス製品を使って、活き活きと良い仕事をしている人たちがどのくらいいるんだろう?

企業のアプリケーションで、将来像が見えないのは、もっと深刻。

システムの企画に使うエネルギーと時間、開発のコスト、運用のコスト。
そして、何よりも、使う人が強いられる負担。

「こういう将来像に向かって、システムを成長させているんだ」という、明確な方向感がない、システムの追加・改造は、全体をゆがめ、企業のIT負債を増やし続ける行為。

不健全さを助長する 【アンチパターン】


不健全な成長を助長するには、三つのことをやれば良い。

■ いちどに、あちこち手をつける
■ 周囲を無視する
■ 人を無視する

いちどに、あちこち手をつける 【アンチパターン】


「全体」としての価値を劣化させるのに、このくらい有効は方法はない。

そう、あちこちで、ばらばらで活動すれば、あっというまに 「全体性」 wholeness を無くすことができる。

サブシステム分割(と並行開発)、疎結合(と並行開発)、分散処理(と並行開発)とかの名前を使って、積極的に「全体性」を殺したがるアーキテクトやプロジェクトのマネージャがいる。

同時に複数の開発を進めることは、それぞれの成果の「全体の中での役割、位置づけ」を評価したり、調整することが、極端に難しくなる。

「開発中」のものは、評価できない。

開発が終わって、現場に配置して、実際に使ってみて、はじめて、「全体の中ので役割、位置づけ」を評価できる。

そういう、実戦配備後の評価を、フィードバック情報にして、次の開発プロセスにつなげていく。

コードを変更するときに、ソースのあちこちを同時にいじってしまうのは、悪夢。
一つずつ、変更し、確認しながら、次に進むのが鉄則。

それが、一行のコードという小さい単位だけでなく、アプリケーションの追加や変更という単位でも、鉄則。

周囲を無視する 【アンチパターン】


自分の担当する部分、自分たちの担当する範囲、このプロジェクトの範囲、...

ソフトウェア開発は、「範囲」を切って、その内側に集中し、外側は「無視」する。
これは、この業界に蔓延している病気みたいなアンチパターン。

「外部とのインタフェースをきちんと決める」ことも、本質は「それ以外は考えない」という思想。

これが、いかに「全体性」を損ねているかに気がつくべきなんだ。

個々の部品をしっかりつくって、部品と部品の接合面をしっかりつくる。これはたいせつ。

でも、それをやっても、全体として、その部品が素敵な役割を演じることができるわけではない。

部品の役割、価値を決める要因のは、その部品ではなく、部品の周囲にある。

その「部品」は、全体の中の一部であり、それは、「切り出して取り出せる」ものなんかじゃない。

もちろん、部品を作る時は、切り出した状態で、作る。

でも、それを、全体の中に収めるときは、それは、周囲との関係や調和を、慎重に見計らいながら、配置していくことがたいせつ。

お店でみたときにはよいと思った家具や小物を、実際に、家に持ち帰ってみると、しっくりこない、ことがある。

隣、前後左右、上下、...

そういう周囲との関係を、無視して、どんと乱暴に持ち込んだ「部分」は、システムを強烈にゆがめ、全体を破綻させる、強力な手段になる。

人を無視する 【アンチパターン】


自分だけがわかっている。
自分だけが納得している。
自分だけが良いと思っている。
...

こうやって、ソフトウェアを作っていけば、全体がろくでもなくなるのは、誰でもわかるはず。

でも、実際には、多かれ少なかれ、こんな開発が横行している。

周囲を意識できない、他人を意識できない、後々に関わる人のことなんて、頭の片隅にもない。

ようするに「幼稚」ということ。

5歳の子供は、活き活きとはしているけど、とっても、狭い世界、かつ保護された環境で生きている

大人が活き活きと良い仕事をする、ということは、もっと、広い世界、いろいろな人々との関わりあいの中で、できるから「大人」なんだ。しかも、リスクがあり、不安定な環境、将来の見通しの悪さの中で。

システムを不健全にしているのは、この「幼児体質」の技術者が多いのが原因だと思う。

子供が大人になるには、「成人」の儀式が必要。これは、かなり、痛みを伴う。「自分だけが中心」じゃないことを思い知らされる痛み。

人の本質としては、「自分だけが中心」であることは、まちがっていないと思う。

でも、人と人が協働する社会、コミュニティは「自分だけが中心」では成り立たない。

「他の人に気を配る」と、自分も、楽しく、楽になる、という感覚を持てるかどうか。

まあ、これは、技術論ではないけど、ソフトウェア開発だろうが、なんだろうが、人の営みにはかわりはない。

人と人が関わりあう限り、「人への気配り」は、ものごとをうまく進め、結局は、自分にも利益になる、とっても有効な手段。

コードを一行書いたときに、そこに、人に気配りができる技術者が、良い仕事ができる技術者。

「気配り」は、人の振舞や、人の書いたコードから学べるものだし、また、絶対に、学ぶべき、基本のスキルなんだ。

コメント
コメントする









この記事のトラックバックURL
トラックバック
仲間の感情を伴う記憶
拙稿の見解では、私たちが思っている自分の人生というものは、このような四層構造をな
  • 哲学はなぜ間違うのか?
  • 2010/05/11 10:05 PM
calendar
     12
3456789
10111213141516
17181920212223
24252627282930
31      
<< March 2024 >>
システム設計日記を検索
プロフィール
リンク
システム開発日記(実装編)
有限会社 システム設計
twitter @masuda220
selected entries
recent comment
recent trackback
categories
archives
others
mobile
qrcode
powered
無料ブログ作成サービス JUGEM