Offcanvas

AI / 개발자

칼럼 | AI로 코드 리팩토링, ‘아직은 아니다’

2024.04.30 Matt Asay  |  InfoWorld
숙련된 개발자가 AI 코딩 어시스턴트를 감독하지 않으면 코드를 오히려 망가뜨릴 가능성이 높다. 현재로서는 사람만이 AI를 미세 조정하고 평가할 수 있다.
 
Image Credit : Getty Images Bank


개발자들이 아마존 코드위스퍼러와 같은 코딩 어시스턴트를 앞다퉈 도입하고 있지만, 어시스턴트가 생성항 코드의 품질을 신중하게 검토하지는 않는 양상이다. 그리고 일부 지표로 보면 품질에 대한 대답은 분명히 ‘아니오’이다. 깃클리어(GitClear)는 "2023년에 생성된 코드는 ... 뜨내기 기여자(itinerant contributor)의 코드와 유사하다"하며, 이는 코딩 어시스턴트의 사용이 증가했기 때문일 가능성이 높다고 분석했다.

코딩 어시스턴트가 나쁘다는 말을 하려는 게 아니다. 오히려 엄청나게 도움이 될 수 있다고 본다. 말하고자 하는 바는 최근 쏘드웍스 인터뷰에서 지적한 것처럼 코드 리팩토링과 같은 작업에 생성형 AI를 적용하려면, 더 많은 시간을 투자해야 한다는 것이다. aI가 도움이 될 수는 있지만 항상 우리가 기대하는 방식은 아닐 수도 있다.

그릇된 경쟁
코딩 어시스턴트에 대한 대화의 초점은 대부분은 개발자의 처리량을 향상시키는 방법에 맞춰져 있다. 안타깝게도 이는 올바른 지표가 아니다. 개발자는 실제로 새로운 코드를 작성하는 데 소비하는 시간은 상대적으로 적다. 코드신의 창립자이자 CTO인 아담 톤힐은 쏘트웍스와의 인터뷰에서 개발자의 시간 중 70% 가까이가 기존 시스템을 이해하는 데 사용된다고 말했다. 반면 코드 작성 시간은 전체 작업 시간의 5% 정도에 불과할 수도 있다고 그는 지적했다.

즉 개발 속도는 잘못된 지표다. 뿐만 아니라, 앞서 언급했듯이 개발자가 코드 작성에서 잠깐 물러나 어떤 코드를 작성할 지에 대해 고민하는 것을 저해한다. 

개발 속도보다 더 중요한 것은 무엇일까? 바로 가독성이다. 쏘트웍스의 수석 과학자인 마틴 파울러는 같은 인터뷰 기사에서 "코드를 효과적으로 변경하려면 코드를 이해할 수 있어야 한다. 따라서 코드베이스의 가독성은 신속한 변경을 위한 핵심 요소"라고 강조했다. 코딩 어시스턴트는 코드를 설명하거나 보다 친숙한 프로그래밍 언어로 다시 작성하는 데 큰 도움이 될 수 있기에 ‘가독성’ 측면에서 아주 유용할 수 있다.
 
또 다른 중요한 작업 리팩터링으로, 외부 동작에 영향을 주지 않고 코드를 약간 변경하여 코드의 복잡성을 줄이고 가독성을 개선하는 것이다. 안타깝게도 여기서는 인공지능이 큰 도움이 되지 못했다고 톤힐은 설명했다. 그가 속한 코드신은 오픈AI, 구글, 메타 등의 대규모 언어 모델(LLM)을 사용하여 코드를 리팩터링하는 작업을 진행했다. 그 결과 30%의 경우 AI가 코드를 개선하는 데 실패한 것으로 나타났다. 

더 심각한 것은 3분의 2의 경우 AI가 단위 텍스트를 손상시켰다는 점이다. 이는 코드를 리팩토링하는 대신 미묘하지만 중요한 방식으로 코드의 외부 동작을 변경('this' 참조를 추출된 함수로 옮겨 그 의미를 변경하거나 전체 분기를 제거하는 등 정말 이상한 일)하고 있었다는 것을 나타낸다. 

코드신의 테스트에서 가장 우수한 AI 어시스턴트는 37%의 코드를 올바르게 리팩터링했다. 나머지의 경우 AI가 리팩터링을 잘못하거나 단순히 코드를 개선하지 못했다. 이는 개발자가 신뢰할 만한 퍼센티지가 아니다. 

톤힐은 "오늘날 AI 도구들은 애초에 작성해서는 안 될 많은 코드를 너무 쉽게 작성하도록 한다”라고 말했다. AI가 코드를 대신 작성하거나 기존 코드(특히 수백 줄의 코드를 실행하는 함수가 있는 레거시 코드)를 개선하도록 해서는 안된다는 설명이다. 그는 대신 AI를 활용할 수 있는 다른 방법을 찾아야 한다고 강조했다.

그 어느 때보다 사람이 중요
핵심은 개발자를 AI로 대체하는 것이 아니라 AI와 개발자를 연계하는 것이다. 톤힐은 "새로운 코드를 더 빨리 생성할수록 팀이 그 코드를 이해하기는 더 어려워진다”라고 말했다. 쏘트웍스의 인터뷰 내내 이 주제, 즉 AI를 평가하고 조정하는 과정에 똑똑한 개발자를 계속 참여시켜야 한다는 주제가 계속 등장했다. 

사실, AI의 사용이 증가함에 따라 사람이 그 어느 때보다 더 중요해지는 측면이 있다. 인공지능에게 개발을 맡기고 싶은 유혹을 느낄 수도 있지만, 현실은 그렇지 않다. AI를 효과적으로 사용하려면 린터 도구(linter tools), 코드 리뷰 도구 등과 같은 전통적인 도구들과 함께 강력한 개발자가 필수적이다.

AI 도구가 코드 생성을 가속화하는 동향을 고려할 때, 속도를 조금 늦출 필요가 절실하다. 지금이야말로 숙련된 개발자의 안내에 따라 코드 개발의 개별 프로세스를 개선하는 데 AI가 어떤 도움을 줄 수 있는지 알아볼 시점이다.

* Matt Asay는 몽고DB의 개발자 관계 업무를 담당하고 있다. 그러나 본 글은 몽고DB의 입장이 아니다. ciokr@idg.co.kr
CIO Korea 뉴스레터 및 IT 트랜드 보고서 무료 구독하기
Sponsored
추천 테크라이브러리

회사명:한국IDG 제호: CIO Korea 주소 : 서울시 중구 세종대로 23, 4층 우)04512
등록번호 : 서울 아01641 등록발행일자 : 2011년 05월 27일

발행인 : 박형미 편집인 : 천신응 청소년보호책임자 : 한정규
사업자 등록번호 : 214-87-22467 Tel : 02-558-6950

Copyright © 2024 International Data Group. All rights reserved.