2 ポイント 投稿者 GN⁺ 2023-08-04 | 1件のコメント | WhatsAppで共有
  • 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件のコメント

 
GN⁺ 2023-08-04
Hacker News のコメント
  • 私が働いた会社には、どこにもこういう人が必ずいた気がする。
    どう動いているのか皆目わからないレガシーコードを見つけたときに訪ねていくと、10年分の社内政治と失敗したリプラットフォーム化プロジェクトについて、2時間の歴史講義を聞かされる人。それでも憎めない。

    • 「……それから AIX マシンは本当に化け物だった。20台あって、それぞれ専用の20アンペア回路を食っていた。鋼鉄製ケースのアースはしょっちゅう外れるし、アップグレードするにはまず分厚い革手袋を用意しないといけなかった……」
    • これ、私のパロディだってわかるよ ;)
      なぜ私が2時間の歴史を語るのか知っているか? 第一に、人間同士のやり取りは必要だが、人間が特に好きなわけではないから。第二に、君がただ暗記して復唱するのではなく、学んで理解し、次からは私を煩わせずに自分で解決してほしいからだ。さあ行け、今週分の社交ノルマはもう満たした。/冗談 — 本当に冗談かな?
    • そういう人を何人か見てきたが、中には金と同じくらい価値がある人もいる。ただし多くは、長年すべてが崩れないよう支え続けてきたトラウマのせいで自分のやり方に固着していて、ほとんど全員が停滞し、新しいアイデアを取り込めない。会社の機能不全をあまりにも長く背負い込み、自分の問題のように抱え込んだ結果、人間として抜け殻みたいになっているケースも多い。
    • そういう人たちはたいてい優秀なエンジニアでもある。何かの 1.0 を何度も新しく書くほうがずっと簡単だ。何十年も改善されてきたシステムをさらに改善するのは、ひどく難しいエンジニアリング課題だ。30年以上続く会社ではこういう人たちこそ最重要なのに、尊敬されるどころか、リンク先の記事のような見下した文章を浴びせられる。
    • 悪い選択には見えない。会社が十分に安定していて、25年にわたってエンジニアの給料をもらいながら雇用の安定まで異常に良いなら、悪くない道だ。
      50歳になって、出たばかりの最新フレームワークの腕前で28歳の面接官を感心させようと必死になるよりは良さそうだ。
  • ある人は、自分がキャリアを通じて転職を繰り返す理由を「他人がひどいコードを書くから」だと自分に言い聞かせて生きている。
    Karl Hackerman は会議のたびに不満を並べる。システムを Rust で書き直す許可が下りないので、やる気がなさそうに見える。最新のフレームワークやベストプラクティスをたくさん知っていて、職場でそれを使えないことにいつも苛立っている。他の人たちは最高のプログラマーになろうとせず、賃金奴隷に甘んじているからだと考えている。みんなが彼を我慢しているのは、どうせ6か月後には辞めるとわかっているからだ。Karl は今47歳で、数年以上同じ職場にいたことがない。最近は主にフリーランスで働き、今では誰も気にしていない技術やフレームワークの本を売ろうとしている。

    • 著者です! これはすごくいい。私も完全にこういう人だった時期がある :) 耐えがたい知ったかぶりにならない方法を学ぶのは、意外に難しい課題だった。
      過度に熱心な何でも屋エンジニアたちを『愚者の連合』風に扱った長編小説も書いている。自分の魂が入りすぎているので、しばらく完成できなさそうだ。
    • 寝て起きたら、こんなふうに攻撃されているとは思わなかった。警告もなしに。残酷だ。
      それでもまだ40代ではないので、迷走した道から立ち直る時間は残っている。
    • これは良かった。
      私も最初のころはこう感じていたが、やがて本業では純粋にリリースすることに満足を見いだし、コンピュータサイエンスの神秘はたいてい自分の時間に探求する方法を学んだ。たまに両者が重なることもあるが、良い職場でも私の経験上、80%は退屈だ。
    • ベストプラクティス」で吹いた。昔こういう人と働いたことがある。まともな論拠がないときはいつもその言葉を使っていて、実際ほぼいつもそうだった。重要でないことほど、いちばん強い意見を持っていた。
    • ちなみに Karl は MyCurrentIntern として転生した。
  • 10年間、サードパーティ製ライブラリを一切使わない C++ コードベースで働いていた。STL すら使っていなかった。当時は、より高速でスレッドセーフな文字列とマップが必要だったからだ。Boost? 何それ?
    ソケット上に自作したメッセージングミドルウェアや、Unix システムコールで作った独自の分散プロセス管理システムもあり、HTML や Java などは一行もなかった。快適で高給な生活で、高頻度取引と分散・並行コンピューティングのような最先端の問題を解いていた。2013年にこの運命を避けようと無理やり退職し、年収が半分の小さな会社に移って、Web 技術スタックを一から学んだ。成功したと思いたい

    • 高頻度取引で低レベル C++ を扱う人が、同じような運命をたどるとは思えない。そういう仕事で得られるスキルの大半は、転用可能性が高そうに見える。この記事は、業務の95%が会社固有のビジネスロジックに合わせた CRUD 実装であるような職に近いように見える。
      そういう職場を変える理由があるとすれば、競業避止の補償期間をやり過ごすため、くらいしか思い浮かばないが、この業界にいるわけではないので、見落としていることがあるかもしれない
    • 「Web 技術スタックを一から学ぼうとした。この運命を避けるためだった。成功したと思いたい」
      これが意図したユーモアなのかどうか、よく分からない
    • 自分にもかなり似た経験がある。大手通信会社の下請けとして7年間、CORBA、pthreads、ACE reactor ライブラリを扱っていた。最初の週に、コードベースへ sleep 呼び出しを1つ入れたら、UAT 環境のコールセンターサービス全体を止めてしまった。数年後には、数千スレッドのあるコアダンプを簡単にデバッグし、セマフォと再入可能性を理解し、POA と BOA Orbix アダプタの違いも説明できるようになった。
      何でも知っている伝説上の人物になっていったが、それは技術的に優れていたからではなく、ビジネスを理解し、それが複数のアーキテクチャ要素にどう対応しているかを知っていたからだった。そのうち一生そこにいるかもしれないという気がして、Web という広い世界があると思い、2004年に PHP を学び始めた。伝説的な「5分でブログ」Rails デモが出た後、2007年に転職し、それ以来振り返っていない
    • C++ は本当に骨の折れる仕事だ。誰もが自分ならもっと上手くできると思い、他人のコードを信じないので、結局 NIMBY 的なコードと難解なビルド設定からなる巨大な一枚岩が生まれる。コードレビューも同じ C++ 的な理由で非常につらい。あらゆるものがあらゆるものに影響し得て、メモリ・時間・順序による動作上の効果に依存するようになると、カプセル化という概念が崩れがちになる。どんな変更も、適切な条件下では本番環境で自分の足を撃ち抜く弾丸だ。
      言語も、ツールも、他の開発者も正しいと信じられなければ、生産的でいるのは難しい
    • 自分も似たようなことをした。C++ は衰退すると思っていた。今では Java と JavaScript に熟達し、優れたフルスタックアプリも作れる。ところが高頻度取引 C++ の仕事は倍の給料を出しているので、システムが退屈でも戻ろうかと考えている
  • 働くために生きるのではなく、生きるために働くべきだ。Arthur は昔、思い切り遊び、寝不足のまま出勤し、振り返りやリファインメント会議の最中に昼寝していたのかもしれない。開発者としては最も役に立たなかったかもしれないが、Burning Man では王様だったのかもしれない。今では十分な 401k で引退し、ファーマーズマーケットで売る小さな木製人形を作れる。実際のところは、そこで自分が釣った一番大きな魚の話や、義理の家族が共同出資してくれればラーメンのフードトラックを開きたいという夢を、人々に聞かせたいだけなのだろう。Arthur は人生を生きた――ただし職場でではなかっただけだ

    • 人生の大半が仕事なら、それは難しい。フルタイムの仕事、運動、身だしなみ、食事のようなものを起きている時間から差し引くと、本当の人生のための余白を見つけるのは非常に難しいと感じる。実質的には1日2時間ほどと週末だけだが、その週末も平日に終わらなかった用事を片付けるのに使われがちだ。
      退職してからようやく自分の人生が始まる、という考えは嫌だ。自分の住む場所の法定退職年齢が67歳かもしれないなら、なおさらだ
    • 作り話の例だったのだろうけれど、小さなディテールが本当に良かった。偶然でもかなり自分の話のようで、認められた気がした :)
    • そうなら本当にいいし、A氏の現実もそういう変形であってほしい。
      ただ、たいていはそこまでバラ色ではない。Arthur は太り気味で健康問題が多く、一人で過ごし、XYZ――例えばアニメやゲームのようなものに不健康にのめり込んでいる人かもしれない。それでも子どもがいて、きちんと育てたのなら、私も親としてそれだけで大いに尊敬する。振り返れば、残りは細部にすぎない
  • 才能のある人はどこにでもいるし、何か画期的で世界に影響を与える存在になれる確率は途方もなく小さい。自分の価値をその目標に賭けると、メンタルヘルスが大きく揺らぐことになる。
    子どもができてから、野心や執着の度合いは明らかに変わった。以前は最高になることに取り憑かれていたが、今は「金だけ出してくれ」に近く、家族や友人のための自由時間をできるだけ多く確保することが優先だ。私は Mr. Westbrook のようなキャリアも悪くないと思う。幸い、自分のキャリアを通じて彼ほどひどい同僚たちに悩まされたことはないが。人によって望むものは違うので、判断する必要はない。偉大な思想家 Alicia Keys が言ったように、「あなたはあなたらしく生きればいい」

    • 最高になろうとするより、昨日の自分より良くなることだけでもかなり遠くまで行けるのだと分かった。
      競争したことはなく、ただ自分の仕事をしていただけだった。そうしているうちに、自分が刺激を受けていた多くの人よりも、すでに多くを知り、先に進んでいることに気づいた。それでも、それが目標だったことは一度もないし、今も違う。私はいわゆるダークデベロッパーの一人にすぎない。ただ自分の仕事をし、毎回より良くやろうとし、軽いものであれ真面目なものであれ、殿堂入りのようなものは気にしない
    • 私はこの問題について、ずっと振り子のように揺れている状態だ。「世界的に画期的」だったり「世界に影響」を与えたりする目標ではなく、自分の能力の範囲内で「優れた」仕事をしたい、という意味だ。
      最初に子どもができたときは、家族の生活を支え、一緒に過ごす時間を確保すること以外、仕事に何も求めない方向へ大きく傾いた。もちろん、同僚を支え、信頼を損なわない範囲での話だ。しかし子どもたちが成長してだんだん自立していくにつれ、自分の精神的な余裕とエネルギーが増していく段階に入り、今ではそのエネルギーを影響力のある仕事に使うことに、再びわくわくしている。ただ重要なのは、自分と家族にとって健康で幸せなバランスを取る方法について、はるかに賢くなったという点だ。簡単だと無邪気に考えてはいないし、努力し続ける必要があると思っている。だが、赤ちゃんの世話でぼんやりした霧の中から抜け出してみると、家族だけに全力を注ぐことも、仕事だけに全力を注ぐことも、どちらも自分の道ではないのだと、またはっきりした
    • 私は逆に見ている。現代社会と人生にはあまりにも多くの側面があり、毎年新しい道や分野が生まれているので、特定のコミュニティやニッチ領域で、まだ誰もやっていない世界を揺るがす仕事を見つけるのは、実際にはかなり簡単だ。
      みんなにとって世界を揺るがす仕事というのは、かなり過大評価されている
    • 同意する。この文章の要点が何なのか分からない。少し皮肉っぽいエリート主義以外には見当たらない。元記事の筆者の気分が少しでも良くなっているといいのだが
    • 才能のある人がどこにでもいるという話には同意しない。Jonathan Blow、Salvatore Sanfilippo(redis)、Mike Pall(LuaJIT) のような人が一人いるごとに、feature factory で働く平凡な開発者が何千人もいるはずだ。驚くようなソフトウェアは運だけでは作れない。GenericCo の上司がわざわざやって来て、君がずっと夢見ていたものを作ってくれと頼むこともない。
      面白いソフトウェアを作ることを選ぶか、完全に妥当な何千もの理由のどれかで小さく生きることを選ぶかだ。自分がそれほどすごいと思うなら、会社が「機会をくれなかった」と責めないでほしい。コーディングに必要な道具はすでに全部持っている。すごいものを作ればいい
  • 笑える話ではあるが、Arthur が幸せだった、あるいは今幸せなら、何の問題もない。その部分は本文には出てこない

    • まさにこれ。安定していて楽な職場で何年も過ごし、コードベースと技術を十分に把握して、家族・友人・趣味に使える時間がたくさんあった可能性が高い。この話よりもHNの反応のほうが怖く感じる
    • 問題はある。
      2023年であり、今日の企業は、君に収益性がないと判断した瞬間に喜んで解雇する。この架空の人物は退職まで行けたのだからよかった。だが、この戦略を15年続けたところで会社が人員を18%削減しなければならず、今職探しをしている人はどうなるのか。有用なスキルに大きな空白があり、退職まで何十年も残っている。その人は本当に厳しい状況にある
    • 雇用主が幸せだったかどうかも重要だ。35年間残っていたのだから、幸せだったということだ
    • 楽な役割一つで35年、良い雇用の安定、早期退職まで。Arthur は幸せだった
    • でも……彼はキャットフードを食べている。キャットフードを食べる幸せな人をそんなに多く知っているのか?
  • 私たちの会社は医療機器を作っている。ソフトウェア開発ライフサイクルが厳しい分野だ。同僚の一人がはるかに大きな別の医療機器会社に移り、数年後に会ったとき、振り返ってみると私たちの会社は高パフォーマンスの超アジャイル組織だったと言っていた。新しい会社では、実質的に何かを変えるわけでもなく、単に何かを追加するだけの2行のコード変更に1年かかるという。本人が押し続けたにもかかわらず、そうだった。
    公平に言えば、血液透析システムを修正するのは冗談では済まない

    • 昔のAT&T 5ESS交換機にも似たような雰囲気があった。今は分からない。ルールは機能削除禁止だったので、関数を消す代わりに関数内のコードを消していた。Bell Labs 出身の非常に優秀な人が 5ESS チームにいて、主要な電話システム障害を防ぐためのあらゆるルールのせいで、1年に信じられないほど少ない行数のコードしか書かなかった、という文章を読んだ記憶がある
    • そこには多くの分析が伴う。医療機器と輸送、特に鉄道車両の信号システムの両方で働いたことがある。人が乗った巨大な金属の塊を動かす仕事は、決して冗談では済まない
  • これはプログラマー版のW・H・オーデンの詩 The Unknown Citizen みたいだと思う [0]。
    初めて読んだときは、平凡で日常的なことに人生を浪費した人についての悲しい詩だと思った。今では、外から見れば平均的な人生を送っていたが、世間とは共有しなかった豊かな内面生活があった可能性が高く、誰が偉大だったのかを外部から測定できる指標に期待すべきではない、という肯定的な詩として見ている。この男の情熱が人間用Soylentキャットフード混合物というのも素晴らしい。彼はその長い年月ずっと働き、ついに自分の情熱のために解放されたのだ。
    [0] https://poets.org/poem/unknown-citizen

    • Sisyphusも思い浮かぶ。
      人生は無意味で、苦役や反復の中で幸福であるべきで、その代わりに「旅路」と一瞬一瞬に満足すべきだという考え。文学や歴史全般に非常によく見られる。技術を持つ現代人はどうにか違っていて、新たな水準に到達して目的を見いだしているのだと思いたいが、今はもうよく分からない。結局は日々を生きて死ぬだけなのかもしれない。
      https://en.wikipedia.org/wiki/Sisyphus
      https://en.wikipedia.org/wiki/The_Myth_of_Sisyphus
    • それは平均をはるかに超える人生に聞こえる。大きな問題もなく、あらゆる面で社会の機能的な構成員? 良好な人間関係? 子どもが5人?
      詩の最後の行にもかかわらず、彼は実際には幸せだったことが明らかなように思える。そうでなければ職場で爆発するか、アルコール依存になるか、離婚するかしていただろう。あるいは極度のストア派だったか
    • 現在の時代精神と韻を踏む古い一節だ

      Our researchers into Public Opinion are content
      That he held the proper opinions for the time of year;
      When there was peace, he was for peace: when there was war, he went.

  • これがいわゆる平凡なプログラマーを刺す文章だというなら、面白くない。
    APと呼ぶ友人がいて、地元のJava開発会社でプログラマーとして働いている。卒業後12年間同じ場所で働いていて、この記事の描写にある程度当てはまるが、私の知る人の中ではかなり幸せな部類に入る。平均以上に稼ぎ、仕事は簡単でそれほどきつくない。コードベースを隅々まで知っていて、同僚たちともうまくやっている。仕事の外では友人たちと自転車に乗ったりビールを飲んだりし、妻と世界を旅している。人によって優先順位は違うし、誰もが仕事で卓越することに執着しているわけではない

    • この記事は、何年も、何十年も最小限の努力でやり過ごす社員を刺しているのだと思う。「数百行のコード」というくだりがその合図だ。
      退屈で腐ったコードベースで働いている優秀なエンジニアもたくさんいる。それは恥ずかしいことではない
    • 著者です! 同意します :) 追加の文脈はこちらにあります
      [0] https://news.ycombinator.com/item?id=36985316
  • 誰でもグリーンフィールドで新しくてピカピカしたものを作れる。うまくいかなくても、もともと作ろうとしていたものがすごくて非常に革新的な[1]試みだったのだから、責める相手や対象はいくらでも見つけられる。時間が経って別の新しくてピカピカしたものへ移るのも、問題ないどころか期待されていることですらある。
    一方で、良い時期も悪い時期も経験しながら一つのものに最後まで付き合い続けることは、多くの人にできることではない。たいていの場合、それだけで十分というわけではないが、持続可能な成功には必要なことのように見える。例: Guido van Rossum[2]、Linus Torvalds、Daniel Stenberg。
    [1] 「高リスク」という性質を小さな文字で書く必要すらない。すでにみんなそう理解しているから。
    [2] 出典は見つけられないが、Pythonのブレイクスルーについて質問されたとき、Guidoがそういうものはなく、ただ継続的に着実に成長しただけだと語っていたインタビューを覚えている

    • その例は、平均的な組織のITプロジェクトとはほとんど関係がない。スコープも、成功の定義も、「完了」の定義も違う。
      会社がプログラミング言語やオペレーティングシステムを作っているなら、その仕事が本当に愛している仕事なのか確認すべきだ