AI? ?? ?? ?? ?????? ?????? ???, ?? ?????? ??? ??? ? ??. ????? ?? 9?? ???? ?? ??? AI? ??? ?????? ???? ??? ?????. 생성형 AI에 대한 인기가 높아지면서 이른바 ’기술 골드러시’가 시작되고 있다. AI 도구 중에서도 보통 에세이를 쓰거나 그림을 그리는 예술 도구가 대중적으로 인기가 높다. 하지만 기술 업계 그중에서도 프로그래머 사이에서는 단연 AI 코딩 도구가 더 화제다. 프롬프트에 원하는 기능을 설명하면 몇 초 안에 실행 가능한 코드를 반환해 주니 어떤 면에서 흥미롭기도 하고 동시에 두렵기도 한 것이다. AI 기반 프로그래밍에 대한 인기는 소프트웨어 산업 전체에 장대한 기대로 이어지고 있다. 특히 최고 경영진, 컨설턴트, 그리고 이들을 추종하는 전문가들이 그런 거창한 기대에 힘을 보태고 있다. 하지만 실무단에서 직접 AI 도구를 사용하는 프로그래머와 관리자는 어떨까? 인포월드는 개발자 여러 명에게 지금까지 AI 코딩 도구를 어떻게 활용하고 있는지 직접 물어보았다. 이들의 의견을 종합해보면 ‘대부분은 AI가 업무 방식을 바꾸는 것은 사실이지만 가까운 시일 안에는 AI가 인간 코더를 대체하는 일은 없을 것’으로 요약할 수 있다. 좀 더 자세히 살펴보자. AI가 코더에게 도움을 주는 방법개발자에게 널리 알려진 두 가지 생성형 AI 도구는 오픈AI의 챗GPT와 비주얼 스튜디오 같은 IDE에 통합되는 깃허브 코파일럿이다. 두 가지 도구 모두 자연어 쿼리를 기반으로 코드를 생성할 수 있지만, 코파일럿과 이후 나온 차세대 버전 의 경우 대화형 모델을 한 단계 뛰어넘어 개발자가 무엇을 작업하고 있는지 예측까지 한다. 즉 일종의 진화된 IDE 자동 완성 역할을 AI 코딩 도구가 할 수 있다.크로케.io(Croquet.io)의 공동 설립자이자 수석 건축가인 바네사 프루덴버그는 매일 비주얼 스튜디오 코드로 작성하던 코드 작성 과정에서 깃허브 코파일럿을 사용한다. 다음은 프루덴버그가 직접 작성한 코드다. 다음과 같은 코드를 작성하면 let x = this.leftMargin + this.width / 2; 코파일럿은 다음과 같은 코드가 자동 제안한다. let y = this.topMargin + this.height / 2; 프루덴버그는는 “이를 통해 ‘width’와 ‘left’을 ‘height’와 ‘top’으로 바꿔야 한다는 것을 알 수 있다. 덕분에 타이핑을 많이 줄어듭니다”라고 설명했다. 넷비즈(NetBeez)의 공동 설립자이자 CTO인 파니코스 네오파이투는 코딩을 할 때마다 코파일럿 X와 챗GPT를 사용한다. 그는 단순 코드 자동 완성 기능을 넘어서는 두 가지 특징을 AI 코딩 도구에서 찾을 수 있다고 설명했다. 첫 번째 특징은 체계적이다.네오파이투는 “AI 코딩 도구는 특정 입력, 예상 출력 및 관련 데이터 모델의 예를 포함하여 매우 잘 정의된 함수를 잘 기술한다. 여기에는 암묵적인 연관성이 있는 데이터베이스 테이블이 포함된다. AI는 연관성을 추론할 수 있다. 특정 언어와 특정 방법으로 구현하도록 요청해보라. 프로젝트 관리 툴에 정의된 ‘작업’을 이러한 종류의 프롬프트로 정의해야 한다”라고 설명했다.네오파이투는 또한 좀 더 캐주얼하고 사람과 대화하듯이 묻는 답을 얻는 코딩 기법이 좋은 결과를 낳을 수 있다고 보고 있다. 그는 “작업을 수행하는 동안 특정 작업을 수행하는 방법에 대해 생각나는 질문을 AI 코딩 도구에 던질 수 있었다. 마치 노련한 엔지니어가 옆에서 질문에 답하고 작업을 완료하도록 안내하는 것과 같았다”라고 설명했다. 어떤 기법을 사용하든, AI를 올바르게 작동시키는 법을 배우는 것은 일종의 예술 과정이다. 소프트웨어 공급업체 코드씨(CodeSee)의 설립자이자 CEO인 샤니아 레벤은 “나는 생각을 사슬로 연결하듯 프롬프트에 질문을 넣는다. 이때 질문을 구체화하기 위해 올바른 동사를 한다”라며 “적절한 동사를 선택하고 서술적으로 표현하면 높은 수준의 답변을 만드는데 엄청난 도움을 받을 수 있다”라고 설명했다. (은 바로 이러한 이유로 인기있는 분야가 되고 있다.) AI 코딩의 강점 인포월드가 인터뷰한 개발자들은 AI 도구가 다양한 방식으로 작업을 완료하는 데 도움을 주었다고 설명했다. 특히 다음 5가지 상황에서 활용도가 더욱 높았다. ① 코드로 문서/주석 생성소프트웨어 문서는 구조화된 형식을 가지고 있기에 AI가 특히 이해할 수 있다. 웹컨설팅 업체 러브2데브(Love2Dev)의 설립자인 크리스 러브는 “나는 챗GPT로 코드 내용을 문서화하거나 필요한 주석을 자주 단다. 원래 이런 일은 수작업으로 하려하면 시간이 너무 많이 걸린다. 하지만 수식만 완성되면 1~2초안에 문서를 작성할 수 있다. 너무 마음에 든다!”라고 말했다.② 문서/주석으로 코드 생성AI는 또한 주석이나 문서 작업을 기반으로 코드를 생성할 수 있다. 크로케.io의 프루덴버그는 코파일럿이 주석을 보고 코드를 어떻게 생성하는지 간단한 예를 보여주었다. 프루덴버그가 작성한 주석 // get file name from our url 코파일럿이 주석을 기반으로 만든 코드 let fileName = window.location.pathname.split(“/”).pop(); 프루덴버그는 “나라면 아마 다르게 코드를 짰을 것이다. 나는 정규식을 사용한다. 하지만 코파일럿이 제시한 코드는 완벽할 정도로 간단하고 분명 더 읽기 쉬운 해결책이기 때문에 이런 코드가 나온다면 바로 활용한다. 이런 작업은 시간을 크게 절약할 뿐만 아니라, 때때로 스스로 발견하지 못했을 수도 있는 관용구를 가르쳐 주기도 한다”라고 말했다.③ 문제 해결을 위한 솔루션개발자는 프로그래밍이 반복의 연속이라는 것을 안다. 그래서 누군가, 어딘가에서 이미 해결했다는 것을 알고 있는 문제에 매진할 때면 좌절감을 느낄 수 있다. 소프트웨어 개발 회사인 라이즈8(Rise8)의 엔지니어링 책임자인 제프 윌스는 이제 나온 문제를 찾고 해결하는 것이 AI가 잘하는 영역이라고 표현했다. 그는 “구 위의 두 점 사이의 거리를 계산하는 방법을 만든다고 가정해 보자. 코파일럿은 온갖 방법을 검토하고 자동으로 (Haversine) 알고리즘을 찾아 모든 코드를 생성할 것이다”라고 설명했다.윌스는 특히 애플리케이션에 대규모 라이브러리를 추가해야 하는 경우 AI가 제시한 대안 코드를 적용하면 좋다고 추천했다. 윌스는 “예를 들어, 계산 기하학 알고리즘 라이브러리 적용하려 할 때 코드를 전부 다 가져오면 코드양이 너무 늘어날 수 있다. 코드양을 크게 늘리지 않고 알고리즘 하나만 얻는 방법에 대해서 물론 개발자 스스로 찾을 수 있다. 하지만 챗GPT 또는 코파일럿을 사용하여 해결책을 물어볼 수 있다. 이것이 지금의 생성형 AI의 핵심적인 능력이다”라고 설명했다.④ 코드 업데이트 또는 정리러브2데브의 크리스 러브는 챗GPT가 자신이 이미 작성한 코드를 업데이트하는 데 특히 유용하다고 설명했다. 그는 “간혹 귀찮은 수작업 때문에 코드 업데이트를 하지 않을 때가 있다. 개인적으로 AI를 이용해 오래된 노드.JS 모듈 업데이트 문제를 해결했다. 내가 선호하는 상황은 오래된 프로미스 기반 함수를 비동기/대기 함수를 사용하도록 변환하는 것이다. 후자는 더 깔끔한 구문이지만 모듈을 작성할 당시에는 흔하지 않았다. AI 코딩 도구를 이용하니 변수 선언을 구조 분해하고 var에서 const 및 let으로 변환하는 등 보다 현대적인 구문을 사용할 수 있었다”라고 밝혔다. ⑤ (아마도) 더 빠른 코딩인포월드가 인터뷰한 개발자들은 수치화할 수 있는 것은 아니라고 표현하면서도 코파일럿 또는 챗GPT로 작업하면 작업을 더 빨리 할 수 있었다고 밝혔다. 러브는 “궁극적으로 더 나은 코드를 조금 더 빨리 작성할 수 있도록 도와준다고 생각한다. 몇 퍼센트 더 빠르다고는 말하기 어렵지만, 체감할 수준의 작업 속도 향상을 느꼈다”라고 밝혔다.라이즈8의 윌스는 “이론적으로는 속도가 빨라져야 하지만, 어쩌면 더 많은 가능한 솔루션을 찾는데 도움을 받는 것일 수도 있다. 시간적인 측면에서는 성과를 얻지 못했지만, 조금 더 반복할 수 있었기 때문에 품질 측면에서는 성과를 얻은 것 같다”라고 설명했다.주의할 점인포월드가 인터뷰한 거의 모든 사람들은 AI 툴이 마법이 아니라고 강조했다. 주의해야 할 함정과 점검해야 할 사항이 많이 있다는 것이다. 개발자들이 자주 언급한 주의점 5가지는 다음과 같다. ① 아주 구체적일 것AI 챗봇의 자연어 기능은 마법처럼 보일 수 있지만, 아마도 생각하는 만큼(또는 희망하는 만큼) 챗봇이 이해하지는 못할 것이다. 최상의 결과를 얻으려면 가능한 한 명확하고 구체적이어야 한다. 웹사이트 제작 업체인 리암 프로페셔널 웹사이트(Liam’s Professional Websites )의 CEO인 리암 에드워즈는 “현재 챗GPT는 당신이 사용 중인 타사 앱에서 무엇을 코딩하고 있는지 알 수 없다. 따라서 코딩 문제나 쿼리에 대한 정보를 AI에게 최대한 많이 제공해야 한다”라고 설명했다. 예를 들어, ‘버튼 배경을 흰색으로 만드는 사용자 지정 CSS를 작성하라’라고 AI에 요청하면, 작동하거나 작동하지 않을 수 있는 코드가 나올 수 있다. 하지만 ‘버튼의 배경을 흰색으로 만드는 사용자 지정 CSS 코드를 작성하라(버튼의 클래스는 .button이다)’라고 AI에게 알려준다면, 훨씬 더 정확한 응답을 얻을 수 있다. 질문이 구체적이어야 코딩 결과물이 좋아진다는 에드워즈의 표현은 중요한 점을 시사한다. 즉, 코딩 경험과 지식이 있어야 AI 툴을 잘 활용할 수 있다는 것이다. 그는 “코딩을 잘 하지 못하는 사람은 AI에게 물어도 원하는 결과를 얻기까지 시간이 오래 걸릴 수 있다. 결과의 정확도도 낮을 수 있다”라고 말했다. ② 단순하게 할 것웹디자인 및 개발 기관 브레인 자(Brain Jar)의 CTO인 피터 수로우스키는 “코드를 작성할 때 AI를 사용한다. 하지만만 대부분 구글 검색을 사용하는 수준의 사소한 작업에만 유용했다. 예를 들어, 특별한 변경 없이 어디에서나 자주 쓰는 보일러플레이트 코드가 필요한 경우 챗GPT로 코드를 작성할 수 있다. 또는 특정 언어로 스위치 조건문이나 3차 함수를 어떻게 쓰는지 기억나지 않으면 챗GPT에게 문의할 수 있을 것이다. 하지만 더 복잡한 경우에는 쓸모가 없다. AI 때문에 프로그래밍의 직업이 사라질 것이라는 예측은 바보 같은 표현이라고 생각한다”라고 말했다. 코드씨의 레벤은 “현재 챗GPT는 일반적인 코드 응답에 뛰어나지만 도메인별 코드 생성, 스캐폴딩 및 자동 완성 영역에서는 완전히 뛰어난 것은 아니다. 검색에는 훌륭하지만 맥락을 아직 잘 알지 못하기 때문에 대부분 제한적이다”라고 말했다. 그럼에도 레벤은 “나는 이것이 시간이 지남에 따라 개선될 것으로 기대한다. 기업의 특정 코드베이스에 AI가 접근하고 관련 질문을 할 수 있다면 더 많은 가치가 생겨날 것이다. 그렇게 되면 AI가 진정으로 판도를 바꿀 수 있을 것이다”라고 밝혔다. ③ 테스트는 필수대부분의 소프트웨어 회사는 코드가 프로덕션에 들어가기 전에 광범위한 자동화된 테스트 과정을 거친다. AI가 만든 코드도 예외는 아니다. 테스트 자체가 단점은 아닐 수도 있지만, AI가 완벽한 코드를 생성할 것이라고 기대하는 비현실적인 견해를 가진 사람들에게는 실망으로 다가올 수도 있다. 러브2데브의 러브는 “AI가 만든 코드라도 모든 것을 검토하고 당연히 테스트해야 한다. 스택 오버플로우에 올란온 코드는 많은 사람이 쓰고 오래됐다는 이유로 정답으로 받아들인 개발자가 너무 많다. 챗GPT에서도 동일한 현상이 발생하고 있다고 나는 확신한다”라고 말했다. ④ 약간의 정리는 필요함 AI가 만든 코드를 수정하지 않고 그대로 복사해서 붙여 넣었다고 말하는 사람은 거의 없었다. 넷비즈의 네오파이투는 “일반적으로 AI가 생성된 코드가 정확하고 테스트까지 완료됐는지 확인해야 한다. 또한 AI가 만든 코드는 주로 다시 작성하기보다는 대부분 약간 수정해야 한다. 하지만 일부 드물게 AI가 만들어내는 코드가 정확히 당신이 필요로 하는 것일 수도 있다. 그럴 때는 그저 놀랍고 매우 보람이 있을 뿐이다(그와 동시에 무섭다)”라고 설명했다. 라이즈8의 윌스는 “일반적으로 코드베이스와 일치하도록 스타일 가이드 작업을 해야 한다”라고 말했다. 이런 작업에는 ‘방법 이름 바꾸기, 형식 약간 바꾸기, 코드 베이스를 한 사람이 작성한 것처럼 모든 것을 깨끗하고 일관되게 유지’같은 작업이 포함될 수 있다. ⑤ 보안성을 확보할 것코드를 작성하는 데 사용되는 새로운 기법은 필연적으로 예측하기 어려운 방식으로 악의적인 행위자에게 공격의 표면을 열어준다. 생성형 AI도 예외는 아니다. 챗GPT 환각 현상으로 존재하지도 않는 npm 패키지를 제안할 수 있으며, 공격자가 잠재적으로 이러한 패키지 이름을 예측하고 생성하여 악성 코드로 채울 수 있다는 것을 발견했다. AI를 워크플로우의 일부로 광범위하게 사용하는 딥아이디어 랩(DeepIdea Lab)의 설립자인 서랴 산체스는 이러한 공격과 싸우는 방법은 “로컬로 코드를 실행하고 오류를 식별하며 AI 생성 코드가 존재하지 않는 패키지를 참조하고 있음을 이해하는 것”이라고 말했다. 이러한 상황에서는 코드를 수동으로 다시 작성하여 전체 코드가 아닌 특정 섹션에 초점을 맞추도록 더 명확한 지침을 제공한다. 산체스는 또한 “생성형 AI는 제3자에 의해 검토될 수 있기 때문에 비밀이나 API 키를 공유하는 것을 피하라”라고 권고하며 “나는 코드 결과물에서도 민감 정보가 계속 안전하게 보호될 수 있도록 노력했다”라고 말했다. 어떤 면에서, AI의 현재 한계는 자체 내장된 보안 기능일 수도 있다. 러브는 “토큰 또는 프롬프트/응답 크기 제한은 내 생각에 악성 코드에 대한 일종의 방어책을 제공한다. 모든 것을 작은 덩어리로 나누어 검토하도록 만들어주기 때문이다”라고 말했다. 학교와 직장 속 AI 툴네덜란드 암스테르담 대학에서 AI 강사 및 코디네이터로 일하는 막스 반 데르 브뢰크는 젊은 프로그래머들이 AI을 어떻게 바라보고 있는지 파악하기 위해 설문을 실시했다. , 브뢰크 수업 참가생 절반 이상이 코딩을 위해 챗GPT를 사용하고 있었다. (숙제를 하는 데 AI를 사용하는 학생들보다 더 높은 비율이다.) 해당 설문 조사의 흥미로운 부분은 학생들이 챗GPT 사용에 대한 지침을 원하고 현재의 정책이 불분명하고 너무 엄격하다고 보는 것이었다. 즉, 학생들은 AI의 일부 사용은 허용되기를 원하지만 전부를 원하는 것은 아니었다. 브뢰크는 “수업에서 기초를 배우는 첫 해에는 학생들의 생성형 AI 사용을 막고, 나중에 더 크고 복잡한 프로젝트를 만들 때는 코파일럿을 허용하는 방법을 고려하고 있다”라고 “다만 현재 우리가 논의 하는 모범 관행이 내년에는 유효하지 않을 것이라고 생각한다”라고 덧붙였다. 많은 현업 개발자들은 AI를 업무에 사용할 수 있는 방법과 시기를 알고 싶어한다. 그러므로 관리자라면 관련 규칙을 미리 만들어놔야 한다. 이미 직원 일부는 관련 AI 기술을 제 나름대로의 원칙을 세우고 활용하고 있을 수 있다. 라이즈8에서 윌스는 “AI 사용 과정에서 하향식과 상향식 방식이 모두 공존한다”라고 말했다. 윌스는 “라이즈8의 경우 창업자인 브라이언 크로거가 먼저 AI에 매우 관심을 보였다. 크로거는 최신 기술을 따라가는 것을 좋아하기 때문에 엔지니어링 채널에서 질문을 던져 내부 팀이 AI에 대해 생각하게 했다. 동시에 챗GPT가 폭발적으로 인기를 끌었을 때 위에서 시키지 않아도 라이즈8 팀원들은 직접 얼리 어답터로 참여하려 했다. 그들은 챗GPT가 무엇을 생산하고 있는지, 어떻게 일상적인 워크플로우에 이를 통합할 수 있는지 확인했다”라고 말했다. 라이즈8 임원진은 개발자들이 도움이 된다고 생각하는 툴에 대한 비용을 낼 수 있도록 예산을 지원하기도 했다. 윌스는 “많은 팀원이 비용을 내며 챗GPT-4 유료 버전을 이용하고자 했다. 확실히 유료 버전이 무료인 챗GPT-3.5보다 더 나은 결과를 내보낸다”라고 말했다. 미래는 어떻게 될까? 생성형 AI로 인류는 안전해 보였던 수십 개의 인간 일자리가 없어질까 봐 걱정하기 시작했다. 사라질 것으로 예상되는 직무에는 프로그래머가 포함된다. 미래가 어떻게 될지는 말할 수 없지만, 인포월드가 나눈 개발자와 관리자는 AI가 프로그래머 직업을 대체한다는 의견에는 회의적이었다. 브레인 자의 수로우스키는 “AI는 코드를 작성할 수 있으며 그 결과는 매우 인상적이다. 그러나 이를 구현하고, 플러그인으로 전환하고, 테스트하고, 문제를 해결할 수 없다. 그 부분이 바로 개발자가 하는 일이다. 프로그래머는 단순히 코드 작성자가 아니다. 사실, 코드 작성은 프로그래머 업무에서 꽤 작은 부분이다. 동시에 AI가 도울 수 있는 유일한 부분이다”라고 말했다. 비슷한 의견을 코드씨의 레벤도 갖고 있다. 레벤은 “엔지니어링 팀의 규모를 줄이기로 선택한 회사들이 있을 것이라고 생각한다. 하지만, 미래를 생각하는 업계 최고의 회사들은 그렇게 하지 않을 것이다. 그런 기업은 경쟁사를 앞지르고 자신의 영역을 확보하기 위해 관련 기술 인재를 계속 보유할 것이다. 현재로서 간단한 기능을 구축하는 것이 아니라면 AI의 도움은 제한적이다. AI는 아직 추론할 수 없고, 상충관계를 저울질할 수 없으며, 또는 비선형적이거나 복잡한 것을 처리할 수 없기 때문이다. 따라서 이런 문제를 해결하려는 기업은 여전히 우수한 개발자가 필요하다. 이미 우리는 인간과 AI를 함께 사용하는 많은 회사에서 최고의 결과를 보고 있다”라고 말했다.dl-ciokorea@foundryco.com ???? ???? ??? ??? IT ??? ???? ??? ????! ??? ??? ??? ?????. ????