본문으로 건너뛰기

AI에게 일을 맡기는 시대의 코딩 역량

· 약 3분

얼마 전 인공지능 수업을 하다 쉬는 시간에 한 학생이 찾아왔다.

인공지능 소프트웨어 개발 회사에 관심이 있는데, 자신이 그런 회사에 가서 제대로 일을 할 수 있을지 걱정된다고 했다. 그래서 수업 시간에 나오는 소스코드를 어느 정도 이해하느냐고 물었다.

“전부 이해하는 건 아닌데, 바이브코딩으로 만들 수는 있습니다.”

그 말을 듣는 순간 예전부터 갖고 있던 생각이 다시 떠올랐다.

요즘 학생들은 생성형 AI를 이용해 정말 빠르게 프로그램을 만든다. 화면을 만들고, 데이터베이스를 연결하고, API를 붙이는 일도 예전보다 훨씬 쉬워졌다.

문제는 프로젝트 후반이다.

기능이 많아지고 코드가 서로 얽히기 시작하면, 처음에는 잘 돌아가던 프로그램이 어느 순간부터 꼬인다. 하나를 수정했더니 다른 곳이 깨지고, 에러를 AI에게 맡겨 고쳤더니 또 다른 문제가 생긴다. 결국 전체 코드를 다시 만들어달라고 요청하는 경우도 적지 않다.

나는 이 문제를 단순히 “기본기가 부족하다”고 말하고 싶지는 않다.

오히려 개발자에게 필요한 능력의 중심이 바뀌고 있다고 생각한다.

예전에는 코드를 직접 작성하는 능력이 매우 중요했다. 문법과 함수, 라이브러리를 익히고 직접 구현해야 했다.

이제는 AI가 그 일을 상당 부분 대신한다.

그래서 앞으로는 모든 문법을 외워서 코드를 처음부터 끝까지 직접 작성하는 능력의 중요성은 줄어들 수 있다.

하지만 코드를 이해하는 능력까지 줄어드는 것은 아니다.

AI가 만든 코드를 보고 무엇을 하는 코드인지 이해하고, 데이터가 어디에서 들어와 어디로 가는지 추적하고, 문제가 생겼을 때 어느 부분을 의심해야 하는지는 알아야 한다.

그보다 더 중요한 것은 시스템을 설계하는 능력이다.

어떤 서비스를 만들 때 어떤 데이터를 사용할지, 데이터베이스는 어떻게 구성할지, 어떤 기능은 SQL로 처리하고 어떤 기능은 머신러닝이나 LLM에 맡길지, 각각의 기능을 어떻게 나눌지 결정하는 일이다.

AI는 코드를 빠르게 만들어주지만, 이런 구조를 먼저 생각하지 않으면 개발은 쉽게 이런 식이 된다.

“이 기능 만들어줘.” “에러가 났어.” “고쳐줘.” “또 에러가 났어.” "뭐하냐? 바보냐?" "fjdskla32819032102193012jfld1232213#@!#@!"

이 과정에서도 프로그램은 만들어질 수 있다. 그러나 자신이 만든 프로그램의 구조를 설명하지 못한다면, 그것을 개발 역량이라고 부르기는 애매하다.

신입 개발자에게도 이 문제는 중요하다.

단순히 “저도 AI로 코드를 만들 수 있습니다”만으로는 경쟁력이 되기 어렵다.

회사 입장에서는 이미 시스템을 이해하고 있는 경력 개발자에게 AI 도구를 주는 편이 더 효율적일 수 있기 때문이다.

그래서 앞으로 신입에게 더 중요한 것은 코드를 얼마나 빨리 작성하느냐보다, 요구사항을 나누고 시스템 구조를 설계하고 AI가 만든 결과를 검토할 수 있는 능력이 될 가능성이 크다.

그렇다고 학생들에게 AI를 쓰지 말라고 할 필요는 없다.

오히려 적극적으로 써야 한다.

다만 순서는 중요하다.

먼저 무엇을 만들지 생각하고, 그다음 어떻게 나눌지 설계하고, 마지막에 AI에게 코드를 맡겨야 한다.

바이브코딩 시대의 프로그래밍 교육에서 중요한 질문은 아마 이것일 것이다.

얼마나 많은 코드를 직접 작성했는가가 아니라, 자신이 만든 시스템을 얼마나 이해하고 있는가.

앞으로 좋은 개발자는 코드를 가장 많이 작성하는 사람이 아니라,

AI가 만든 코드를 이해하고, 판단하고, 하나의 시스템으로 묶을 수 있는 사람일 가능성이 크다.

그래서 앞으로는 코딩 역량을 가늠하는 방식도 달라질지 모른다. “직접 코드를 짜보라”보다,

이미 작성된 코드를 보여주고 “이 코드가 어떤 흐름으로 동작하는지 설명해보라”​고 묻는 것이 더 중요해질 수 있다.

다음 시험부터 한번 그렇게 내봐야 하나...