당신의 일자리는 없어지지 않을 것이다. 당신이'진짜 개발자'라면
— AI — 21 min read
얼마 전까지만 해도 AI가 생성한 코드는 그저 참고용 정도였다. 실제 프로덕션에 올리기엔 너무 허술했고, 코드리뷰에서도 "이거 AI가 짠 거 아니야?"라는 말이 나오면 은근히 부끄러웠던 시절이었다.
하지만 지금은 완전히 다른 세상이 됐다. 이제는 오히려 "어떻게 하면 내가 직접 코드를 안 짜고도 원하는 기능을 만들 수 있을까?"를 고민하는 시대가 되었다. AI 도구들이 이렇게 발전할 줄 누가 알았을까.
지금 현업에서 일하고 있는 개발자들 대부분은 앞으로 몇 년 안에 IT업계에 엄청난 변화가 올 것이라는 걸 알고 있을 것이다. 하지만 그럼에도 불구하고 "내 자리만은 괜찮을 것이다", "내가 하는 일은 AI가 대체할 수 없다"라고 생각하는 개발자들이 아직도 많다.
이런 생각을 가지고 있다면 지금부터라도 조금이라도 마인드셋을 바꿔야 하지 않을까.
진짜 개발자란 무엇인가?
개발자 전체가 AI로 대체되지 않는다는 사실은 분명한다. 하지만 그건 '진짜 개발자'를 말하는 것이다. 혹시 이 글을 읽고 있는 사람 중에 자신 있게 "내가 진짜 개발자다"라고 말할 수 있는 사람이 있을까?
내가 생각하는 진짜 개발자는 이런 사람들이다:
1. 커널 레벨까지 이해하는 시스템 개발자 커널단을 직접 만져서 OS를 만들어본 사람들. 이런 사람들은 컴퓨터의 근본적인 동작 원리를 이해하고, 하드웨어와 소프트웨어의 경계에서 일할 수 있다.
2. 프레임워크와 라이브러리 창조자 React 같은 라이브러리를 직접 만들어본 사람들. 단순히 사용하는 게 아니라, 수만 명의 개발자가 쓸 도구를 설계하고 구현할 수 있는 사람들이다.
3. 소프트웨어 아키텍트 대규모 프로젝트의 구조를 설계하고, 코딩보다는 아키텍처를 짤 줄 아는 말 그대로 소프트웨어 공학자들. 이들은 기술적 의사결정의 무게를 감당할 수 있다.
이런 사람들의 자리는 AI가 대중화되어도 없어지지 않을 것이다.
하지만 여기서 끝이 아니다. 내 생각에는 몇 가지 유형이 더 있는데,
4. 도메인 전문가 비즈니스를 깊이 이해하고 기술과 연결할 수 있는 사람들. 금융, 의료, 게임 등 특정 분야의 복잡한 요구사항을 기술로 해결하는 사람들이다.
5. 문제 해결사 AI가 답을 줄 수 없는 모호하고 복잡한 문제를 정의하고 해결하는 사람들. "무엇을 만들어야 하는가?"라는 질문에 답할 수 있는 사람들이다.
6. 성능과 보안의 마법사 시스템 성능을 극한까지 끌어올리거나, 보안 취약점을 찾아내고 막을 수 있는 깊이 있는 전문 지식을 가진 사람들.
7. 기술 리더 팀을 이끌고, 기술적 방향성을 제시하며, 주니어 개발자들을 성장시킬 수 있는 사람들. AI는 코드를 짤 수 있지만 사람을 이끌 수는 없으니까.
현실을 직시해보자
하지만 솔직히 말해서, 지금 현업에 있는 "개발자"라고 불리는 사람들 중에 위같은 일을 할 수 있는 사람이 얼마나 될까?
현실은 생각보다 냉혹한다. 대부분의 개발자들은 결국 이미 만들어진 라이브러리나 프레임워크를 가져다 쓰는 수준이다. npm install 하고, pip install 하고, AI가 대중화 되기 전에는 스택오버플로우에서 코드 복사해서 붙여넣기 하는 게 일상이었다. 심지어 이제는 내가 직접 짜는 코드보다 AI가 생성한 코드가 더 깔끔하고 안전한다고 생각할 정도가 됐다.
이게 잘못된 건 아니다. 현대 소프트웨어 개발은 이미 만들어진 도구들을 효율적으로 조합하는 게 핵심이기 때문이다. 하지만 문제는 그것만 할 줄 아는 개발자들이 너무 많다는 것이다.
내가 보기에는 현재 개발자들을 대략 이렇게 나눌 수 있을 것 같다:
조립형 개발자들 라이브러리와 프레임워크를 잘 조합해서 기능을 만드는 사람들. ChatGPT나 Claude가 없으면 생산성이 반토막 나는 사람들이다. 이들이 AI 시대에 가장 위험한 그룹이다.
중급 개발자들
기존 도구들을 깊이 있게 이해하고, 커스터마이징도 할 줄 아는 사람들. 하지만 여전히 새로운 것을 창조하기보다는 기존 것을 잘 활용하는 수준이다.
진짜 개발자들 앞서 언급한 7가지 유형에 해당하는 사람들. 이들은 AI가 발전해도 오히려 더 강해질 것이다. AI를 도구로 활용해서 더 복잡하고 창의적인 일에 집중할 수 있기 때문이다.
가혹하게 들릴지 모르지만, 대부분의 개발자들은 정말로 위험한다. AI가 그들이 하는 일의 대부분을 더 빠르고 정확하게 할 수 있기 때문이다. 이미 간단한 CRUD 작업이나 기본적인 UI 구현은 AI가 사람보다 잘하는 경우가 많아졌다.
나의 선택: AI Native 개발자로의 전환
솔직히 고백하자면, 나는 분명한 조립형 개발자다. 커널을 만져본 적도 없고, React를 직접 구현해본 적도 없다. 대부분의 시간을 이미 만들어진 라이브러리들을 조합해서 기능을 만드는 데 써왔다.
하지만 나는 중요한 사실 하나를 스스로 직시했다. 내가 위에서 언급한 '진짜 개발자'가 되기는 현실적으로 힘들다는 것이다. 이미 10년 가까이 개발을 해왔는데 지금부터 커널 개발자나 시스템 아키텍트가 되기엔 너무 늦었다. 그리고 솔직히 말하면, 그런 깊이 있는 기술보다는 빠르게 결과물을 만들어내는 게 더 재미있기 때문이다.
그래서 나는 다른 방향을 선택했다. AI를 잘 활용할 줄 아는 소위 'AI Native FullStack 개발자'가 되기로 결심했다.
이건 단순히 ChatGPT에게 "React 컴포넌트 만들어줘"라고 부탁하는 수준이 아니다. AI를 진짜 생산성 도구로 활용해서, 혼자서도 풀스택 서비스를 빠르게 만들어낼 수 있는 개발자가 되는 거다.
예를 들어:
- 기획 단계에서 AI와 브레인스토밍하며 아이디어를 구체화하고
- 개발 단계에서 AI가 생성한 코드를 내 요구사항에 맞게 커스터마이징하고
- 테스트와 배포까지 AI 도구들을 활용해서 자동화한다.
결국 유니콘같은 진짜 개발자가 될 수 없다면, AI 시대에 맞는 새로운 형태의 개발자가 되는 거다. 이게 대부분에 속한 개발자들이 살아남을 수 있는 현실적인 방법이라고 생각한다.
건축가와 인부: AI Native 개발자의 핵심 역량
AI Native 개발자가 되면서 깨달은 게 있다. 소프트웨어 공학을 조금 더 깊이 이해하는 것이 오히려 더 중요해졌다는 것이다.
결국 내가 AI에게 "이 기능 코드 짜줘", "이 구조로 설계해줘"라고 요청하지만, 그 제품의 확장성과 유지보수성을 생각해야 하는 건 여전히 사람의 몫이기 때문이다. AI는 당장 돌아가는 코드는 잘 만들어주지만, 6개월 후에도 안전하게 기능을 추가할 수 있는 구조인지는 판단하지 못한다.
그래서 나는 건축가의 마음으로 소프트웨어를 설계하고, AI를 숙련된 인부처럼 부리는 방식으로 일하고 있다.
건축가가 "여기에 벽을 세우고, 저기에 기둥을 세워"라고 지시하면 인부들이 실제로 벽돌을 쌓듯이, 내가 "이 모듈은 이런 책임을 가지고, 저 컴포넌트와는 이런 방식으로 소통해"라고 설계하면 AI가 그 범위 안에서 코드를 짜는 거다.
지금 내가 바이브 코딩을 하면서 가장 중요하게 여기는 포인트:
- 관심사의 분리가 제대로 이루어졌는가?
- 모듈화가 내가 생각하는 대로 구현됐는가?
- AI가 무슨 짓을 해도 전체 코드베이스에 영향을 주지 않는 구조인가?
예를 들어, 내가 "사용자 인증 모듈"과 "게시글 관리 모듈"을 완전히 분리해서 설계했다면, AI가 인증 로직을 아무리 바꿔도 게시글 기능에는 영향이 없어야 한다. 이런 경계를 명확히 그어놓고, AI에게는 "이 경계 안에서 마음껏 최적화해"라고 자유를 주는 것이다.
결과적으로 AI가 내 생각의 범주 안에서 놀고 있다는 걸 항상 확인할 수 있어야 한다. AI에게 코딩을 맡기되, 그 AI가 내가 설계한 아키텍처를 벗어나지 않고 있다는 확신을 가져야 하기 때문이다.
이게 AI Native 개발자와 그냥 바이브코더의 차이라고 생각한다. 단순히 AI한테 "이거 만들어줘"라고 부탁하는 게 아니라, 전체적인 그림을 그리고 AI를 그 안에서 효율적으로 활용하는 거다.
비개발자도 제품을 만드는 시대
그런데 더 흥미로운 건, 이제 비개발자들도 소위 말하는 "바이브 코딩"을 통해 실제 제품을 만들어낼 수 있는 시대가 왔다는 것이다. Cursor, v0, Bolt 같은 도구들로 기획자나 디자이너도 웹앱을 뚝딱 만들어내고 있다.
이들도 역시 소프트웨어 공학을 공부하는 게 좋다고 생각한다. 아니, 오히려 지금이야말로 소프트웨어 공학의 진짜 가치를 느낄 수 있는 시대라고 본다.
예전에는 소프트웨어 공학이라고 하면 "이론적이고 현실과 동떨어진 내용"이라고 생각하는 사람들이 많았다. 실제로 당장 코드 짜는 데 급급해서 설계 패턴이나 아키텍처 원칙들을 "나중에 배워도 되는 것"으로 미뤄두곤 했다.
하지만 이제는 다르다. AI가 코딩을 대신 해주니까, 오히려 소프트웨어의 구조와 설계 원칙이 더 중요해졌다. 왜냐하면 AI에게 "어떻게 구조를 짜라"고 명확하게 지시할 수 있어야 하기 때문이다.
예전처럼 Java 문법을 외우고, SQL 쿼리를 달달 외우고, 프레임워크 API를 공부할 필요는 없어졌다. 그런 기술적인 디테일들은 AI가 다 해결해주기 때문이다. 하지만 SOLID 원칙, 디자인 패턴, 클린 아키텍처, DDD(Domain Driven Design) 같은 소프트웨어 공학의 핵심 개념들은 오히려 더 중요해졌다.
이런 원칙들을 이해하고 있어야 AI에게 "싱글톤 패턴으로 구현해줘", "의존성 주입을 사용해서 결합도를 낮춰줘", "이 부분은 전략 패턴을 적용해줘"라고 구체적으로 요청할 수 있기 때문이다. 그냥 "이거 만들어줘"라고 하면 AI가 스파게티 코드를 만들어낼 수도 있다.
이제는 다른 더 중요한 것들을 공부해야 한다고 생각해한다.
1. 제품 기획 능력 "무엇을 만들 것인가?"에 대한 명확한 정의. AI는 "어떻게"는 잘 해결해주지만 "무엇을"은 여전히 사람이 정해야 한다.
2. 사용자 경험(UX) 설계 사용자가 진짜 원하는 게 뭔지, 어떤 흐름으로 서비스를 사용할지 이해하는 능력. 기술은 수단일 뿐이다.
3. 데이터 모델링 어떤 데이터가 필요하고, 그 데이터들이 서로 어떤 관계를 갖는지 설계하는 능력. 이건 AI가 추측하기 어려운 비즈니스 로직이기 때문이다.
4. 비즈니스 프로세스 이해 만들고자 하는 서비스의 도메인을 깊이 이해하는 것. 예를 들어 온라인 쇼핑몰을 만든다면 결제, 배송, 반품 등의 실제 비즈니스 흐름을 알아야 한다.
5. AI와의 소통 능력 (프롬프트 엔지니어링) AI에게 내 의도를 정확하게 전달하는 기술. 이건 새로운 형태의 "프로그래밍 언어"라고 봐도 된다.
6. 문제 분해 능력 복잡한 요구사항을 AI가 이해할 수 있는 작은 단위로 쪼개는 능력. "SNS 만들어줘"보다는 "회원가입 → 프로필 설정 → 포스팅 → 피드 보기" 순서로 나누는 거다.
7. 품질 검증 능력 AI가 만든 결과물이 내가 원하는 품질인지 판단하는 능력. 버그를 찾고, 사용성을 평가하고, 성능을 체크하는 것이다.
결국 기술적 구현은 AI가 담당하고, 사람은 더 본질적인 "왜", "무엇을", "어떻게 써야 하는지"에 집중하게 되는 것 같다. 이게 진짜 의미 있는 변화라고 생각한다.
위기인가, 기회인가?
지금 현업에 있는 개발자들과 비개발자들에게는 자신의 업무 영역을 넓힐 수 있는 좋은 기회다.
개발자라면 이제 단순히 코딩만 하는 사람이 아니라, 제품 전체를 생각하고 비즈니스를 이해하는 방향으로 영역을 확장할 수 있다. 비개발자라면 기술적 장벽 없이 자신의 아이디어를 직접 구현해볼 수 있는 시대가 온 것이다.
하지만 지금 소프트웨어를 공부하고 있는 학생들에게는 좀 다른 이야기를 해주고 싶다. 지금까지 해왔던 공부에 추가로 더 많은 것들을 공부해야 하는 시기라는 것이다.
예전 같으면 프로그래밍 언어 하나 잘하고, 프레임워크 몇 개 다룰 줄 알면 취업이나 이직이 쉽게 됐다. 하지만 이제는 그것만으로는 부족한다. 코딩 실력은 기본이고, 거기에 더해서:
- 비즈니스를 이해하고 분석하는 능력
- 사용자 경험을 설계하는 능력
- 데이터를 다루고 해석하는 능력
- AI 도구들을 효과적으로 활용하는 능력
- 팀을 이끌고 소통하는 능력
이 모든 걸 갖춰야 경쟁력 있는 개발자가 될 수 있다. 확실히 소프트웨어를 전공한 사람과 그렇지 않는 사람이 만드는 제품엔 엄청난 차이가 있을 것이라고 생각한다.
결국 AI는 우리의 적이 아니라 도구다. 그 도구를 얼마나 잘 활용하느냐가 앞으로 개발자의 가치를 결정할 거라고 생각한다. 변화를 두려워하지 말고, 오히려 이 변화 속에서 자신만의 포지션을 찾아가길 바란다.