Developers who started using GitHub Copilot, ChatGPT, or Cursor often describe the same honeymoon phase. Tasks that once took two hours now take twenty minutes. Boilerplate vanishes with a tab key. Soon, though, a quieter complaint starts surfacing in forums and Slack channels: exhaustion. The tool writes the code, but something in the process still drains you. The problem is not the code itself. It is the work of consuming it.

아무도 대비하지 못한 병목 현상

수십 년 동안 소프트웨어 엔지니어링의 제약은 타이핑 속도였습니다. 아무리 빨리 생각해도 손가락 속도와 구문 지식이 한계였습니다. AI 어시스턴트는 그 한계를 허물었습니다. 첫 번째 코드 블록을 다 읽기도 전에 여러 파일에 걸쳐 수백 줄의 코드를 만들어낼 수 있습니다. 이런 속도는 자유처럼 들리지만, 예상치 못한 교통 체증을 유발합니다. 갑자기 파이프라인에서 가장 느린 부분이 화면에 나타난 내용을 읽고, 이해하고, 검증하는 당신의 능력이 되어버립니다. 당신은 이제 자기 프로젝트의 풀타임 코드 리뷰어가 되었습니다. 다만 작성자가 잠도 자지 않고 지치지도 않는 알고리즘일 뿐입니다.

이러한 노동의 역전은 코딩 세션의 질감을 변화시킵니다. 생성과 가벼운 검증을 번갈아 하는 대신, 당신은 장기적인 검증 모드에 갇히게 됩니다. 그리고 검증은 수동적인 읽기가 아닙니다. 그것은 의구심을 품은 능동적인 분석입니다. 모든 변수 이름, 모든 경계 조건(boundary condition), 그리고 모든 import 문은 정신적인 필터를 통과해야 합니다. AI는 결과에 대해 책임질 일이 없기 때문입니다. 운영 환경의 작업이 실패하여 새벽 3시에 호출될 일도 없습니다.

뇌가 한계에 부딪히는 이유

피로는 게으름이 아닙니다. 그것은 쏟아지는 출력물과 제한된 인간의 대역폭 사이에서 발생하는 예측 가능한 충돌입니다.

Volume overload (볼륨 과부하). 일반적인 AI 제안에는 React 컴포넌트 전체, 스타일링 로직, 유틸리티 함수, 유닛 테스트가 한 번에 포함될 수 있습니다. 작업 기억(working memory)은 한 번에 담을 수 있는 양이 정해져 있습니다. 화면이 수십 줄의 새로운 코드로 가득 차면, 뇌는 이를 추상적인 패턴으로 압축하거나 순차적으로 스캔해야 합니다. 두 전략 모두 주의력을 소모합니다. 이런 블록을 여러 개 검토하고 나면, 근육통에 상응하는 정신적 피로가 찾아옵니다. 읽고는 있지만, 더 이상 제대로 이해하지 못하는 상태가 되는 것입니다.

The trust gap (신뢰의 간극). AI가 생성한 코드는 권위 있어 보입니다. 들여쓰기는 완벽하고, 변수명은 합리적이며, 주석도 적절한 위치에 달립니다. 하지만 권위가 곧 정확성을 의미하지는 않습니다. 코드가 더 이상 사용되지 않는(deprecated) API를 사용하거나, null 입력과 관련된 엣지 케이스를 놓치거나, 미묘한 SQL 인젝션 취약점을 유발할 수도 있습니다. 이런 일이 발생할 수 있다는 것을 알기에 대충 훑어볼 수 없습니다. 보안 감사 수준의 경계심을 가지고 모든 return 문과 로직 분기를 검사해야 합니다. 몇 시간 동안 유지해야 하는 이 정도 수준의 정밀 조사는 인지적 비용이 매우 높습니다. 공항 보안 검색 요원들이 짧은 교대 근무를 하는 이유와 같습니다. 지속적인 경계 태세는 빠르게 저하됩니다.

Workflow mismatch (워크플로우 불일치). 대부분의 개발 환경과 팀 프로세스는 여전히 인간의 '작성 후 테스트' 리듬을 가정합니다. 코드베이스는 인간의 속도로 성장하며, 코드 리뷰는 예정된 배치(batch) 단위로 이루어집니다. AI가 이 파이프라인에 끼어들면 흐름이 깨집니다. 20줄을 생성하고, 검증을 위해 멈추고, 수정을 요청하고, 다시 검증하고, 다음 함수로 넘어가다 보면 전체적인 아키텍처의 맥락을 놓치게 됩니다. 창의적인 생성과 회의적인 검증 사이를 끊임없이 오가는 컨텍스트 스위칭은 마찰을 일으킵니다. 당신의 IDE는 편집자가 아니라 저자를 위해 설계되었습니다. 그것도 끊임없는 마감 기한에 쫓기는 편집자가 아니라 말이죠.

탈진의 루프

이러한 요인들은 시간이 지날수록 악화되는 순환 고리를 만듭니다.

어시스턴트는 몇 초 만에 기능 구현을 내놓습니다. 그러면 당신은 import 문을 추적하고, 타입 호환성을 확인하고, 엣지 케이스를 머릿속으로 시뮬레이션하는 데 15분을 소비합니다. 세 번째나 네 번째 반복쯤 되면 집중력이 흐려집니다. "대충 맞는 것 같은" 코드 조각들을 그냥 받아들이기 시작합니다. 오류가 스며듭니다. 이를 만회하기 위해 속도를 늦추게 되고, 이는 처음에 얻었던 속도를 상쇄해 버립니다. 하루를 마칠 때쯤이면 평소보다 더 많은 코드가 쌓여 있지만, 코드에 대한 확신은 줄어들고, 더 똑똑하게 일한 게 아니라 더 힘들게 일했다는 증거인 두통만 남게 됩니다.

속도가 위험해질 때

이 패턴이 일상이 되면 피해는 단순히 나쁜 오후를 보내는 수준을 넘어섭니다.

번아웃은 조용히 찾아옵니다. 프로젝트를 열 때 느껴지는 막막함, 혹은 파스텔톤으로 하이라이트된 코드 블록을 짜증 없이 바라보지 못하는 무력감으로 나타납니다. 당신을 도와줘야 할 주요 도구가 피로의 주요 원인이 될 때, 원망이 뒤따릅니다.

기술 퇴화의 문제도 있습니다. 의도를 구문(syntax)으로 변환하는 근육은 그 작업을 멈추는 순간 약해집니다. 시스템 설계는 여전히 잘 해낼 수 있을지 모르지만, 세부적인 유창함—특정 루프 구조가 왜 어색하게 느껴지는지 파악하거나 특정 라이브러리가 부하 상황에서 어떻게 동작하는지 기억해내는 능력—은 자동 완성 레이어가 세부 사항을 처리하게 되면서 점차 흐릿해집니다. 시간이 흐를수록, 능동적인 엔지니어가 아닌 수동적인 큐레이터로 전락할 위험이 있습니다.

하지만 가장 즉각적인 위험은 부주의한 배포입니다. 개발 속도를 유지해야 한다는 압박과 몇 시간 동안 기계의 출력물을 읽느라 쌓인 피로로 인해, 개발자들은 때때로 충분히 검증되지 않은 코드를 배포하곤 합니다.