ハクソク

世界を動かす技術を、日本語で。

30年間、毎日「Phish」を聴きながらプログラミングをしていました

概要

  • Phishの音楽とプログラミングが人生の中心であった筆者の三十年の物語
  • 音楽と仕事が完璧に融合した日々の幸福と一体感
  • 管理職への転換でフロー状態が失われた現実
  • 新しい仕事のリズムと音楽との乖離への戸惑い
  • フローを取り戻す方法を模索する問いかけ

Phishとプログラミング、三十年の一体感

  • FacebookのPhishグループで、Vanessa BayerPaul Ruddがランチテーブルで音楽に没頭するTikTok動画のオーバーダブが話題
    • 元の音楽はFleetwood Macだが、Phishの「Down With Disease」に差し替えられていた事例
    • ファンが自発的にポップカルチャーをPhish中心に再構築するコミュニティ文化
  • 筆者自身も三十年、Phishを聴きながらプログラムを書く日々
    • 新しい仕事の面接で「Phishを流してくれれば本領発揮できる」と冗談を言うほど
    • 実際は冗談ではなく、音楽と集中状態が完全に結びついた生活
  • 1995年にPhishに出会い、15歳で最初のプロのプログラマーとして働き始める
    • 普通のアルバイト面接では「オーバースペック」として落とされる経験
    • 音楽とコードだけが人生の中心、他の選択肢はなかった
  • 仕事と趣味の境界が消失、好きなことを仕事にできる幸運
    • 他の同年代が様々なことを試す中、筆者は早くから自分の道を決めていた
    • 休日や長期休暇も、やることは一貫してPhishを聴きながらプログラミング
  • 分散システムやバックエンドサービスなど、複雑な開発もPhishの長いジャムと同調
    • 長時間の集中を求める作業と、Phishの音楽体験の親和性

音楽と仕事の儀式、そして創造

  • Berklee College of Musicで昼は音楽ソフトウェア開発、夜はNortheasternで授業
    • 深夜の電車で「Junta」を流しながら帰宅、音楽と日常の一体化
  • 大学院時代の博士論文もPhishと共に執筆
    • Couch tourでライブ配信を見ながら、分散システムについて執筆
    • 音楽と作業のリズムが重なり、創造性が高まる瞬間を体感
  • ヨーロッパ在住時も、毎日Phishを聴きながらコードを書く習慣を継続
    • 何度も聴いたライブは、ソロを暗記するほど聴き込む
  • 三十年間、音楽とプログラミングのフロー状態が人生の中心
    • 仕事と趣味が完全に重なり合う幸福

管理職への移行と失われたフロー

  • 2024年以降、エンジニアリングマネージャーとしての新たな役割
    • コードを書くのではなく、エージェントの管理や調整が主な業務
    • タスクの切り替えや短いレスポンスが求められ、一貫した集中が困難
  • 音楽は以前よりも生活に溢れているが、仕事との同期が失われた実感
    • Phishのジャムのような「連続的な集中」と、現代の断続的な仕事リズムのギャップ
    • 曲の途中で何度もコンテキストスイッチが発生し、音楽と仕事が並行しているだけで交わらない
  • フロー状態が消え、創造性や充実感も減少
    • 仕事は有益だが、かつてのような「内側にいる感覚」がなくなる

今後への問い

  • Phishの音楽に没頭するVanessa Bayerのような自分は、今や周囲を見つめる側
    • フロー状態は「成果を出す場所」だけでなく、「充実感や創造性が宿る場所」だったと実感
  • エージェント中心の世界で、フロー状態をどう取り戻すか
    • 進化や効率化の中で失われたものを、どう再構築するかという課題

Hackerたちの意見

うん、俺も同じ気持ちだよ。仕事であの感覚を取り戻そうとするのは諦めた。20年も運が良かったけど、今はクラフトのためにやるなら、OpenBSDに貢献する時期かな。お金のためじゃなくて、フィッシュを聴きながらね。
同じく。俺は30年間、アンダーワールドを聴きながらプログラミングしてた。フアニータ/キタレスの始まりを聴くと、すぐにフロー状態に入れるんだ。エージェントを使ってると、もう合わなくなっちゃったけど。投稿者とほぼ同じ年齢みたいで、ちょっとだけ年上かな。で、俺もスーパーの仕事を持ってる。だから、今は個人的なOpenBSD関連のプロジェクトに取り組んでるんだけど、果たしてそれが日の目を見るかは分からない。でも、やってて楽しいし、AIは使ってない。マニュアルページをじっくり読んだり、OpenBSDのソースコードを見たりするのが強制されてる感じ。あのコードのコメントがほとんどないのは、ちょっと「ふざけんな」って思う。フィッシュを試してみるべきかな。
> もしクラフトのためにやりたいなら、OpenBSDに貢献する時だと思う。こういうプロジェクトは、最高品質のソフトウェアになると思う。
これを読んで、なんだか懐かしい悲しみを感じた。最近、同じような感覚を持ったことがあるんだ。失った感覚、そして、もう同じようにコードを書いてない自分が「本物のプログラマー」なのかって疑問。かつて誇りを持っていたスキルを手放すのは、変な悲しみがあるよね。でも、著者の立場から考えると、俺は実は運が良かったのかも。この人にとって、コードを書くことは生き方だったのかもしれない。俺の場合、フィールドワークやAIを使い始めたのは比較的最近だから、思ったより早く適応できた。生活全体が変わると、ショックはもっと大きいだろうね。対照的に、俺には守るべき地位や社会的な立場がなかったから、手放すのが楽だったのかも。もし公平に競争しようとしたら、ベテランプログラマーの経験やスキルには勝てなかっただろうし。もちろん、コードを書く能力にはちょっと誇りを持ってたから、手放すのは辛かったし、後悔や劣等感もあった。でも同時に、「本当にベテランと戦わなきゃいけなかったのかな?」って考えちゃう。最近、これがデュルケームのアノミーの概念に似てる気がする。読んでる間、適応、革新、儀式主義、撤退主義、反乱などのカテゴリーについて考えてた。ここには考えさせられるポイントがたくさんある。もし将来、コーディングが今日のエージェントベースのものから別の形に変わったら、俺はどうなるんだろう?今のシニアプログラマーの反応を見て、自分なりの結論を出して、その時に備えられるかもしれない。今は特定の会社に依存したエージェントベースのコーディングが主流だけど、今のエージェントコーディングの価格は安すぎると思う。いつかもっと高くなったら、ローカルLLMが主流になるかも。その時、傷ついたり弱くなったコードを書く能力がまた必要になるかもしれない。だから、どう準備すればいいのか?面白い投稿だった。
商業企業が各開発者からできるだけ多くの価値を引き出そうとするのは理解できるし、マネージャーが仕事をできるだけ早く終わらせたいと思うのもわかる。LLMツールや現在の生産性の向上に彼らが興奮している理由も見える。この投稿はいいポイントをついてるね:LLMモデルを管理することは、特定の問題についてじっくり考えて、その問題を解決してコードに具体化することとは本当に同じじゃない。もし仕事がモデルの管理になるなら、今のソフトウェア開発を楽しむ人たちと、仕事が求めるものとの間に大きな乖離が生まれると思う。LLMツールが定着するかはまだ確信が持てないけど、もしそうなったら、どんな人がソフトウェア開発をすることになるのか気になるな。もしかしたら同じような人たちもいるかもしれないけど、仕事の中で楽しめる別の何かを見つけるかもしれないし、違うタイプの人が多くなると思う。個人的には、すべてのソフトウェア開発がLLMツールによって媒介されて、大企業(AnthropicやGoogleみたいな)にお金を払う必要が出てくるのはすごく不安だな。オープンソースプロジェクトが、OPの著者みたいに「フロー」の状態で働くのを楽しむ人からのPRを受け入れ続けてくれることを願ってる。趣味としてソフトウェアを書くのが好きだけど(仕事でもね)、その趣味が個人的な充実感の大きな源になるかもしれないね。
クロードと一緒にプログラミングするのはまだエンジニアリングだよ。橋を設計するのと同じで、作業者がコンクリートを流し込む代わりに自分がやってもエンジニアリングなんだ。昔は自分でコンクリートを流し込まなきゃいけなかったけど、みんながコンクリートの音や匂いを楽しんでたのは分かる。俺はもう手を汚さずに、実際のエンジニアリングに集中できるのが嬉しい。
これ、ここ2日間で新しいアカウントから見た3回目の橋とコンクリートの比較だ。何か見逃したかな?
> 実際のエンジニアリング、最後の三つの言葉までは同意してたよ。コードを書く技術も「実際のエンジニアリング」だよ。ただ、今はそれを人間にやらせるためにお金を払うエンジニアリングじゃないだけ。
化学エンジニアだけど、これって多くのプロのエンジニアが働くスタイルに似てると思う。ドラフティングはエンジニアリングテクニシャンに回されて、PFDもエンジニアリングテクニシャンに回される…「実際のエンジニアリング」はアイデアや応用、レビュー、そして最も重要なのは最終的な責任にあるんだよね。
この視点ありがとう。ASCII文字をエディタに打ち込むのが本当に恋しいの?それってソフトウェアシステムを作る上で最も重要じゃない部分だと思う。ずっとそうだった。キーを押すことに懐かしさを感じてる人たちは、自分の個人的な体験を大事にしすぎて、仕事の成果にはあまり関心がないってことを示してるんじゃないかな?コーディングが自動化された今、私たちは野心を高めなきゃいけない。皮肉なことに、Phishの音楽は自己を超えた表現から生まれてる(キーボード奏者のPage McConnellを引用すると)。プロセスにおける自分の個人的な利害を手放すことが、Phishの音楽のような美しいものを生み出すんだ。私たちもソフトウェアで同じことをしなきゃ;「私たちの」コードが意味があるなんて考えを手放そう。
そうなんだよね。設計するのは簡単なんだけど、コーディングはめっちゃ退屈。新しいパラダイムが好きで、時々LLMがもっといいアーキテクチャを提案してくれることもあるんだよね!
まるで4歳のアシスタントアインシュタインと一緒にコードを書いてるみたいだね。
いや、これはエンジニアリングじゃなくてマネジメントだよ。
橋を設計しているように感じるかもしれないけど、実際には作業者にそれをやらせて、図面が合理的に見えたらハンコを押してるだけなんだ。ある日、なぜそれが崩れたのか聞かれて、自分がもう理解していないことに気づくかもしれないよ。
最近の6ヶ月で、俺のコーディングの仕事が完全に変わったって言うと、みんな驚くんだ。今はあまりコードを書かず、代わりにコードを書くエージェントを管理してる。まだエンジニアリングだし、そのコードがどういうものか、インターフェースや世界との関わり方、テスト方法など、すごく気にしてる。でも、自分がコードを書かないって考えに慣れるのに時間がかかった。まだどう感じてるか分からないけど、より多くのことができるようになったし、「全体像」に集中できるようになったのは助かってる。日々の業務に追われてると、そういうのは難しいよね。
本当に?コーディングしない人にこの話をすると、全然興味を持ってくれないんだよね。
あなたが言っていることは「エンジニアリング」とは全く違うと思う。あなたは今、マネージャーだ。実質的には、キャリアチェンジに同意したことになる。
彼の痛みが分かる。俺はむしろ逆の方にいるかな。[1] 物事を進めるためにプログラミングしてる。普段はプログラミングがあまり好きじゃない。一つのことに集中しすぎてるから。でも、時々はその集中が好きな時もある。想像して作れるものが大好きだから。だから、俺にとってLLMは素晴らしい。アイデアを出したい時はそうできるし、深く掘り下げたい時もできる。経験も積んできたから、それを支えるだけのバックグラウンドもある。そう言いつつ、このブログ投稿を読んで、著者の痛みを感じた。プログラミングのスペクトラムの反対側が失ったものを理解したのは初めてだ。悲しい気持ちになる。そして、そのせいで、どうやってそれを取り戻すかを考えちゃう。[1] 完全には無理だけど、手でコーディングするのが好きな時もある。
タイミングがすごく大事だよね。30年間もそれを体験できたラッキーな著者がいる一方で、私たちの中にはほんの数年しかそのままの状態で楽しめなかった人もいる。流れの状態やある程度の安定感を持って。少なくとも、変化に備えてこの5年間は計画を立ててたけど、今のタイミングで就職市場に飛び込むのは想像できないな。
> だから、俺にとってLLMは素晴らしい。アイデアを出す人になれるから。楽しめるうちに楽しんでおけ、すぐにLLMが「アイデアを出す人」としても基本的に優れてくるから。今日この記事を読んでいるとき、Butter Ridgeの乳製品農場が閉鎖されるというNYTの記事を読んでいたときと同じ気持ちだった。あの家族がしたいのは、牛を育てて、名前を付けて、ミルクを搾ることだけなのに、工場式農業がそのビジネスの可能性を奪ってしまった。著者の気持ちがよく分かる。これは経済のほとんどの人に影響が出るだろう。
フィッシュが深く集中した作業と相性が良いなら、頻繁に中断される作業にはグラインドコアが合うかも。ほとんどの曲が1分未満だからね。こんなのとか: https://discordanceaxis.bandcamp.com/album/original-sound-ve...
すごいコメント、笑った。
私も似たような傾向がある。コードを書きながら歌詞を聴くのはあんまり合わないから、EDMやグラインドコア、例えばカーカスみたいなのがいい感じ。言葉が少ないか、理解できるものが多いからね。
みんなエージェントの部分について話してるね。この投稿がすごくわかりやすく説明してると思うのは、若い頃から「成長する」「いろいろ試す」「自分を見つける」とかが必要ない人もいるってこと。そういう人は、生まれつき何か(この場合はエンジニア)で、それを一生続けるんだよね。「普通の人」にそのことを説明するのがいつも難しいんだけど、実際、そんな人生は全然退屈じゃない。むしろ、自分の人生で「退屈」だった瞬間なんて一度も思い出せないよ。
退屈が重要な要素だって面白いね。
フェーズを経る人たちは、人生で何かになるために生まれてきたんだと思う。適応力があって、変化に慣れてる。自分の人生をある特定のやり方で一つのことだけをずっとやるのは、他のことをするのが難しくなる致命的な欠陥がある気がする。俺は今までに3〜4回、全く違う人生を生きてきたけど、常に次のものに適応する能力があって、そこにいる間は楽しさを見つけてる。「生き残ることは、奇妙な水の中で泳ぐ能力だ。」個人的には、AIツールは仕事にとって変革的だったけど、働き方にはあまり影響してない。俺はずっとチームでコーディングしてきた。大きくて複雑な部分は自分でやることが多かったけど、仕事(仕事と趣味の両方)は、同僚の強みや時間に基づいて物事を渡し合うことが常だった。AIツールはもう一人の同僚みたいなもので、すごく速く動いてくれるし、今は自分でコーディングすることが減ったけど、俺の目標は常に問題を解決することで、コードそのものではなかった。AIツールは大体うまくやってくれるけど、時々ミスをして、もっと指導が必要だったり、俺が介入して修正する必要があることもある(通常は全体に対して非常に小さなエラーだけど)。もし全部台無しにされたら、最初からやり直す必要があるか、俺が自分でやらなきゃいけないかもしれない。でも、それはほとんどの時間ではない。そして、俺はプロセスの中で何が欠けているのかを見つけて、彼らを正しい方向に導く方法を改善する。協力して、他の開発者をトレーニングしたりメンターしたりしてきたソフトウェア開発者は、AIツールとどうやって働くかを正確に知ってると思う。唯一の大きな違いは、どれだけ本当に優しく接するかってこと。大きな変化が一つあった。以前は、他の人が困っている最も複雑な問題を自分で解決していたけど、今はAIにそれをやらせるようにしている。たとえ自分が修正しなきゃいけないと分かっていても。違いは、同僚の時間や負担、士気を気にかけていること。AIはトークンを反復するために報酬をもらっているから、俺が頼むことに対して罪悪感を感じる必要がない。
> 何かに生まれついている人もいる(この場合はエンジニア)、そして彼らは一生その何かでいる。そうだね、数年のうちに自分のアイデンティティが目の前で変わってしまうのは全然楽しくない。今、どれだけの開発者が本当に悲しんでいるのか、他の人たちは共感が欠けていて「しっかりしろ、ただのツールだ」とか「適応しなきゃ終わりだぞ」って繰り返しているのか気になる。俺は確かにこういう難しい感情を経験してきたし、今は自分の仕事、少なくともキャリアにアイデンティティを持たないことを選んでいる。最近の人たちが「ソフトウェアエンジニア」と呼ぶものには、もう自分を同一視していない。
私が本当に楽しんでいるのは学ぶことなんだ。別の分野で何年も過ごした後にコンピュータに戻ってきて、完全に夢中になった。すべてがやっと噛み合って、何時間も読んだり、コードを書いたり、いろいろ試したりして、新しいことを発見するたびに半端に作ったプロジェクトが積み上がっていった。AIがこれを完全に台無しにしちゃった。誰かにやってもらうのはつまらないし、さらに悪いことに、急速に学び直している気がする。魔法が消えちゃった。あと5年、このゲームにいたいかどうかわからないな。
個人的には、アシストコーディング(オートコンプリートスタイル)は、昔の難しいバグにハマってた頃よりもフロー状態が多いと思う(あれを解決するのは満足感があったけどね)。でも、フルエージェントコーディングは全く逆で、速く動いてすべてを壊すジュニアのダメージコントロールを常にしてる感じ。彼らは良くなってきたけど、まだバカなミスをすることがある。多くのエンジニアが、やる気はあるけど役に立たないチームを管理するのがどんな感じかを実感してる。全然楽しくないよ。
> 個人的には、アシストコーディング(オートコンプリートスタイル)はもっと流れがあると思うけど、これが理解できないんだ。1行以上オートコンプリートすると、何が自動で補完されたか見直さなきゃいけなくて、流れが台無しになる。こういう状況で「流れ」を保つには、コードを見直さないことしかないけど…まだLLMをそこまで信頼する準備はできてないな。
もう一つのことは、AIを使って集中力を高めたり、素早くリサーチしたりするパワーツールスタイルのモードは、かなり安価で、すべてのダメージコントロールやプロンプト調整、その他の外部要因を考慮に入れると、フルエージェントとほぼ同じくらい速いってこと。価格が上がってるから、その認識はかなり魅力的になると思う。
> 個人的には、支援コーディング(オートコンプリートスタイル)は、昔の難しいバグにハマっていた頃よりもフロー状態が多いと思う(それを解決するのは満足感があったけど)。それは強く疑わしい。フロー状態は、考えることと実行することを切り離せるときに起こる。脳の大部分は考えることに集中していて、実行は遅れがち。よく知っている道を運転しているようなもので、運転そのものにはあまり注意を払わない。次の停車地点で何をするかを計画し始めるかもしれない。AIのオートコンプリートを使うのは、よく知っている道が障害物コースになったようなもの。道に全神経を集中させる必要がある。道に不慣れな人とあまり変わらないけど、フロー状態ではない。フルエージェントコーディングは、時々不安定な運転手の隣に座っているようなもので、考えることは少ないけど、心配は増える。
こういう投稿を読むと、どう感じればいいのか分からない。私はまだほとんど手でコーディングしてるし。たまにqwenとチャットしたり、エージェントを使ってテストやyamlを書く時間を節約したり、変更のドラフト版を「実装」したりするけど、「仕事が変わった」ってのがよく分からない。どこかの国の企業は、こういうエージェントを使うことを強制してるの?ジャックやジルが自分より2倍(それ以上)早く変更を進めたからって、クビにされるの?
そう、企業はコストがほぼ同じなら、かなり速い社員を雇うよ。実際、今のツールたちは開発者にとって生産性を確実に向上させてくれるからね。たとえ安いオープンウェイトモデルを使ってるだけでも。私もあなたと同じで、今年の1月までは一回限りのことに使ってたんだ。でも、エージェントのループの価値を見てからは、トークンの使用量が約100倍になったよ。
そう、クビにされるよ。チケットを受け取って言われたことを実行するだけの人たちには、サメが寄ってきてる。
ChatGPTが出たとき、めっちゃワクワクしたよ。設定ファイルを生成したり、アイデアを出し合ったり、理解できない難しいログに詰まったときに助けてもらえるツールができたからね。それは全然存在的に落ち込む感じじゃなくて、俺の中ではただのグロリファイドGoogleみたいなもんだった。で、ClaudeやCodexみたいなコーディングツールが出てきたとき、なんか不安を感じるようになった。仕事で使わざるを得ない感じだし(うちは「AIファースト」だから…)、たとえそうじゃなくても、これらのツールは俺にとって十分役立つから、使わないと置いてかれちゃう気がする。今は仕事の大半がインターンの面倒を見るような感じになっちゃった。手でコードを書くことはあんまりなくなって、ほとんどがCodexに自動化させるために叫んでるだけ。悪くはないけど、最初のプロジェクトや設定を整える面倒くささには楽しさを感じなかったけど、実際のコードの実装を書くのは楽しかったのに、今はそれがあんまりできなくなった。まあ、いいところもあって、今はもっと高いレベルで考えることができるようになったから、ちょっと楽しい。今やってることの多くは、TLA+やMermaidで書いて、Claudeにそれを実装させることなんだけど、その部分は楽しい。ただ、俺が少数派で、こういうプログラミングが流行らないんじゃないかって心配してる。エンジニアって「プログラミングに数学は必要ない」って馬鹿げた考えを持ってるから。
いつ、どこで、どうやって使うかを選べば、悲しみは消えるよ。ワークフローにLLMを使わなきゃいけないなんてルールはゼロだし、周りが「使わないのはバカだ」って言っても気にしなくていい。最近、フローステートが崩れることで悲しみを感じ始めたとき、「何に急いでるの?こんな働き方が本当に必要なの?これは本当に合理的なのか、それとも社会的に合ってるだけなのか?」って自問自答し始めた。人それぞれだけど、誰かには役立つかもね。