KYEOLUNFRAMED
KYEOL 소개
언어 / Language
← 글 목록으로
일과 사람의 무늬

왜 할 일 목록은 줄지 않고 자꾸 늘어날까

AI에게 다음 할 일을 물을 때마다 새로운 기능이 붙기 시작했다. 문제는 AI가 틀린 것이 아니라, 내가 어디까지 만들 것인지 정하지 않은 채 ‘다음’을 계속 묻고 있었다는 데 있었다.

AI가 여러 기능을 제안하는 가운데, 사람이 할 일 목록을 살펴보고 하나의 목표를 선택하는 그림.

며칠 동안 AI와 백엔드를 만들면서 이상한 일이 생겼다.

기능은 분명 하나씩 완성되고 있었다.

회원이 탈퇴하면 바로 데이터를 지우지 않고 일정 기간 보관했다가 삭제하는 기능을 만들었고, PDF 처리가 실패하면 차감했던 사용 횟수를 되돌려주는 기능도 넣었다. 코드와 문서가 다르게 적힌 부분도 찾아서 맞춰가고 있었다.

그런데 작업 상태를 기록한 문서를 열어보면 이상했다.

완료한 것은 늘어나는데, 남은 일은 줄어들지 않았다.

오히려 더 많아졌다.

새 세션을 시작하면서 AI에게 현재 코드를 읽고 다음에 무엇을 해야 할지 알려달라고 했다.

AI는 남아 있는 일을 한꺼번에 펼쳐놓았다.

월 사용량을 다시 채우는 기능, 로그인 보안, 결제 처리, 환불 처리, 로그 관리, 장애 알림, PDF 추출 규칙 관리, 페이지별 과금, 중복 사용 방지, 통계.

분명 어제도 꽤 많은 일을 끝냈는데 갑자기 해야 할 일이 다시 한가득이었다.

여기서 그냥 첫 번째 항목부터 시작할 수도 있었다.

AI가 보기에는 모두 필요한 기능처럼 보였고, 각각의 설명도 그럴듯했다.

하지만 나는 작업을 멈췄다.

그리고 다른 것을 물었다.

“왜 항목들이 점점 늘어나는 것인가요? 조금 이상합니다. 항목이 늘어나는 것이 원래 정상적인 일인 건가요?”

AI와 작업하면서 이런 순간이 종종 생긴다.

질문 하나를 던지면 AI는 그 질문 안에서 할 수 있는 다음 일을 계속 찾아낸다. 서비스에 결제가 필요하다고 하면 결제에 필요한 기능을 펼치고, 보안 이야기를 하면 보안에 필요한 기능을 더 찾아낸다.

각각은 틀린 말이 아니다.

문제는 필요한 것과 지금 해야 하는 것이 같지 않다는 것이었다.

AI의 설명을 다시 들어보니 목록이 늘어나는 이유도 두 종류였다.

처음에는 ‘결제’라고 한 줄로 적었던 일이 실제로 만들면서 결제 확인, 사용자 플랜 반영, 환불처럼 여러 작업으로 나뉘는 경우가 있다.

이것은 일이 새로 생겼다기보다 원래 있던 일이 구체적으로 보이기 시작한 것이다.

반대로 작업하면서 “이것도 있으면 좋겠다”, “운영하려면 이것도 필요하다”는 식으로 새로운 기능을 계속 붙일 수도 있다.

이 경우에는 실제로 제품의 범위가 커진다.

겉으로 보면 둘 다 할 일 목록이 늘어나는 모습은 같다.

그래서 AI에게 최근 어떤 항목이 왜 추가됐는지 다시 구분해 달라고 했다.

그런데 여기서 또 문제가 생겼다.

과거 상태가 제대로 남아 있지 않아 AI도 어떤 항목이 최근에 새로 추가된 것인지 정확히 비교할 수 없었다.

AI가 모든 맥락을 알고 있을 것이라고 생각하고 계속 질문하면 안 되는 이유였다.

이전 상태가 없는데도 “최근에 늘어난 것을 찾아달라”고 하면 AI는 정확히 비교할 근거가 없다.

그래서 질문을 바꿨다.

지금까지 실제로 무엇을 만들었는지 처음부터 다시 정리해 달라고 했다.

그러자 상황이 훨씬 단순해졌다.

회원이 가입한다.
로그인한다.
PDF 변환을 시작하면 이용 횟수가 차감된다.
처리가 실패하면 횟수를 돌려준다.
사용 이력을 확인할 수 있다.
탈퇴하면 접근을 막고, 일정 기간이 지나면 데이터를 정리한다.

현재 제품에서 실제로 돌아가는 흐름을 다시 놓고 보니, 이제 무엇을 먼저 해야 할지 판단할 수 있었다.

나는 여기서 작업 방식을 바꾸기로 했다.

AI가 제안하는 전체 목록을 차례대로 따라가는 대신 한 영역을 정하고, 그 범위를 더 늘리지 않은 채 끝낸 다음 다음 영역으로 넘어가기로 했다.

첫 번째는 USER, 사용자 관련 기능이었다.

사용자 영역에서 아직 필요한 기능이 무엇인지 다시 확인했고, 월 구독자의 사용 횟수를 채우는 일과 로그인 보안 기록 두 가지가 남아 있다는 답을 받았다.

그 정도에서 범위를 고정했다.

“이제부터는 어쩔 수 없이 꼭 추가해야 되는 것 이외에는 항목의 조정이 없는 형태로 작업을 진행하는 것이 좋을 것 같습니다.”

이 문장을 기준으로 다시 작업을 시작했다.

이후에도 AI는 구현 방법을 설명하면서 새로운 필드나 보완 방법을 제안했다.

그때부터는 제안이 나올 때마다 바로 추가하지 않고 먼저 물었다.

이게 왜 필요한지.

사용자에게 무엇이 달라지는지.

지금 반드시 필요한 것인지.

AI 제안을 받은 뒤 왜 필요한가, 현재 상태, 범위 판단을 거쳐 하나씩 실행하는 흐름.

그리고 나는 코드를 직접 짜는 역할과 AI의 역할도 다시 구분했다.

내가 구현하고, AI는 설계와 문서를 정리하고 코드가 만들어지면 검수한다.

그렇게 해야 AI가 제안하는 방향을 그대로 따라가는 것이 아니라, 내가 이해하고 선택한 뒤 다음 단계로 넘어갈 수 있었다.

바이브코딩을 하다 보면 AI가 빠르게 답을 내놓는 것이 장점처럼 느껴진다.

실제로도 빠르다.

하지만 “다음에는 무엇을 해야 하지?”라는 질문을 계속 던지면 AI는 계속 다음 일을 만들어낼 수 있다.

서비스에 필요한 것을 찾는 능력과, 지금 해야 할 일을 정하는 능력은 다르다.

앞의 것은 AI가 꽤 잘한다.

뒤의 것은 결국 내가 정해야 한다.

그래서 지금은 AI가 새로운 일을 제안했을 때 바로 시작하지 않으려고 한다.

먼저 현재 상태를 다시 보고, 왜 필요한지 이해하고, 이번 범위에 들어오는지 결정한다.

AI가 일을 잘하는 것과
AI가 정한 순서대로 일하는 것은 같은 이야기가 아니다.

그날의 성장 노트

· AI에게 다음 작업을 계속 물으면 서비스에 필요한 기능은 얼마든지 더 발견될 수 있다. 앞으로는 새 제안이 나올 때 기존 기능의 세분화인지 실제 범위 확장인지 먼저 구분할 필요가 있다.

AI가 제안했다고 바로 구현하지 않는다. 현재 구현된 상태를 다시 확인하고, 왜 필요한지 이해한 뒤 이번 범위에 포함할지를 내가 결정한다. 한 번에 한 영역을 정하고 꼭 필요한 경우가 아니면 완료하기 전까지 범위를 늘리지 않는다.

← 글 목록으로

글을 읽고 함께 이야기하고 싶은 일이 생겼다면.

결을 같이 하기