코드를 못 읽는 사람이 AI에게 버그를 설명하는 법
버그는 대개 내가 제일 먼저 발견합니다. 그런데 고치는 건 AI입니다. 그 사이를 잇는 게 제 일인데, 저는 한동안 그 일을 잘못하고 있었습니다.
저는 코드를 못 읽습니다. 그런데 프로그램이 이상해진 걸 제일 먼저 발견하는 사람은 항상 저입니다. 매일 그 화면을 보는 사람이 저니까요.
발견은 제가 하고, 고치는 건 AI가 합니다. 그 사이를 잇는 게 제 일입니다. 그런데 저는 한동안 그 일을 잘못하고 있었습니다.
저는 원인을 짚어서 말하고 있었습니다
어느 날 아침 대시보드에 종목이 하나도 안 떴습니다. 화면 위에는 NXT라고 적혀 있었습니다. 그 시간대에 조회하는 시장 이름입니다.
그래서 저는 “NXT 조회가 잘못됐구나” 하고 생각했고, 그 전제로 이야기를 시작했습니다.
그 전제가 하루를 날렸습니다.
문제는 제가 본 것이 아니라 추측한 것을 말했다는 겁니다. 제가 실제로 본 건 “종목이 안 뜬다”였고, “NXT 때문이다”는 제 짐작이었습니다. 그런데 말할 때 그 둘을 구분하지 않았습니다.
AI는 제 짐작을 검증할 대상이 아니라 전제로 받아들였습니다. 그래서 NXT 관련 설정을 바꿔가며 시험하기 시작했고, 저도 거기에 따라갔습니다. 진짜 원인은 전혀 다른 곳(인증이 만료된 것)에 있었는데, 우리 둘 다 그쪽은 쳐다보지도 않았습니다.
AI는 제 말을 의심하지 않습니다. 이게 사람 개발자와 다른 점이었습니다. 옆에 개발자가 있었다면 “그건 왜 그렇게 생각하세요?“라고 되물었을 텐데, AI는 그냥 제 가설 위에 집을 짓기 시작합니다.
본 것만 말했어야 했습니다
그날 제가 했어야 할 말은 이거였습니다. 원인은 빼고 관찰한 것만.
- 무엇을 하려고 했나 "아침 8시 반에 대시보드를 켰다"
- 무엇이 보일 거라고 기대했나 "거래대금 상위 종목이 20개쯤 떠야 한다"
- 실제로는 무엇이 보였나 "한 개도 없다. 에러 메시지도 없고 그냥 빈 화면이다"
- 언제부터, 어떤 조건에서 "어제까지는 됐다. 지금 다시 켜도 똑같다"
3번과 4번이 특히 중요합니다.
“에러 메시지도 없다” 는 정보입니다. 저는 처음에 이걸 “말할 게 없다”로 여겼습니다. 아무것도 안 나왔으니까요. 그런데 에러가 안 났다는 사실 자체가 원인 후보를 크게 줄여줍니다.
“어제까지는 됐다” 도 마찬가지입니다. 어제와 오늘 사이에 무엇이 달라졌는지로 범위가 좁혀집니다. 실제로 제 버그 하나는 “오전 9시 50분을 걸쳐서 켜두면 재현된다”를 알아낸 순간 원인이 하나로 좁혀졌습니다. 그 조건을 찾기 전까지는 며칠 동안 “아까는 이상했는데 지금은 되네?“를 반복했습니다.
화면을 보여주는 게 열 줄보다 낫습니다
이 글을 쓰는 오늘도 같은 일이 있었습니다.
이 블로그의 디자인을 바꾸는 작업을 시켰습니다. 다 됐다는 답을 받고 사이트에 들어갔는데 아무것도 안 바뀌어 있었습니다.
예전의 저라면 “왜 안 바뀌었지? 배포가 안 됐나?” 하고 원인을 짚어서 물었을 겁니다. 그날은 그냥 화면을 캡처해서 보냈습니다. “디자인 변경이 하나도 없는데?” 한 줄과 함께요.
그 사진 한 장으로 즉시 드러났습니다. 제가 보고 있던 건 홈이 아니라 카테고리 페이지였습니다. 홈만 고쳐졌고 나머지 페이지는 그대로였던 겁니다.
말로 설명했으면 한참 걸렸을 겁니다. “어느 페이지를 보고 계세요?“부터 시작해서 몇 번을 주고받았겠죠. 사진에는 제가 설명할 생각조차 못 한 정보가 통째로 들어 있었습니다. 주소창, 화면 제목, 메뉴 위치 전부요.
말로 옮기려다 빠뜨리는 게 많습니다. 코드를 못 읽으니 무엇이 단서인지 제가 모르기 때문입니다. 사진은 그 판단을 안 해도 됩니다.
틀린 추측도 말해도 됩니다 — 표시만 하면
원인을 아예 말하지 말라는 뜻은 아닙니다. 매일 보는 사람의 감이 맞을 때도 많습니다.
다만 본 것과 짐작을 구분해서 말하면 됩니다.
종목이 하나도 안 뜬다. 에러는 없다. 어제까지 됐다. (추측인데) 화면에 NXT라고 떠 있어서 그것 때문인가 싶다.
괄호 한 줄 차이인데 결과가 다릅니다. 이렇게 말하면 AI가 그 가설을 확인 대상 목록의 하나로 다루지, 전제로 깔지 않습니다.
이건 제가 그날 이후에 정리한 것이지, 원래부터 이렇게 해온 건 아닙니다. 아직도 급할 때는 원인부터 말합니다.
남은 교훈
- 원인이 아니라 증상을 말한다. 원인을 짚는 건 상대가 할 일입니다.
- 네 가지를 말한다. 하려던 것, 기대한 것, 실제로 본 것, 언제부터·어떤 조건에서.
- “에러가 없다”도 정보다. 아무 일도 안 일어난 것 역시 관찰 결과입니다.
- 말보다 사진. 무엇이 단서인지 모를 때는 화면을 통째로 보내는 게 정확합니다.
- 추측은 추측이라고 표시한다. AI는 내 말을 의심하지 않습니다. 의심해야 할 부분은 내가 표시해줘야 합니다.
코드를 못 읽는 게 약점이라고 생각했는데, 이 부분에서는 별로 상관이 없었습니다. 버그를 설명하는 일은 코드를 읽는 능력이 아니라 관찰한 것을 정확히 옮기는 능력이었습니다. 그건 배울 수 있는 것이었습니다.
이 글은 개인 프로젝트의 개발 기록입니다. 투자 자문이나 종목 추천이 아니며, 글에 등장하는 종목명은 프로그램의 동작을 설명하기 위한 예시입니다. 투자 판단과 그 결과에 대한 책임은 투자자 본인에게 있습니다.