과거 개발자들은 IDE 없이 개발했다. 천공카드 시대(1950~1960년대)가 존재했다는 문서를 보았을 때 깜짝 놀랐다. 적어도 터미널에서 코딩을 할 줄 알았는데, 그것마저 뛰어넘어서 종이로 코딩을 한다니. 지금 와서 보면 믿기지 않는 시대다. 그 이후에 터미널로 넘어오고, 점차 우리가 익숙하게 사용하는 에디터와 IDE가 등장했다.
그렇다면 과거의 역사를 현재에 대입해보자.
혹시 아직도 '천공카드'를 사용해서 코딩하는 사람이 있을까? 또는 순수하게 터미널로만 개발하는 사람이 있을까? 만약 그런 사람이 존재한다고 해도 '개발을 3일 배운 AI 바이브 코딩 개발자'보다 생산성이 뛰어날까?
아니다.
이미 그런 시대들은 과거로 흘러가버렸다. 몇 년 전부터 AI 코딩은 실질적인 현실이 되었다. 이제 AI 없이 코딩한다는 것은 '시대의 흐름에 역행하는 천공카드 개발자'가 되어버리는 것이다.
시간은 흐르고 있고, 과거는 고정되어 멈춰있다.
내가 어디에 서 있는지 생각해보자. 시간은 흐른다고 했으므로 가만히 있는 것만으로도 뒤쳐져서 흘러가 버린다. 누군가 개발자에게 질문한다고 가정해보자.
"앞으로 AI를 사용해서 코딩할까요? 아니면 AI를 사용하지 않는 과거로 돌아갈까요?"
질문을 받는 개발자는 헛웃음을 지을 것이다.
AI 코딩이 당연한 시대다. AI 없이 코딩하던 시대는 종말을 맞이했다. 피처폰 시대와 스마트폰 시대가 다르듯이, AI가 존재하지 않던 시대와 AI가 존재하는 시대는 완벽히 구분할 수 있을 정도로 나뉘었다.
'AI 코딩이 없던 시절'을 'AI Free'라고 지칭하는 것을 보았다. 이미 지나간 시대로 규정해버린 그 단어에 깊이 공감했다.
'AI가 존재하지 않았던 AI Free 코딩'은 과거의 역사다.
그렇다면 AI 코딩 시대에 개발자라는 직업은 뭘까? 개발자로서 살아남기 위해서는 어떻게 행동해야 할까? 이 물음에 스스로 결론 지어보고 싶다.
AI 코딩의 종류를 표로 분류해보자.
| 유형 | 특징 | 개발자 주도권 |
|---|---|---|
| AI 보조 | 막힐 때만 질문 | ●●●●○ |
| 자동완성 | IDE 실시간 코드 제안 | ●●●●○ |
| 페어 프로그래밍 | 대화하며 협업 | ●●●○○ |
| 코드 생성 | 기능 단위 요청 | ●●○○○ |
| 에이전트 코딩 | 자율적 구현 | ●○○○○ |
| 바이브 코딩 | 완전 위임 | ○○○○○ |
위 표에서 주목해야 하는 점은
'개발을 3일 배운 사람이든 30년 배운 사람이든 AI 코딩 방식은 누구나 선택할 수 있는 선택지'라는 것이다.
즉, AI 코딩 도구는 누구에게나 동일하게 열려 있다. 그리고 순수하게 'AI에게 위임하는 코딩 영역'만 놓고 보면, 경력 3일 차와 30년 차의 차이가 급격히 줄어든다. AI가 코드를 생성하는 행위 자체에는 인간의 경력이 개입하지 않기 때문이다.
그렇다면 무엇으로 '경력자와 비경력자'의 차이를 발생시킬 수 있을까? 그리고 무엇을 해야 가치 있는 개발자로 남을 수 있을까?
생각해보자.
개발자의 주도권이 낮아질수록 "단기 생산 속도"는 빨라진다. 그러나 프로젝트 통제력, 학습, 장기 유지보수 측면에서 비용이 발생한다.
빠르게 만들수록 빠르게 망가진다. AI에게 많이 위임할수록 내가 이해하는 영역은 줄어든다. 생산성을 높이려고 주도권을 내려놓는 순간, 장기적으로는 오히려 더 많은 시간을 쓰게 될 수 있다.
결국 '속도'와 '이해'는 트레이드오프 관계에 놓인다. 당장의 생산성을 위해 AI에게 모든 것을 맡기면, 나중에 문제가 생겼을 때 해결할 능력을 잃어버린다. 반대로 모든 것을 직접 하려 하면, AI 시대의 속도를 따라갈 수 없다.
따라서 여기서 발생하는 '비용'을 컨트롤할 수 있는 개발자가 '능력 있는 개발자'이자 '미래 개발자 직업의 의의'가 될 것으로 생각한다.
버전 관리 시스템을 능숙하게 다룰 줄 알아야 한다. 이것은 "AI 병렬 처리" 및 "AI의 실수에 대해서 빠르게 대응"할 수 있는 중요한 기술이다.
AI가 생성한 코드를 그냥 넘기지 않고 탐구해 나가고 발전시키려는 자세가 필수적이다. 탐구의 과정이 없다면 AI에게 자아를 의탁해서 모든 일을 맡기는 것과 다름없다.
즉, 프로세스와 코드를 설명할 수 없는 개발자가 되고, 스스로의 가치가 높아지지 않는다.
'프로젝트 비즈니스 이해와 이에 따른 AI 관리' — 내가 생각하는 가장 중요한 부분이다.
결국 프로젝트는 '목적이 있는 행위'이다. 그런데 현재의 AI 코딩은 에이전트를 아무리 잘 커스터마이징해도 프로젝트 비즈니스와 엇나가게 코딩할 때가 존재한다.
그러므로 내가 이 프로젝트를 어떤 의미에서 작업하고 있는지 개발자가 이해하고 있는 것이 가장 중요하다.
내가 생각할 때, AI 코딩 시대에서 코딩보다 더 높은 가치를 가지고, 앞으로도 변하지 않을 개발자의 핵심 기술이 있다. 바로 디버깅이다.
디버깅 툴을 사용하는 데 거부감이 없고, 디버깅 능력이 뛰어나면 문제가 발생했을 때 어디서 문제가 발생하고 있는지 빠르고 효율적으로 캐치해 낼 수 있다.
AI의 코딩은 항상 완벽하지 않다. 종종 발생하는 문제들은 코딩 단계에서 잘 보이지 않는다. 실제 API 호출과 같은 데이터의 흐름이 발생해야 나타나는 문제이기 때문에, 코드 작성 단계에서는 쉽게 알아차리지 못한다.
이런 경우, 개발자가 직접 디버깅하고 오류에 대한 인사이트를 AI에게 제공해 줄 수 있다면 문제는 빠르게 해결될 수 있다.
다시 처음의 질문으로 돌아가보자.
AI 코딩 시대에 개발자라는 직업은 뭘까?
내 결론은 이렇다. 개발자는 더 이상 '코드를 작성하는 사람'이 아니다. 'AI가 작성한 코드를 검증하고, 방향을 제시하고, 문제를 해결하는 사람'이다.
개발자로서 살아남기 위해서는 어떻게 행동해야 할까?
최소한, 앞서 말한 4가지 기술을 갖춰야 한다. 프로젝트를 통제하고, AI가 생성한 코드를 탐구하며 학습하고, 비즈니스를 이해하여 유지보수하고, 문제가 발생했을 때 직접 디버깅할 수 있어야 한다.