<< 事業の言葉 【パターン】 | main | システムの歪め方 【アンチパターン】 >>

健全に成長するシステム

「事業の言葉」で、「将来像」を語り続けることで、エンタープライズのITシステムが、「全体 (wholeness)」として「成長しつづける」。

事業そのものも、将来像で駆動する。 事業のための道具である、ITシステム、あるいは「情報空間」も、「将来像」で駆動していかなきゃね。

企業のシステムは、ほっておいても、勝手に増殖というか、肥大化していく。

問題は、それが、「健全」な成長かどうか?

不健全さを取り除く【パターン】


実際は、アプリケーションを追加するたび、修正するたびに、どんどん、システム全体が不健全になっていく傾向が強い。

情報システム全体、情報空間全体は、「健全」に発展させるには、「健全」さをいつも意識しなきゃ。

でも、実際問題として、「健全って何?」の答えを関係者で、共有するのは、難しい。

それよりは、多くの人が共通に認識しやすい「不健全」な状態を、地道に取り除き続ける、というのが「不健全を取り除く」パターン。

wholeness(全体)

何が、不健全か、というのも、まあ、簡単ではないけど、「健全」とは何か?、よりは、「不健全」とは何か?、のほうが、まだ、議論がかみあう(と思う)。

何かソフトウェアやITシステムに手を加える時、その活動と結果は、すべて「不健全を取り除く」方向への歩みであるべきなんだ。

「不健全さを取り除く」パターンを実現するために、三つのサブパターンを実践する。

一つずつ配置する【パターン】


一行のコード、ひとつのクラス、パッケージ、アプリケーション、サブシステム、...

どんな単位でもいいけど、システムに要素を追加したり、要素を変更するということは、情報空間全体を、変えることになる。

たった一行のコード追加が、全体や、その将来像に、大きく影響するとは思えない。でも、「何か影響」はするものなんだ。

あるいは、同じ一行のコードの追加でも、その内容によって、システム全体が、「ゆがむ」方向に変わるか、「整う」方向に変わるかの分岐点になっている。

ひとつのクラスの追加は、将来像に近づいたのか?それとも、遠ざかってしまったのか?

ちょっとした変更でも、どう変更するかで、システム全体の健全性や将来像が変わってしまう、ということを、いつも意識することがたいせつ。

そのためには、

◎一つ追加・変更する前に、「全体」の健全性を考える
◎一つ追加・変更したら、「全体」の健全性がどうなったか、評価する。
◎「健全性」評価の結果をネタに、次のアクションを検討する。

システムが大きくなてくると、あちこちで同時に、いろいろな追加・変更が行われる。

でも、できる限り、「ひとつ配置してみる」。その結果をフィードバックして、次の「ひとつ」に取り組む、という行動様式をたいせつにすべき。

現代の都市が、不健全な膨張を続けるのは、短期に、あちこちで、いろいろな追加や変更をやってしまうから。
しかも、やりっぱなし。つまり、やった結果が、全体にとって、どういう意味を与えたかを、誰も振り返らずに、次から次へと、何かをやりつづける。

これは、情報システムでも、陥りがちな、アンチパターン。

追加や変更は、一度にひとつずつ。
そして、追加や変更を、全体の視点、将来像の視点で、評価しながら、次のアクションを考える、ことが大切。

ヨーロッパで、安らぎを感じる街なみが多いのは、いちどに、あちこちで、好き勝手な開発とかを、やっていないから。

誰かが、家のちょっとした修繕をしても、まわりの人と、さりげなく、「こんな感じにしようと思うがどうだ?」とか、「いい感じだね」とか、「前にジョンがやった仕事を見たかい?」とか、そういう会話を通じて、まち全体がもっている、共通の「ここちよさ」感や、健全さを、長年にわたって、維持し、強化しつづけている結果なんだと思う。

情報システムも、ちょっとした追加や変更でも、みんなで、「こんな感じにしよう」「こんな感じはどう?」という話を、事業の言葉で、全体像、将来像を日常の中で、話しながら、「一つずつ配置」し、フィードバックを得て、次に取り組む、を繰り返すことで、システム全体を健全に、保ち、将来像に向かって、着々と歩んでいくことができる。

周囲に気を配る【パターン】


全体を健全に保つ方向にするには、追加したものの、まわりとの調和、まわりへの影響に気を配ること。

一行のコードは、そのコードが良いかどうか以上に、前後のコードとの調和がとれているんだろうか?
なにか、違和感、突出感はないだろうか?

クラスを追加とした時に、パッケージ内で他のクラスとの感じは?
パッケージを追加したら、アプリケーション全体の中でのおさまりは?
サブシステムを追加するなら、それで、エンタープライズ全体のシステムが、歪みが軽減する?
...

何か、システムの要素を追加・変更するときは、常に、周囲に気を配ることがたいせつ。
周囲との関連こそ、一行のコード、一つのクラスの価値を決めるポイント。

すべて、周囲の既存のものにあわせるわけではない。

たてえば、周囲がかなりゆがんだ、不健全な状況であれば、そいつらの、今後の健全な方向への変化の呼び水になる、ということを意識して、コードを追加する。

そのコードがあれば、まわりが、いかにも不健全に見えて、自然と、歪みを取り除きたくなるようなコードを書く。

あるいは、まだ、まったく存在していない「未来のお隣さん」も意識すべき。

隣の空き地に、お隣さんが、家を建てようとしたとき、すてきな街並みを自然に意識したくなるような、そんな家を、自分が今、建てている、という自覚。

隣も、裏も空き地だったら、なんでも自由に建てていいわけではない。
未来の隣人と、未来の裏の住人と、健全な関係を生み出すことが、街全体(システム全体)を健全にする。

今自分が書いているクラスが、周囲からどう見えて、どういう存在になるか、なりたいか、ということを、いつも気にすること

だいじなのは、クラスの中ではない。
「周囲からの見え方」こそ、もっとも気にすべきこと。
外からみて、意味不明なクラスは、それだけで、落第、ということ。

「周囲に気を配る」ことの積み重ねが、全体を健全に発展させる。

周囲を無視した追加・変更は、全体の歪みを増し、確実に、ITの負債を増やしていく行動。

一行のコードの追加でもあっても、「周囲に気を配る」ことが、全体が、健全に成長し続けるために、効果的なやり方なんだ。

もちろん、これは、一人が勝手に判断することではない。
周囲からどう見えるか、周囲の環境の中に、どうおさまって見えるかを、いつも、関係者で、語り合うことがたいせつ。

人に気を配る【パターン】


周囲の中でも「人」こそが、特別な存在。

情報システムは、誰か「人」のためのシステム。その人が活き活きと良い仕事ができる道具・環境を提供することが、エンタプライズITシステムの目的。

使う人が、この機能をどう感じているか?
この情報の見せ方が、良い仕事のために、役に立っているのか?
ないよりも、使う人は、喜んで使ってくれているのか?

こういう、使う人への気配りを、いつも意識しつづけて、「一つずつ配置」していく。

配置のたびに「人」の反応を受け止めて、次の行動にネタにする。

事業全体が、健全に成長している企業であれば、良い仕事をするため活き活きと働く人たちが喜ぶシステムを提供しつづければ、ITシステム全体も、健全に成長できる。

事業全体に、いろいろな歪みがあれば、それを、システム造りを機会に、みんなで、問題意識をもって語り合うことで、事業も、システムも、健全さを取り戻す方向に進むことができる。

人が活き活きと良い仕事をしている、という将来像をみんなで共有し、語り続けることが、情報システム全体を、健全に成長させ続ける、原動力になる。

技術者が活き活きと良い仕事をするために


ソフトウェアは、利用する人だけが、関係者ではない。

ソフトウェアを設計し、実装し、また、修正する「技術者」も、重要な登場人物。

もちろん、人としての「技術者」には、徹底的に気を配るべき。

一行のコードを書く時、それは、レビューする人、デバッグする人、既存コードを調査する人、改良を試みる人、に、気を配ったコードになっている?

クラス、パッケージ、レイヤ、...

それは、コードを触り続けていく、さまざまな登場人物たちに、気を配った内容になっているだろうか?

コードの追加、変更を、目先のバグ解消、指示された機能の実現のためだけで行っていると、そのコードは、その場の自分だけのコードになっちゃう。

そうじゃなくて、システム全体を健全に成長させていくためには、どのコードも、誰がいつそこに触れても、心地よさを感じ、活き活きと楽しい仕事ができるように書くべきなんだ。

実際、オープンソースとかで、そういう気配りを感じるコードも多い。
他の人が触って、みんなで成長させていく、ということが、コミュニティの基本価値になっているチームのソフトウェアはそうなっている。

それは、エンタープライズアプリケーションソフトウェアのソースコードでも同じことなんだ。

民間企業も「事業を成功させて社会に貢献する」という使命をもった、人の集まり、つまりコミュニティ。

ボランティアベースの活動よりも、むしろ、「その活動をきちんと続けていく」ために、収益を管理する仕組みがしっかりしている分だけ、健全なコミュニティなんだ。

時間の経過とともに、一つの企業や事業体のエンタープライズアプリケーションソフトウェアに関与するメンバーは入れ替わっていく。そして、新しく参加するメンバーが、活き活きと良い仕事をできるように気配りしたソースコードを、書くことを、共通の価値観にすること。

たとえ、期間限定、一回こっきりの受託開発や、派遣の仕事だったとしても、プロの誇りとして、その企業コミュニティに、大きな財産を残していくことにこだわる。 それが、自分自身も活き活きと良い仕事をするエネルギー源になる。

コードを書くときは、いつも、「人に気を配る」こと。
その積み重ねが、ソフトウェアシステム全体が、健全に成長しつづけることにつながる。

コメント
コメントする









この記事のトラックバックURL
トラックバック
calendar
 123456
78910111213
14151617181920
21222324252627
28293031   
<< May 2017 >>
システム設計日記を検索
プロフィール
リンク
システム開発日記(実装編)
有限会社 システム設計
twitter @masuda220
selected entries
recent comment
recent trackback
categories
archives
others
mobile
qrcode
powered
無料ブログ作成サービス JUGEM