Engineering
AI는 어디까지 나를 대체할 수 있나?
hook.jeong카카오
2025년 4월 23일
원문에서 보기 ↗'나’는 누구인가?
카카오에서 내부플랫폼을 개발을 하고있는 hook.jeong입니다.
제가 AI를 처음 개발자로서 접하게 된건 사내 설명서 서비스에 챗봇을 도입하는 일이었습니다. 이후 AI Native TF에서 사내 지식베이스 에이전트를 개발했고, 사외 교육에서 AI 프로젝트 멘토와 심사위원으로 활동하며 AI 분야에 대한 경험을 쌓아왔습니다. 현재는 AIOps와 관련된 개발을 진행하고 있으며, 일상적인 개발 업무에서도 LLM을 적극 활용하고 있습니다.
'나’는 왜 "Vibe"를 해보게 되었나?
최근 AI를 활용한 Vibe Coding이 개발자들 사이에서 주목받고 있습니다. 이는 자연스럽게 "AI가 개발자를 대체할 수 있을까?"라는 논쟁으로 이어지고 있습니다. 이러한 논쟁을 지켜보며 한 가지 궁금증이 생겼습니다. "지금의 AI는 과연 '내’가 하는 일을 어디까지 대신할 수 있을까? 개발 업무 중, AI가 실제로 대체 가능한 영역은 어디까지일까?"라는 호기심을 해결하기 위해, AI의 개발자 대체 가능성을 직접 검증해보는 토이 프로젝트를 진행하기로 결정했습니다.
'나’는 무엇을 검증하고자 했나?
플랫폼 개발자로서 수행하는 주요 업무를 요구사항 분석, 시스템 설계, 데이터 설계, 코딩 , 서비스 운영으로 크게 다섯 가지로 분류해보았습니다.
이 중에서 AI의 개발자 대체 가능성을 검증하기 위해 코딩 영역에 초점을 맞추기로 했습니다. 구체적인 검증 항목은 다음 세 가지입니다:
- 코드 없이 구어체만으로 웹 프로젝트를 구현할 수 있는가?
- 가능하다면 어느 정도의 속도로 개발할 수 있는가?
- 정말 개발자의 개입 없이 구현이 가능한가?
어떤 기준으로 검증을 해보았나?
요구사항
- cursor.directory와 유사한 웹사이트 개발
- Kakao SSO Login
- 카테고리 등록/조회/수정/삭제
- MCP 등록/조회/수정/삭제 (등록자 본인만 수정가능)
- 등록된 MCP를 Elasticsearch를 통하여 검색
- 등록/수정/삭제 시 Mysql, Elasticsearch 동기화
- Sync 실패 시 작업 취소
검증 조건
- 완전히 빈 프로젝트에서 시작
- Cursor IDE 사용
- Claude 3.7 Sonnet만 활용
- MCP 미사용
.cursorrules는 Cursor 디렉터리 내 인기 설정 기준으로 선택- SQL과 K8s만 직접 작성
- 소스코드는 전혀 타이핑하지 않음
- 모든 개발은 구어체 입력 후 accept 방식으로 수행
- 에러 발생 시 검색 없이 copy & paste로 해결
- 오류 없이 기능이 수행되는 것은 완성이라고 정의
기술 스택
- Next.js
- MySQL
- Elasticsearch
- Node.js
개발 기간
- 2024년 4월 12일 ~ 14일 (3일간)
- 하루 2시간씩, 총 6시간 소요
“Vibe”하면서 무엇을 느꼈나?
1. 코드 없이 구어체만으로 구현 가능한가?
구현은 가능합니다. 오류 없이 기능이 정상적으로 수행되는 수준을 기준으로 보았을 때, 구어체만으로도 웹 프로젝트를 충분히 구현할 수 있었습니다. 실제로 단 한 줄의 코드도 직접 작성하지 않고, 프로젝트의 핵심 기능을 구현하는 데 성공했습니다.
2. 구현 속도는 어느 정도인가?
개발 속도 측면에서는 기존 방식과 비교할 수 없을 정도로 빠릅니다. 사내 콘솔, 외부 인증 페이지, 설명서 사이트 등 다양한 웹 프로젝트를 설계하고 개발한 경험이 있는 저의 기준으로도, 일반적인 개발 방식으로는 최소 3일 이상의 개발 기간이 필요할 것으로 예상됩니다. 그러나 이번 실험에서는 단 6시간 만에 4개의 페이지(24개 파일, 1,500줄 이상의 코드)를 구현할 수 있었습니다. 완전히 처음부터 만든 경우라는 점을 고려했을 때, AI 도구를 활용하면 얼마나 빠르게 목표에 도달할 수 있는지 알 수 있었습니다.
3. 개발자의 개입 없이 가능한가?
현재 수준에서는 개발자의 개입 없이 진행하는 것은 어렵다고 판단됩니다. 그 이유는 다음과 같습니다:
- 개발자 수준의 프롬프트를 입력해야 하는 문제: 프로젝트의 핵심 기능 구현 이후, 예외 처리, 에러 처리, 데이터 동기화와 같은 세부적인 작업을 진행할 때는 개발자 수준의 전문적인 지식이 필요했습니다. 특히 아키텍처의 완성도와 유지보수성을 보장하기 위해서는 개발자로서의 도메인 지식과 시스템 이해도가 필수적이었습니다.
- 호환성 또는 적합한 라이브러리 선택 이슈: Elasticsearch lib와 같이 버전에 따라 인터페이스가 다른 경우, 명확한 버전 명시가 없을 때 충돌이 발생합니다. 사용하고자하는 data storage의 버전과 lib의 호환성에 대한 이해가 있어야 더 깔끔한 코드를 얻을 수 있었으며, 이미 호환성이 떨어지는 버전을 선택한 이후에 수정을 요청하였을 때는 버전을 다시 선택하는 것이 아니라 lib의 인터페이스를 맞추는 파싱용 함수를 무작위로 만들어내는 문제가 있었습니다.
- 기존의 작성된 코드를 이해하고 프롬프트를 입력해야하는 문제: 먼저 작성된 코드를 이해한 상태로 프롬프트를 보냈을 때 더 완벽한 결과를 빠르게 만들 수 있습니다. 단순히 기능을 만들어 달라고 한 뒤 요구사항을 세분화하는 작업에서는 불필요한 코드가 쌓이기 시작했으며 규모가 커질수록 accept에 대한 부담감이 커졌습니다.
- 위임으로 인한 나비효과: 데이터 설계부터 AI에게 위임했다가, 의도와 다르게 생성된 데이터를 확인하지 못하면 전혀 예상과 다른 결과를 받게 되었습니다.
- 많은 수정을 요청할수록 불필요한 코드의 누적: 요구사항을 고도화하고 프롬프트의 의도와 벗어난 내용들을 고쳐달라고 요구하는 과정에서 불필요한 코드가 많이 생성되었고, 이를 이해하고 지우는 과정이 생각보다 많이 반복되었습니다.
현재 기준으로 AI가 '나’를 완전히 대체할 수 있는가?
현재로서는 AI가 개발자를 완전히 대체하기는 어렵다고 판단됩니다. 그 이유는 다음과 같습니다:
1. 코드 품질과 유지보수성
- 코드를 입력하지 않고 기능 구현은 가능하지만, 실제 서비스 배포와 유지보수 관점에서는 개발자의 역할이 필수적입니다.
- 생성된 코드의 품질 검수와 안정적인 동작을 위해서는 여전히 개발자의 전문성이 요구됩니다.
2. 프로젝트 구조의 문제점
- 프로젝트의 구조에 대한 관리가 제대로 이루어지지 않으면 불필요한 코드가 누적됩니다.
- 사용되지 않는 파일과 중복 기능이 발생하여 유지보수에 큰 부담을 줍니다.
- 대량으로 코드가 생성될 때에는 중복된 기능이 다른 위치에 생성되었는지 꼭 확인하여 삭제를 해줘야 합니다.
3. 대규모 프로젝트에서의 한계
- 복잡한 요구사항을 가지고 있는 시스템은 구어체만으로는 구현이 어렵습니다.
- 프롬프트를 입력하는 개발자는 시스템의 철학, 유지보수, 확장성, 성능에 대한 요소가 반영되었는지 확인이 필요하며, 이는 곧 규모가 커질수록 더 큰 콘텍스트 길이와 토큰의 필요로 이어집니다. 간단한 GET API를 만드는데에 수많은 비용을 지불하는 것이 타당한가는 이 글의 주제와는 다르지만, 분명 무시할 수 없는 문제입니다.
- 시스템 설계, 프로젝트 구조화, 데이터 모델링 등 핵심적인 부분에서는 개발자의 도메인 지식이 필수적입니다.
대체 가능한 부분은 무엇이 있는가?
개인적인 생각이지만 위의 경험으로 저는 다음과 같은 ‘개발 행위’를 AI가 대체해주었다고 생각합니다.
- 구어체로 전달한 아이디어를 실제 구현 가능한 코드로 표현하는 행위
- 처음 마주하는 에러에 대한 해결 방안을 찾아가는 행위
- 복잡한 코드에 주석을 요청하여 이해의 가속화 및 코드를 라인별로 분석하는 행위
- 적절한 함수명, 변수명을 찾는 행위
마지막으로…
AI 도구는 엔지니어에게 강력한 생산성 향상 도구가 될 수 있다는 점은 분명합니다. 개발자로서 제가 수행하는 여러 행위들 중 일부를 대신할 수 있다는 점을 이번 경험을 통해 확인할 수 있었습니다. 반복적이고 구조화된 개발 업무를 AI가 도맡아 처리해줌으로써, 저는 더 창의적이고 본질적인 문제에 집중할 수 있는 시간을 확보할 수 있었습니다.
AI 기술은 지금 이 순간에도 빠르게 진화하고 있습니다. 불과 1~2년 사이에도 눈에 띄는 발전이 있었고, 앞으로 빠르게 더 많은 “나”의 행위들을 대신해줄 것으로 예상됩니다.