포스트

더 무서워졌다: 한 개발자의 고백

더 무서워졌다: 한 개발자의 고백

관련글

AI 코딩(Vibecoding)의 환상과 현실: 2년간의 실험이 말해주는 것


GitHub 저장소를 처음 봤을 때, 나는 잠시 숨이 멎었다. 화면에 펼쳐진 것은 단순한 코드 묶음이 아니었다. 그것은 하나의 완전한 세계였다. 01_planning/, 02_design/, 03_implementation/… 체계적으로 정리된 폴더들. 그리고 .claude/agents/ 안에 나란히 놓인 12개의 마크다운 파일들. project-manager.md, tech-lead.md, backend-developer.md, frontend-developer.md

나는 천천히 스크롤을 내렸다. 모든 커밋은 “claude”에 의해 이루어졌다. 8시간 전, 어제, 3일 전. 멈추지 않는 작업. 쉬지 않는 커밋. 그리고 그 속에 담긴 코드들은 내가 며칠 동안 고민해야 할 복잡도를 가지고 있었다.

“20여분 동안 만들어 내는… 솔까말 내가 검토할 수 있는 수준의 소스코드가 아니다.”

이 짧은 문장이 계속 머릿속을 맴돌았다. 처음에는 겸손의 표현인 줄 알았다. 그러나 코드를 보는 순간 깨달았다. 이것은 겸손이 아니었다. 이것은 솔직한 고백이었다. 시니어 개발자조차 빠르게 파악하기 어려운 복잡도. LangGraph의 상태 관리, 3단계 RAG 파이프라인, 엔티티 추출과 관계 매핑. 그리고 이 모든 것이 20분 만에.

나는 커피를 한 모금 마시며 생각에 잠겼다. 지난 주 내가 비슷한 복잡도의 API를 하나 만드는 데 이틀이 걸렸다. 설계를 고민하고, 여러 접근법을 시도하고, 스택오버플로우를 뒤지고, 디버깅하고, 리팩터링했다. 그 과정에서 나는 그 문제를 깊이 이해하게 되었다. 왜 이 추상화가 필요한지, 왜 저 패턴이 맞지 않는지, 어떤 트레이드오프가 있는지.

그런데 AI는 20분 만에 해냈다. 그리고 나는 그 코드를 “검토할 수 없다”.

이 불편함은 어디서 오는 걸까. 질투인가? 아니면 불안인가?


“더 무서워졌다”는 표현을 처음 봤을 때, 나는 약간 과장이라고 생각했다. 개발자들은 새로운 도구가 나올 때마다 비슷한 반응을 보인다. “이제 우리는 필요 없어질 거야”, “AI가 모든 걸 대신할 거야”. 그러나 항상 그렇게 되지는 않았다. 컴파일러가 나왔을 때도, IDE가 나왔을 때도, 스택오버플로우가 나왔을 때도, GitHub Copilot이 나왔을 때도. 우리는 여전히 여기 있다.

그러나 이번은 다르다는 느낌이 점점 강해진다.

12개의 에이전트 파일을 하나씩 열어보았다. 각 에이전트는 자신의 역할을 명확히 알고 있었다. Project Manager는 일정을 관리하고, Tech Lead는 아키텍처를 감독하고, Backend Developer는 Spring Boot API를 구현한다. 마치 실제 팀처럼. 아니, 어떤 면에서는 실제 팀보다 더 체계적으로.

실제 개발 팀에서 우리는 회의를 한다. 요구사항을 논의하고, 설계를 검토하고, 의견이 충돌하고, 타협점을 찾는다. 그 과정은 지저분하고 비효율적으로 보일 수 있다. 그러나 그 과정에서 우리는 서로를 이해하고, 문제를 더 깊이 파악하며, 더 나은 해결책을 찾는다.

AI 에이전트 팀은 회의를 하지 않는다. 그들은 그냥 작동한다. 각자의 역할을 수행하고, 결과물을 만들어낸다. 효율적이다. 매우 효율적이다. 그리고 그것이 바로 무서운 부분이다.


“새벽에 장애 조치 하는 것 보면서 답답하면서도 신기했다”

이 문장을 읽으며, 나는 모순된 감정을 이해할 수 있었다. 답답함. 그것은 아마도 개입할 여지가 없었기 때문일 것이다. 새벽 2시 10분, 장애 발생. 37분 후, 해결 완료. 상세한 보고서까지.

전통적으로 장애 대응은 엔지니어가 자신의 가치를 증명하는 순간이었다. 시스템을 깊이 이해하고 있다는 것, 빠르게 문제를 진단할 수 있다는 것, 창의적인 해결책을 찾을 수 있다는 것. 그것이 시니어 엔지니어의 정체성이었다.

그런데 AI가 그것을 해버렸다. 더 빠르게, 더 체계적으로. 그리고 피곤함도, 스트레스도 없이.

신기함. 그것은 우리가 상상만 하던 미래가 현실이 되었다는 경외감일 것이다. SF 소설에서나 보던 자율적 AI 시스템. 그것이 지금, 여기, 실제 개발 환경에서 작동하고 있다.

그러나 답답함과 신기함 사이에서, 또 다른 감정이 숨어있다. 그것은 어쩌면 슬픔에 가까운 무언가다.


atmoio의 이야기를 다시 생각해본다. “2년간의 vibecoding 끝에 다시 손으로 코드를 쓰기로 했다.” 그가 느낀 실망은 무엇이었을까. 단순히 코드 품질의 문제였을까.

“나는 이 코드로 사용자에게 거짓말하지 않겠다.”

이 선언은 단순히 기술적 판단이 아니다. 이것은 윤리적, 실존적 선언이다. 개발자로서 자신이 만든 것에 대한 책임. 사용자에 대한 책임. 그리고 자신의 직업적 양심에 대한 책임.

AI가 생성한 코드는 작동한다. 테스트도 통과한다. PR도 깔끔해 보인다. 그러나 그 코드로 사용자의 데이터를 보호하겠다고, 사용자의 돈을 받겠다고 말할 수 있는가?

나는 내 화면의 코드를 다시 본다. 복잡한 LangGraph 구현. 정교한 Spring Boot API. Keycloak 인증 통합. 모두 인상적이다. 모두 전문적으로 보인다.

그러나 나는 이 코드를 진정으로 이해하는가? 6개월 후 버그가 발생했을 때, 나는 어디서부터 찾아야 하는지 아는가? 성능 문제가 생겼을 때, 어느 부분을 최적화해야 하는지 판단할 수 있는가? 보안 감사를 받을 때, 모든 엔드포인트의 권한 검증이 올바른지 확신할 수 있는가?

“검토할 수 있는 수준이 아니다”라는 고백이 다시 떠오른다. 이것은 단순히 코드가 복잡하다는 의미를 넘어선다. 이것은 통제권을 잃었다는 고백이다.


저녁이 되어 퇴근길에 지하철을 탔다. 창밖의 어둠 속을 지나가며, 나는 계속 생각했다.

개발자가 된다는 것은 무엇인가. 코드를 타이핑하는 것인가? 문법을 외우는 것인가? 알고리즘을 구현하는 것인가?

아니다. 그것들은 수단일 뿐이다. 개발자가 된다는 것은 문제를 이해하고, 해결책을 설계하고, 그것을 현실로 만드는 것이다. 그 과정에서 우리는 시스템을 깊이 이해하게 된다. 왜 이것이 작동하는지, 왜 저것이 작동하지 않는지. 어떤 선택이 어떤 결과를 낳는지.

코드를 직접 작성하는 것은 그 이해의 과정이었다. 함수를 어떻게 나눌지 고민하면서, 나는 문제의 구조를 파악했다. 변수 이름을 정하면서, 나는 개념을 명확히 했다. 버그를 고치면서, 나는 시스템의 동작을 이해했다.

그런데 AI가 그 과정을 건너뛰게 한다면? 빠르게 작동하는 코드를 얻지만, 그 깊은 이해는 놓친다면?

나는 몇 년 후의 나를 상상해본다. AI 없이는 코드를 작성할 수 없는 나. 기차나 비행기에서, 인터넷이 끊긴 곳에서, 생산성이 0이 되는 나. 더 무서운 것은, 시스템을 깊이 이해하지 못하면서도 그것을 ‘만들었다’고 말하는 나.


그러나 동시에, 나는 이 새로운 가능성에 흥분하기도 한다.

12개의 에이전트가 협업하는 모습을 상상해본다. 각 에이전트가 자신의 전문 영역에서 최선을 다한다. Project Manager가 일정을 조율하고, Tech Lead가 아키텍처를 검토하고, Backend Developer가 API를 구현하고, QA Engineer가 테스트를 작성한다.

그리고 나는? 나는 오케스트라의 지휘자가 된다. 전체 비전을 제시하고, 각 에이전트에게 방향을 알려주고, 그들의 작업을 조율하고, 최종 결과물을 검증한다.

이것은 코딩보다 더 높은 수준의 작업이다. 더 많은 지식을 요구한다. 비즈니스 요구사항을 이해하고, 기술적 가능성을 판단하고, 아키텍처를 설계하고, 품질을 보증한다.

어떤 면에서 이것은 개발자라는 직업의 진화일 수 있다. 타자수가 워드프로세서 사용자가 되고, 콘텐츠 크리에이터가 된 것처럼. 계산원이 스프레드시트 사용자가 되고, 데이터 분석가가 된 것처럼.

우리도 코더에서 AI 오케스트레이터로, 시스템 아키텍트로 진화하는 중일지 모른다.


밤늦게 집에 돌아와, 나는 다시 그 GitHub 저장소를 열었다.

문서 구조를 천천히 훑어본다. 01_planning/ 안에는 상세한 프로젝트 계획서가 있다. 02_design/ 안에는 아키텍처 설계서가 있다. 04_testing/ 안에는 테스트 전략이 있다. 07_maintenance/ 안에는 운영 가이드와 장애 대응 절차가 있다.

이 모든 것을 Claude가 작성했다. 사용자가 제공한 것은 “구축 범위와 적용 기술”뿐이었다. 청사진 수준. 그리고 Claude는 그것으로부터 전체 시스템을 설계했다.

나는 지난 몇 년간 내가 참여한 프로젝트들을 떠올린다. 수십 번의 회의. 끝없는 논쟁. 변경되고 또 변경되는 설계. 그리고 그 모든 혼란 속에서도, 우리는 무언가를 만들어냈다.

그 혼란이 나쁜 것만은 아니었다. 그 과정에서 우리는 서로를 이해했고, 문제를 더 깊이 파악했으며, 예상하지 못한 통찰을 얻었다. 때로는 회의 중 누군가의 말 한마디가 전체 방향을 바꾸기도 했다.

AI는 그런 우연한 발견을 할 수 있을까? AI는 직관적 도약을 할 수 있을까?

아니면 AI는 단지 학습 데이터에서 본 패턴들을 재조합할 뿐일까? “평균적으로 좋은” 설계를 만들지만, “이 프로젝트에 최적인” 설계는 만들지 못하는 것일까?

나는 아직 답을 모른다. 어쩌면 답은 없을지도 모른다. 어쩌면 질문 자체가 잘못되었을지도 모른다.


atmoio와 이 프로젝트. 두 개의 극단.

하나는 2년간의 실험 끝에 좌절했다. “slop”. 순수하고 희석되지 않은 난잡함. 개별적으로는 그럴듯하지만 전체적으로는 엉망인 코드. 그는 결국 다시 손으로 코드를 쓰기로 했다. 그리고 그 선택에서 오히려 더 빠르고, 정확하고, 창의적이었다고 말한다.

다른 하나는 12개의 전문 에이전트를 구성하고, 전체 SDLC를 체계적으로 수행했다. 문서도 완벽하고, 구조도 체계적이다. 그리고 “더 무서워졌다”고 말한다.

무엇이 다른 걸까. 도구의 차이? 2년 사이 AI는 엄청나게 발전했다. Claude Opus 4.5는 이전 세대와는 차원이 다르다.

아니면 접근 방식의 차이? atmoio는 상세한 명세를 주고 한 번에 큰 작업을 맡겼다. 이 프로젝트는 청사진만 주고, 설계부터 AI가 하게 했다. 그리고 역할을 명확히 분리했다.

어쩌면 둘 다일 것이다. 도구도 중요하고, 사용 방식도 중요하다.

그러나 더 근본적인 차이가 있을지도 모른다. 그것은 AI를 바라보는 관점이다.

atmoio는 AI를 “개발자의 대체재”로 보았다. AI에게 인간 개발자가 하던 일을 맡기고, 같은 수준의 결과물을 기대했다. 그리고 실망했다.

이 프로젝트는 AI를 “새로운 종류의 팀원”으로 보는 것 같다. 인간과는 다른 강점과 약점을 가진, 그러나 올바르게 조율하면 엄청난 가치를 만들어낼 수 있는 존재.


새벽 1시가 넘었다. 나는 여전히 화면을 보고 있다.

마우스 커서를 vip_agent.py 파일 위에 올려놓았다. 클릭하면 코드를 볼 수 있다. 복잡한 LangGraph 구현. 3단계 RAG 파이프라인. 엔티티 추출과 관계 매핑.

나는 클릭하지 않았다.

왜일까. 두려움인가? 그 코드가 나보다 낫다는 것을 인정하기 싫어서인가? 아니면 그 코드를 이해하지 못할까봐 두려워서인가?

아니면 더 근본적인 무언가인가. 내가 개발자로서 정체성을 잃을까봐?

나는 노트북을 닫고 창밖을 바라본다. 도시의 불빛들이 깜빡인다. 저 안에서 수만 명의 개발자들이 일하고 있을 것이다. 코드를 작성하고, 버그를 고치고, 시스템을 설계하고.

그들 중 얼마나 많은 사람들이 나와 같은 생각을 하고 있을까. 얼마나 많은 사람들이 AI를 사용하면서도, 그것이 무엇을 의미하는지 고민하고 있을까.

AI는 도구다. 그러나 단순한 도구가 아니다. AI는 우리의 일하는 방식을, 생각하는 방식을, 그리고 어쩌면 우리가 누구인지에 대한 정의 자체를 바꾸고 있다.


다음날 아침, 나는 새로운 프로젝트를 시작하기로 했다.

작은 것부터. 간단한 API 하나. 나는 Claude에게 물었다. “RESTful API를 설계해줄래? 사용자 관리 시스템이야.”

응답이 왔다. 체계적인 엔드포인트 설계. 명확한 요청/응답 스키마. 적절한 HTTP 메서드와 상태 코드. 인증과 권한 관리.

나는 그것을 검토했다. 좋았다. 정말 좋았다. 내가 며칠 동안 고민해야 할 설계를 몇 분 만에.

그런데 나는 그대로 구현하지 않았다. 나는 질문을 던졌다. “왜 이 엔드포인트는 PUT이고 저것은 PATCH인가?” “페이지네이션 전략은 왜 offset 기반인가? cursor 기반은 고려했나?” “인증 토큰 갱신은 어떻게 처리하나?”

Claude는 답했다. 각 선택의 이유를 설명했다. 트레이드오프를 논의했다. 대안을 제시했다.

우리는 대화를 나눴다. AI와 나. 마치 시니어 동료와 설계를 검토하듯이.

그리고 그 과정에서, 나는 깨달았다. 이것이 어쩌면 미래일지 모른다는 것을.

AI가 모든 것을 하는 미래가 아니다. 인간이 아무것도 하지 않는 미래도 아니다. 인간과 AI가 진정으로 협업하는 미래. 각자의 강점을 살리고, 서로의 약점을 보완하는 미래.

AI는 빠르다. 지치지 않는다. 방대한 지식을 가지고 있다. 패턴을 잘 인식한다.

인간은 직관을 가지고 있다. 맥락을 이해한다. 창의적 도약을 한다. 그리고 무엇보다, 책임을 진다.


저녁에 팀 회의가 있었다. 나는 조심스럽게 말을 꺼냈다. “AI 도구 사용에 대해 이야기해볼까요?”

분위기가 미묘해졌다. 누군가는 열정적으로 자신의 경험을 공유했다. “GitHub Copilot으로 생산성이 2배 올랐어요!” 누군가는 회의적이었다. “AI가 만든 코드는 믿을 수 없어요. 버그 투성이더라고요.”

그리고 시니어 개발자 한 명이 조용히 말했다. “솔직히 말하면… 두렵습니다. 우리가 필요 없어질까봐.”

침묵이 흘렀다.

나는 천천히 말했다. “저도 두렵습니다. 그런데 어쩌면 두려움은 자연스러운 것 같아요. 우리는 변화의 한가운데 있으니까요.”

“atmoio라는 개발자가 있어요. 2년간 AI 코딩을 시도하다가, 결국 다시 손으로 코드를 쓰기로 했대요. AI 코드의 품질을 신뢰할 수 없었대요.”

“그런데 다른 팀은 AI로 전체 시스템을 설계하고 구현했어요. 12개의 전문 에이전트를 구성하고, 체계적으로 SDLC를 수행했대요. 그리고 ‘더 무서워졌다’고 했어요.”

“두 경험 모두 진짜입니다. 그리고 그 차이는 우리에게 무언가를 말해주고 있어요.”

한 주니어 개발자가 물었다. “그래서 우리는 어떻게 해야 하나요?”

나는 솔직히 답했다. “저도 잘 모르겠어요. 아직 답을 찾는 중이에요. 그런데 제 생각엔, 우리는 새로운 역할을 찾아야 할 것 같아요. AI를 두려워하거나 거부하는 대신, AI와 함께 일하는 법을 배워야 할 것 같아요.”

“그리고 동시에, 우리만이 할 수 있는 것에 집중해야 할 것 같아요. 비즈니스 이해, 사용자 공감, 창의적 문제 해결, 윤리적 판단. 그리고 무엇보다, 책임.”


그날 밤, 나는 다시 그 GitHub 저장소를 열었다.

이번에는 주저하지 않고 vip_agent.py를 클릭했다. 코드가 화면에 펼쳐졌다. 복잡했다. 정교했다. 그리고 인상적이었다.

나는 천천히 코드를 읽기 시작했다. 각 줄을 이해하려 노력했다. 왜 이 구조인지, 왜 이 패턴인지.

쉽지 않았다. 몇 번이고 문서를 찾아봤다. LangGraph 공식 문서, LangChain API 레퍼런스, 여러 블로그 포스트.

한 시간쯤 지났을까. 나는 조금씩 이해하기 시작했다. 전체 구조가 보이기 시작했다. 그리고 느꼈다. 이것은 좋은 코드라는 것을.

그러나 동시에 질문들이 떠올랐다. 이 부분은 다르게 할 수도 있지 않았을까? 저 추상화는 과도한 것 아닐까? 이 에러 핸들링은 충분한가?

나는 메모를 시작했다. 이해한 것들. 의문스러운 것들. 개선할 수 있을 것 같은 것들.

그리고 깨달았다. 이것이 나의 역할이라는 것을.

AI가 코드를 생성한다. 빠르게, 대량으로. 그러나 그 코드를 진정으로 이해하고, 검증하고, 개선하는 것은 여전히 인간의 몫이다.

“검토할 수 있는 수준이 아니다”라고 말했던 개발자. 나는 그의 솔직함을 존중한다. 그러나 나는 또한 생각한다. 어쩌면 우리는 검토하는 방법을 배워야 하는지도.

한 줄씩 코드를 읽는 대신, 더 높은 수준에서 시스템을 이해하는 법을. 아키텍처의 일관성을 검증하는 법을. 잠재적 문제를 예측하는 법을.

이것은 더 어려운 기술이다. 더 많은 경험을 요구한다. 그러나 어쩌면 이것이 우리가 진화해야 할 방향일지도 모른다.


새벽 3시. 나는 여전히 코드를 보고 있다.

창밖은 완전히 어둡다. 도시는 잠들었다. 그러나 어디선가, 이 순간에도 AI 에이전트들은 작동하고 있을 것이다. 코드를 생성하고, 버그를 고치고, 문서를 작성하고. 쉬지 않고. 피곤함 없이.

나는 피곤하다. 눈이 아프다. 내일 아침 일찍 일어나야 한다.

그러나 이상하게도, 나는 절망하지 않는다.

두렵기는 하다. 불안하기도 하다. 미래가 어떻게 될지 모르겠다. 내가 10년 후에도 여전히 개발자로 일하고 있을지, 아니면 완전히 다른 역할을 하고 있을지.

그러나 동시에, 나는 흥분되기도 한다.

우리는 역사적 전환점에 서 있다. 소프트웨어 개발이 근본적으로 바뀌는 순간. 그리고 나는 그 변화의 한가운데 있다.

atmoio가 “더 무서워졌다”고 말했을 때, 그것은 단순히 AI의 능력에 놀란 것이 아니었다. 그것은 개발자로서 자신의 정체성이 흔들리는 것을 느낀 것이었다.

나도 그 흔들림을 느낀다. 그러나 나는 또한 알고 있다. 흔들림은 성장의 시작이라는 것을.

나는 노트북을 닫는다. 이제 정말 자야 한다.

그러나 내일 일어나면, 나는 다시 AI와 함께 일할 것이다. 두려워하면서도, 배우면서, 적응하면서.

그리고 언젠가는, 어쩌면 나는 AI를 진정한 협업 파트너로 받아들이게 될지도 모른다. 두려움이 아니라 신뢰로. 경쟁이 아니라 협력으로.

그날이 오면, “더 무서워졌다”는 말은 다른 의미를 가질 것이다.

그것은 두려움이 아니라, 경외감일 것이다.

인간과 AI가 함께 만들어낼 수 있는 것에 대한.


작성일: 2026-01-28

이 글은 한 개발자의 개인적 성찰이다. 정답을 제시하지 않는다. 단지 질문을 던질 뿐이다. 우리는 어디로 가고 있는가. 그리고 그곳에서 우리는 누구인가.

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.