情報システムが、全体として、健全に、成長し続けるための実践方法を、いろいろパターン(候補)として書いてみた。
・成長し続ける全体 a growing whole
・将来像を語り続ける
・事業の言葉 enterprise language
・不健全さを取り除く
・ひとつずつ配置する
・周囲に気を配る
・人に気を配る
これを、ひっくり返せば、それが、システムの成長を歪める、アンチパターン集になる。
作ったまま、できるだけ手を加えない。
動いていて、使われているシステムに手を加えない、というのも、ひとつの考え方。
でも、システムは、手を入れ続けないと、かならず、腐敗していくと思う。
「現状の維持」というのは、幻想だと思っている。
成長を続けているか、腐敗が進んでいるか、どちらかしかない。
放置しておくと、システムは、必ず劣化していく。
利用者のニーズや事業環境は、日々変化している。企業のシステムが「固定」され、成長が止まっていて良い理由はない。
また、IT(情報技術)も、日々、変化を続けている。
放置したシステムは、数年もたてば、アプリケーションの基盤( ハード、OS、ミドルウェア )が、賞味期限切れになり、誰も手を出せない存在になってくる。
こうなると、情報システムは、企業の事業活動の足かせになり、重しになりはじめる。
その既存システムがあるが故に、事業活動や業務のやり方を歪めて、システムに事業・業務をあわせる、という、とんでもない本末転倒になる。
成長が止まったシステムは、事業活動に確実をダメージを与え続ける、負の遺産なんだ。
アプリケーションの追加や変更を行う時に、「将来像」を誰も語らない。アンチパターン。
運よく、その追加や変更が、将来像への歩みになっているかもしれない。
でも、ほとんどの場合、そんなことはありえない。
将来像なしの、ソフトウェアの追加や変更は、全体を歪めるだけで、ソフトウェアの価値をどんどん落としていく。
このアンチパターンの典型が、マイクロソフトのオフィス製品だと思っている。
機能の追加や変更を繰り返してきた。
でも、開発チームが、将来像を語り続けてきたとは、とても思えない。
これからも、バージョンアップを繰り替えすのだろうけど、どういう方向なのか、まったく、想像できない。
いま、マイクロソフトのオフィス製品を使って、活き活きと良い仕事をしている人たちがどのくらいいるんだろう?
企業のアプリケーションで、将来像が見えないのは、もっと深刻。
システムの企画に使うエネルギーと時間、開発のコスト、運用のコスト。
そして、何よりも、使う人が強いられる負担。
「こういう将来像に向かって、システムを成長させているんだ」という、明確な方向感がない、システムの追加・改造は、全体をゆがめ、企業のIT負債を増やし続ける行為。
不健全な成長を助長するには、三つのことをやれば良い。
■ いちどに、あちこち手をつける
■ 周囲を無視する
■ 人を無視する
「全体」としての価値を劣化させるのに、このくらい有効は方法はない。
そう、あちこちで、ばらばらで活動すれば、あっというまに 「全体性」 wholeness を無くすことができる。
サブシステム分割(と並行開発)、疎結合(と並行開発)、分散処理(と並行開発)とかの名前を使って、積極的に「全体性」を殺したがるアーキテクトやプロジェクトのマネージャがいる。
同時に複数の開発を進めることは、それぞれの成果の「全体の中での役割、位置づけ」を評価したり、調整することが、極端に難しくなる。
「開発中」のものは、評価できない。
開発が終わって、現場に配置して、実際に使ってみて、はじめて、「全体の中ので役割、位置づけ」を評価できる。
そういう、実戦配備後の評価を、フィードバック情報にして、次の開発プロセスにつなげていく。
コードを変更するときに、ソースのあちこちを同時にいじってしまうのは、悪夢。
一つずつ、変更し、確認しながら、次に進むのが鉄則。
それが、一行のコードという小さい単位だけでなく、アプリケーションの追加や変更という単位でも、鉄則。
自分の担当する部分、自分たちの担当する範囲、このプロジェクトの範囲、...
ソフトウェア開発は、「範囲」を切って、その内側に集中し、外側は「無視」する。
これは、この業界に蔓延している病気みたいなアンチパターン。
「外部とのインタフェースをきちんと決める」ことも、本質は「それ以外は考えない」という思想。
これが、いかに「全体性」を損ねているかに気がつくべきなんだ。
個々の部品をしっかりつくって、部品と部品の接合面をしっかりつくる。これはたいせつ。
でも、それをやっても、全体として、その部品が素敵な役割を演じることができるわけではない。
部品の役割、価値を決める要因のは、その部品ではなく、部品の周囲にある。
その「部品」は、全体の中の一部であり、それは、「切り出して取り出せる」ものなんかじゃない。
もちろん、部品を作る時は、切り出した状態で、作る。
でも、それを、全体の中に収めるときは、それは、周囲との関係や調和を、慎重に見計らいながら、配置していくことがたいせつ。
お店でみたときにはよいと思った家具や小物を、実際に、家に持ち帰ってみると、しっくりこない、ことがある。
隣、前後左右、上下、...
そういう周囲との関係を、無視して、どんと乱暴に持ち込んだ「部分」は、システムを強烈にゆがめ、全体を破綻させる、強力な手段になる。
自分だけがわかっている。
自分だけが納得している。
自分だけが良いと思っている。
...
こうやって、ソフトウェアを作っていけば、全体がろくでもなくなるのは、誰でもわかるはず。
でも、実際には、多かれ少なかれ、こんな開発が横行している。
周囲を意識できない、他人を意識できない、後々に関わる人のことなんて、頭の片隅にもない。
ようするに「幼稚」ということ。
5歳の子供は、活き活きとはしているけど、とっても、狭い世界、かつ保護された環境で生きている
大人が活き活きと良い仕事をする、ということは、もっと、広い世界、いろいろな人々との関わりあいの中で、できるから「大人」なんだ。しかも、リスクがあり、不安定な環境、将来の見通しの悪さの中で。
システムを不健全にしているのは、この「幼児体質」の技術者が多いのが原因だと思う。
子供が大人になるには、「成人」の儀式が必要。これは、かなり、痛みを伴う。「自分だけが中心」じゃないことを思い知らされる痛み。
人の本質としては、「自分だけが中心」であることは、まちがっていないと思う。
でも、人と人が協働する社会、コミュニティは「自分だけが中心」では成り立たない。
「他の人に気を配る」と、自分も、楽しく、楽になる、という感覚を持てるかどうか。
まあ、これは、技術論ではないけど、ソフトウェア開発だろうが、なんだろうが、人の営みにはかわりはない。
人と人が関わりあう限り、「人への気配り」は、ものごとをうまく進め、結局は、自分にも利益になる、とっても有効な手段。
コードを一行書いたときに、そこに、人に気配りができる技術者が、良い仕事ができる技術者。
「気配り」は、人の振舞や、人の書いたコードから学べるものだし、また、絶対に、学ぶべき、基本のスキルなんだ。
・成長し続ける全体 a growing whole
・将来像を語り続ける
・事業の言葉 enterprise language
・不健全さを取り除く
・ひとつずつ配置する
・周囲に気を配る
・人に気を配る
これを、ひっくり返せば、それが、システムの成長を歪める、アンチパターン集になる。
成長を止める 【アンチパターン】
作ったまま、できるだけ手を加えない。
動いていて、使われているシステムに手を加えない、というのも、ひとつの考え方。
でも、システムは、手を入れ続けないと、かならず、腐敗していくと思う。
「現状の維持」というのは、幻想だと思っている。
成長を続けているか、腐敗が進んでいるか、どちらかしかない。
放置しておくと、システムは、必ず劣化していく。
利用者のニーズや事業環境は、日々変化している。企業のシステムが「固定」され、成長が止まっていて良い理由はない。
また、IT(情報技術)も、日々、変化を続けている。
放置したシステムは、数年もたてば、アプリケーションの基盤( ハード、OS、ミドルウェア )が、賞味期限切れになり、誰も手を出せない存在になってくる。
こうなると、情報システムは、企業の事業活動の足かせになり、重しになりはじめる。
その既存システムがあるが故に、事業活動や業務のやり方を歪めて、システムに事業・業務をあわせる、という、とんでもない本末転倒になる。
成長が止まったシステムは、事業活動に確実をダメージを与え続ける、負の遺産なんだ。
将来像を語らない 【アンチパターン】
アプリケーションの追加や変更を行う時に、「将来像」を誰も語らない。アンチパターン。
運よく、その追加や変更が、将来像への歩みになっているかもしれない。
でも、ほとんどの場合、そんなことはありえない。
将来像なしの、ソフトウェアの追加や変更は、全体を歪めるだけで、ソフトウェアの価値をどんどん落としていく。
このアンチパターンの典型が、マイクロソフトのオフィス製品だと思っている。
機能の追加や変更を繰り返してきた。
でも、開発チームが、将来像を語り続けてきたとは、とても思えない。
これからも、バージョンアップを繰り替えすのだろうけど、どういう方向なのか、まったく、想像できない。
いま、マイクロソフトのオフィス製品を使って、活き活きと良い仕事をしている人たちがどのくらいいるんだろう?
企業のアプリケーションで、将来像が見えないのは、もっと深刻。
システムの企画に使うエネルギーと時間、開発のコスト、運用のコスト。
そして、何よりも、使う人が強いられる負担。
「こういう将来像に向かって、システムを成長させているんだ」という、明確な方向感がない、システムの追加・改造は、全体をゆがめ、企業のIT負債を増やし続ける行為。
不健全さを助長する 【アンチパターン】
不健全な成長を助長するには、三つのことをやれば良い。
■ いちどに、あちこち手をつける
■ 周囲を無視する
■ 人を無視する
いちどに、あちこち手をつける 【アンチパターン】
「全体」としての価値を劣化させるのに、このくらい有効は方法はない。
そう、あちこちで、ばらばらで活動すれば、あっというまに 「全体性」 wholeness を無くすことができる。
サブシステム分割(と並行開発)、疎結合(と並行開発)、分散処理(と並行開発)とかの名前を使って、積極的に「全体性」を殺したがるアーキテクトやプロジェクトのマネージャがいる。
同時に複数の開発を進めることは、それぞれの成果の「全体の中での役割、位置づけ」を評価したり、調整することが、極端に難しくなる。
「開発中」のものは、評価できない。
開発が終わって、現場に配置して、実際に使ってみて、はじめて、「全体の中ので役割、位置づけ」を評価できる。
そういう、実戦配備後の評価を、フィードバック情報にして、次の開発プロセスにつなげていく。
コードを変更するときに、ソースのあちこちを同時にいじってしまうのは、悪夢。
一つずつ、変更し、確認しながら、次に進むのが鉄則。
それが、一行のコードという小さい単位だけでなく、アプリケーションの追加や変更という単位でも、鉄則。
周囲を無視する 【アンチパターン】
自分の担当する部分、自分たちの担当する範囲、このプロジェクトの範囲、...
ソフトウェア開発は、「範囲」を切って、その内側に集中し、外側は「無視」する。
これは、この業界に蔓延している病気みたいなアンチパターン。
「外部とのインタフェースをきちんと決める」ことも、本質は「それ以外は考えない」という思想。
これが、いかに「全体性」を損ねているかに気がつくべきなんだ。
個々の部品をしっかりつくって、部品と部品の接合面をしっかりつくる。これはたいせつ。
でも、それをやっても、全体として、その部品が素敵な役割を演じることができるわけではない。
部品の役割、価値を決める要因のは、その部品ではなく、部品の周囲にある。
その「部品」は、全体の中の一部であり、それは、「切り出して取り出せる」ものなんかじゃない。
もちろん、部品を作る時は、切り出した状態で、作る。
でも、それを、全体の中に収めるときは、それは、周囲との関係や調和を、慎重に見計らいながら、配置していくことがたいせつ。
お店でみたときにはよいと思った家具や小物を、実際に、家に持ち帰ってみると、しっくりこない、ことがある。
隣、前後左右、上下、...
そういう周囲との関係を、無視して、どんと乱暴に持ち込んだ「部分」は、システムを強烈にゆがめ、全体を破綻させる、強力な手段になる。
人を無視する 【アンチパターン】
自分だけがわかっている。
自分だけが納得している。
自分だけが良いと思っている。
...
こうやって、ソフトウェアを作っていけば、全体がろくでもなくなるのは、誰でもわかるはず。
でも、実際には、多かれ少なかれ、こんな開発が横行している。
周囲を意識できない、他人を意識できない、後々に関わる人のことなんて、頭の片隅にもない。
ようするに「幼稚」ということ。
5歳の子供は、活き活きとはしているけど、とっても、狭い世界、かつ保護された環境で生きている
大人が活き活きと良い仕事をする、ということは、もっと、広い世界、いろいろな人々との関わりあいの中で、できるから「大人」なんだ。しかも、リスクがあり、不安定な環境、将来の見通しの悪さの中で。
システムを不健全にしているのは、この「幼児体質」の技術者が多いのが原因だと思う。
子供が大人になるには、「成人」の儀式が必要。これは、かなり、痛みを伴う。「自分だけが中心」じゃないことを思い知らされる痛み。
人の本質としては、「自分だけが中心」であることは、まちがっていないと思う。
でも、人と人が協働する社会、コミュニティは「自分だけが中心」では成り立たない。
「他の人に気を配る」と、自分も、楽しく、楽になる、という感覚を持てるかどうか。
まあ、これは、技術論ではないけど、ソフトウェア開発だろうが、なんだろうが、人の営みにはかわりはない。
人と人が関わりあう限り、「人への気配り」は、ものごとをうまく進め、結局は、自分にも利益になる、とっても有効な手段。
コードを一行書いたときに、そこに、人に気配りができる技術者が、良い仕事ができる技術者。
「気配り」は、人の振舞や、人の書いたコードから学べるものだし、また、絶対に、学ぶべき、基本のスキルなんだ。