두 사람의 근황

  1. 2026년 11월
  2. Tibo
  3. poteto
  4. poteto
  5. poteto
  6. poteto
  7. poteto
  8. Tibo
  9. Tibo
  10. Tibo
  11. Tibo
  12. Tibo
  13. Tibo
  14. poteto
  15. Tibo
  16. Tibo
  17. poteto
  18. Tibo
  19. Tibo
  20. Tibo
  21. poteto
    poteto ·
    형식 기법을 꽤 좋게 보긴 하지만, 기대치는 좀 낮추고 직접 알아보는 게 좋다고 생각해 (면책: 나 이 분야 전문가 아님). 형식 기법은 코드에 버그가 없다고 보장해주지 못하고, 특정 가정 아래에서 코드가 spec과 맞는다는 것만 보장해줘. 근데 spec은 수학이 아니라 사람들이 뭘 원하는지에서 나와. 우리가 사람을 위한 소프트웨어를 만드는 한, spec이 맞다는 걸 증명해줄 수 있는 건 없고 판단은 너만 할 수 있어. pstack에 /statechart 스킬을 만든 건 주로 코드에 암묵적으로 들어 있는 상태 머신을 더 잘 보이고 읽기 쉽게 만들어주기 때문이야. 그러면 리뷰 범위를 줄이고 더 높은 수준에서 리뷰할 수 있지: 이게 진짜 내 의도랑 목표에 맞나? 내 게임 tibo.dog 만들 때 이 스킬 엄청 썼는데, 아래가 스토리 모드 statechart고 이걸로 버그를 많이 찾았어. 그런 의미에서 모델 체킹(예: TLA+랑 TLC)은 시스템 속성을 e2e로 이해하고 확인하는 데 꽤 유용하다고 봐. 새 검증 코드를 잔뜩 쓸 필요도 없고. spec은 실제 코드가 아니라서 어긋날 위험은 늘 있지만, 지금까지는 실제 버그를 찾는 데 경험이 좋았어. 진짜인지 확인하려고 경험적 검증(코드 실제로 돌려보기)이랑 같이 쓰는 편이야. 정리 증명(예: Lean, Dafny), 유계 모델 체킹(예: CBMC, Kani) 같은 다른 형식 검증도 각자 트레이드오프가 있어. 증명은 가능한 모든 입력을 커버하지만 명시한 속성에 대해서만이고, 코드랑 작업량이 훨씬 많이 들어. 유계 모델 체킹은 실제 코드에 돌릴 수 있어서 어긋날 일은 없지만 일정 스텝 수까지만 확인해서, 버그가 없다는 걸 증명하기보다는 버그 찾는 데 더 강해. 그래서 가까운~중기 미래에는 여전히 코드베이스를 레이어로 쌓아야 할 것 같아: 제약과 가드레일(타입, lint 규칙, API 설계, 리팩터링), 경험적 검증(테스트, evals, 실제 사용), 그리고 정말 필요한 부분엔 형식 검증. 어느 것도 혼자서는 다 못 잡지만, 같이 쌓으면 훨씬 많이 잡고 네가 리뷰할 부분도 줄어들어. 근데 결국 극한에서는 bitter lesson이 이겨서 매번 버그 하나 없는 완벽한 코드가 그냥 뽑혀 나올 수도 있지. 그 시나리오에서도 에이전트가 네 의도를 제대로 이해했는지 확인하는 데 /statechart는 여전히 꽤 유용해 보여. 아직 안 써봤으면 한번 써봐!
  22. Tibo
  23. Tibo
  24. Tibo
  25. Tibo
  26. Tibo
  27. poteto
  28. poteto
  29. Tibo
  30. poteto
  31. Tibo
  32. Tibo
  33. poteto
  34. Tibo
  35. poteto
  36. Tibo
  37. poteto
  38. poteto
  39. Tibo
  40. Tibo
  41. poteto
  42. 2026년 10월
  43. poteto
  44. poteto
    poteto ·
  45. Tibo
  46. poteto
  47. poteto
  48. Tibo
  49. poteto
  50. Tibo
  51. poteto
  52. Tibo
  53. Tibo
  54. poteto
  55. poteto
  56. poteto
  57. poteto
  58. Tibo
  59. poteto
  60. poteto
  61. poteto
  62. Tibo
  63. poteto
  64. poteto
  65. poteto
  66. poteto
  67. Tibo
  68. Tibo
  69. poteto
  70. Tibo
  71. poteto
  72. Tibo
  73. Tibo
  74. Tibo
  75. poteto
  76. Tibo
  77. poteto
  78. Tibo
  79. poteto
  80. poteto
  81. poteto
  82. Tibo
  83. Tibo
  84. Tibo
  85. Tibo
  86. Tibo
  87. Tibo
  88. poteto
  89. Tibo
  90. poteto
  91. poteto
  92. poteto
  93. poteto
  94. poteto
  95. poteto
  96. poteto
  97. poteto
    poteto ·
    계속 신경 쓰이는 건, slop을 자기에게 일어나는 일처럼 보는 사람들이 있다는 거예요. 마치 아무것도 할 수 없는 무력한 방관자처럼 잠깐만요, 당신 소프트웨어 엔지니어잖아요. 모래한테 생각하게 만들고 컴퓨터를 부리는 법을 literally 배운 사람이?! 그런데 지금은 아무것도 못 한다고요? 제발 이 소음들을 뚫으려면 알아야 할 건 두 가지예요: 1. agent가 자기 작업을 검증할 방법을 줘야 해요 (방금 올려서 반복은 안 할게요) 2. 당신의 코드베이스가 곧 기억이에요 두 번째도 새삼스러운 얘기는 아니죠. 더 나은 코드를 쓰도록 lint 규칙, 진단이 좋은 컴파일러와 강한 타입 시스템, LSP 같은 건 항상 있었으니까요. 코드를 agent가 쓰든 다를 게 없어요, 그냥 더 많이, 더 강하게 필요할 뿐. rules랑 skills는 잊어버리세요. 그건 나중에 붙이면 돼요. 맞아요, 당신의 코드베이스는 agent에게 일종의 기억이에요! agent는 이미 있는 걸 확장하는 걸 정말 좋아하거든요. 그래서 당신이 본 자잘한 불편함, agent에게서 본 모든 실수와 나쁜 패턴이 제약이 되어야 해요. 안 그러면 agent는 바이러스처럼 같은 실수를 코드에서 계속 반복할 거예요. 그러고 나서 계속 관찰하고 이 과정을 반복해서, 컨텍스트가 적은 agent도 한 번에 고품질 PR을 낼 수 있을 만큼 코드베이스를 단단히 잠그는 거죠. 더 나은 방향은 agent의 안티패턴이 범주적으로 불가능해지도록 코드를 리팩터링/다시 쓰는 거예요. 타입 시스템을 활용하고, 아키텍처 탐색 공간을 줄여주는 라이브러리/프레임워크를 쓰고, 아니면 우리가 grok bot에서 했던 것처럼 직접 프레임워크를 만들어서 고품질 프리미티브와 잘 설계된 API를 만드는 거죠
  98. poteto
  99. poteto
  100. Tibo
  101. Tibo
  102. poteto
  103. poteto
    poteto ·
  104. poteto
  105. poteto
  106. poteto
    poteto ·
    코드베이스에는 항상 엉성한 코드가 있어 왔다. 미션 크리티컬한 "하드" 소프트웨어(예: 임베디드)가 아니면 코드가 완벽할 필요는 거의 없으니까, 우린 계속 이걸 받아들여 왔다. swe는 좀 특이한 엔지니어링이다. 계속 진화하고 거의 유기적인 걸 만드는 일이 많으니까 — 사용자 취향은 바뀌고, 내 멘탈 모델도 진화하고, 기능은 생겼다 사라진다. 솔직히 나를 포함해 오래 코딩해 온 많은 사람은 처음엔(2024년쯤) agent가 프로덕션 코드를 쓴다는 걸 의심했다. "그럼 우리 예쁜 코드베이스에 들어올 그 엉성한 코드는 어쩌고?" 근데 그 전에도 사람이 만든 엉성함이 있었고, 그것도 엄청 많았다! 솔직히 대부분은 "내가 안 쓴 코드"를 엉성하다고 부른다. 현실은 99%의 사람(나 포함)이 Good Code가 뭔지도 모르고, 쓸 줄도 모른다. 내가 제안하는 Good Code는: • 정확하고 • 버그가 없고 • 빠르고 비용 효율적으로 돌아간다 진짜 Good Code를 쓰는 건 항상 엄청 어렵고 비쌌다. 오랫동안(어쩌면 @bendlang이 바꿔줄지도) 코드는 이 세 가지를 싸고 형식적으로 보장할 수 있는 게 아니었으니까. 하드한 소프트웨어를 쓰는 게 훨씬 어렵고 비싼 이유가 이거다. 쓰임에 따라선 기회가 한 번뿐이라 처음부터 맞아야 하니까. 하지만 우리가 쓰는 소프트웨어 대부분은 사용자에게 가치를 주는 데 Good Code일 필요가 없다. 사실 우리가 쓰는 소프트웨어 대부분은 형식적으로 검증이 안 될 가능성이 크다! 우린 속도와 발전을 위해 버그 몇 개를 받아들이고, 대신 테스트와 o11y에 기대면서 더 점진적인 방식을 택했다. 이건 좋은 일이다! agent는 우리를 더 빠르게 해주고, 열린 마음이라면 더 나은 코드를 쓰도록 도와준다. Good Code는 아니겠지만(그건 여전히 비싸다), 평균적으로 규모가 커지면 훨씬 나을 가능성이 크다. swe의 새로운 장인 기술은 이걸 어떻게 할지 알아내는 것. 이제 그건 당신 일이다! agent를 쓸 때와 안 쓸 때 생산성이 크게 다르지 않다면, 뭔가 잘못하고 있는 거다. 하지만 받아들이고 완전히 새로운 스킬 트리를 배우는 기회로 삼기엔 늦지 않았다.
  107. poteto
  108. poteto
  109. poteto
  110. poteto
  111. poteto
  112. poteto
  113. poteto
  114. poteto
  115. poteto
  116. poteto
    poteto ·
    양은 중요하다 그래, 알아. 에이전트가 나오기 전부터 엔지니어였다면 코드 줄 수나 PR 개수를 생산성 지표로 쓰는 거에 회의적인 게 당연하지. 나도 동의해! 아니, 적어도 예전엔 그랬어. 설명하기 쉽게 최소 50명 이상인 큰 팀의 엔지니어 입장에서 얘기할게. 예전엔 양이 중요하지 않았어. 임팩트에 집중했으니까. PR이 몇 개 안 돼도 임팩트는 클 수 있었지. 예를 들어 설정 한 줄 바꿔서 회사가 수백만 달러를 아낄 수도 있고. 근데 에이전트 이전에 양이 얘기에 나오는 건 거의 극단적인 경우뿐이었어. 아래쪽 끝엔 성과 내기 힘들어하는 사람, 반대쪽 끝엔 '코딩 머신' 타입. 코딩 머신은 방에 틀어박혀 있다가 엄청 많은 문제를 해결한 PR 더미를 들고 나오는 사람이야. 그러니까 양이 중요하긴 했는데, 분포의 양 끝에서만, 그리고 임팩트랑 같이 봤을 때만. 대형 테크 회사에서 일해 봤으면 무슨 말인지 알 거야. 에이전트가 가져온 건, 빅테크의 문제가 이제 중소 회사의 문제도 됐다는 거야. 그럼 에이전트가 이 계산을 어떻게 바꾸냐고? 음, 이제 누구나 코딩 머신이 될 수 있어. 우리 누구보다 코드를 잘 짜고 훨씬 빠른 엄청난 프런티어 모델이 있잖아. 이런 세상에서 아직도 예전이랑 같은 수의 PR을 내고 있다면, 왜 더 생산적이지 못한지 한 번쯤 멈춰서 생각해 봐야 하지 않아? 외계 지능이 왔는데 인간 코딩 머신보다 더 많이 못 내보낸다고? 그래서 내가 계속 신뢰 얘기를 하는 거야. 에이전트 결과물을 믿을 수 있게 공을 들이지 않았다면 생산성을 키우기가 정말 어려워. 그리고 맞아, 이 방식은 토큰이 더 들어. 근데 난 이걸 지능당 비용으로 생각해. 에이전트 이전엔 이 비용이 엄청 높았어. 6자리 후반 연봉 받는 소프트웨어 엔지니어를 많이 뽑아야 했으니까. 토큰은 아직 비싸지만 지능 비용까지 따지면 시간이 지나면서 싸질 가능성이 커. 지금 터무니없어 보이는 것도 6개월에서 1년 뒤엔 아마 감당할 만할 거야. 에이전트 쓰는 엔지니어 한 명이 수십, 아니 수백 명 몫의 일을 비용의 일부로 할 수 있어. 아직 다들 실감 못 한 현실은 소프트웨어 엔지니어의 일이 진짜로 바뀌었다는 거야. 우리 일은 더 이상 그냥 소프트웨어를 만드는 게 아니라 (솔직히 원래도 코드만의 일은 아니었지만, 설명을 위해 좀 봐줘), 소프트웨어를 짜는 기계를 만드는 거야. 이 소프트웨어 공장, 내가 좋아하는 표현으론 미슐랭 키친이라는 아이디어는 아직 연구 주제야. 그리고 이게 내가 공유하고 싶은 거야. 자랑하려는 게 아니라, 에이전트를 대규모로 쓸 때 엄청 엄밀하게 하면 뭐가 가능한지 보여주고 싶어서.
  117. poteto
  118. poteto
  119. poteto
  120. poteto
  121. Tibo
  122. Tibo
  123. poteto
  124. poteto
  125. Tibo
  126. Tibo
  127. poteto
  128. poteto
  129. Tibo
  130. Tibo
  131. Tibo
  132. poteto
  133. Tibo
  134. Tibo
  135. poteto
  136. Tibo
  137. Tibo
  138. Tibo
  139. Tibo
  140. poteto
  141. poteto
    poteto ·
    에이전트 행동을 만드는 환경을 고치는 대신 에이전트를 마이크로매니징하는 함정에 빠지기 쉬워. pstack 0.15.9에 새 /correct 스킬이 들어갔어: 같은 실수로 에이전트를 계속 고쳐주고 있다면, 패턴을 찾아서 아키텍처, 타입, 체크로 고쳐줘. 코드베이스로 빠르게 쏟아지는 commit을 제멋대로 쑥쑥 자라는 분재라고 상상하는 걸 좋아해. 해야 할 건 혼돈에 굴복하는 게 아니라 제대로 된 제약으로 의도적으로 길들이는 거야 0.15.9 개선 사항도 있어: • /architect: 이제 에이전트 친화적인 아키텍처 설계 방법이 포함됨 • @brendangregg의 벤치마킹 체크리스트를 바탕으로 한 새 /benchmark-checklist 스킬 pstack으로 더 나은 코드베이스 설계를 시작할 때 grok bot한테 줄 수 있는 프롬프트야: /poteto-mode 새 Project agent를 만들어서 우리 아키텍처가 에이전트 친화적이 되도록 내 repo를 리팩터링하고 재설계해줘. /correct랑 /architect 스킬을 둘 다 써서 과거 commit을 살펴보고, 코드 품질이든 성능이든 버그든 에이전트가 가장 자주 빠지는 함정을 찾아줘. 관련 있으면 /recall 스킬로 과거 대화를 찾아서 맥락으로 써도 돼. 내가 검토할 상위 수준 계획을 만들어줘. 열린 질문은 나한테 미루지 말고 프로토타입을 만들어서 스스로 답해. 실제 데이터로 뒷받침된 계획을 들고 돌아와. 내가 계획을 승인하면 stack이나 full autopilot playbook 중 하나(어느 걸 원하는지 물어봐)로 실행해
  142. poteto
  143. poteto
  144. poteto
  145. 2026년 9월
  146. poteto
  147. Tibo
  148. 2026년 8월
  149. Tibo
  150. poteto
  151. 2026년 6월
  152. Tibo
  153. 2026년 5월
  154. Tibo
  155. Tibo
전체 타임라인 보기 →