Every AI-Generated Line of Code Is a Small Loan — And Eventually, You Have to Pay It Back
A bug showed up in my personal project last month. Nothing dramatic - a value wasn't updating the way...
개요 #
한 개발자가 자기 개인 프로젝트에서 사소한 버그를 만났다. 값 하나가 제대로 갱신되지 않는 정도였다. 파일을 열어 처음부터 끝까지 읽었는데, 자기가 뭘 보고 있는지 도무지 감이 잡히지 않았다.
코드가 엉망이어서가 아니었다. 오히려 깔끔했고 정리도 잘 돼 있었다. 요청한 그대로 동작하고 있었다. 문제는 다른 데 있었다. 이 코드가 왜 그렇게 동작하는지, 머릿속에 모델을 세운 적이 한 번도 없었다는 것. AI로 생성하고, 슥 훑고, 다음으로 넘어가기를 수십 번 반복했을 뿐이다. 정작 코드를 붙잡고 이해할 만큼 오래 앉아 있던 적은 없었다.
자기 프로젝트의 버그를 자기가 못 고쳤다. 고치던 그 코드를 진짜로 자기 것으로 만든 적이 없었기 때문이다. 그때부터 그는 AI가 짜준 코드를 다르게 보기 시작했다. 선물이 아니라 대출로.
편안한 저녁, 그리고 첫 청구서 #
거창한 프로젝트가 아니었다. 그냥 혼자 재미로 만들던 개인 사이드 프로젝트였다. 하루를 마무리하는 편안한 저녁 모드, AI에게 운전대를 넘겨줘도 될 것 같은 그런 분위기. 원하는 걸 말하면 AI가 함수를 뽑아줬고, 그걸 훑어보고 잘 돌아가네 확인한 뒤 다음으로 넘어갔다. 몇 주 동안 이건 초능력처럼 느껴졌다. 인생에서 가장 빠르게 뭔가를 만들고 있었다.
그 버그가 처음으로 날아온 청구서였다.
아무도 말해주지 않은 대출 #
그가 진작 알았으면 좋았을 사고 방식이 있다.
AI가 코드를 만들어줄 때, 그건 공짜로 뭔가를 건네주는 게 아니다. 외상으로 넘겨주는 것이다. 코드는 오늘 당장 돌아간다. 하지만 디버깅하고, 확장하고, 남에게 설명할 수 있게 해주는 그 이해가 바로 이자다. 예산을 잡아뒀든 아니든, 이자는 어김없이 청구된다.
| AI가 생성한 것 | 당신이 진 빚 |
|---|---|
| 10줄 | 읽는 데 몇 분 |
| 100줄 | 구조를 파악하는 실제 시간 |
| 기능 하나에 걸친 200줄 이상 | 원하든 아니든 디버깅 세션 하나 |
이 빚은 곧바로 모습을 드러내지 않는다. 그게 위험한 이유다. 나중에야 나타난다. 진단이 안 되는 버그로, 답할 수 없는 PR 코멘트로, 뭐가 뭘 참조하는지 몰라 손대기 무서운 기능으로. 그는 몇 주 내내 자기도 모르게 이 대출을 받아왔다. 버그는 그저 처음 도착한 청구서였을 뿐이다.
그냥 기분 탓이 아니다 #
혹시 나 혼자 유난 떠는 건 아닐까. 그렇게 반쯤 기대하며 자료를 찾아봤지만, 그게 아니었다.
AI가 개입한 커밋을 분석한 최근 연구들은 사람이 직접 쓴 코드보다 정확성·보안 문제의 발생률이 눈에 띄게 높다는 결과를 내놓고 있다. 코드를 짜서 배포한 사람조차 제대로 이해하지 못한 경로를 누군가 실제로 밟기 전까지는 드러나지 않는, 딱 그런 종류의 문제들이다.
기술적이라기보다 개인적인 신호를 가리키는 개발자 설문 데이터도 쌓이고 있다. AI 코딩 도구에 더 많이 기댈수록 번아웃을 더 많이 호소한다는 상관관계다. 그날 저녁의 느낌과도 정확히 맞아떨어진다. 생산성의 짜릿함이 가시고 나면 안도가 아니라, 더 이상 온전히 설명할 수 없는 코드베이스를 향한 은근한 불안이 남았다.
이게 AI 코딩이 나쁘다는 뜻은 아니다. 다만 빚은 눈에 안 보일 때조차 실재하며, 아닌 척한다고 사라지지 않는다는 것이다.
그가 실제로 한 것 — 극적이지 않게, 천천히 #
여기서는 솔직하게 쓰고 싶다. 이걸 실제보다 큰 이야기로 부풀리기는 쉬우니까. 그는 전부 지우고 처음부터 다시 시작하지 않았다. AI 도구를 끊지도 않았다. 그건 그것대로 또 다른 과잉 반응이었을 테니.
그가 실제로 한 일은 더 느리고, 글로 쓰기엔 덜 근사한 것이었다. 파일을 섹션별로 훑으며 제대로 이해하려고 스스로를 밀어붙였다. 대충 읽는 게 아니라, 각 부분이 뭘 하고 왜 그러는지 하나하나 짚어 나갔다. 동료가 짜놓고 퇴사해버린 코드를 넘겨받았을 때처럼.
직접 짠 코드의 버그를 고치는 것보다 시간이 더 걸렸다. 바로 그게 핵심이다. 코드를 생성하며 "아낀" 시간은 사라진 게 아니라, 그저 자기가 고른 순간으로 미뤄져 있었을 뿐이다. 다만 그 순간을 고른 건 자기가 아니었다. 버그가 대신 골라줬다.
코드를 제대로 이해하고 나니, 수정은 10분쯤 걸렸다.
그가 끝까지 지킨 습관 #
그 이후로 그에게 남은 건 극적인 규칙이 아니다. 작고 지루한 습관 하나다.
AI가 만들어낸 뭔가에서 넘어가기 전에, 스스로에게 정직한 질문 하나를 던진다. 지금 이걸, 다시 안 보고, 남에게 설명할 수 있나?
답이 아니오라면, 그 작업은 끝난 게 아니다. 다시 읽는다. 로직을 따라간다. 때로는 작은 조각을 다시 짜본다. 이해가 그냥 스쳐 지나가지 않고 실제로 자리 잡도록 억지로라도 붙잡기 위해서다.
나의 규칙: AI가 만들어낸 것에서 넘어가기 전에 묻는다. 지금 이걸, 다시 안 보고, 남에게 설명할 수 있나?
답이 아니오라면, 아직 끝난 게 아니다.
당장은 더 느리다. 하지만 빚이 슬그머니 다시 쌓이는 걸 막아준 유일한 방법이었다. 그는 여전히 AI를 끊임없이 쓴다. 아닌 척할 생각도 없고, 답이 "덜 쓰기"라고 보지도 않는다. 그가 찾은 답은 "돌아간다"를 결승선으로 여기던 걸 멈추고, "이해했다"를 진짜 결승선으로 삼는 것이었다.
정직한 버전의 교훈 #
5년 뒤 누가 일자리를 지키고 못 지킬지, 그런 극적인 주장으로 끝맺을 생각은 없다. 그건 그도 모른다.
개인 프로젝트의 버그 하나에서 그가 알게 된 건 이것이다. AI가 대신 짜준 코드는, 당신이 직접 타이핑하지 않았다는 이유만으로 공짜가 되지는 않는다. 언젠가 어디선가, 무언가가 그 코드에 대한 셈을 요구한다. 버그로, 질문으로, 혹은 이걸 바꿔야 하는데 정작 뭘 바꾸는 건지 확신이 안 서는 순간으로.
이 빚은 조금씩 미리 갚을 수 있다. 자기가 배포하는 걸 실제로 이해하면서. 아니면 한 번에 몰아서 갚을 수도 있다. 밤 11시에, 자기 프로젝트의 버그를 노려보며, 대체 어쩌다 여기까지 왔나 곱씹으면서. 그는 전자를 권한다. 후자를 느린 방식으로 배웠으니까.
이 글은 위 출처를 바탕으로 한국 독자를 위해 재작성한 기사입니다. 원문의 사실과 수치에 근거하며, 별도의 견해를 포함하지 않습니다.


Photo by