코파일럿 “열일”하게 만드는 방법

1 month ago 8

깃허브 코파일럿(Github Copilot)은 IDE에서 사용할 수 있는 AI 페어 프로그래밍 도구입니다. 2021년에 최초로 공개된 비교적 젊은 툴이지만, 이제는 단 한 번이라도 사용해 본 적 없는 개발자를 찾기가 어려울 정도로 프로그래밍 필수 준비물이 되었는데요. 우아한형제들에서는 개발직군 구성원들이 코파일럿을 사용할 수 있도록 유료 구독을 지원하고 있습니다. 처음에는 저도 코드 자동완성 기능만 사용했는데요. 코파일럿에 점점 익숙해지다 보니 어떻게 하면 저보다 코파일럿에게 더 많은 일을 시킬 수 있을지 궁금해졌습니다.

이 글은 ‘재주는 코파일럿이 넘고, 개발자는 구경만 하기’가 가능할지 궁리한 결과물입니다. 코파일럿의 기능과 사용법을 먼저 소개하고, 코파일럿이 무엇을 할 수 있을지 테스트 해 본 내용을 공유합니다. 마지막으로, 코파일럿을 좀 더 잘 사용하기 위한 소소한 팁도 나눠보고자 합니다.

이 글에서는 깃허브 코파일럿의 기본 사용법과 간단한 활용 방법을 다룹니다. 아직 코파일럿을 써 본 적이 없거나, 기본 사용법은 익혔지만 조금 더 효율적으로 사용하는 팁이 궁금한 분들에게 도움이 될 것입니다.

코파일럿 사용 환경에 대해

이 글은 VSCode에서 코파일럿을 사용하는 방법을 소개하고 있습니다.
코파일럿을 쓰기 위해 반드시 VSCode를 써야 하는 것은 아닙니다. 그러나 코파일럿의 모든 기능에 손쉽게 접근하고자 한다면 VSCode와 함께 사용하는 편이 좋습니다.
또한 이 글은 Mac 환경을 기준으로 작성되었습니다. Window 등 다른 OS 사용자는 일부 단축키나 설정이 다를 수 있으니 참고해 주세요.

VSCode에서 코파일럿 설치하는 법

  1. VSCode 확장 마켓플레이스에서 Copilot을 설치한다. 코파일럿 확장을 설치하면 코파일럿 챗도 함께 설치된다.
  2. 깃헙 계정으로 로그인 후, 코파일럿 구독을 활성화한다.

vscode 깃헙 코파일럿 주요 기능 소개

코드 자동완성

수많은 개발자들이 즐겨 사용하는 코파일럿의 대표 기능입니다. 키워드 몇 개를 입력한 후 잠시 기다리면 코파일럿이 맥락을 파악해 필요한 코드를 제안해 줍니다.

코파일럿이 알려준 코드가 마음에 들지 않나요? 더 나은 제안이 없을지 궁금하다면 도구 모음을 활용할 수 있습니다. 자동완성된 코드에 커서를 올리면 도구 모음이 화면에 나타나는데요. 코파일럿이 여러 개의 자동완성 제안을 생성했다면, ⌥ + ] 단축어로 다른 제안은 어떤지 살펴볼 수 있습니다. 또는 Open Completions Panel을 열어 코파일럿이 생성한 여러 개의 자동완성 제안을 새 탭에서 한 번에 확인할 수도 있습니다.

도구 모음 항상 보여주기

자동완성 기능을 사용할 때마다 마우스 호버 동작 없이 항상 도구 모음이 떠 있게 설정할 수도 있습니다. 더보기(…)에서 항상 도구 모음 표시를 활성화합니다.

코파일럿 챗에서 자연어로 질문하기

코파일럿 확장을 설치하면 짝꿍처럼 함께 따라오는 또 다른 확장이 있는데요. 대화형 AI 비서인 코파일럿 챗입니다. 코파일럿 챗은 ChatGPT, 퍼플렉시티(Perplexity) 등 이미 우리에게 익숙한 다른 AI 챗봇과 유사하게 동작합니다. 다만 프로그래밍에 특화되어 있다는 점에 차이가 있습니다. 프로그래밍과 상관 없는 요청은 단호하게 거절합니다.

코파일럿은 여타 챗봇에 비해 사용자가 작업 중인 레포지토리를 더 잘 알고 있습니다. 지금 여러분이 작성하고 있는 코드에 대해 코파일럿이 아닌 다른 AI 챗봇 서비스에 프롬프트를 입력한다고 상상해 봅시다. 쓸만한 답변을 얻기 위해서는 맥락을 알려주는 선행 작업이 필요합니다. 우리가 어떤 프로젝트를 진행 중인지, AI와 함께 살펴보고자 하는 코드가 어떤 내용인지 등을 하나씩 알려 주어야 합니다. 기존 코드를 챗봇에 ‘복붙’하는 단계도 거쳐야 하고요.

코파일럿 챗을 사용하면 좋은 대답을 얻기 위한 준비가 비교적 간단해집니다. 코파일럿이 알아서 맥락을 파악하기 때문입니다. 코파일럿 챗은 사용자가 열어 둔 파일과, 그 파일이 참조하는 모듈 등에서 답변의 단서를 스스로 수집합니다.
코파일럿 챗은 IDE 곳곳에서 사용할 수 있는데요. 질문 목적에 따라 적합한 채팅을 활용하면 더욱 좋습니다.

인라인 채팅

현재 작업 중인 파일에서 원하는 위치에 커서를 둔 다음, 단축키 ⌘ + I를 누르면 채팅창이 나타납니다. 특정 코드 블록에 대한 구체적인 대화가 필요할 때 사용하면 적합합니다.

  • 사용 예시 1: 인라인 채팅을 활용하면 혼자서도 동료와 페어 프로그래밍을 하는 것처럼 작업할 수 있습니다.
    • “함수 foo의 성능과 가독성을 개선하고 싶은데, 제안사항이 있을지 알려줄 수 있을까?”
    • “헬퍼 함수 bar의 내부 로직을 설명해 줘. 한 줄씩 자세하고 이해하기 쉽게 알려줘.”
  • 사용 예시2: 단순 반복 작업 처리를 코파일럿이 대신 해 줍니다.
    • “이 API 호출 메서드에 대한 설명을 자바독(Javadoc) 스타일 주석으로 작성해 줘”
    • “함수 baz의 테스트 케이스를 작성해 줘.”
    • “이 줄의 ESLint 에러를 해결해 줘.”
    • “for/of 반복문을 Array 메서드를 사용하도록 리팩터링 해줘.”
      인라인 채팅창을 닫으면 남긴 질문도 사라지니 주의해 주세요. 만약 질문 내역을 보관하고 싶다면 ‘채팅에서 보기’ 버튼을 눌러 사이드바로 채팅을 이어가면 됩니다.

사이드바 채팅(코파일럿에게 요청)

⌥ + ⌘ + I를 누르거나, VSCode 상단 팔레트 옆에 있는 로봇 아이콘을 누르면 IDE 한 켠에 채팅창이 열립니다. 프로젝트 전반, 특정 파일 전체 등 코드 블록보다 더 넓은 범위에 대한 질문이나, 일반적인 프로그래밍 지식에 대해 묻고 싶다면 사이드바 채팅이 유용합니다. 또한, 같은 주제에 대해 여러 차례 질의응답이 이어져야 할 경우에도 사이드바 채팅이 적합합니다.

  • 사용 예시 1: 프로젝트의 전반적인 구조를 이해하고자 할 때 사용할 수 있습니다.
    • “이 프로젝트의 디렉터리 구조를 간단하게 정리해 줘“
    • “이 프로젝트에서 핵심적인 역할을 하는 파일과 디렉터리가 무엇인지 알려줘”
  • 사용 예시 2: 신규 프로젝트를 시작할 때 스캐폴딩을 요청할 수 있습니다.
    • “react, typescript를 사용하는 앱 기본 구조를 만들어 줘.”
  • 사용 예시 3: 일반적인 프로그래밍 지식에 대해서도 물어볼 수 있습니다.
    • “타입스크립트에서 unknown과 any의 차이를 설명해줘”
  • 사용 예시 4: VSCode 사용에 대한 질문을 할 수 있습니다.
    • “자동저장 설정을 변경하려면 어떻게 하지?”

빠른 채팅

인라인 채팅의 간결한 UI를 사용하여, 사이드바 채팅처럼 넓은 범위의 질문을 하고 싶을 때 유용합니다. 단축키 ⌥ + ⇧ + ⌘ + L를 누르면 VSCode 팔레트와 유사한 검색창이 상단에 나타납니다.

터미널에서 인라인 채팅

터미널에서 단축키 ⌘ + I를 누르면 인라인 채팅창이 나타납니다. 자연어를 입력하면 설명에 해당하는 커맨드라인 명령어를 알려줍니다.

챗으로 코드 편집하기(코파일럿으로 편집)

⇧ + ⌘ + I를 입력하면 ‘Copilot으로 편집’ 창이 뜹니다. 자연어로 수정하고 싶은 부분을 코파일럿에게 설명하면, 코파일럿이 파일을 고쳐 줍니다.

음성으로 코파일럿 사용하기

VSCode speech 확장을 사용하면 음성으로도 코파일럿을 사용할 수 있습니다. 한국어로 말하려면 VSCode 설정 파일인 settings.json의 “accessibility.voice.speechLanguage” 항목을 ko-KR로 설정해야 합니다.

커밋 메시지 작성

코파일럿에는 현재 변경 사항을 바탕으로 적절한 커밋 메시지를 작성해 주는 기능도 있습니다. 소스 제어 메뉴에 진입 후, 커밋 메시지 입력창 우측에 있는 반짝이 모양 버튼을 누르면 메시지가 자동 생성됩니다.

실험 – 코파일럿은 얼마나 유능할까?

위에서 기본적인 사용 방법을 익혔으니, 코파일럿이 얼마나 똑똑한지 요청사항을 직접 입력하면서 실험해 보겠습니다.
코파일럿은 생성형 AI이므로 프롬프트를 실행할 때마다 결과물은 달라질 수 있습니다.

실습 1: 코파일럿으로 리액트(React) 타입스크립트 앱 스캐폴딩하기

프롬프트 엔지니어링으로 리액트와 타입스크립트를 사용하는 앱을 만들어 봅시다.

단계 1. 빠른 채팅(⌥ + ⇧ + ⌘ + L)에 진입해서 다음 프롬프트를 입력한다. /new react, typescript를 사용해서 프로젝트를 시작하려고 해. 새 프로젝트의 구조를 짜 줄 수 있을까?

/new는 슬래시 커멘드로, 코파일럿에게 프롬프트 요청이 어떤 종류인지 알려주는 역할을 합니다. 위 프롬프트에서 코파일럿은 /new 덕분에 사용자가 새 프로젝트 생성을 요청한다는 사실을 더욱 명확하게 이해합니다. 슬래시 커멘드 사용은 필수는 아니지만, 코파일럿에게 컨텍스트를 간단명료하게 전달할 수 있습니다.

라이브러리 버전 명시하기

사용을 원하는 라이브러리 버전이 있다면 프롬프트 작성 시 알려주면 좋습니다.

단계 2. 작업 영역 만들기… 버튼을 눌러 새 프로젝트를 연다.

단계 3. VSCode 터미널을 열어 인라인 채팅(⇧ + ⌘ + I)을 실행한다. 다음 프롬프트를 입력한다. git 초기화 해줘

꽤 그럴싸한 구조의 프로젝트가 만들어졌습니다. 그러나 조금만 살펴 보면 허점이 많은 코드라는 것을 금세 눈치채실 건데요. 제게 코파일럿이 만들어준 코드도 마찬가지입니다.

// App.tsx import React from "react"; import "./App.css"; const App: React.FC = () => { function print() { // 👈 print 함수를 호출하는 곳이 없습니다 console.log("Hello, React!"); } return ( <div> <h1>안녕하세요, 리액트 앱에 오신 것을 환영합니다! 🎉</h1> {/* 다른 컴포넌트를 여기에 추가할 수 있습니다. */} </div> ); }; export default App; /* App.css */ body { margin: 0; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; background-color: #f0f0f0; } .container { /* 👈 container라는 클래스명을 가진 요소가 없습니다. */ max-width: 1200px; margin: 0 auto; padding: 20px; }

우선 App.tsx에 위치한, ‘hello world’를 콘솔에 출력하는 함수 print는 어느 곳에서도 호출하지 않습니다. App.css 파일에는 존재하지 않는 HTML 요소를 꾸미는 스타일 정의가 있습니다. package.json에 명시된 의존성 패키지 버전도 이상합니다. 릴리즈 된 가장 최신 버전이 5.0.1인 react-scripts 패키지의 버전이 17.0.0이고요.

다소 아쉬운 결과물이지만 쓸만한 부분도 있습니다. 앱 최상단 루트의 위치(src/index.tsx), 컴포넌트가 모여 있는 디렉터리(/components) 등 폴더 및 파일 구조가 통상적인 리액트 앱 디렉터리 구성을 따라 생성되어 있는 것을 확인할 수 있습니다. README.md 파일에도 앱 실행 방법, 프로젝트 구조 등에 대한 상세한 설명이 쓰여 있고요. 당장 앱을 실행할 수 있을 정도로 완벽하진 않지만, 리액트와 타입스크립트에 익숙한 개발자라면 코파일럿이 생성한 결과물에서 쓸만한 부분을 찾아낼 수 있을 것입니다.

코파일럿과 함께 앱을 만드는 것은 마치 어릴 때 하던 점 잇기 같습니다. 코파일럿이 점을 찍어 두면, 선을 이어 전체 그림을 완성하는 일은 개발자의 몫입니다. 그림을 잘 완성하기 위해서는 선을 전부 그렸을 때 어떤 형상이 나타날지 잘 알아야 하는 것처럼, 코파일럿이 생성한 결과물에서 쓸만한 것을 잘 선별할 줄 아는 능력이 필요합니다.

실습 2: 코파일럿에게 워크스페이스 구조 설명 요청하기

익숙하지 않은 레포지토리를 파악해야 할 때에 코파일럿을 활용할 수 있습니다. 리액트 소스코드를 예제로 실습해 보겠습니다.

단계 1. react 소스코드를 로컬에 클론한 후, VSCode에서 연다.
단계 2. 채팅(^ + ⌘ + I) 또는 빠른 채팅(⌥ + ⇧ + ⌘ + L)에 진입한다.
단계 3. 다음 프롬프트를 입력한다. @workspace #codebase 이 레포지토리의 디렉터리 구조에 대해 간단히 설명해줘
@은 채팅 참가자를 멘션하는 기호로, @workspace는 현재 VSCode에 열어둔 워크스페이스의 코드를 자세히 알고 있습니다. #codebase는 챗 변수로, 코파일럿에게 프롬프트와 관련된 컨텍스트를 제공하기 위해 사용합니다.

  • 참고: @은 채팅 참가자를 멘션하는 기호로, @workspace는 현재 VSCode에 열어둔 워크스페이스의 코드를 자세히 알고 있습니다. #codebase는 챗 변수로, 코파일럿에게 프롬프트와 관련된 컨텍스트를 제공하기 위해 사용합니다.

리액트 레포지토리의 주요 디렉터리와 워크스페이스에 대한 간략한 설명이 채팅에 생성되었습니다.

실습 3: 코파일럿으로 테스트 코드 짜기

코파일럿으로 테스트 코드를 작성할 수 있습니다. 특정한 값이 널(null)인지 확인하는 함수 isNil이 있는 파일 utils.ts을 먼저 생성하고, 코파일럿을 이용하여isNil에 대한 테스트 코드를 생성해 보겠습니다.

// utils.ts export const isNil = (value: any): boolean => { return value == null; };

단계 1. 채팅(^ + ⌘ + I)에 진입한다.
단계 2. 다음 프롬프트를 입력한다. @workspace #file:isNil.ts에 있는 함수에 대한 테스트 코드를 작성해 줘

코파일럿이 테스트 대상이 되는 제품 코드를 읽고, 테스트 케이스를 추출하여 적절한 assertion과 matcher를 자동으로 생성했습니다.

제품 코드의 로직이 복잡하거나, 복잡한 데이터 모킹이 필요한 경우, 또는 테스트를 위해 사용하는 라이브러리가 많아질수록 코파일럿이 만든 테스트 코드의 수준이 다소 낮아지는 경향이 있어 주의가 필요합니다.

코파일럿을 더 잘 사용하기 위한 팁

코파일럿을 더욱 효과적으로 사용하려면 코파일럿에게 최대한 많은 컨텍스트를 제공하는 편이 좋습니다. 코파일럿에게 컨텍스트를 효율적으로 정확하게 전달하는 몇 가지 요령을 소개합니다.

  • 함수명 잘 짓기: 자동완성을 실행하기 전 의미있고 구체적인 함수명부터 지어주는 것이 좋습니다. 함수명 또한 코파일럿의 컨텍스트로 활용되기 때문에, 함수 본문의 로직을 잘 요약한 이름을 붙인다면 더 적합한 코드를 생성할 가능성이 높습니다.
    배열을 청크 단위로 나누는 유틸 함수를 작성하려 합니다. 함수 기능을 요약한 이름 splitArrayIntoChunks만 입력 후 자동완성을 확인해 보았습니다.

    코파일럿이 필요한 매개변수 array와 chunkSize를 알아서 추가했습니다. 이어서 자동완성을 다시 적용하면 의도한 대로 함수가 완성된 것을 확인할 수 있습니다.

  • 주석 작성하기: 함수의 기능을 자연어로 설명한 주석을 작성하면, 코파일럿이 주석을 참고하여 자동완성 제안을 생성합니다.

  • 필요한 모듈이 있다면 먼저 가져오기: 자동완성 시, 코드에 포함되어야 할 모듈이 있다면 사용자가 명시하는 편이 좋습니다. 코파일럿은 불러온 의존성 목록을 보고, 어떤 모듈을 사용해서 코드를 생성해야 할지 판단합니다.

    day.js를 불러오지 않은 경우, 자바스크립트 Date를 사용하여 함수를 구현했습니다

    day.js를 불러오면 코파일럿은 dayjs의 API를 활용하여 함수를 구현합니다.

  • ’쓰레기를 입력하면 쓰레기를 출력한다(Garbage in, garbage out)’: 코파일럿은 사용자가 기존에 작성한 코드를 기반으로 제안을 생성합니다. 코파일럿이 좋은 코드를 만들어 내려면 개발자 또한 좋은 퀄리티의 코드를 작성해야 한다는 것이지요. 현재 여러분이 작성 중인 코드와 비슷한 스타일의 자동완성 제안을 생성하는 것이 싫다면, 잠시 자동완성 기능을 꺼 두는 편이 좋습니다.
    반대로, 지향하는 스타일의 코드가 있다면 코파일럿에게 알려줍시다. 예를 들어, 어떤 라이브러리의 특정 버전을 사용한 자동완성 제안이 필요하다면, 해당 버전에 있는 API를 사용하는 예제 코드를 입력하면 됩니다. 코파일럿은 예제 코드를 바탕으로 라이브러리의 버전을 유추하여 자동완성을 제안합니다.

  • 관련있는 파일 열어두기: 코파일럿은 현재 열린 탭에서 컨텍스트를 수집하므로, 챗에 입력한 질문이나 자동완성과 연관된 파일을 열어두면 더 나은 결과물을 얻을 수 있습니다.

  • 여러 번 물어보기: 코파일럿의 첫 번째 답변이 마음에 들지 않다면 몇 번 더 질문해 보세요. 코파일럿은 이전 답과, 사용자의 꼬리 질문을 컨텍스트로 삼아 답변을 개선합니다.

  • 슬래시 명령어로 요청 종류 알려주기: 채팅창에 슬래시(/)를 입력하면 슬래시 명령어 목록을 조회할 수 있습니다.


    슬래시 명령어를 사용하면 사용자가 입력한 프롬프트가 어떤 유형의 요청인지 코파일럿에게 간편하고 명확하게 전달할 수 있습니다. 예를 들어, 특정 코드 조각에 대한 해설이 필요할 때는 코드를 선택한 다음 채팅을 열어 /explain과 커스텀한 프롬프트를 입력하면 됩니다. 별다른 요구사항 없이 선택한 코드에 대한 일반적인 설명이 필요하다면 /explain만 입력해도 코파일럿의 답변을 받을 수 있습니다.

    채팅 종류에 따라 사용할 수 있는 슬래시 명령어가 다릅니다. 예를 들어, 코파일럿 사용방식에 대해 답변해주는 /help는 채팅 사이드바와 빠른 채팅에서만 사용 가능합니다.

  • 챗 변수(chat variables) 사용하기: 채팅창에 샵(#)을 입력하면 챗 변수 목록을 확인할 수 있습니다. 챗 변수는 파일, 코드 조각 등의 구체적인 컨텍스트를 전달할 때 유용합니다.
    터미널에서 hello world라는 문자열을 실행하는 명령어를 실행한 뒤, 어떤 뜻인지 코파일럿에게 설명을 부탁해 보았습니다.

    자연어로 입력한 프롬프트에 대해서는 답변을 생성하지 않았습니다.

    반면, 슬래시 커맨드와 챗 변수로 이뤄진 프롬프트에는 정확히 답변합니다.

  • 챗 참가자(chat participants) 멘션하기: 채팅창에 엣(@ )을 입력하여 챗 참가자를 멘션합니다. ‘챗 참가자’라는 명칭 탓에 헷갈릴 수 있지만, 여기서 말하는 참가자란 실제 사용자 계정이 아니라 코파일럿이 제공하는 가상의 전문가입니다. 각 참가자는 서로 다른 분야를 담당합니다.

    챗 참가자 기능은 채팅 사이드바 및 빠른 채팅 등 코드 편집기 전역을 대상으로 한 채팅에서 사용 가능합니다.
    가령, 코드 편집기의 글꼴 크기를 16px로 변경하고 싶다면 @vscode를 멘션합니다. 내 깃허브 레포지토리 PR에 대한 요약이 궁금할 때는 @github를 찾으면 됩니다.

코파일럿이 웹 검색결과를 참고하도록 하기

@github와 #web 챗 변수를 조합하면, 코파일럿이 마이크로소프트 Bing 검색 API의 응답 결과를 토대로 답변을 생성합니다. 물론 이때에도 프로그래밍과 관련 없는 질문에는 대답하지 않습니다.

챗 참가자 확장

VSCode 확장 마켓플레이스에서 tag:chat-participant를 검색하면 챗 참가자를 제공하는 확장 프로그램 목록을 확인할 수 있습니다.

  • 사용자 지정 지침(custom instructions) 설정하기: 코파일럿을 사용할 때마다 기본적으로 적용되어야 할 프롬프트가 있다면 사용자 지정 지침을 설정하면 됩니다. 코드 생성, 테스트 생성, 코드 검토, 커밋 메시지 생성 등 각 사용 상황에 따른 사용자 지침을 세부적으로 설정할 수 있습니다.

    VSCode 사용 시 항상 적용되어야 하는 프롬프트는 VSCode 설정에서 추가할 수 있습니다.

    단계 1. ⌘ + , 단축키로 VSCode 설정 화면에 진입합니다.
    단계 2. 설정 화면의 상단 검색창에 copilot instructions 를 입력하면 관련된 옵션을 확인할 수 있습니다.
    단계 3. settings.json에 들어가서 자연어로 된 프롬프트를 입력 후 저장합니다.

    프로젝트 단위로 사용자 지정 지침을 설정할 수도 있습니다.
    단계 1. VSCode 설정에서 Use Instruction Files 옵션을 활성화합니다.

    단계 2. 프로젝트 최상단에 .github/copilot-instructions.md 파일을 생성합니다.
    단계 3. 자연어로 된 프롬프트를 파일에 추가합니다.

    • 참고: copilot-instructions.md파일과 VSCode 설정의 사용자 지침 설정을 중복으로 사용하면, 두 프롬프트 설정이 모두 코파일럿에 적용됩니다.

    마무리하며

    사용해 보기 전에는 코파일럿을 막연히 ‘탭만 누르면 알아서 잘 딱 깔끔하고 센스 있게 코드를 짜 주는 AI 툴’ 정도로 이해하고 있었습니다. 아주 틀린 정의는 아니지만, 코파일럿이 제 일을 대신해 줄 수 있는 방법을 탐구하다 보니 제가 코파일럿을 오해하고 있었다는 생각이 들었습니다.

    우선 코파일럿은 ‘탭 누르면 코드 짜 주는’ 자동완성 기능뿐 아니라 AI 채팅 어시스턴트 기능인 코파일럿 챗도 제공합니다. 코파일럿 챗의 사용 범위는 코드 작성에만 국한되어 있지 않습니다. 테스트코드, VSCode, 깃허브 저장소 등 개발 과정 전반에서 발생하는 문제에 대한 해결책도 제안합니다.

    더 큰 오해는 코파일럿이 ‘알잘딱깔센’ 동작한다는 생각입니다. 코파일럿은 순식간에 자동완성 제안을 생성하고, 기술 질문에 대한 대답도 청산유수처럼 생성해 냅니다. 이렇게 생성된 결과물은 대충 훑어보면 결점이 없어 보이지만 실제로는 아닌 경우가 많습니다. 의심 없이 코파일럿의 제안을 받아들이다 보면 잘못된 코드 조각이 코드베이스에 추가되는 불상사가 발생하기 십상입니다.

    코파일럿을 잘 쓰려면 사용 과정에서 두 단계의 검증이 필요합니다. 우선 내가 코파일럿에게 풍부한 컨텍스트와 정확한 지시사항을 전달하는지 점검해야 합니다. 프롬프트에 챗 변수 등의 명령어를 잘 썼는지, 적절한 주석과 변수명이 코드에 포함되어 있는지, 하나의 프롬프트에 여러 가지 요구가 포함되어 있지는 않은지 등을 확인하면 되겠지요. 또 다른 검증은 코파일럿이 생성한 결과물이 쓸만한지 검토하는 것입니다. 이를 위해서는 코드의 어떤 부분이 옳고 그른지 선별할 줄 아는 안목이 필요하고, 안목을 키우기 위해서는 사용하는 기술에 대한 꾸준한 학습이 필요합니다.

    코파일럿의 역할은 개발자를 대신하는 게 아니라 서포터에 가깝습니다. 코파일럿이 일을 어느 정도 처리해주긴 하지만, 그 결과물을 제대로 활용하려면 개발자의 기술적 판단이 반드시 필요하기 때문입니다. 아쉽지만 제가 처음에 기대한 대로 ‘재주는 코파일럿이 부리고, 개발자는 구경만 하기’는 어려울 듯 합니다. 하지만 잘 활용한다면, 단순 반복 작업은 줄이고 좀 더 중요한 문제를 해결하는 데 집중할 수 있는 여유를 얻을 수 있다는 점에서 코파일럿은 충분히 매력적인 도구입니다.

Read Entire Article