Spinach Forest

March, 2024

/ Weighted Sum of Imagined Life   / Institutional Knowledge and Its Loss   / Spinach, February   / ... 

Weighted Sum of Imagined Life

ふと読み返していた書籍 The Manager's Path の序盤に "Imagined Life of a Senior Individual Contributor", "Real Life of a Senior Individual Contributor" というセクションがある。そして "of a Manager" のペアがそのあとに続いている。理想と現実というやつ。きみほんとマネージャやりたいのかと問う序盤の一幕。

マネージャは知らないが、IC の Imagined Life / Real Life は戯画的ながらよく書けている。そして自分はそこそこ "Imagined Life" に近い日々を過ごしているなと思う。日々は純粋な deep work ではなく雑用もままあるが、テクニカルに難しいことをよく考えてなんとかする、という部分は割と達成されている。あと雑用は出世の足しにならないだけで、必ずしも嫌いではない。

けれどセクションの締めくくりを読むと客観的な Imagined Life 達成率はそんな高くもない気がしてくる:

In short, you have the perfect balance of engaging work, fame, and accumulated expertise that makes you invaluable and respected, highly paid, and influential.

Imagined Life of a Senior Individual Contributor, The Manager's Path

ニッチな部分である程度 invaluable になってはいるが、fame や respect, influential あたりは全然ない。給料もまわりの出世してる人々と比べると highly paid でもない。人々は仕事に色々なものを求めているのだな、と思う。自分は engaging work の重みが高くて、他はそんなでもないらしい。給料はもっと欲しいが別にマネージャやっても上がんねーしな。Fame とかねー。昔は欲しかったような気もするしあったらあったで素敵なんだろうけれど。

なお "Real Life" のみならず "Imagined Life of a Manager" のセクションは読んでもまったくときめかないので、自分のマネージメントの興味の無さはなかなかのものだなと見直した。昔はもうちょっと興味あった気がするんだけどねー・・・。

マネージメントを試してみるのは程度テクニカルな経験を積んだあとが良いと本書は指摘しているが、あまり時間が経ちすぎると興味が失われてしまう危険(?)があるので、若者はそうなる前に早いところ一回くらいやっとくといいんじゃないでしょうか管理職。権力とか野心とか、体力ないと追求できないと思うのだよね。同世代の権力者はみんな体力あって立派。

Institutional Knowledge and Its Loss

大企業にいるせいか、時折「プロダクトの移管」を目にする。ある製品、あるモジュールの担当チームを、元々の持ち主からまったく別の持ち主に引き渡す。国をまたぐことも多い。「東京のチームがやっていたこのアプリを新しくできた NY のチームに移管します」というかんじ。

移管は基本的にはトップダウンである。開発チームがわざわざ自分からコードを手放すことは、あまりない。(世間では「v2 を作るから v1 を誰かに押し付けたい」みたいなクソ野郎もいるらしいが、今はそれは置いておく。)えらい人々が決める移管には色々な説明が与えられるものの、外野から見るとだいたい二通りの理由に落ち着いている。つまり 1) テコ入れか、2) コスト減の、どちらか。

自分は、プロジェクトの移管は良くないと思っていた。今も良くないと思っている。良くない理由は、ソフトウェア開発者にとっては直感的に自明だろうけれど、いちおうあとで議論する。

昔々に受託開発の仕事をしていた頃、移管と似たようなことはよく起きた。製品 X を開発するプロジェクト A を受注、開発してバージョン 1.0 を出荷する。ここで一旦プロジェクトは終わる。しばらくしてから X のバージョン 1.1 を開発するプロジェクト B を受注する。しかしプロジェクト A の開発者たちは既に他の仕事を受けており忙しいので、プロジェクト B の開発はバージョン 1.0 とは別の開発チームが担当する、というか、プロジェクト B のための新しいチームが組織され開発に当たる。この新しいチームには、運が良ければ A の開発メンバーの一部が含まれていることもある。とはいえ基本的には別ものである。

受託開発におけるこうした「移管」は、受注したプロジェクト単位でチームを構成するためにおこる。チームの再構成は自社製品を開発している企業では起こらない。同じソフトウェアを、多少の入れ替わりや組織改編はありつつも基本的には同じチームで開発しつづける・・・えらい人々が移管を言い出さない限りは。


移管の大きな問題点の一つは、コード、運用、デザイン原則など製品に関する暗黙の知識が失われてしまうことだ。文書化によって「暗黙」の程度を減らせると信じる人もいるが、個人的には文書化なんてたかが知れると思っている。文書化が必要ないという話ではなく、文書化でカバーできない大事な知見は沢山あって、それらは人と一緒に失われてしまう。

Products Over Projects という記事は、移管と似た性質を持つ「プロジェクト指向チーム」が孕む問題を包括的に議論している。ただ製品指向の組織で働いている人にとっては当たり前の話なので、今更ここで繰り返したいとは思わない。

こうした問題がありながら、なぜえらい人は移管をするのだろうか。なぜ製品開発チームの強みを自ら捨ててしまうのか。それが自分の疑問だった。

えらい人はわかってない。そう主張することはできるし、細部のニュアンスをわかっているえらい人がどのだけいるのかはまあまあ疑わしい。ただ荒い粒度ではわかっているのではないか:つまり、移管を通じてその製品・ソフトウェアがよくなりはしないとわかってはいる、と思う。

ではなぜ移管するのか。

1つ目の移管の動機、つまりテコ入れ型の移管では、それまでの開発チームを、たとえば買収などで連れてきた「頼れそうなチーム」で置き換える。この時、えらい人は従来の開発チームの成果に満足していない。「頼れるチーム」にはやり直しが期待されている。だから従来チームからの知識の継承などは求められていない。

2つ目の移管の動機、つまりコストカットにおいても、やはり従来の開発チームの成果は評価されていない。えらい人は、移管の対象となったソフトウェアは十分な価値を生み出しておらず、かつ生み出せる見込みもないと考えている。見込みはないが、顧客の存在やシステム内での依存関係など様々な事情で捨ててしまうこともできないので、オフショアとかで安く上げようとする。壊れなければいいとしか思っていないから、チームに溜まった知見を活かす気もない。

コミュニケーション強者たるえらい人たちがこうした評価を表立って口にすることはまずない。けれどこれらの説明がフィットしない移管も思い当たらない。


現実に移管、特にコストカットバージョンの移管を目の当たりにしたとき、湧き上がる腹立ちや悲しみを抑えるのは難しい。えらい人は間違っていると言いたくなる。ただ上のような理由から「間違っている」は筋違いと思うようになった。

コストカットの対象になったとき、そのソフトウェアは期待値を満たせていない。雑にいうと「負けている」あるいはより穏当に「役割を終えている」。負けを認めるのは難しいし、負けるのは悲しい。終わってしまうのも同じく悲しい。そしてえらい人は負け戦の指揮者である。綺麗事を言わず、まず負けや終わりを認めてほしい。腹立ちは負けを認めない不誠実さに向けるといい。あるいは負けていないにせよ期待値を満たせていないのだとしたら、その期待値をセットしたのもやはりえらい人である。その見通しの甘さも責められていい。あるいは、もしまだ勝ち目があると思うのなら、えらい人の根性の無さを責めてもいい。でも移管のコストをわかっていないと責めるのは、なんというか、煙に巻かれている。

移管の悲しみは敗北と終わりの悲しみだ。その事実から目を逸らすと悲しみを癒せず傷が膿んでしまう。まずは悲しみを弔うといい。

Spinach, February

2024-02-01

  • 雨。
  • 自分がいない去年の間に data scientist 氏が色々な試行錯誤をした形跡があり、しかし誰も助けてくれなかったのだねーという悲しさがコードに溢れている。しかしそれは自分のせいではない。と言っていいのかわからんが、自分がいても大差なかった気がする。

2024-02-02

  • TODO リスト消化の一環として Wise の送金を試して見るものなり。
  • TODO リスト消化の一貫として夏の帰省の航空券を買うものなり。
  • 夏の帰省、基本的には妻実家滞在なのだけど一週間くらい東京から WFH してみようかな、と言ってみたら「一人で東京泊まるの?ふーん」という返事だったので諦めて早々と帰ることに。カルフォルニアにしか自由はなかったよ。

2024-02-03

  • 重い腰を上げ Costco デビューを果たす
  • Speak まったくやる隙がないので一旦解約。Play App での解約フローが「Pause もあるよ」とかいってきて、そんな機能があったのかと感心する。

2024-02-05

2024-02-06

  • 子の遠足の引率補助。小学一年生つれて図書館見学とか心労にもほどがある。こんなのを他の市からも含め補助している Palo Alto は懐が深い。そして小学校教師、鋼の心臓を持っている。ピュア尊敬。
  • 知り合いのお宅にお邪魔して夕食。特にテックではないご夫人、ChatGPT で英会話の練習してるんですよ!とか言っていて慄く。有料版いいですよ、と無駄に営業活動しておく。やっぱアプリと音声認識は必要なんじゃないか。
  • 先週の土曜からカフェインを断っており、睡眠スコアが高い。週末は抜く感じにしようとおもってるけど、出勤日はどうかな・・・ちょっとムリかな・・・。
  • 仕事中の眠気の半分くらいはランチの消化ロード+血糖値スパイクから来ているので昼飯を軽くヨーグルトとかにしておけば避けられるのはわかっているのだが、しばしば誘惑に屈するのだった。

2024-02-07

  • Coffee Wednesday. 天気の都合でまたしてもオフィスへ直行。
  • 今日は朝から本を読んで見るという試み。Boox 軽いのはいいけど、ランダムアクセスできる紙の本が欲しくなる。
  • 仕事。
  • Pomodoro を再開してからというもの仕事が捗る。そんな Pomodoro をなぜ人類自分が継続できないか。というと、仕事のイヤさがあるレベルを超えると Pomodoro とかやる気にならず、止めてしまうからだな。そしてイヤさレベルが下がってもなかなか再開しない。
  • なので仕事がイヤでないのは生産的であるためにはかなり重要である。去年は仕事がイヤなりに進捗を出そうと試行錯誤したけど結局駄目だった。今の仕事は不満もあるが、やるのがイヤというほどではない。このご時世、これは appreciate すべきなのだろう。
  • 大きめのプロジェクトの lead が絶望的に meeting run 力が低くてヤバい。そのへん mature team の lead はだいたいそのへん上手でよかったな。特定 TPM はひどかったが・・・。
  • Meeting というものが嫌われるのは、meeting run 力が低いとあまりに非生産的になってしまうが、その割に meeting run 力の低い facilitator にあたってしまうケースが多いからだよなー。ミーティングするなら bureaucracy をうけいれて素敵官僚を目指してほしい。

2024-02-08

  • 突然社長から休日がアナウンスされた。チャットが有料になったから今日は AI 記念日ってとこか。HN は見ないでおこう・・・・。
  • 自社エーアイにこんな期待できないのなんでだろうな・・・嫌なんでかはわかっているんだけど。言語化したくないだけで。それにしてもこの "XXX Era" みたいなエラそーなこと言ってて cringe しないのかね。トップランナーを追っかけてる身分なわけじゃん。Underdog を play したほうが良くね?
  • お、アプリができたのか。それはいいね。いちおう入れとこう。レビューはゴミ扱いだけど。
  • なんかミーティングがいっぱい振ってきたので今日はミーティング記念日。まあ小さいやつだからいいです。仕事は進まんが。

2024-02-09

  • セルフ散髪(バリカン)。
  • Thoughts on Tech Employment | Matt Mullenweg
    Automattic, 結構 PIP してんのねー・・・。
  • 仕事、やること結構あるため毎日二時間くらい残業すれば(つまり月 +40h くらい) バーっと進むのになあという気持があり、現状余剰可処分時間ギリギリ二時間くらいあるな・・・という気持もあるが、これをつっこむとたぶん精神衛生的にアウトだろうな、という判断から今日も九時五時。時間が限られていると手抜きせざるを得ず、しかし可処分時間と締切の都合で妥協した仕事するというのは悲しいものですが仕方なし。
  • 営業時間中の集中力をあげていくべし。
  • 自分が面倒をみているテスト、Deprecated になったインフラからの移行に伴いいわゆる "v1" を捨てて "v2" に移行しようとしているのだが、v1 ちゃんと動いてんなーと我ながら関心してしまう。v2 移行は仕方ないし利点もあるんだけど、いかんせんめんどくせーなー。

2024-02-12

  • 積読解消のため朝の読書をはじめて一週間、ついに Trustworthy Online Controlled Experiment を読み終わった!うれしー。しかしこう、活用するには自分の data 力が低すぎる感じだな。提案されている手法を社内インフラがサポートしてくれていれば使えるが、されてなければ終了である。まあそんな advanced な手法を使う段階にないが・・・。
  • Note taking app を探す旅。Standard Notes がしばらく見ない間に良さそうになっているが、$90/y は高いなー・・・まあ notion と同じくらいなんだけど。はーなぜ自分は Obsidian なり Notion なりに魂を売れないのだろうか。

2024-02-13

  • 朝読書, Understanding Software Dynamics に突入。Long tail latency に徹すると謳った本で、Intro からワクワクするかんじである。
  • Trustworthy Online Controlled Experiments も Programming Massively Parallel Processors も面白く、読書が捗るこの頃。最近の技術書つまんないとか言って悪かった。自分の興味あるのを頑張って探して読めば面白い。インフルエンサーが勧めてるのを読むとつまらないだけ。(なぜなら自分のようなおっさん向けに書かれていないからである。) あと 10 年くらいろくに読書してないので、10 年分の面白い本が溜まっているわけでお得という面もある。

2024-02-15

  • ぎょえ。02-14 が消えた。これだから Wordpress は... :-(
  • USD Chapter 3, CPU のキャッシュサイズ、アクセスレイテンシ、associativity をプログラムから測ってみましょう。予想と違う結果ですね、なぜなら・・・みたいな話をしていて役立ち度はさておき面白い。
  • 仕事。
  • PM ちゃん「東京から来てるマーケティングの T さんです」と隣の人を紹介。へー東京から?出張でいきなりぱっと英語使えるの偉いな・・・(どうでもいい感想)。
  • PM ちゃん性格が良く日本語学習者なのもあり割と仲良くしているが、日本語で話していてもつい英語で返事してしまうのだよねー・・・と妻に話したところ、そこはちゃんと日本語で話してあげるべき、と釘をさされた。ですよねーごめんねー。

2024-02-16

  • USD Chapter 4. 実践編として Matrix multiplication 速くしてみるよー。素朴なバージョンのコードはこれ、速度を推測してみようねーキャッシュミスの数がこのくらいだからだいたいこのくらいかかるはずだよねー実行してみよーあってたかなー。みたいな話をして最終的には x10 くらい速くして、これでメモリ律速ではなく計算律速になりました、みたいな話をする。逆にいうとここまで頑張らないとSIMDしても意味ないってことじゃん。GPU プログラミングはメモリ律速で大変だなとか思っていたが、CPU も同じだわガチで性能が重要なコードを自分が書いていないだけで・・・
  • 税金の書類がきたのでインポート。来週は読書はおやすみして税金やらないとあかんな・・・。
  • インデクスの株、配当の額がだんだん増えてきてのはいいが、課税がガツンと来るのでいつも困る。天引きしといてほしいわ。W-2 を更新すべきか・・・。
  • Observable 2.0 | Observable Static site generator になるの、ユーザ目線では正しいこと多そうだけどどうやって商売にするのかね。
  • 仕事。
  • 社内タスク管理ツール、デフォルトで kanban 風の表示をしてくるのをかったりーなと思っていたが、in-flight なタスクが増えてくるとヤバさが一目でわかるので、役割は果たしているのかもしれない。来週は close する週にしたいと思います・・・。
  • ふと前いたチームの org chart を見ていたら、自分が開けた席には layoff 難民とおぼしき人が着いていた。過去の経験値も good fit ぽいし、自分より ladder が上の強助っぽいし、いい異動をしたぜ (自己正当化) 。
  • 仕事で! Kotlin を! 書くぞォ!

2024-02-17

  • USD Chapter 5. Disk/SSD の速度を測ります。40MB のブロックを非同期に書き込んでバッファの中身をスキャンしつつ観測することで read/write のパターンを計測できます、とかすげーなおい。なお aio_read() というのを使うらしい。昔 Linux の Async File IO は動くんだか動かないんだかよくわからなかった(普通の non-blocking read() は動かなかった)が、時は流れ普通に使えるようになっていたのだねえ。てか Advanced Programming in the UNIX Environment に普通に出てくるっぽいな。単に自分が知らなかっただけで・・・。

2024-02-18

  • USD, Chapter 6 networking ですが、税金がおわるまで slowdown いたします。
  • 納税終了!がんばった!そして給料は下がったが配当が増えた結果世帯年収は下がらなかった!資っ本家〜。そして勤務先の景気は悪いが世間の景気が良いという世情を反映している。NVDA 株を持っている同僚は勤労意欲が削がれると言っていたが、わかるわ。
  • はー削られた・・。気晴らしに走ってくるべし。

2024-02-19

  • 体調悪いなと体温を測ると熱あり。風邪か。昨日から微妙に体調悪かったのだよね・・・。税金は乗り切れてよかったが、力尽きたとも言える。

2024-02-22

  • 子の学校が休みのため取得していた有給が終わりましたが、熱が下がりません。明日病院行きます・・・。

2024-02-23

  • COVID も Flu も tested negative. ただの風邪らしいが、それでもしんどい。

2024-02-24

2024-02-26

  • 今度は妻がダウン。先週は負担をかけまくってしまったためやむなし。お大事に。
  • しかしそんな時に限って車の不穏なランプが灯ったりするのである。

2024-02-27

  • 在宅勤務。
  • 仕事。
  • 愚痴を書いてあったのを検閲。前向きに生きような。

2024-02-28

2024-02-29

  • Leap Day というんだよ、と子に教わる。
  • Podcast を出さなければ・・・。
    #127: Programming Massively Parallel Processors (Ch.1- Ch.3) – Misreading Chat
  • ongoing by Tim Bray · Money Bubble
    前回の記事といい、Tim Bray すっかりおもろなくなったな...もともとそんなに音楽性ある感じでもなかったが、自分が XML 世代なので HN に出てくるとつい読んでしまう。
  • わあ部門内に東京リモート勤務のひとを発見してしまった。そういえば求人みたことあるな。めずらしー!日本人でないところが時代であるな。日本に住みながらアメリカ資本の会社で働くというのは良いことが多いですからね。