「 まず、コマンダー(Commander)は、別のコマンダーへ、コマンドを出せるぜ」
「 👆 で、コマンダーには 階級というものがあるぜ。
階級が上のコマンダーは、階級が下のコマンダーに コマンドを出せるぜ。
階級が下のコマンダーは、階級が上のコマンダーには、コマンドを出せないぜ」
「 👆 階級が下のコマンダーが、階級の上のコマンダーに投げれるものは
レポート(Report)でも呼ぶとしよう。
ここで、階級が上のコマンダーは、レポートを読んでも、
コマンドを送り返すことは しないことにしろだぜ」
「 レポートを受け取ったら すぐにコマンドを出したいような
決まりきった処理だって あるんじゃないか?」
「 👆 Bという報告を受け取ったらAという命令を出すコマンダーと、
Aという命令を受け取ったらBという報告を返すコマンダーが コンビを組むと
インフィニティ・ループ(Infinity Loop;無限ループ)に陥る」
「 じゃあ 階級が上のコマンダーは 階級が下のコマンダーに もっと働いてもらいたいと思っても、
レポートを受け取ることしかできないのかだぜ?」
「 階級が下のコマンダーが もっと働くというのが おかしいんだぜ。
階級が下のコマンダーは、階級が下なりの、それなりのことしか しないぜ」
「 👆 プログラムでは、
部下の名前は知ってるが、上長は誰か知らないかのように作れだぜ」
「 👆 でも プログラミングやってると、
一番末端の部下に 組織全体をひっかき回すくらい仕事してほしいケースが よくあるのよ」
「 設定ファイル 書きかえるボタンとかな。
上長の言うことが変わるような権力を 設定画面が持ってたりするな」
「 じゃあ仮に リバース・ワーカー(Reverse worker;逆転する作業員)とでも造語しよう。
リバース・ワーカーをいないようにするのが 優れた階層だぜ」
「 どいつが リバース・ワーカーで、
どいつは 部下にコマンドを送っているつもりが、リバース・ワーカーに
レポートを上げることになった末端のコマンダーなんだぜ?」
「 考え方が逆だぜ。
末端作業員の ボトム から確定していって、
最後の方まで残る 余り のようなやつが リバース・ワーカーだぜ。
その リバース・ワーカー が、ボトムにいたら プログラムは崩壊するんだぜ」
「 👆 コマンダーって、自分の裁量で扱えるデータと、そのデータをどう扱うかのプログラムを持ってると思うけど……」
「 👆 そのデータと プログラムも 階層構造になってると考えると」
「 👆 上長になるほど バカデカくなって、 部下は ちょっとのことしか できなくない?」
「 優秀な部下が 勝手に動いてくれないと 忙しい上長は 楽できないんじゃないか?
めんどうな仕事は 部下に押し付けるのが 組織なんじゃないか?」
「 コントロール可能で簡単なことしかしない部下と、コントロールする上長にしろだぜ」
「 👆 部下が仕事するには、上長が持ってるデータが欲しいときがあるでしょ」
「 上司の持ってるデータを 部下に渡すと 部下が でかくなるぜ。
上司がデータを部下に渡すのが 階層の序列崩壊の始まりだぜ」
「 部下が、 上司が持っているデータが無いと進められない仕事 を持っていることが おかしいんだぜ」
「 じゃあ、部下にやってほしい仕事の多くを 上司がやることにならない?」
「 リバース・データ(Reverse Data)とでも造語しよう」
「 競技プログラミングのようなものは除くが、
大きな組織を作るときは、リバース・データは しないことが重要だぜ」
「 👆 上司のデータは要らないけど、同僚のデータがほしい場合は どうすんの?」
「 厳密には、横だと思ってるやつが 本当に横かは分からない。
自分のボスが誰かさえ 自分は知らないからな」
「 👆 とにかく 他の人のデータがほしいとき どうすんの?」
「 部下以外から データを引っ張り出してくると、リバース・ワーカーのできあがりだぜ」
「 👆 仕方がないので、解決方法としては、まるで 共通の部下がいるような 下位の部下を置いて、
隣と共有したいようなものは 下位の部下に置き、見知らぬ上長同士で 共有することだぜ」
「 その Common
のデータは、本来 上長が持っておくべきものを 部下に渡しただけじゃないの?
なんでもかんでも Common
にデータが置かれて、
Common
にアクセスできるコマンダーは結局、リバース・ワーカーになるんじゃないの?」
「 Common
に置くのは あくまで 同僚間で共有するであろうデータだぜ。用法を間違えば 階層の序列は崩壊する」
「 このトピックに名前を付けておくと、 コモン・オブ・ヒエラルキー とかどうだぜ?」
「 お父ん。ほとんどのコマンダーが 自分の持っているデータを Common
に下げてしまい、
Common
が リバース・ワーカーになったぜ」
「 ネットワーク状になるんだろ。ヒエラルキーを侵食していくぜ」
「 あるところは 密なネットワーク で、
あるところを部分的に見ると 全順序 で、
全体としては 半順序 な、
そのような 機械的には収束しない、 振動する不定形なモデル を想像しないと いけなくない?」
「 現実的にはそうなるか。 しかし なんらかのあるべき状態へ戻ろうとするちから が働かないと 序列は崩壊するぜ」
「 👆 ぐちゃぐちゃの 密結合を認める空間、 メンバー・ネットワーク (Member Network) を認めることにするぜ」
「 Member Network
って文字数が 13文字もあって長いので、短くならないの?」
「 同僚なら Colleagues
、部下なら Subordinates
でどうだぜ?」
「 文字数は Member Network
よりマシだから、変数名に困ったら Colleagues
と Subordinates
を使うことにしましょう」
「 Member Network
は単に Members
で十分よね」
「 メンバー・ネットワークを認めるのなら、Common は要らんのでは?」
「 👆 上長と 部下の間に Members
という名前の メディエーター(Mediator;仲介者)を置くことにするぜ」
「 ネットワーク構造は すぐ スパゲッティー・コードと化す。
ネットワーク構造を不可とし、ヒエラルキー構造を 強制させることにするぜ」
「 今度は Members
メディエーターに コードが集中してくるんだけど」
「 上長と 部下を シンプルにして、 Members
メディエーターに 密結合を 押し付けろだぜ。
押し入れみたいなもんだぜ」
「 部下のコードが Members
メディエーターに取り上げられて、
部下は なんにも隣と連携しない 木偶の棒 みたいになってしまうぜ?」
📂 Ramen Project
└── 📂 Models
└── 📂 Book
└── 📄 MemoModel
「 👆 ヒエラルキーを作ると、フォルダー階層が深くなるのよねえ」
「 ファイルパスは 文字数上限 256文字の壁がある。
フォルダー階層を作る方法は いずれ 行き詰る」
悪い例:
📂 SiteMap
├── 📄 Portal
└── 📂 Portal
├── 📄 Introduction
├── 📄 Downloads
├── 📂 Downloads
│ ├── 📄 Windows
│ └── 📄 Linux
└── 📄 FAQ
「 👆 例えば サイトマップの階層を そのままフォルダーを使って表すのは 悪い例だぜ。
わたしは こんなことをする人を テレスドン と呼んでいる」
「 ファイルパスの 256文字制限は わりとよく ぶつかって
深い階層のフォルダーで 圧縮ファイルを解凍したとき、ファイルを破損したりするぜ」
「 👆 ひとまず、流し込むコンテンツが違うだけで 同じテンプレートでいけるだろ、という画面は
1つにまとめるぜ。
わたしは これを タイピング と呼んでいる」
良い例:
📂 Pages
├── 📄 ByOS
├── 📄 Downloads
├── 📄 FAQ
├── 📄 Introduction
└── 📄 Portal
Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。
また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!
こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?
コメント