오탈자, 부록 및 예제소스, 관련 사이트가 자료 메뉴로 통합되었어요.
쪽수
ISBN
브랜드
AI는 감옥에 가지 않는다
고객에게 사과하지도, 장애 보고서를 쓰지도 않는다
월요일 아침, 주말 내내 돌려둔 에이전트가 10만 줄짜리 Pull Request를 올려두었다. 테스트는 전부 초록불이고 대시보드도 조용하다. 그런데 월말 정산에서 4,280만 원이 청구되지 않은 채 빠져 있다. 출고 12,840건 중 7건. 그때 책임자는 누구인가.
이 책은 AI를 더 잘 쓰는 법이 아니라, AI가 만든 결과를 사람이 책임질 수 있게 만드는 구조를 다룬다. 저자는 18년 차 현업 아키텍트로서 대규모 레거시에 AI 에이전트를 붙여 온 사람이다. 그래서 등장하는 사례가 구체적이다. 0KB로 남은 로그 파일, 0원 주문에 찍힌 환불 성공 기록, 30분 동안 스무 번 뜬 승인 창. 하나같이 테스트는 통과했는데 현장은 터진 순간들이다.
책은 이 사고들을 거꾸로 되짚으며 무엇을 미리 설계했어야 했는지 보여준다. 명세를 코드보다 앞에 두고, 테스트로 경계를 세우고, 사람이 읽는 로그를 기계가 대조할 수 있는 실행 트레이스로 바꾸고, 회귀 게이트로 배포 전에 루프를 세운다. 네 가지는 따로 놓인 기법이 아니라 하나의 루프로 이어진다.

100층을 다 올린 뒤에 거푸집을 대는 일
지금 우리가 AI에게 시키고 있는 순서다
콘크리트를 다 굳힌 뒤에 거푸집을 대는 건 누가 봐도 우스꽝스럽다. 그런데 소프트웨어에서는 매일 벌어진다. AI에게 일단 코드를 짜게 하고, 돌아가는 걸 확인한 다음 테스트를 작성해 달라고 한다. 이 책은 그 순서를 뒤집는다.
★ 사고 현장에서 시작한다, 전부 실제로 터진 일이다★
0KB 로그 파일: 처리 완료 메시지가 떴는데 요청은 전송되지 않았다.
0원 주문의 환불 성공 기록: 무상 포인트가 현금 반환 경로를 탔다.
30분에 스무 번 뜬 승인 창: 사람은 화면만 지켜보며 버튼을 눌렀다.
★ 테스트 함수 이름은 한글로 써도 된다, 오히려 더 낫다★
통념을 뒤집는 대목이 여럿이다. CI에 빨간불이 떴을 때 어떤 규칙이 깨졌는지 바로 읽히도록 테스트 이름을 한글로 쓰라고 권한다. 레거시 장에서는 명백히 이상한 값도 일단 기준선으로 남기라고 말한다.
★ 읽고 끝나지 않게 만드는 장치들★
Engineering Note, 설계 체크리스트, 현장용 프롬프트 예시를 함께 실었다. 명세가 없는 레거시에서 질문만으로 명세를 복원하는 오픈소스 도구 Q2Spec도 공개한다.
★ 이 책의 대상 독자★
AI가 만든 수만 라인의 PR 앞에서 무엇을 승인해야 할지 막막한 개발자
테스트는 통과하는데 운영에서 사고가 나는 이유를 찾고 있는 팀 리드
테스트가 없는 레거시에 AI를 붙여야 하는 엔지니어
속도가 아니라 책임의 경계를 설계하고 싶은 실무자
Chapter 01 코드는 원본이 아니다
1.1 진짜 소스 코드는 무엇인가
코드는 이제 AI를 위한 언어다
그림자를 닦는 사람들
엔지니어링은 의도에서 시작된다
1.2 코드는 싸졌지만 검증은 비싸졌다
주판을 잘 튕기는 사람이 대우받던 시대
1년을 1주일로 압축하는 인쇄기의 등장
바이브 코딩과 현업 개발자의 딜레마
10년 뒤, 박물관에 전시될 두꺼운 문법책
1.3 케이크 수술
구워진 케이크를 수술하려는 환상
레시피 보존의 법칙과 손실 압축
Chapter 02 빈칸을 주면 AI는 소설을 쓴다
2.1 고객 환경은 명세에 없었다
0KB 로그 파일이 남긴 단서
2.2 AI는 매번 다른 코드를 뱉는 슬롯머신이다
자판기를 원했는데 슬롯머신이 도착했다
제품의 동작을 확률에 맡기지 마라
2.3 기능을 조건·행위·결과로 쪼개라
돈이 오가는 기능은 더 위험하다
2.4 AI의 상상을 막는 문법: Gherkin
기차 레일을 먼저 깔아라
2.5 현금깡을 막는 명세
0원 주문의 환불 기록
채팅창에 남긴 말은 명세가 아니다
2.6 실패 경로도 AI가 따를 레일로 설계하라
Chapter 03 코드를 읽지 말고 증거로 심문하라
3.1 콘크리트를 붓기 전에 거푸집을 짜라
선 검증, 후 구현(Test First)
명세로 짜는 거푸집
3.2 결함 위에 코드를 쌓지 마라
TDD의 진짜 목적: 관제 센터와 전기 철책
결함을 늦게 찾는 대가
3.3 껍데기 성공을 걷어내라
10만 줄의 Pull Request
AI가 만든 껍데기 성공
3.4 텍스트 로그를 실행 트레이스로 바꿔라
로그가 말하지 않는 사실
실패 경로를 보여주는 실행 트레이스
Chapter 04 루프를 지탱하는 하네스를 설계하라
4.1 AI를 SDLC 레일 위에 올려라
선형적 파이프라인은 압축된 루프로 바뀐다
판정 가능한 증거를 남겨라
코드 생산 시스템을 설계하라
4.2 머릿속의 루프를 꺼내라
머릿속의 루프를 하네스로 옮겨라
4.3 추론을 멈추고 실행 트레이스로 대조하라
같은 로그, 다른 실행 경로
4.4 회귀 게이트 없는 루프는 망가진다
게이트는 테스트 코드에서 시작하지 않는다
실패했다고 곧바로 코드부터 고치지 마라
Chapter 05 루프를 연결하고 개선하라
5.1 Loop v0 → v1: 태스크를 증거로 이어라
성공한 명령, 바뀌지 않은 배포본
컨텍스트 손실
5.2 Loop v2: 루프가 진짜 위험해지는 순간
어디까지 스스로 고쳐도 되는가
멈추지 않는 루프는 좋은 루프인가
5.3 Loop v3: 에이전트 트레이스로 하네스를 개선하라
증거가 된 에이전트 트레이스
하네스 개선까지 맡긴 뒤
Chapter 06 테스트 없는 레거시에 AI를 풀지 마라
6.1 AI는 레거시의 보이지 않는 문맥을 모른다
AI에게 코드를 맡기기 전에 현재 동작부터 묶어라
6.2 레거시가 이미 하는 일을 먼저 기록하라
현재 동작을 기준선으로 만들어라
부조리한 값도 기준선으로 남겨라
6.3 절개선을 찾아 테스트 하네스를 걸어라
외부 세계를 테스트 하네스 안에 가둬라
절개선은 작을수록 안전하다
6.4 사람만 아는 규칙을 AI가 넘지 못할 가드레일로 바꿔라
규칙을 Gherkin 문장으로 끌어올려라
가드레일을 아키텍처 경계까지 넓혀라
규칙은 사람의 기억이 아니라 시스템에 남겨라
17,000원
10%
15,300원