
poteto@poteto
コードベースには昔から雑なコードが入ってる。ミッションクリティカルな「ハード」なソフト(組み込みとか)以外は、コードが完璧である必要なんてほとんどないから、ずっとそれで ok だった。 swe は特殊なエンジニアリングだ。作ってるものは常に進化してて、ほとんど有機的——ユーザーの好みは変わるし、自分のメンタルモデルも進化するし、機能は出ては消える。 正直に言うと、長くコードを書いてきた自分も、多くの人も、最初は(2024 年くらい)agent がプロダクションコードを書くなんて懐疑的だった。「でも、あの美しいコードベースに入ってくる雑なコードはどうするの?」って。 でも、昔から人間の雑さはあったし、しかも大量にあった!正直に言えば、ほとんどの人は「自分が書いてないコード」を雑と呼ぶ。現実には 99% の人(自分も含めて)は Good Code がどんなものかすら知らないし、書けるはずもない。自分が提案したい Good Code は: • 正しい • バグがない • 実行が速くてコスト効率がいい 本当に Good Code を書くのは昔からめちゃくちゃ難しくて高い。長い間(@bendlang が変えてくれるかもだけど)、コードはこの 3 つを安く形式的に保証できるものじゃなかったから。ハードなソフトを書くのが難しいのはそういうことで、用途によってはチャンスが一度きり、最初から正しくないといけない。 でも、私たちが使うソフトの大部分は、ユーザーに価値を届けるのに Good Code である必要はない。実際、使ってるソフトのほとんどは形式的に検証できないんじゃないかな!スピードと進歩と引き換えにバグを受け入れて、テストと o11y に頼って、もっとインクリメンタルなやり方にしてきた。これはいいこと! agent は私たちを速くしてくれるし、受け入れる気があれば、もっといいコードを書くのを手伝ってくれる。Good Code にはならない(それはまだ高い)けど、平均してスケールすればずっとマシになるはず。 swe の新しい職人技は、これをどうやるかを見つけること。今はそれがあなたの仕事!agent ありとなしで生産性が全然変わらないなら、何か間違ってる。でも、受け入れて新しいスキルツリーを学ぶ機会にするのに遅すぎることはない。
codebases have always contained slop. we have always been okay with this because code rarely needs to be perfect, outside of mission critical "hard" (eg embedded) software.
swe is a unique form of engineering because you're often building something that constantly evolves and is almost organic - user tastes change, your mental models evolve, and features come and go.
admittedly, i and many others who've been coding for a long time were initially (like back in 2024) skeptical that agents would write production code. "but what about all the slop that would enter our beautiful codebase?".
well, even before, we had human slop, and there was a lot of it! if we're being truthful, most people call "code i didn't write" slop. the reality is that 99% of people (i include myself in that number) don't even know what Good Code looks like, let alone be capable of writing it. i would propose that Good Code is:
• correct
• bug free
• fast and cost efficient to run
it has always been exceedingly difficult and expensive to write truly Good Code, because for the longest time (maybe @bendlang will change that), code was not something you could cheaply and formally guarantee to have all 3 of these properties. this is why writing hard software is much more difficult and expensive, because depending on the use case, you may only get one chance and so you have to be right from the start.
but the vast majority of software we use does not need to be Good Code to provide value to users. in fact, it is very likely that most software we use is not formally verifiable! we accepted some bugs in exchange for velocity and progress, so we rely on tests and o11y instead and have adopted a more incremental approach. this is a good thing!
agents help us move faster, and if you're open to the idea, are capable of helping us write better code. it won't be Good Code (that is still expensive), but it is likely to be much better on average at scale.
the new craft of swe is to figure out how to do this. it's your job now! if your productivity with and without agents is not significantly different, you're doing something wrong. but it's not too late to embrace it and use it as an opportunity to learn a whole new skill tree
