본문 바로가기

전체 글681

원칙이 필요한 이유에 관하여 나는 유연함을 중요한 가치라고 생각한다. 세상의 대부분은 고정되어 있지 않다. 사람도 변하고, 상황도 변하고, 내가 알고 있는 것도 변한다. 고대 철학자 헤라클레이토스는 같은 강물에 두 번 발을 담글 수 없다고 말했다. 다시 강에 들어갈 때에는 이미 물이 흘러갔고, 그 강에 들어가는 나 역시 이전의 내가 아니라는 뜻이다. 세상은 끊임없이 변하고, 우리는 매번 조금씩 다른 조건 속에서 판단해야 한다. 그래서 나는 필요하다면 생각을 바꾸고, 방법을 바꾸고, 이전의 선택을 뒤집을 수도 있어야 한다고 생각한다. 상황이 달라졌는데도 한 번 정한 답을 계속 고집하는 것은 원칙이라기보다 경직에 가까우니까. 그런데 어느 순간 이런 생각이 들었다. 유연하다는 것은 도대체 어디까지 유연한 것인가, 상황에 따라 매번 다른 .. 2026. 9. 9.
[AI 시스템 만들기 ep.2] 세션은 똑똑해졌는데, 일은 이어지지 않았습니다: 왜 결국 조직 설계가 필요했을까 어제의 판단을 기억해도, 오늘 그 일을 누가 맡고 있는지는 따로 남겨야 했습니다. 지난 글에서는 AI 조직을 만들려다가 모든 세션의 원문부터 남기게 된 과정을 썼습니다. AI 에이전트와 오래 일하려면 적어도 하나는 필요했습니다. 어제 어떤 판단을 내렸는지, 왜 그렇게 했는지 다시 돌아볼 수 있어야 했습니다. 그래서 모든 세션의 원문을 남기기 시작했습니다. 그런데 기록을 남기고 나니 다른 문제가 보였습니다. 어제의 대화를 찾을 수 있는 것과, 어제 하던 일을 오늘 이어갈 수 있는 것은 같은 일이 아니었습니다. 1. 등록부에는 담당자가 있었는데, 실제 세션은 없었습니다제가 원고와 문서를 관리하는 작업 공간에는 메신저에 할 일을 적으면 AI 세션을 열어주는 프로그램이 있습니다. 스레드에 새 요청을 남기면 세션.. 2026. 9. 7.
[AI 시스템 만들기 ep.1] AI 조직을 만들려다 대화 저장기부터 만들었습니다: 모든 세션을 전문으로 남긴 이유 자동화보다 기억의 기반을 먼저 세웠습니다.1. 서비스는 늘었는데, 어제의 판단은 매번 처음부터였습니다"그거 아니야." "다시." "그쪽 말고." AI 에이전트와 하루 종일 일하다 보면 생각보다 이런 말을 자주 하게 됩니다. 어느 날 문득 궁금해서 제가 에이전트의 방향을 다시 잡은 횟수를 세어봤습니다. 하루에 41번이었습니다. 거창한 피드백은 아니었습니다. 대부분은 몇 마디면 끝났습니다. 문제는 이 짧은 말 안에 생각보다 많은 맥락이 들어 있었다는 점입니다. "그거 아니야"라고 말할 때 저는 왜 아닌지 알고 있습니다. 조금 전에 어떤 방법을 시도했고, 무엇이 마음에 들지 않았고, 어느 방향은 이미 검토했다가 버렸는지도 알고 있습니다. 같은 세션 안에서는 에이전트도 그 흐름을 따라옵니다. 그런데 다음 날 새.. 2026. 9. 7.
우리는 왜 무엇인가 해야 할까 : 개발 3년 차에 다시 꺼내 본 뜨거운 여름의 마음 최근 고쿠분 고이치로의 『우리는 왜 무엇인가 해야 할까』(박영대 옮김, 유유, 2026)를 읽었다. 부제는 「성과 중심 사회, 목적에 얽매이지 않는 삶은 어떻게 가능한가」다. 이 책이 문제 삼는 것은 단순히 ‘열심히 사는 삶’이 아니다. 우리가 하는 거의 모든 일을 목적과 성과의 언어로 설명하게 된 삶에 가깝다. 책을 읽는 것은 더 나은 사람이 되기 위해서고, 운동을 하는 것은 더 건강한 사람이 되기 위해서다. 새로운 것을 배우는 것은 경쟁력을 갖추기 위해서고, 일을 열심히 하는 것은 더 좋은 평가와 보상을 받기 위해서다. 무엇을 하든 그 끝에는 자꾸만 하나의 질문이 따라붙는다. 그래서 무엇을 얻을 수 있는가. 저자는 이런 사회에서 우리가 끊임없이 무언가를 해야 한다는 감각에 사로잡힌다고 말한다. 읽는.. 2026. 8. 24.
락을 걸었더니 서른 명이 쿠폰을 못 받았습니다: 유니크 제약과 조건부 쓰기가 안에서 하는 일 1. 1인 1매를 지키려는 세 가지 코드쿠폰 이벤트를 만들었습니다. 조건은 두 개입니다. 한 사람이 한 장만 받을 수 있고, 전체 100장까지만 나갑니다. 처음 짠 코드는 이랬습니다. if (couponRepository.existsBy(eventId, userId)) { throw new AlreadyIssuedException();}couponRepository.save(new Coupon(eventId, userId)); 이 코드는 요구사항을 만족시키지 못하죠. 확인과 저장 사이가 벌어져 있어서, 두 요청이 동시에 들어오면 둘 다 통과합니다. 한 사람이 32번 누르게 하고 재봤습니다. 조회 후 삽입 (락 없음) 발급 32장 / 29장 / 7장 (회차마다 다름) 한 장만 나가야 .. 2026. 8. 8.