ある開発者、ひどいコードベースを習得するのに職業人生のすべてを捧げる
(taylor.town)- Arthur Westbrookは58歳で早期退職を発表し、35年間にわたり、ある医療ソフトウェアを動かしているとされるレガシーコードベースに携わった
- 在職中に貢献したコードは数百行だったが、一度はレガシーコードに手を入れても会社を潰さなかった、と風刺されている
- Westbrookはコードベース全体の4%以上を理解していると信じており、元同僚はそれを「Wingdingsで書かれた『戦争と平和』」と呼んだ
- 社内で彼は「チームのプログラマーの一人」として知られており、管理者は、移転可能なスキルがなくても長く持ちこたえる才能があったと評した
- 退職記念の反応は薄く、Westbrookは路上パフォーマンスとゴミ箱あさり、SoylentとWhole Foods Premium Adult Cat Salmon Mixを混ぜた料理の腕を磨くことを計画している
35年もののレガシーコードベース
- Arthur Westbrookは今週、58歳で早期退職を発表した
- 彼は35年間にわたり、ある医療ソフトウェアを動かしているとされるコードベースに携わった
- 在職期間中に数百行のコードを貢献した
- 一度はレガシーコードに手を入れたが、会社が終わることはなかった
- Westbrookは自分がコードベース全体の4%以上を把握していると信じている
- 元同僚はそのコードベースを「Wingdingsで書かれた『戦争と平和』」と呼んだ
会社の反応と退職後の計画
- 社内でWestbrookは「チームのプログラマーの一人」として知られていた
- 管理者は、Westbrookには移転可能なスキルを身につけなくても一生懸命働く才能があったと述べた
- 彼を置き換えるには「ジュニア開発者2人とKeurigが1台」必要だとも付け加えた
- 数十年の勤続を記念して、同僚の一人が「来月あたり」に酒をおごると言った
- チームメンバーの誰もコメントに応答しなかった
- 退職後、Westbrookは路上パフォーマンスとゴミ箱あさりを試してみる予定だ
- SoylentとWhole Foods Premium Adult Cat Salmon Mixを混ぜた料理も引き続き改良していく予定だ
1件のコメント
Hacker News のコメント
私が働いた会社には、どこにもこういう人が必ずいた気がする。
どう動いているのか皆目わからないレガシーコードを見つけたときに訪ねていくと、10年分の社内政治と失敗したリプラットフォーム化プロジェクトについて、2時間の歴史講義を聞かされる人。それでも憎めない。
なぜ私が2時間の歴史を語るのか知っているか? 第一に、人間同士のやり取りは必要だが、人間が特に好きなわけではないから。第二に、君がただ暗記して復唱するのではなく、学んで理解し、次からは私を煩わせずに自分で解決してほしいからだ。さあ行け、今週分の社交ノルマはもう満たした。/冗談 — 本当に冗談かな?
50歳になって、出たばかりの最新フレームワークの腕前で28歳の面接官を感心させようと必死になるよりは良さそうだ。
ある人は、自分がキャリアを通じて転職を繰り返す理由を「他人がひどいコードを書くから」だと自分に言い聞かせて生きている。
Karl Hackerman は会議のたびに不満を並べる。システムを Rust で書き直す許可が下りないので、やる気がなさそうに見える。最新のフレームワークやベストプラクティスをたくさん知っていて、職場でそれを使えないことにいつも苛立っている。他の人たちは最高のプログラマーになろうとせず、賃金奴隷に甘んじているからだと考えている。みんなが彼を我慢しているのは、どうせ6か月後には辞めるとわかっているからだ。Karl は今47歳で、数年以上同じ職場にいたことがない。最近は主にフリーランスで働き、今では誰も気にしていない技術やフレームワークの本を売ろうとしている。
過度に熱心な何でも屋エンジニアたちを『愚者の連合』風に扱った長編小説も書いている。自分の魂が入りすぎているので、しばらく完成できなさそうだ。
それでもまだ40代ではないので、迷走した道から立ち直る時間は残っている。
私も最初のころはこう感じていたが、やがて本業では純粋にリリースすることに満足を見いだし、コンピュータサイエンスの神秘はたいてい自分の時間に探求する方法を学んだ。たまに両者が重なることもあるが、良い職場でも私の経験上、80%は退屈だ。
10年間、サードパーティ製ライブラリを一切使わない C++ コードベースで働いていた。STL すら使っていなかった。当時は、より高速でスレッドセーフな文字列とマップが必要だったからだ。Boost? 何それ?
ソケット上に自作したメッセージングミドルウェアや、Unix システムコールで作った独自の分散プロセス管理システムもあり、HTML や Java などは一行もなかった。快適で高給な生活で、高頻度取引と分散・並行コンピューティングのような最先端の問題を解いていた。2013年にこの運命を避けようと無理やり退職し、年収が半分の小さな会社に移って、Web 技術スタックを一から学んだ。成功したと思いたい
そういう職場を変える理由があるとすれば、競業避止の補償期間をやり過ごすため、くらいしか思い浮かばないが、この業界にいるわけではないので、見落としていることがあるかもしれない
これが意図したユーモアなのかどうか、よく分からない
何でも知っている伝説上の人物になっていったが、それは技術的に優れていたからではなく、ビジネスを理解し、それが複数のアーキテクチャ要素にどう対応しているかを知っていたからだった。そのうち一生そこにいるかもしれないという気がして、Web という広い世界があると思い、2004年に PHP を学び始めた。伝説的な「5分でブログ」Rails デモが出た後、2007年に転職し、それ以来振り返っていない
言語も、ツールも、他の開発者も正しいと信じられなければ、生産的でいるのは難しい
働くために生きるのではなく、生きるために働くべきだ。Arthur は昔、思い切り遊び、寝不足のまま出勤し、振り返りやリファインメント会議の最中に昼寝していたのかもしれない。開発者としては最も役に立たなかったかもしれないが、Burning Man では王様だったのかもしれない。今では十分な 401k で引退し、ファーマーズマーケットで売る小さな木製人形を作れる。実際のところは、そこで自分が釣った一番大きな魚の話や、義理の家族が共同出資してくれればラーメンのフードトラックを開きたいという夢を、人々に聞かせたいだけなのだろう。Arthur は人生を生きた――ただし職場でではなかっただけだ
退職してからようやく自分の人生が始まる、という考えは嫌だ。自分の住む場所の法定退職年齢が67歳かもしれないなら、なおさらだ
ただ、たいていはそこまでバラ色ではない。Arthur は太り気味で健康問題が多く、一人で過ごし、XYZ――例えばアニメやゲームのようなものに不健康にのめり込んでいる人かもしれない。それでも子どもがいて、きちんと育てたのなら、私も親としてそれだけで大いに尊敬する。振り返れば、残りは細部にすぎない
才能のある人はどこにでもいるし、何か画期的で世界に影響を与える存在になれる確率は途方もなく小さい。自分の価値をその目標に賭けると、メンタルヘルスが大きく揺らぐことになる。
子どもができてから、野心や執着の度合いは明らかに変わった。以前は最高になることに取り憑かれていたが、今は「金だけ出してくれ」に近く、家族や友人のための自由時間をできるだけ多く確保することが優先だ。私は Mr. Westbrook のようなキャリアも悪くないと思う。幸い、自分のキャリアを通じて彼ほどひどい同僚たちに悩まされたことはないが。人によって望むものは違うので、判断する必要はない。偉大な思想家 Alicia Keys が言ったように、「あなたはあなたらしく生きればいい」
競争したことはなく、ただ自分の仕事をしていただけだった。そうしているうちに、自分が刺激を受けていた多くの人よりも、すでに多くを知り、先に進んでいることに気づいた。それでも、それが目標だったことは一度もないし、今も違う。私はいわゆるダークデベロッパーの一人にすぎない。ただ自分の仕事をし、毎回より良くやろうとし、軽いものであれ真面目なものであれ、殿堂入りのようなものは気にしない
最初に子どもができたときは、家族の生活を支え、一緒に過ごす時間を確保すること以外、仕事に何も求めない方向へ大きく傾いた。もちろん、同僚を支え、信頼を損なわない範囲での話だ。しかし子どもたちが成長してだんだん自立していくにつれ、自分の精神的な余裕とエネルギーが増していく段階に入り、今ではそのエネルギーを影響力のある仕事に使うことに、再びわくわくしている。ただ重要なのは、自分と家族にとって健康で幸せなバランスを取る方法について、はるかに賢くなったという点だ。簡単だと無邪気に考えてはいないし、努力し続ける必要があると思っている。だが、赤ちゃんの世話でぼんやりした霧の中から抜け出してみると、家族だけに全力を注ぐことも、仕事だけに全力を注ぐことも、どちらも自分の道ではないのだと、またはっきりした
みんなにとって世界を揺るがす仕事というのは、かなり過大評価されている
面白いソフトウェアを作ることを選ぶか、完全に妥当な何千もの理由のどれかで小さく生きることを選ぶかだ。自分がそれほどすごいと思うなら、会社が「機会をくれなかった」と責めないでほしい。コーディングに必要な道具はすでに全部持っている。すごいものを作ればいい
笑える話ではあるが、Arthur が幸せだった、あるいは今幸せなら、何の問題もない。その部分は本文には出てこない
2023年であり、今日の企業は、君に収益性がないと判断した瞬間に喜んで解雇する。この架空の人物は退職まで行けたのだからよかった。だが、この戦略を15年続けたところで会社が人員を18%削減しなければならず、今職探しをしている人はどうなるのか。有用なスキルに大きな空白があり、退職まで何十年も残っている。その人は本当に厳しい状況にある
私たちの会社は医療機器を作っている。ソフトウェア開発ライフサイクルが厳しい分野だ。同僚の一人がはるかに大きな別の医療機器会社に移り、数年後に会ったとき、振り返ってみると私たちの会社は高パフォーマンスの超アジャイル組織だったと言っていた。新しい会社では、実質的に何かを変えるわけでもなく、単に何かを追加するだけの2行のコード変更に1年かかるという。本人が押し続けたにもかかわらず、そうだった。
公平に言えば、血液透析システムを修正するのは冗談では済まない
これはプログラマー版のW・H・オーデンの詩 The Unknown Citizen みたいだと思う [0]。
初めて読んだときは、平凡で日常的なことに人生を浪費した人についての悲しい詩だと思った。今では、外から見れば平均的な人生を送っていたが、世間とは共有しなかった豊かな内面生活があった可能性が高く、誰が偉大だったのかを外部から測定できる指標に期待すべきではない、という肯定的な詩として見ている。この男の情熱が人間用Soylentキャットフード混合物というのも素晴らしい。彼はその長い年月ずっと働き、ついに自分の情熱のために解放されたのだ。
[0] https://poets.org/poem/unknown-citizen
人生は無意味で、苦役や反復の中で幸福であるべきで、その代わりに「旅路」と一瞬一瞬に満足すべきだという考え。文学や歴史全般に非常によく見られる。技術を持つ現代人はどうにか違っていて、新たな水準に到達して目的を見いだしているのだと思いたいが、今はもうよく分からない。結局は日々を生きて死ぬだけなのかもしれない。
https://en.wikipedia.org/wiki/Sisyphus
https://en.wikipedia.org/wiki/The_Myth_of_Sisyphus
詩の最後の行にもかかわらず、彼は実際には幸せだったことが明らかなように思える。そうでなければ職場で爆発するか、アルコール依存になるか、離婚するかしていただろう。あるいは極度のストア派だったか
これがいわゆる平凡なプログラマーを刺す文章だというなら、面白くない。
APと呼ぶ友人がいて、地元のJava開発会社でプログラマーとして働いている。卒業後12年間同じ場所で働いていて、この記事の描写にある程度当てはまるが、私の知る人の中ではかなり幸せな部類に入る。平均以上に稼ぎ、仕事は簡単でそれほどきつくない。コードベースを隅々まで知っていて、同僚たちともうまくやっている。仕事の外では友人たちと自転車に乗ったりビールを飲んだりし、妻と世界を旅している。人によって優先順位は違うし、誰もが仕事で卓越することに執着しているわけではない
退屈で腐ったコードベースで働いている優秀なエンジニアもたくさんいる。それは恥ずかしいことではない
[0] https://news.ycombinator.com/item?id=36985316
誰でもグリーンフィールドで新しくてピカピカしたものを作れる。うまくいかなくても、もともと作ろうとしていたものがすごくて非常に革新的な[1]試みだったのだから、責める相手や対象はいくらでも見つけられる。時間が経って別の新しくてピカピカしたものへ移るのも、問題ないどころか期待されていることですらある。
一方で、良い時期も悪い時期も経験しながら一つのものに最後まで付き合い続けることは、多くの人にできることではない。たいていの場合、それだけで十分というわけではないが、持続可能な成功には必要なことのように見える。例: Guido van Rossum[2]、Linus Torvalds、Daniel Stenberg。
[1] 「高リスク」という性質を小さな文字で書く必要すらない。すでにみんなそう理解しているから。
[2] 出典は見つけられないが、Pythonのブレイクスルーについて質問されたとき、Guidoがそういうものはなく、ただ継続的に着実に成長しただけだと語っていたインタビューを覚えている
会社がプログラミング言語やオペレーティングシステムを作っているなら、その仕事が本当に愛している仕事なのか確認すべきだ