HN 日本語サマリー

← 一覧へ戻る
キャリア

「職人プログラマー」と自称するのをやめよう

Don't call yourself an artisanal programmer (purplesyringa.moe)

15 pointsby emschwartz15 コメント

要約

この記事は、ソフトウェア開発における「職人プログラマー」という言葉の使われ方と、それが本来のエンジニアリングの精神と乖離している現状を論じています。著者は、コードの信頼性や正確性を重視する姿勢こそがエンジニアリングの本質であり、AIツールへの依存が進む中で、この本質が失われつつあることに警鐘を鳴らしています。

全文翻訳

職人プログラマーと自称するのをやめよう 2026年9月13日 以前から書きたいと思っていたことについて、あることに巻き込まれてしまい、今では自分がそれに影響されたプロパガンダの対象だったのではないかと少し怖くなっています。 ソフトウェア開発のAIに関する議論でよく聞かれるのは、「結果を最も重視する『真面目な』エンジニア」と、「最終製品よりもコーディング体験を重視する『職人』コーダー」という二項対立です。この二項対立は私や他の多くの人を正確には表していませんが、ここではひとまずそれに乗っかってみましょう。 私はプログラムが信頼できることを望んでいます。そのためには、忍耐と注意深さが重要な要素です。プログラムを一から設計し、時間をかけることで、それが正しいと確信でき、どんな間違いもタイプミスによるものだとわかります。単体テスト、LLMレビュー、証明器はコードが99%正しいことを保証できますが、100%正しいこと、つまり最適で、保守可能で、読みやすく、文書化されていない不適合な動作に依存したり、それによって壊れたりしないことを保証することはできません。私はその100%を望んでいます。低レベルの詳細から私を孤立させ、正確性を保証できないLLMの使用を拒否することで、ようやくこれを達成し始めることができます。 対比 ここで、二項対立が私の目には崩壊します。本質的には、私は職人コーダーです。なぜなら、LLMを使用しないからです。しかし、業界が「職人プログラマー」の対義語を「ソフトウェアエンジニア」と呼ぶなら、私はエンジニアではないという含意があるのではないでしょうか?これは些細な点のように思えるかもしれませんが、無意識のレベルでは重要です。注意、配慮、そして精度はエンジニアリングを定義する特徴です。それなのに、なぜこの言葉がますますマネージャーに近づいている人々に奪われているのでしょうか? 昔(ええと)、開発者は技術的負債の処理に時間を割かないマネジメントを嫌い、「速く動いて壊せ」という姿勢は子供っぽいと考えられていました。今日では、開発者の間では「バイブコーディング」(緩やかに使っています)が普通であり、信頼性作業に時間を費やすのは真剣ではないというのが一般的な認識です。どちらが正しいのでしょうか? 用語の再定義 私にとって、答えは明白です。物を盲目的に構築することで、ソフトウェアエンジニアの称号を得ることはできません。エンジニアは自分が何をしているかを知っているべきです。しかし、このトピックについてもっと知識のある人に聞いてみましょう。 2021年、Hillel Wayneはクロスオーバープロジェクトを実施し、他の工学分野からソフトウェアエンジニアリングに移行した多くの人にインタビューしました。彼の目標は、「実際の両分野の経験を持つ人々は、私たちの仕事をエンジニアリングと見なすか?」という質問に答えることでした。答えは「はい」でしたが、私がより興味を持っているのは次の部分です。 とはいえ、多くのクロスオーバー参加者は追加の資格も加えました。ソフトウェアエンジニアリングは本物のエンジニアリングですが、ソフトウェアを書く人の多くはソフトウェアエンジニアリングを行っていません。これは彼らの問題ではなく、私たちの分野の問題です。これらの開発者が何をしているかを語るための、豊かな語彙がありません。電気を扱う人すべてが電気技師になるわけではありません。多くは電気工(electrician)になります。そして、それは問題ありません。[...] しかし、私たちは「プログラマー」、「ソフトウェアエンジニア」、「ソフトウェア開発者」といった言葉を互換的に使っています。ソフトウェアエンジニアとソフトウェア開発者の違いは何でしょうか?「ソフトウェアクラフトマン」という言葉を提案する人もいます。 Wayneが使用するタイトルが、今日人気のあるタイトルと完全に逆であることに気づきます。彼は、気配りをする人々、つまり今日私たちが職人コーダーと呼ぶ人々を「エンジニア」と呼び、反対に、私たちがバイブコーダーと呼ぶ人々を「クラフトマン」と呼びます。少なくとも私には、こちらの方が直感的な命名です!手でコードを書くよりも、プロンプトエンジニアリングの方が芸術的であると言えるでしょう。「職人」という言葉は「バイブコーディング」の対義語として意味がありましたが、この言葉を主張することで「エンジニア」という言葉が解放され、バイブコーディングがエンジニアリングの一形態であるかどうかの議論を事実上放棄してしまいました。バイブコーディングは明白なデフォルトとなり、職人コーディングは例外となりました。どうしてこうなったのでしょうか? 議論のポイント この「常識」の変化を探すと、どこにでも見つかります。「唯一」「正しい」アプローチは劇的に変化しました。なぜ私たちはかつてPVS-Studioの記事を宣伝資料と見なしていたのに、今では自動レビューツールを崇拝しているのでしょうか?なぜ私たちは強力な型システムから自由形式の仕様にこれほど早く飛びついたのでしょうか? プログラミングコミュニティでこのようなことは一度も起こったことがありません。確かに、どの型システムやWebフレームワークが優れているかについての議論はあり、一般的な意見は時間とともに変化しましたが、これは異なります。強力な型システムの熱心な信奉者は、PHP開発者を愚か者と見なすかもしれませんが、それでも開発者とは見なします。たとえ、Rustの熱狂的な信奉者でさえ、Rustプログラマーでした。そして、議論は、一方の選択肢が他方よりも信頼性が高いか、使いやすいか、学習しやすいかという点に基づいていたのであり、信頼性や誤用についてまったく心配すべきかどうかという点ではありませんでした。 これは異なります。バイブコーディングは、より良い解決策としてではなく、唯一の賢明な解決策として描かれており、過去の経験を侮辱しています。LLMを使用しない人はソフトウェアエンジニアではなく、職人コーダーです。これはアイデンティティへの攻撃です。 歴史 用語を再定義し、自分自身を賢明な側として描写し、他者を考慮に値しない存在として描写することは、ソフトウェアの世界では新しい戦術です。私は以前にもこれを見たことがあります。それはファシストの戦術に非常に似ています。 私たちは皆、「バイブコーダーの対義語はソフトウェアエンジニアだ」と冗談を言っていた時代を覚えています。そして、1ヶ月も経たないうちに、誰もが自分自身を職人プログラマーと呼ぶことに慣れ、「責任ある」AIユーザーに「ソフトウェアエンジニア」という言葉を残していました。この言葉はミームの速度で広まり、明白な理由もなく広がったようです。 私はこれが心理作戦だとは信じていませんが、私たちは自分自身を何と呼ぶかについて、もっと注意を払うべきだと思います。なぜなら、言葉には力があるからです。本物の作曲家は、自分自身を職人作曲家ではなく作曲家と呼びます。AIライターはAIライターと自称しなければなりません。しかし、「プログラマー」という言葉は議論されておらず、これには現実世界の結果が伴います。 情熱を持ってAIを擁護し、AIを憎む多くのゲーマーは、ソフトウェアに言及すると180度変わります。突然、LLMコードが許容され、明らかに誰もがLLMを使用しており、コードのAI免責事項は不要になります。彼らは専門家ではないので、レトリックは事実よりも重要です。そして、私たちのほとんどはレトリックが苦手です! なぜ私たちなのか? 私たちはもっと早くこの教訓を学ぶべきでした。そして、私がこの戦いを、すべての職業の中で最初に失った要因を少なくとも一つ知っていると思います。この投稿を書く前に、教育、ハードワーク、複雑な思考を必要とする「職人」プログラミングがゲームと見なされ、口伝えで広まった方法を使ってtextareaにアイデアを吐き出すことが本物と見なされるのはなぜだろうかと疑問に思いました。 今、私はそれがソフトウェアコミュニティにおける蔓延する反知性主義によるものだと考えています。 Rustが人気になる前、そしてその用途がすべての人に知られる前、それに対する最も一般的な反論は何でしたか?それは生の数学のようで実用的ではないということでした。Haskell、特にモナドについても同じことが言えます。Rustは、モナドが容易に理解できることを証明しました(Result、Option、Futureはモナドです!)。さらに、ポインターでさえ複雑と見なされます。なぜなら、ああ、それらを使用する前に何かを学ばなければならないからです!私たちは簡単な解決策を求めますが、実際には、私たちが意味するのは、読むことを拒否し、StackOverflowからコードをコピー&ペーストしたいだけだということです。ああ、すみません、違う十年ですね、Claude。私たちは大学で勉強しなければならない職業を見て、「実際、私たちは彼らよりも優れており、世界の運営方法を指示する権利がある」と言います。それが反知性主義でなければ、何が反知性主義なのでしょうか? だからもちろん、私たちは教育、ハードワーク、思考、そして時間をかけることの利点を否定します。それらは「ウォーク」であり、私たちはそれよりも優れているのです。/s これからどうするか? 私たちはより良い戦いを繰り広げる必要があります。目標は、AIを避けることがソフトウェアを書く唯一の正しい方法であると主張することではありません。それはうまくいかないでしょう。目標は、AIフリーのコーディングが公の場での地位を維持できるようにすることです。