縄張りを作ろう!

縄張りを作ろう!

2021年7月28日





縄張りを作ろう!

プログラミングでも仕事でも縄張りを持つことはとても大切です。ところで、プログラミングや仕事で言う縄張りとは何でしょうか、この記事ではプログラミングや仕事で大切な縄張りについて考えてみました。

縄張りとは何か?

いつものように、最初は縄張りについて考えてみます。 一言で言えば、「自分でコントロールできる範囲」のことです。逆にいうと縄張りを出ると、自分ではコントロールできない世界があるという意味です。もの凄くシンプルな事ですが、意外に難しいことでもあります。

何故難しいかと言うと、縄張りの外に出ても自分でコントロールしようとする場合がかなりあるからです。

簡単な例で言えば、貴方が住んでいる家を考えてみてください。基本的には、自分の家ならば、中に置くものや、中に入って良い人を管理・コントロールできます。しかし、家の外に出て家の前の道路は、殆どの場合は貴方の物ではないと思います。その場合は、その道路に他の人が車を止めても文句は言えませんよね?すなわち、貴方の管理外と言うことです。

しかし、管理外にも関わらす、無理にコントロールしようとするとトラブルになります。 そう考えると、どこまでが自分の縄張りなのかをきちんと認識して置く必要があります。

縄張りを作るには、一番大切なのは、境目がどこにあるかをきちんと知る必要があります。 境目をきちんと把握していれば、境目の内側はある程度、貴方がコントロールできると言うことです。

プログラムでも仕事でも、その境目をきちんと作って取り組むとうまくいきます!

プログラミングの縄張りとは?

最初はわかりやすいプログラミングの縄張りから考えてみます。 プログラミングをする上での境目は、「インターフェース」と呼ばれています。 大きなプログラムでは、いくつもの小さなプログラム(モジュール)からできています。 その小さなプログラムが、お互いにデータをやりとりしながら動作するように設計されます。

どの小さなプログラムが「縄張り」に相当する概念になります。 その境目(境界)がインターフェースで、どんなデータをやりとり、つまり受け取って、処理結果を渡すという取り決めです。

インターフェースをきちんと決めておけば、その部分のルールを守っている限り、モジュール内、つまり縄張り内の作り方は、そのモジュールを設計・コーディングする人にある程度任せられます。この場合、ある程度自由に作って良いという場合が殆どです。一旦は作ってみたものの、処理が遅かったりした場合は、インターフェースを同じにして中身を作り直すのも時間が許せば可能です。

しかし、インターフェースの変更は基本的にはできません。これは、インターフェースはデータをやりとりする相手のモジュールとの取り決めだからです。つまり、コントロールできない部分になります。だから、インターフェースが「境目」と言うわけです。

プログラムを作成する上で、この縄張りをきちんと決めてその境界をハッキリさせることはとても重要です。 こうすることで、1箇所の変更が他の部分(モジュール)に影響が及ばないようにする事ができます。ところが、この縄張りを後から変更すると、いろいろ問題が発生して全体に影響が出てしまいます。

そういう意味で、プログラミングの開発を行う場合、「縄張り」を最初にきちんと決めることがスムーズに開発を行う上で必要になる理由です。

仕事での縄張りは?

仕事をする上での縄張りは、先日お伝えした「役割」と「責任」(Role and Responsibility)になります。

シリコンバレーの開発では、これがとてもハッキリしています。プログラムの全体のコンセプトを考える人(アーキテクト)、コンセプトに基づいて、処理やデータの流れを設計する人、設計を元にコーディングする人、プログラムのテストを行う人などのように、同じ開発でも、役割の違う人がそれぞれ違う成果物を提供するようになっています。

ところが、開発の仕事の場合は、その境目(境界)と言うのは、ハッキリとした線で分けられない場合が多いのが現実です。 例えば、処理やデータの流れを決めても、実際にコーディングするにはさらに細かいことが必要になったり、その処理やデータの流れでは上手くプログラムにするのが難しいと言う事がよく起きるからです。

開発の場合は、縄張りの境目は線ではなく、「境界のハッキリしない場所(グレーゾーン)」と言うのが存在します。 ハッキリしない場所なので、その場所は問題を抱える場所になりやすくなるのが問題です。

問題になるケースは二つあって

  1. 境界が交わらないケース
  2. 境界が交わってオーバーラップするケース

があります。実はどちらも大きな問題です。 境界が交わらないケースは、二つの仕事で、お互いが干渉しないところに縄張りの境目を設定してしまう場合です。 どちらも、そのエリアには立ち入らないので、誰も面倒を見ない「空白地帯」になってしまって、仕事が抜け落ちてしまう問題が発生します。

例えば、ある人がリンゴを収穫して、レストランに納めるという流通経路があったとします。 リンゴを収穫する業者は、リンゴを木から取って箱につめて出荷します。 一方、レストランの方はデザートで使うリンゴを仕入れるとします。しかし、人手が足りないので加工して皮を剥いて芯を取ったリンゴを購入したいとします。お分かりだと思いますが、この流通は成り立ちません。

この場合の解決方法大きく分けて三つの方法が考えられます

  1. リンゴを収穫する人が加工まで請け負う
  2. レストランで加工するようにする
  3. 別の業者を間に入れて加工をしてもらう

問題は、「加工」の担当が空白になってしまっているので、どちらかが境目を動かしてその仕事をやるか、別の人を連れてきて「オーナ」がいない部分の隙間を埋める必要があるという事です。

境界が交わってオーバーラップするケースは、 似たような例で、リンゴを収穫する人と、レストランがあったとします。この場合は、加工は必要ないのですが、実際の輸送をどちらがやるかという話です。リンゴを収穫する人は輸送を請け負って高くリンゴを売りたいのですが、レストランは輸送をする事で安くリンゴを仕入れたい場合、「輸送」と言うところで競合が起きてしまう場合です。 お互いが境目を広げようとして、衝突が起きてしまうケースです。

どちらも問題で、上手く調整する必要があります。 仕事の場合、これを担当するのがマネージャーの仕事で、仕事の隙間はないか、仕事の競合は発生していないかなどの全体を見ながらお互いがうまく行くように調整と管理を行う必要があります。こうした、全体を見る人がいないと、当事者同士では解決が難しいケースが多くなってしまいます。

境目が動く!

縄張りを決める事自体はそれほど難しくないのですが、こうした「空白」や「競合」が起きると全体として機能しなくたってしまうので、境目を決める事がとても重要なのは既に説明した通りです。

しかし、もう一つの問題が結構厄介です。それは、多くの場合、当事者にはこの境界がきちんと認識されていない場合が多いので、境界を超えて行動してしまうという問題です。厄介なことに、境目(境界)はいつも同じとは限らないからです。 そのために、境目がどこにあるのかを、きちんと把握するのは考えている以上に難しいのが現実です。

例えば、仕事では、自分以外の誰かに仕事を頼む場合がありますよね? 自分でやる仕事は、貴方がコントロールできます。従って、見通しが立てやすくなります。 一方で他の人に頼む仕事は、「お願い」はできますが、それが貴方の思うように進むかは別の問題です。つまり、貴方にはコントロールできない部分が存在すると言う事です。そして、さらに厄介なのが、その境目はいつも同じではないという事です。

例えば、仕事を別の会社に頼む場合は、相手の会社の稼働状況によって、仕事の処理能力は変わってきます。以前は 1 ヶ月でできた仕事が、いつも 1 ヶ月でできるわけではなくて、発注先が忙しい場合は、2 ヶ月かかることもあるということです。

では、どうしたら良いのか? 完全な答えはありませんが、まずは境目の外にある相手を観察することです。相手をよく見ることで、相手の状況を把握して、今の境界はどこにあるのかを意識して、対応するのが一番の解決策です。 一般的には、「コミュニケーション」と言う言い方で片付けてしまいますが、相手をよく見て、相手の話をよく聞くと言うことにつきます。ところが、多くのコミュニケーションでは「自分の都合」が全面に出てしまうため、うまくいかなくなります。 自分の都合の位置はご自身が一番よくわかっていることで、大切なのは、相手の状態をみて、自分の位置をどこにするかを考えることです。相手が必要な情報はきちんと伝える必要がありますが、大切なのは相手を理解することにあります。

まとめ

仕事やプログラミングを円滑に進めるには、「縄張り」を意識して作るとうまく行きます。 ただ、縄張りを自分の都合だけで作ると「お山の大将」になってしまい、大抵は失敗します。 縄張りを作る際に重要なのは、

  • どこまで自分がコントロールできるのか(自分の状況)
  • どこまで相手がコントロールできるのか(相手の状況)
  • 隙間はあるのか(空白地帯はあるか)
  • 競合はあるか(お互いに競合する場所はあるのか)

を考えて、自分の境界線を引いて、相手とのバランスを作ることが大切です。

仕事やプログラミングでは、自分ではコントロールできない部分はかなりあります。 そうした部分を上手く管理しながら進めることが成功の秘訣になります。

Copyright(c) 2017-2021 by Silicon Valley Super Ware, all rights reserved.

コメント

このブログの人気の投稿

ユーザーインターフェースの設計

足し算以外もできるようにする

改良版足し算プログラム