내가 만든 서비스를 내가 쓰다가 불편한 걸 발견했다.
관심사를 "별"로 만들어 모아두는 커뮤니티다. 별에는 이름이 있고 태그가 있다. 얼마 전 별 이름을 수정하는 기능을 붙였는데, 쓰다 보니 태그는 못 고친다는 걸 알았다.
그리고 바로 이렇게 생각했다.
별 이름이 바뀌면 태그도 같이 바뀌어야 하는 거 아닌가?
당연해 보였다. 내 화면에는 "여행" 별이 있고 그 태그도 "여행"이었다. 하나처럼 보였다. 이름을 고치면 태그도 따라가는 게 자연스럽지 않나.
구현을 시키기 전에, 먼저 태그 구조가 어떻게 되어 있는지 확인해달라고 했다. 결과와 제안만 보고하고 멈추라고.
돌아온 답이 내 전제를 뒤집었다.
태그는 중앙 tags 테이블에 있고, 정션 테이블이 두 개였다. 별↔태그(star_tags), 글↔태그(post_tags). 그리고 이 둘은 완전히 독립이었다. 별 태그와 글 태그는 서로 파생 관계가 없었다.
별 태그는 별을 만들 때 사용자가 직접 입력하는 값이었다. 이름에서 자동으로 만들어지는 게 아니었다.
그럼 왜 내 화면에서는 이름과 태그가 같았나. 가입할 때 관심사를 하나 받아서, 그걸 이름에도 태그에도 똑같이 넣어주기 때문이었다. 초기값의 우연이었다. 나는 그 우연을 보고 "둘이 연결돼 있다"고 읽었다.
그리고 더 중요한 지적이 따라왔다.
자동 연동은 하면 안 됩니다. 이름과 태그는 목적이 다릅니다.
이름과 태그가 뭘 위해 있는지 갈라보면 이렇다.
이름은 내 표현이다. 자유롭게 꾸미고, 자주 바꾼다. "여행"으로 시작했다가 "세계여행 로그 ✈️"로 고치고 싶어진다.
태그는 남이 나를 찾는 통로다. 이 서비스에서 검색은 별 이름과 태그를 함께 훑는다. 즉 태그는 발견을 위한 공용 키워드고, 안정적이어야 한다.
이 둘을 묶으면 어떻게 되는가.
"여행" 별을 "세계여행 로그 ✈️"로 예쁘게 고쳤다고 치자. 태그가 따라 바뀐다. 그 순간부터 "여행"으로 검색하는 사람은 이 별을 찾지 못한다.
사용자는 표시 이름만 고친 줄 안다. 발견성이 사라진 걸 모른다. 알려주지도 않는다. 조용히 손실된다.
내 직감대로 구현했다면 정확히 이 동작을 만들었을 것이다. 그리고 아마 한참 뒤에 "왜 내 별이 검색에 안 잡히지?" 하고 다시 파고들었을 것이다.
감사에서 확인된 것 하나 더. 내가 우려했던 부작용 중 실재하지 않는 게 있었다.
혹시 별 태그를 바꾸면 그 별에 달린 글들의 태그가 대량으로 바뀌는 게 아닌가 싶었다. 아니었다. 글 태그는 별 태그와 독립이라 서로 영향이 없다.
연결도 안전했다. 사람 사이 연결은 태그 매칭이 아니라 별 ID로 걸려 있었다. 태그를 어떻게 바꿔도 기존 연결은 끊기지 않는다.
즉 걱정의 절반은 실체가 없었고, 정작 진짜 위험(발견성 소실)은 내가 생각도 못 한 쪽에 있었다.
자동 연동은 버리고, 태그를 직접 편집하게 했다. 이름과 태그를 각각 따로 고친다.
부작용이 없어진 건 아니다. 태그를 지우면 그 태그로 들어오던 유입이 끊긴다. 하지만 사용자가 직접 지운 것이라 결과를 예상할 수 있다. 이름을 고쳤는데 태그가 몰래 바뀌는 것과는 질이 다르다.
다만 내 직감이 완전히 헛것은 아니었다. 별의 주제 자체가 바뀌는 경우가 있다. "여행" 별을 "등산"으로 고쳤는데 태그가 "여행"이면, 이제 태그가 거짓말을 한다. 여행을 검색한 사람이 등산 별을 찾게 된다.
그래서 중간 지점을 뒀다. 이름을 수정한 직후에 **"주제가 바뀌었다면 태그도 확인해보세요"**라는 가벼운 안내를 띄운다. 자동으로 바꾸지는 않는다. 통제는 사용자에게 두고, 잊지만 않게.
AI에게 코딩을 맡기면서 배운 게 하나 있다. 바로 시키지 않고 먼저 물어보는 것.
이번에 내가 한 건 이거였다. "태그도 같이 바뀌게 해줘"가 아니라, "태그 구조가 어떻게 되어 있는지 먼저 확인하고, 결과와 제안만 보고하고 멈춰."
그랬더니 내 전제가 틀렸다는 답이 왔다. 만약 바로 시켰다면? 아마 잘 구현됐을 것이다. 요구대로 정확하게. 잘못된 요구를 잘 구현한 결과물이 나왔을 것이다.
이게 AI로 개발할 때 진짜 리스크인 것 같다. 못 만드는 게 아니라, 내가 잘못 생각한 걸 너무 잘 만들어주는 것.
그리고 이 일에서 AI가 잘한 건 코드를 쓴 게 아니었다. 구조를 읽고 내 전제를 반박한 것이었다. 나는 화면에 보이는 표면(이름과 태그가 같아 보임)을 패턴으로 읽었고, AI는 스키마를 읽었다. 이 분업이 꽤 마음에 든다.
혼자 만드는 관심사 커뮤니티 galaxyconstellate.com을 만들며 겪은 일들을 기록하고 있습니다.