한 친구가 나에게 이런 이야기를 했다.
손 딸깍하면 AI가 코드 다 짜주는 거 아니야?
물론 정확하게 이렇게 이야기한 건 아니고, 이런 뉘앙스도 아니었다. 하지만 나에게는 이렇게 들려왔다. 그리고 나 혼자서 많은 생각을 했다. ‘정말로 손 딸깍하면 AI가 개발을 다 해주나?’,’그럼 개발자인 나는 뭘 해야하지?’
‘AI가 대부분의 직업을 대체한다’는 말이 점점 들려온다. 유튜브에서, 뉴스에서도 심심치 않게 볼 수 있다. 정말로 AI가 대부분의 직업을 대체할까? 대체한다면, 어떤 직업을 대체할까?
AI가 대부분의 직업을 대체할 수 있을 거라는 이야기에 대해서는 나도 같은 생각이다. 그렇다면 어떤 직업이 대체될까? 그리고 내 직업인 개발자를 AI에 의해 대체되지 않으려면 나는 무얼해야할까?에 대해서 이번 글에서는 다뤄볼 것이다.
AI에 의해 대체될 가능성이 높은 직업
- 사무직
- 단순 반복 작업
- 정해진 절차를 따르는 작업
위 3가지 직업의 공통적인 특징은 ‘형식이 정해져있다’는 것이다. 형식이 정해져있는 직업은 조만간 AI에 의해 대체될 것이다. 왜냐하면 지금까지 등장한 AI는 생성형 AI이고, 학습된 데이터를 기반으로 새로운 데이터를 만드는 것이기 때문이다. 그 학습된 데이터가 곧 ‘형식’이 될터이고 새로운 데이터를 만드는 일은 AI에게 식은 죽 먹기이니 말이다.
한 때는 각광을 받던 전화 교환원, 타이피스트(대신 타자를 쳐주는), 사진 인화 기사는 새로운 기술이 널리 퍼지며 결국 사라졌다. 불과 몇십 년 전 이야기며, 앞으로는 점점 더 기술에 의한 대체가 가속화될 것임은 분명하다.
어떤 직업도 AI의 파도를 피해갈 수 없을 것이다. 의사의 경우 AI에게 필요한 의학 정보를 먼저 필터링을 한다던지, 환자에게 직접 설명하지 않고 AI를 활용해 설명하도록 해 시간을 효율적으로 활용한다던가 하는 식으로 말이다. AI에 의해 직업이 대체되지 않더라도 업무에 변화가 생길 것임은 분명하다.
AI에 의한 개발자의 변화
이미 개발자 또한 AI에 의해 하루가 달리하여 변화하고 있다. 3년 전부터 Copilot을 통해 코드 자동완성을, 2년 전부터 ChatGPT를 활용해서 코드를 빠르고 쉽게 짤 수 있게 되었고, 1년 전부터 Cursor, Windsurf 같은 AI 기반 IDE가 자리를 잡고 Agent기능으로 프로젝트를 AI와 함께 만들 수 있게 되었다. 내일은, 다음 달은, 내년에는 어떤 기능이 또 등장해서 AI에 변화가 생길지 아무도 모른다.
AI가 등장하며 개발자의 변화에는 어떤게 있을까?
-
(단순한) 기능 구현이 굉장히 쉬워졌다.
Claude, Cursor, ChatGPT 등 AI를 활용해서 단순한 기능을 구현하는 것이 정말 쉬워졌다. 명령어 한 줄이면 웬만한 건 알아서 짜준다.
-
기획과 디자인을 혼자 할 수 있게 되었다. 그리고 혼자 더 많은 개발을 할 수 있게 되었다.
평소였으면 며칠 동안 아이디어를 고민하고 디벨롭해야할 것을 AI가 있다면 충분히 가능하다. AI가 수많은 아이디어를 추천해주고 디벨롭도 함께 해준다. 디자인도 동일하다.
기능 개발이 쉬워진 만큼 더 많은 개발을 할 수 있게 되었다. 크로스 개발(백엔드 ↔ 프론트엔드)은 아직 잘 모르겠다. 백엔드 지식이 부족한 나에게는 아무리 AI를 활용해도 완성도 있는 백엔드 서버를 구축하기에는 무리가 있던 기억이 있다. 서버는 어떻게 구축하고, DB는 어떻게 활용하고 .. 전혀 모르기 때문이다.
-
실력의 편차가 심해질 것이다.
AI를 잘 활용하는 개발자와, AI를 잘 활용하지 못하는 개발자 이 둘의 차이는 점점 벌어질 것이다.
앞으로는 개발을 잘하는 개발자의 역량 중 하나가 AI를 활용하는 역량이지 않을까.
AI의 한계
- 0부터 1은 잘 만든다. 어찌어찌해서 1에서 10까지도 만들 수 있다. 하지만 10에서 100까지는 아직 버거워 보인다.
- 아무리 AI가 작성한 코드여도 누군가는 검토를 해야한다.
개발자로서 AI에 의해 대체되지 않기 위해서 해야할 것
-
글과 코드를 빠르게 잘 읽을 줄 알아야한다.
AI가 코드를 잘 작성해줄 것이다. 하지만 이 AI가 작성한 코드가 옳은 코드인지 틀린 코드인지, 가독성이 좋은 코드인지, 유지 보수에 용이한 코드인지, 잠재된 오류가 없는 코드인지 확인하는 건 반드시 인간이 해야만 한다. AI도 실수를 하고, 인간도 실수를 하지만 AI는 책임을 지지 않기 때문에 책임은 인간이 져야하기 때문이다.
코드를 빠르게 잘 읽기 위해서는
- 많은 코드를 읽어봐야한다.
- 코드의 문법, 프로그래밍 원칙들을 숙지해야한다.
-
문제를 정의할 수 있어야 한다.
AI가 문제 찾는 것은 잘한다. 하지만 AI는 지난 코드와 정보들을 바탕으로 문제라는 결과를 찾은 것이고, 실제로 가장 급한 문제가 무엇인지는 인간만이 정의할 수 있다.
-
문제를 정확하게 해결할 수 있어야 한다.
AI가 문제 해결하는 것은 잘한다. 하지만 실제로 이 문제의 근본적인 원인을 해결했는지, 다른 사이드 이펙트가 없는지는 인간이 검증을 해야한다. 그렇기에 결국 우리는 문제를 정확하게 해결할 수 있어야 한다.
최근에 든 생각인데, AI는 문제 해결하는 것 조차도 잘 못한다. 빌드, 배포와 같이 조금 복잡한 문제의 해결은 정말 못한다. 내가 ‘이거 어떻게 해결하면 될 거 같아?’하면 ‘이게 원인이군요!’하면서 고치는데 해결 방법이 아닌 경우가 대부분이었다. 결국 내 힘으로 해결을 해야만 했다.
-
전체적인 그림을 그릴 수 있어야 한다.
AI를 사용하다보면 AI가 개발하고 있는 것에 휘둘릴 일이 많을 것이다. AI가 작성한 수많은 코드에 압도되거나, AI가 지시한 대로 하다보니 편협적인 사고를 하게된 것이다. 이럴 때일수록 우리는 전체적인 그림을 그리고, 방향을 제시할 수 있어야 한다.
-
문서를 잘 작성할 수 있어야 한다.
AI에게 명령을 잘 내리기 위해서는 프롬프트를 잘 입력하는 것이 가장 중요하다. 이와 더불어 Cursor같은 AI기반 IDE는 cursorrules같은 규칙을 미리 설정할 수 있다. 이 때 프로젝트에 대한 설명, 서비스에 대한 설명, 코딩 규칙에 대한 설명, 현재 구현할 기능에 대한 설명을 문서로 잘 작성해두면 AI가 이 문서를 기반으로 코드를 작성해주기에 내가 원하는 코드를 만들 수 있게 될 것이다.
위 능력들은 AI가 없더라도 중요한 역량들이었던 것을 생각해보면 시대가 아무리 변화하더라도 중요한 역량은 크게 변하지 않는듯 하다.
맺으며
시대의 흐름을 막을 수는 없다. 하지만 시대가 흘러갈 때 우리가 도태되지 않으려면, 우리는 이 시대의 흐름에 올라타야한다. AI라는 시대의 흐름에 올라타보자.