システムに舞い降りたリヴァイアサン
今、目の前のモニターに映し出されているエディタには技術的負債の積み上がったコードが無機質に描画されている。
設計や仕様が存在しないドキュメント、存在しても今となっては嘘吐きとなったドキュメント。
現状のシステムと乖離した内容が記載されたREADME。
マークダウン記法すら守れずフォーマットが崩れたREADME。
まともなローカル開発環境を構築することもままならないリポジトリ。
定義の曖昧なドメイン言語。
言葉の認識の揺らぎによるコミュニケーション不全。
awaitとforが幾重にもネストしたスパゲッティコード。
真偽地ではなく複雑なオブジェクトの配列を返すisXxxxxと名付けられた関数。
anyfullなts拡張子のついたJS。
実行する必要のない不要な処理たち。
そんな不要な処理の奥深くに残されているN+1問題。
そして、その問題により動かなくなった本番環境。
さらに、その問題を解決できずにあたふたするクライアント。
動かなくなった機能に対して不満を募らせるユーザ。
なぜか複数存在する同じ処理を行うモジュール。
APIを介してデータを取得する設計なのに直接DBにアクセスするモジュールの存在。
残されたままのオミットされた機能のコード。
さりとて、初期化処理は動作しているため、迂闊に削除できないオミット機能が使用しているモジュール。
リクエストヘッダを改ざんするAPIのコモンモジュール。
NoSQLなのにリレーショナルなデータ設計。
ひとまとまりのクラウド関数群と見せかけて、実は複数のリポジトリに分割されているクラウド関数群。
さらにプレフィックスで分割されていると思いきや、プレフィックスなしやサフィックス付きが混在する、破綻された命名規則。
そして、破壊された命名規則が奏でるコードの難読化。
「分からないことはなんでも聞いてください」と言われ、聞いて返ってくる答えが「分かりません!」。
そんな環境を一切改善することもなく、盲目的に仕事を行なってきた過去の開発者たち。
……そんな現実を前に、目の前のエディタと戦いながらタスクを消化していく。
ここまでで散々書き殴ってきたこのシステムは、新しく技術的連帯保証人になった自分からしたら悪意の塊でしかない。
しかし、冷静になって考えると、お金をもらって仕事している人間がそんな悪意を込めてコードを書くだろうか?
システムの所持者やレビューをする人もそんな悪意を無条件に受け入れるだろうか?
答えは否としか考えられない。
ということは、目の前のもはや殺意すら覚えるほどのコードには人間の悪意は一ミリも含まれていないのだ。
ただ、悪意がなくても、知見の足りなさや能力不足の結果起こる目の前の局所的な対応の積み重ねによって、致命的な致命傷に至ることはままある。
根本治療をせずに対症療法だけを続けても、薬やサポートに依存しなければ保てない弱い体になってしまうように。
一つ一つは悪意がなくても、局所的な対応の連鎖の結果が悪意を発するサムシングに育ってしまう。
個々人の行動の結果の総意に意思が宿ったように見える現象は、攻殻機動隊S.A.C.で描かれる「笑い男」事件に通じるものがある。
一人一人にはその意思がなくても全体として統括した場合、そこに明確な意思が宿る場合がある。
それがシステム開発運用における技術的負債という名の悪意である。
実際にはシステムそのものに悪意はないが、それを保守運用する人からすれば悪意を感じられずにはいられない。
システムの中のドキュメントやコードはただの文字列なのに、そこに悪意を見出すのはおかしいと思う人もいるかもしれない。
そんな人に分かりやすい例を用意してみた。(ちなみにブラウザのコンソールですぐに確認することができるぞ)
const isClrNum = x => x == 1 ? 1 : isClrNum(x - 1) + 1;
上記のコードは意味がない上にバグを含んでいる。
isClrNum(100000);
と、デカめの数字が入ってくると例外が発生する。
あなたが不具合調査の結果、上記のコードを見つけたら「誰だ!このコード書いたやつ!ぶち殺すぞ!」と言う気持ちが湧き上がるはずだ。
上記のような極端なコードはないかもしれない(と信じたい)が、度重なる仕様変更や作業者変更によるコンテキストの断絶の連鎖で、存在意味がない上にバグやパフォーマンス問題を含んだコードが悪魔錬成されることが稀によくある。
技術的遺産相続人でも書いたが、人の入れ替わりによるコンテキストの断絶の連鎖が積み重なって技術的負債は生まれる。
なんの対策も無しにシステム運用を続ければ、断片化された幾多のコンテキストがそのままコードに反映され、蓄積され続けることになる。
コンウェイの法則は組織体だけでなく人の入れ替わりにも適用される。
そのコードを後から参画した人が現在進行形のコンテキストだけを前提にして読むと魑魅魍魎が蔓延るパンドラの箱に映る。
そういった経緯で悪魔が宿ってしまったコードも、元は(きっと、たぶん)読みやすく意味のある真っ当なコードであったはずだ。
それが大人の事情で紆余曲折を経た挙句、歪なキメラに変貌を遂げたのだ。
個人の部分最適の積み重ねが集約されて悪意を持つかのような結果を生み出すこの構造は、何もシステム開発の世界に限った話ではない。
組織、市場、そして社会全体を見渡しても、同様のパラドックスが至る所で発生している。
例えば、ディープステイトや陰謀論でよくある、どこかしらの誰かや組織が世界を牛耳っていて、一般大衆の健康や富を脅かしている、という見方がある。
陰謀論でなくても、普通に政治家の無能さを嘆いて、自分の生活や未来の国のあり方に不満を持っている人は多い。
しかし、我々は自分の意思で社会から提供される商品やサービスの取捨選択を繰り返しているし、政治家も選挙で勝ち抜いた選ばれし精鋭たちである。
一人一人の良かれと思った日々の生活における選択の総意の結果が現実社会である。
その現実社会に不満があるなら、その源泉は陰謀や政治ではなく我々の内にある。
昔書いたブラック企業は会社がブラックなのではなく、そこに所属している人がブラックである話と同じようなものだ。
個人個人が抱えるコンテキストを全部ごっちゃにした結果、社会の裏に悪魔的な何かがあたかも存在するような幻影が浮かび上がってきただけだ。
ただの文字列でしかないコードに悪意を感じるのと同じように。
技術的負債を作ろうと思って作っているのではないのと同じように、ただ、個人個人の選択の結果が自分の意識できていないところで社会負債を積み重ねているにすぎない。
水の温度を上げたい人が追い焚きしているお風呂に、水の温度を下げたい人が氷を入れ続けるような、ルーブ・ゴールドバーグ・マシンにすらなれないような悲劇が我々の日常には潜んでいる。
……そんなことを考えながら手元ではrm -rfとコマンドする打鍵音が響いていた。
気持ちの持たされよう
「気持ちの持ちよう」この言葉、何かつらいことがあったとき、落ち込んでいるときに、決まって誰かしらが言うやつです。
しかし、この言葉は絵に描いた餅と同じく、言葉にはなっているが実践となるとそうは問屋が卸しません。
じつは、気持ちとは「持つ」のではなく「持たされる」ものだからです。
朝起きて「今日は気分よく過ごそう」と思っても、満員電車で押し潰されたらイライラするし、上司に理不尽に怒られたら落ち込みます。
それでいて、好きな人からLINEが来たらやっぱり嬉しくなるものです。
つまり、気持ちは外部からの入力に対する反応なだけであって、自分の内側から湧き上がってくるものではないのです。
職場の環境が良ければ、何もしなくても気分よく働けます。
逆に、パワハラ上司がいる職場では、どんなにポジティブシンキングを心がけても、結局は嫌な気持ちになります。
ところで、プロ野球の投手には先発、中継ぎ(リリーバー/セットアッパー)、抑え(クローザー)という役割分担があります。
その中でクローザーは基本的にチームに一人だけが担える、ある種特別なポジションになっています。
先発は打ち込まれない限りは最低でも5回(1試合9回)ぐらいまでは投げますし、リリーフもクローザーも投げる投球回はだいたい1回だけです。
先発ほど長く投げるわけでもなく、他のリリーフと投げる頻度は同じぐらいであるにも関わらず、クローザーはチーム内で一番いい球を投げる投手が担うことが多いです。
先発より投げるわけでもない、他のリリーバーと投げる量も同じなのに、なぜクローザーは別格なのか?
それは試合の展開的に一番責任がかかってくる場面で投げるからです。
先発は初回に1、2点取られてもそれなりの投球回を投げきれば「お前のせいで負けた」とはなりません。
途中から投げるリリーバーも失点すれば「お前のせいで負けた」となる可能性はありますが、まだ後ろに攻撃のチャンスは残っているので、失点が決定的になるわけではありません。
しかし、クローザーは試合が終わる9回に投げます。
ここで抑えれば勝ちですし、抑えられなければ負けます。(もしくは延長戦になる)
仮に、味方が1点だけしか取っておらず、先発の後の中継ぎも3人ぐらい投げて8回までなんとか0点に抑えてきた状況がきたとしましょう。
そして、最後の9回にクローザーが登場します。
もしここで逆転されてしまったら、先発の頑張りも中継ぎの頑張りも全てが水の泡となります。
9回中8回がよくても、最後の1回がダメだったら全部ダメになります。
こういった試合構造になっているため、クローザーは特別なポジションとされており、その役割にはそれ相応の実力のあるピッチャーが担当することになります。
このように投げる場面によってピッチャーにかかるプレッシャーや責任が変わってくるのです。
そこを「気持ちの問題」としてクローザーに「もっと軽い気持ちで投げればいいじゃん」とか、先発に「1点でも取られたら負けると思え(対戦投手によってたまにあったりする)」と言ってみたところで、投手の気持ちが変わるでしょうか。
クローザーは点を取られて負けてしまえば8回までの他の選手の頑張りがすべて水の泡になる現実は変わらず、そこを打たれた本人が「まぁこういう日もあるさ」なんて言おうものなら周りから袋叩きにされてしまいます。
先発が初回に1点取られても、あと8回も攻撃チャンスがあるわけですから、そうなったらやっぱり「頑張って逆転してくれ」と願わずにはいられないでしょう。
つまり、投手の気持ちは試合状況という「環境」によって決まるのです。
野球に限らず、これは日常生活でも同じことです。
ですので、「気持ちの持ちよう」ではなく「気持ちの持たされよう」と考えるべきなのです。
社会があなたに不安を持たせる。
ニュースがあなたに恐怖を持たせる。
SNSがあなたに嫉妬を持たせる。
恋人があなたに幸せを持たせる。
こう考えた方が自然ですし、気持ちの持ちようでどうにかなるなら精神病など存在しません。
嫌な気持ちになったら、気持ちの持ち方を変えるのではなく、その原因となる環境や人間関係を特定して、改善を試みる方が正解なのです。
「他人は変えられないが、自分は変えられる」で変えられるのは気持ちではなく行動です。
コントロールが可能なのは気持ちではなく環境の方です。
ただし、すべての環境を変えることはできません。
しかし、どの環境に身を置くかは選択できます。
嫌な上司がいる部署から異動願いを出す。
ネガティブなニュースを見る時間を減らす。
愚痴ばかり言う友人との付き合いを控える。
応援してくれる人との時間を増やす。
これらは全部、自分でコントロールできることです。
「気持ちの持ちよう」という言葉は、個人の努力や精神力に問題を帰着させる、ある種の思考停止です。
しかし、「気持ちの持たされよう」と考えることで、環境の改善という具体的な解決策が見えてきます。
気持ちは自分で持つものではなく環境に持たされるものだったのです。
だからこそ、私は個性は環境ガチャの結果だと思っています。
さらに、先ほどの話を即否定することになってしまいますが、私たちは環境ガチャを自分で回しているつもりでも、実際には、そのガチャ自体が神の見えざる手によって、私たちの知らないところで勝手に回されているだけなのです。
Tag: 哲学
カトリックな中小企業とプロテスタントな大企業
働き方に対してのノウハウはこの世に腐るほどあるが、世界中の全ての会社や組織に通用する万能的なノウハウは現実として存在しない。
何かビジネスハウツーを一般化していい感じに理論化したところで、それが通用するかもしれないのは実は一部だけで、大半は砂上の楼閣になる。
経済学や経営学や行動経済学が万能であるならドナルド・トランプがわざわざ関税戦争をふっかける事もなかった。
学問やハウツーは小乗的に一部のエリートは救うが、大乗的な衆生済度にはならない。
例えば「将来のために収入の1割は貯蓄にまわしましょう」と言ってみたところで、実際に実践できるのは一部の人だけである。
そもそも企業や会社は一つひとつ違っていて、国や地域により千差万別であり、それを十把一絡げに扱うのには無理がある。
しかし、そこで最近、一つ思い至ったことがある。
それは同業種でも中小企業と大企業とでは企業内倫理が根本的に違うということだ。
倫理観が根本的に違えば、当然中で働いている人たちの行動様式もまた変わってくる。
中小だと有能であったものが大企業だと無用の長物になったり、その逆もまた然りとなる。
比較的社員数が少ない企業であれば社長、経営陣と授業員は近い距離にあり、互いにやり取りをすることもあるし、お互いにどういうモノとナリの人間なのかを具体的に把握している。
社員数が十数人なのに、社長と話したこともなければ会ったこともない、なんてことはほぼあり得ないはずだ。
しかし、数千や数万単位の人員を抱える一大グループ化している企業の代表となってくるとそうもいかなくなる。
ユニクロの店舗スタッフのほとんどは柳井さんに会う事もないだろうし、ソフトバンクグループで働いている人もほとんどは孫正義さんをお目にかかる事もないだろうし、マイクロソフトに所属しているからといってビルゲイツとコンタクトできる人もほとんどいないだろう。
一人の人間が数千数万単位の人間を管理することはおろか、認知する事自体不可能である。
よって、必然的に組織がデカくなれば、その構造はピラミッド型になる。
コンウェイの法則ではないが、組織規模が変われば、そこで働く人たちの行動様式も変わってくるのである。
会社が小さければ小さいほど会社全体を把握できるが、それがどんどん大きくなるにつれて自分で観測できる範囲が狭まってくる。
携わる業務内容も携われる人も限定的になってくる。
そうなってくると、会社での行動指針が人中心から規範や社風中心にシフトしてくことになる。
プロジェクトや会社の規模が大きいと、煩わしい手続きや存在理由のよく分からない書類も増えてくるが、それを取り扱う人たちはそれ自体がどういった経緯で発生したものなのかは案外知らないし、その意味を追求することもあまりしない。
「規則(ルール)で決まってるから」という常套句で規範に則って淡々と仕事を進めていく様は、まさに行動様式が人中心から外れて、より大きい何かに置き換わっている証左である。
このように社長や経営者に直接アクセスできなくなる末端社員にまで統率を求めるなら、規範や社風などの共同幻想を使って個人個人のマインドに働きかけるしかない。
大人数を束ねて組織を運営するには個人の能力ではなく規範や社風の存在が必要となる。
ビルゲイツが末端のカスタマーサポートの個人に対して作業指示をすることはもちろんなく、そのカリスマ性で人心掌握をすることもほぼ不可能である。
人が中心であるうちは人間個人の能力やカリスマ性がそのまま仕事の質に直結する。
しかし、会社の規模が大きくなると、仕事を進めていく力学が個人の「点」から、人と人との関係の「線」や「面」に多次元化していく。
この力学の変化により個人に求められる資質も変化する。
いくら個人の実務能力が高くても規範やカルチャーに合わせることができないのであれば、一部の天才を除き、同じようにやっていくことは厳しくなるだろう。
小規模組織では朝に弱くても目をつむってくれるかもしれないが、大組織だとそうもいかない。
こういった具合に発生した、個人に求められる資質の変化は宗教における宗派の派生、すなわち分派に近いものがある。
仏教だってより多くの人へ思想が波及していったからこそ、小乗(上座部仏教)では収まらずに大乗として溢れて、全世界に広がっていった。
小乗から大乗に分派していなければ、そもそも日本に伝来する事もなかったかもしれない。
派生元が同じとはいえ小乗と大乗では、根本的な考え方が違う。
大乗ではあまねく衆生を救済しようとしているのに対し、小乗では己自身のみが解脱を目指すのである。
このように同じ宗教でも派閥が違えば、その行動様式も変容する。
ここまでの話を前提とした上で、中小企業と大企業はそれぞれカトリックとプロテスタントの違いに近いイデオロギーの相違があるようにみえる。
中小企業は人を中心とした行動様式であり、神や教皇を中心とした権威主義であるカトリックに近く、大企業は規範や社風を中心とした行動様式であり、信仰の中心を聖書に委ねているプロテスタントに近いものがある。
カトリックの総本山であるバチカン市国があるヨーロッパはサッカーやブランド品などクラフトマンシップを中心にしているイメージがある。
一方、プロテスタントの国であるアメリカ(大統領は聖書を片手に置いて就任を宣誓する)はルールや規範を厳密に定義し、上下関係も厳しく、規律を中心に動いている。
どちらも同じキリスト教ではあるが、先ほどの大乗と小乗の違いのように、宗派が違えば考えも行動も変わるのである。
そういった意味で中小のうちにプロテスタント的なイデオロギーを取り入れたり、大企業なのにカトリック的に振る舞うのには無理があるのかもしれない。(そういった組織と思想の不整合がイノベーションのジレンマとして表出する)
創業時の創業者は教祖的な立ち位置となり、カトリック的に組織を運営していく。
そこから、数千数万の人員を抱えるコングロマリットに至れた企業は、その過程でプロテスタントに改宗してしまうのだ。
逆に、その過程でルターやカルヴァンのような改革者や改革が発生しなければ大企業に至れないのだ。
松下幸之助や井深大、盛田昭夫がいた時代は彼らを中心に会社が栄えたが、彼らのいない現代でも、パナソニックやソニーは大企業として君臨し続けている。
大企業として存続し続けているということは創業者のカリスマ性ではなく、そこから派生して生み出された規範や社風が社内を律し続けているのだろう。
創業者が有能でもプロテスタントに改宗できな(かった)い企業は一代で途絶えるか中小企業として細々と生き続けることになる。
何か小難しい話を長々書いてきたが要は、同じ職種でも中小企業と大企業ではそもそも宗派が違うので、自分の思想に合う宗派の規模の会社を選びましょうね、という話である。
そして、ずっと同じ組織に所属していても、零細企業から大企業に成長してしまったのなら、その過程であなたは改宗を受け入れるか、自分の思想を保つために離脱するかの決断を強いられる時がくる。
自分の好きを仕事にしたところで職場の人間が全員異宗派なら仕事の前に音楽性の違いで疲弊し、長く続けることはできなくなるのだから。