News Feed

‘생성형 AI vs. 개발자’ 경쟁 구도는 틀렸다

컨텐츠 정보

  • 조회 768

본문

생성형 AI라는 거대한 변화의 흐름을 아직 모르고 있다면, 지난 1년 동안 휴대폰이 비행기 모드에 있었던 게 아닐까 싶다. 요즘 AI 관련 스타트업은 어디를 가도 넘쳐난다. 길을 걷다 보면 너덧 개를 마주칠 정도다. AI는 대단한 기술이다. 많은 사람이 세상의 모든 문제를 해결하거나 인류를 멸종시킬 기술로 여긴다. 중간 지점에서 균형 잡힌 시각을 가진 사람은 드물다.

그리고 물론 소프트웨어 개발자들은 개발 과정에 AI를 활용하는 것의 비용과 이점을 직접 경험하고 있다. 어떤 사람은 AI가 개발자 모두를 실업자로 만들 것이라 걱정하지만, 나머지 개발자들은 AI 기반 코딩 툴을 활용해 생산성을 극대화하고 있다.

AI 코딩 툴 활용 문제는 사람들이 생각하는 것처럼 단순하지 않지만, 그렇다고 마냥 복잡하기만 한 것도 아니다.

‘600만 달러의’ 개발자 되기

개발 작업에 CASE(Computer-Aided Software Engineering) 툴이 도입되던 때가 기억난다. 디자인 사양만 작성하고 화면에서 몇 개의 박스를 드래그한 뒤 버튼을 누르면 ‘짜잔!’하고 완성된 애플리케이션이 나온다는 식이었다. 익숙하지 않은가?

노코드 툴을 둘러싼 과대광고가 많다는 것을 잘 알고 있다. 이들 툴은 모든 기능을 포괄해 누구나 쉽게 애플리케이션을 만들 수 있다고 주장한다. 하지만 결국 비즈니스 규칙의 세세적인 부분에 들어가면 한계에 부딪히게 된다. 드래그 앤 드롭 방식으로 박스를 조합하는 방식은 겉보기에는 편리하지만, 특정한 요구사항에 맞춘 솔루션을 개발하기는 어렵다.

과거에도 CASE 툴이 개발자를 대체하지 못했듯이 노코드 툴이나 AI도 오늘날 개발자를 대체하지는 못할 것이라고 확신한다. 단순한 프롬프트 하나로 5분 만에 원하는 애플리케이션을 완성할 수 있는 마법 같은 방법은 존재하지 않는다. 비교적 단순한 앱조차도 변수가 너무 많아 텍스트만으로는 정확하게 설명하기 어렵다. AI를 활용하면 초반 작업을 빠르게 시작할 수는 있겠지만, 어느 정도 규모가 있는 프로젝트에서는 인간만이 이해할 수 있는 뉘앙스가 필연적으로 존재한다.

앱이 정확히 어떤 기능을 해야 하는지에 대한 명확한 사양을 작성하는 방법이 하나 있다. 바로 “코드를 직접 작성하는 것”이다. 그리고 바로 이 과정에서 AI가 진정한 가치를 발휘할 수 있다.

AI가 고객 지원 담당자를 곧바로 시니어 소프트웨어 개발자로 만들어주지는 않는다. 고객 지원 담당자는 “재고 품목, 고객의 장바구니, 특정 품목의 할인 가격 간의 연결을 추적해야 한다”라고 생각할 수는 있지만, 코딩 지식 없이는 AI에 필요한 코드를 정확히 생성하도록 지시할 수 없다. AI가 만든 코드가 실제로 실행되는지, 올바르게 작동하는지조차 알기 어렵다.

하지만 실제 개발자라면 이야기가 다르다. AI는 이미 작성된 코드를 분석해 다음에 필요한 코드를 생성하도록 도와줄 수 있다. 대규모 루틴이나 클래스를 생성하는 것도 가능하다. 하지만 개발자의 개입 없이 완벽한 결과물을 만들어내지는 못한다. 정확히 원하는 코드를 얻으려면 효과적인 프롬프트를 작성할 줄 알아야 한다. 그렇기 때문에 AI는 개발자를 대체하는 것이 아니라, 오히려 ‘600만 달러의 사나이’처럼 더 나은, 더 강한, 더 빠른 개발자로 만들어 줄 것이다.

코딩과 프롬프트를 배워야 하는 이유

깃허브 코파일럿 같은 툴을 사용할 때도 마찬가지다. AI는 ‘무’에서 ‘유’를 창조하지 않는다. 하지만 경험 있는 개발자는 무엇을 요청해야 하는지 알고, AI가 생성한 코드가 올바른지 판단할 수 있다. 즉, 개발자는 필요한 것이 무엇인지 알고 있기 때문에 AI를 활용해 자신이 해야 할 작업을 대신 수행하도록 만들 수 있다.

예를 들어 본다. 다음 프롬프트를 보자.

사용자 프로필을 표시하는 TypeScript React 컴포넌트를 작성해 줘. 이 컴포넌트는 name, email, avatarUrl, bio를 props로 받아야 해. 또한 기본적인 Tailwind CSS 스타일링을 적용하고, 값이 누락되거나 null일 경우를 잘 처리할 수 있도록 구현해야 해. 그리고 Jest를 사용한 간단한 테스트 코드도 함께 포함해 줘.

이 프롬프트는 원하는 결과를 얻는 데 꽤 효과적일 것이다. 하지만 여기서 핵심은 React 컴포넌트가 무엇인지, Tailwind가 무엇인지, 테스트가 왜 필요한지, TypeScript의 역할과 null의 개념이 무엇인지, 누락된 값을 왜 처리해야 하는지 알아야 한다는 것이다. 이 프롬프트에는 많은 지식과 경험이 축적되어 있으며, 경험이 부족한 개발자나 비개발자는 쉽게 작성할 수 없는 수준의 요청이다.

실제로 필자는 이 프롬프트를 챗GPT에 입력해 봤고 꽤 괜찮은 결과를 얻었다. 챗GPT는 요청한 내용을 대부분 잘 반영했지만, 결과물에는 경험이 있는 개발자만이 알아차릴 수 있는 미세한 수정과 조정이 필요했다.

AI가 잘할 수 있는 한 가지가 있다면, 바로 생산성을 높이는 것이다. AI는 개발자가 이미 알고 있는 지식을 기반으로 반복적인 코딩 작업을 대신 수행할 수 있다. 하지만 이 작업이 가능한 이유는 개발자가 적절한 요청을 할 줄 알고, AI가 생성한 코드에서 무엇이 잘못되었는지 판단할 수 있는 충분한 역량을 갖추고 있어서다.

따라서 필자는 AI가 아직은 개발자의 일자리를 빼앗지는 않을 것이라고 생각한다. 언젠가는 대체될 수도 있겠지만, 그때쯤이면 인간의 역할은 더 놀라운 무언가로 옮겨갔을 것이다. 하지만 필자는 개발자라는 직업의 미래를 걱정하지 않는다.

AI가 개발자를 대체하지는 않을 것이다. 하지만 AI를 개발 과정에 활용할 줄 아는 개발자는 그렇지 못한 개발자를 대체할 수 있다.
dl-itworldkorea@foundryco.com

관련자료

댓글 0
등록된 댓글이 없습니다.
Member Rank