
출처: Gerard Siderius on Unsplash
AI가 소프트웨어 개발을 대체한다는 오해
최근 인공지능의 급속한 발전으로 “AI가 곧 소프트웨어 개발자를 대체할 것이다”라는 주장이 끊임없이 등장하고 있습니다. 인스타그램 공동 창업자인 마이크 크리거는 최근 “3년 안에 소프트웨어 엔지니어들은 코드를 전혀 작성하지 않을 것이며, 오직 AI가 만든 코드를 검토하는 일만 할 것”이라고 말했습니다. 이런 주장은 과연 현실성이 있을까요?
ThoughtWorks의 최근 블로그 게시물에 따르면, AI가 소프트웨어 개발을 완전히 대체할 것이라는 우려는 상당히 과장되어 있습니다. 실제로 우리는 두 갈래 길에 서 있습니다. 하나는 완전 자동화된 소프트웨어 개발이라는 (현재로서는) 먼 미래의 가능성을 받아들이는 길이고, 다른 하나는 소프트웨어 개발자의 역할이 단순히 코드 작성 이상의 것임을 인정하는 길입니다.
‘바이브 코딩(Vibe Coding)’의 위험성
최근 소프트웨어 개발 커뮤니티에서는 ‘바이브 코딩(Vibe Coding)’이라는 새로운 프로그래밍 방식이 등장했습니다. 이는 자연어 프롬프트를 통해 코드를 생성하고, 결과가 작동하는 것처럼 보일 때까지 계속 프롬프트를 입력하는 방식입니다. 이러한 접근 방식은 빠르고 편리해 보이지만, 심각한 문제를 초래할 수 있습니다.
GitClear의 최근 연구에 따르면, GitHub Copilot과 같은 AI 코딩 도구가 주류가 된 이후로 ‘코드 교란(code churn)’이 크게 증가했습니다. GitClear는 코드 교란을 “작성자가 처음 작성, 커밋 및 회사의 git 저장소에 푸시할 때 불완전하거나 오류가 있는 변경 사항”으로 정의합니다.
또한 GitClear는 ‘이동된’ 코드 라인 수가 현저히 감소했다고 밝혔는데, 이는 리팩토링된 코드의 신호입니다. 즉, AI 코딩 도구가 도입된 이후로 삭제, 업데이트 또는 대체된 라인 없이 코드 라인이 크게 증가했으며, 코드 품질을 위한 리팩토링 작업은 감소했습니다.
출처: Florian Olivo on Unsplash
실무에서의 AI 사용 경험
Aftermath 사이트의 기사에서는 여러 게임 개발자들의 AI 사용 경험을 인터뷰했습니다. 이들의 경험은 AI가 창의적인 작업과 전문가의 역할을 대체하려 할 때 발생하는 문제점을 생생하게 보여줍니다.
베테랑 아티스트인 ‘브래들리’는 자신이 일하는 AAA 비디오 게임 스튜디오에서 AI 생성 이미지가 아트 파이프라인에 점점 더 많이 사용되고 있다고 말합니다. 그는 아트 디렉터가 “스케치와 아이디어로 시작한 다음 그것을 반복하여 더 완성된 이미지나 비전을 만드는 대신, AI에게 계속 프롬프트를 입력하여 마음에 드는 이미지를 찾을 때까지 기다린 다음, 아트 팀이 그것을 역설계해야 한다”고 설명합니다.
소프트웨어 개발자인 ‘미치’는 이전 회사에서 CEO가 직원들에게 Chat GPT와 Claude를 사용하여 개발 속도를 높이도록 지시했다고 말합니다. 그러나 미치는 이것이 “지루할 뿐만 아니라 궁극적으로 무의미했다”고 느꼈습니다. “AI가 만든 코드는 인간이 작성한 코드보다 품질이 떨어졌으며, 그것을 감독하는 사람들이 직접 작성하지 않았기 때문에 다루기 어려웠습니다.”
게임 디자이너인 ‘리키’는 AI를 사용하여 “게임 아웃라인 생성”과 같은 기본 작업에 시간을 절약하려 했지만, 그 결과는 종종 잘못되어 있었고 수정하는 데 더 많은 시간이 소요되었다고 합니다. “더 큰 문제는 AI가 나의 전문성을 모욕하는 것 같았다는 점입니다. 결국 회사가 저를 고용한 이유는 바로 그 전문성 때문이었습니다.”
AI를 효과적으로 활용하는 방법
AI를 소프트웨어 개발에서 완전히 배제할 필요는 없습니다. 오히려 많은 흥미로운 가능성이 있습니다. ThoughtWorks의 최신 Technology Radar에 따르면, Cursor, Cline, Windsurf와 같은 도구들은 ‘소프트웨어 엔지니어링 에이전트’를 가능하게 합니다. 이는 개발자 환경 내에서 에이전트 같은 기능으로, 개발자가 자연어 프롬프트 형태로 특정 코딩 작업을 수행하도록 요청할 수 있게 합니다.
또한 레거시 코드베이스를 이해하는 데 AI를 사용하는 것과 같이, 코드 생성 이외의 다양한 방식으로 AI가 소프트웨어 개발자를 도울 수 있습니다. ThoughtWorks는 Unblocked와 같은 도구에 큰 가능성을 보고 있으며, 최근에는 Anthropic의 Claude Code를 사용하여 레거시 시스템을 이해하는 데 사용하는 도구인 Code Concise에 새로운 언어 지원을 추가하는 방법을 모색했습니다.
개발자의 판단력이 더욱 중요해진다
개발자가 하는 일의 상당 부분은 새로운 것을 처음부터 개발하는 것이 아니라, 기존의(때로는 ‘레거시’) 소프트웨어를 발전시키고 적응시키는 것입니다. 기술적 부채를 안고 있는 방대하고 불안정한 코드베이스는 안타깝게도 일반적입니다. 단순히 AI를 적용하면 상황이 더 나빠질 가능성이 높습니다. 바이브 코딩과 같은 접근 방식은 문제를 더 악화시킬 뿐입니다.
이것이 바로 개발자의 판단력이 그 어느 때보다 중요해지는 이유입니다. ThoughtWorks의 최신 Radar에서는 AI 코딩 도구가 잘 구성된 코드베이스에서 가장 좋은 성능을 발휘한다는 경험을 바탕으로 ‘AI 친화적 코드 설계’를 강조했습니다.
실제로 이를 위해서는 여러 가지가 필요합니다. 여기에는 명확하고 표현력 있는 이름 짓기(코드 유지 관리에 필수적인 맥락을 명확하게 전달하기 위해), 중복 코드 줄이기, 모듈성 및 효과적인 추상화 보장 등이 포함됩니다. 이러한 방식은 코드를 AI 시스템에 더 이해하기 쉽게 만드는 데 도움이 됩니다.
AI 시대에 신뢰의 중요성
AI가 소프트웨어 구축 방식에 내장됨에 따라 소프트웨어 개발자는 더 적은 책임이 아니라 더 많은 책임을 지게 될 것입니다. AI가 구축한 시스템이 올바른지 확인하는 작업은 인간에게 달려 있을 것입니다. 검증 자체는 AI의 도움을 받을 수 있지만, 신뢰를 보장하는 것은 소프트웨어 개발자의 역할일 것입니다.
ThoughtWorks의 최고 AI 책임자인 마이크 메이슨은 “신뢰가 매우 가치 있게 되는 세상에서… 소프트웨어 개발자의 작업은 글로벌 산업 인프라에 그 어느 때보다 중요합니다”라고 말합니다. 이는 그들의 작업이 가치 있게 평가받는 것이 중요하다는 것을 의미합니다. 생각 없는 자동화와 ‘순수한 바이브’의 영향은 앞으로 몇 년 동안 믿을 수 없을 정도로 문제가 될 수 있습니다(그리고 비용이 많이 들 수 있습니다).
결론: 균형 잡힌 접근이 필요하다
AI 시대에 소프트웨어 개발자의 역할은 없어지는 것이 아니라 변화하고 있습니다. AI는 강력한 도구이지만, 그것을 효과적으로 사용하고 그 한계를 이해하는 것은 인간 개발자의 몫입니다. 코드 품질, 유지 관리성, 보안 및 성능을 보장하기 위해서는 여전히 인간의 판단력, 경험 및 창의성이 필요합니다.
기업과 개발자는 AI를 단순히 비용을 절감하거나 생산성을 높이는 도구로 보는 대신, 인간의 능력을 보완하고 향상시키는 파트너로 접근해야 합니다. 이러한 균형 잡힌 접근 방식만이 AI의 장점을 활용하면서 소프트웨어 개발의 미래를 안전하게 지킬 수 있을 것입니다.
참고자료:
Comments