
poteto@poteto
코드베이스에는 항상 엉성한 코드가 있어 왔다. 미션 크리티컬한 "하드" 소프트웨어(예: 임베디드)가 아니면 코드가 완벽할 필요는 거의 없으니까, 우린 계속 이걸 받아들여 왔다. swe는 좀 특이한 엔지니어링이다. 계속 진화하고 거의 유기적인 걸 만드는 일이 많으니까 — 사용자 취향은 바뀌고, 내 멘탈 모델도 진화하고, 기능은 생겼다 사라진다. 솔직히 나를 포함해 오래 코딩해 온 많은 사람은 처음엔(2024년쯤) agent가 프로덕션 코드를 쓴다는 걸 의심했다. "그럼 우리 예쁜 코드베이스에 들어올 그 엉성한 코드는 어쩌고?" 근데 그 전에도 사람이 만든 엉성함이 있었고, 그것도 엄청 많았다! 솔직히 대부분은 "내가 안 쓴 코드"를 엉성하다고 부른다. 현실은 99%의 사람(나 포함)이 Good Code가 뭔지도 모르고, 쓸 줄도 모른다. 내가 제안하는 Good Code는: • 정확하고 • 버그가 없고 • 빠르고 비용 효율적으로 돌아간다 진짜 Good Code를 쓰는 건 항상 엄청 어렵고 비쌌다. 오랫동안(어쩌면 @bendlang이 바꿔줄지도) 코드는 이 세 가지를 싸고 형식적으로 보장할 수 있는 게 아니었으니까. 하드한 소프트웨어를 쓰는 게 훨씬 어렵고 비싼 이유가 이거다. 쓰임에 따라선 기회가 한 번뿐이라 처음부터 맞아야 하니까. 하지만 우리가 쓰는 소프트웨어 대부분은 사용자에게 가치를 주는 데 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
