Copilot 3개월 사용기

yu minwoo·2024년 3월 7일
1
post-thumbnail

친한 개발자의 권유로 Github Copilot을 사용한지 벌써 3개월이 지났다. 일단 나는 Copilot을 사용하면서 기존과 달리 작업시간이 대폭 줄어들고 내 스스로도 개발 생산성이 배이상 올라가서 지금도 만족하면서 사용하고 있다. 하지만 그런만큼 느낀 점이 많았던 만큼 이를 정리해놓고자 한다.

1. Github Copilot

Github Copilot은 Github와 OpenAI가 협력해 GPT 엔진을 기반으로 개발한 인공지능(AI) 코딩 어시스트 툴이다. 개발자가 에디터 또는 IDE에 적당한 코드를 입력하면 앞으로 어떻게 코드가 작성될 것인지를 추천해 주고 개발자가 원하는 구조의 코드구조가 추천되면 그 코드가 자동으로 입력되는 방식으로 사용할 수 있다.
Copilot은 C++, Python, Go, JS/TS Ruby, Swift, Java, Kotlin, Rust, PHP 등 한번이라도 들어본 언어는 모두 지원하며 NeoVim, VSCode, Visual Studio, Jetbrains 계열 모든 IDE(IntelliJ, PhpStorm, PyCharm, WebStorm 등) 에서 사용할 수 있다.
=> Android Studio도 사용 가능(IntelliJ를 기반으로 개발됬기 때문)

Xcode의 경우 사용은 가능하지만 위에서 언급한 에디터, IDE 보다는 연결 절차가 복잡하다.

2. Copilot의 대표적 기능

1. 코드 자동 완성

변수의 이름, 함수, 클래스 등을 자동으로 완성해준다.

2. 주석을 통한 코드 예시 제공

주석에 입력된 내용을 통해 입력될 코드의 예시를 제공해준다. 물론 코드를 작성하고 있는 파일의 확장자에 따라 언어를 맞춰서 생성한다.

3. Copilot Chat

VSCode를 사용하는 경우 Github Copilot 익스텐션을 설치하면 바로 옆에 "채팅"이라는 탭이 붙게 된다. 이건 VSCode안에 개발환경에 최적화된 GPT가 들어갔다고 생각하면 된다. 이걸 사용하면 굳이 GPT 사이트에 들어가서 물어보고 다시 에디터로 돌아오는 수고를 좀 덜 수 있다.

나는 VSCode만 사용해서 다른 에디터나 IDE에서는 채팅창이 어떻게 나오는지 잘 모르겠다.

3. Copilot 사용에 대한 유의사항

이 부분은 내 개인적인 생각이라 사람마다 다를 수 있다.

1. 저연차 개발자의 경우 사용하지 말것

신입 또는 2년 이내 저연차 개발자의 경우 Copilot을 사용하지 않는 것을 권장한다.
저연차 개발자는 내가 개발하고 있는 환경이 어떻게 구성되어 있고 이 프레임워크가 어떻게 동작하는지 다 파악하지 못한 상태인 만큼 Copilot이 추천해준 코드가 맞는 건지 틀린 건지를 판단할 수 있는 실력이 부족하기 때문이다.
Copilot도 완벽한 게 아니기 때문에 저연차 개발자가 Copilot이 추천해준 코드를 그대로 받아들이면 운영중인 서비스 또는 프로젝트에 심각한 문제를 일으킬 수 있고 특히 신입 개발자의 경우 어디서 문제가 발생했는지 못 찾을 가능성이 매우 높다. 따라서 최소 이 환경 또는 언어에 어느정도 익숙한 경력 2년 이상의 개발자부터 Copilot을 조금씩 사용하는 것을 추천한다.
물론 고연차 개발자라도 자기 학습을 위해 새로운 개발환경을 공부한다면, 그 환경에서도 Copilot을 사용하지 않는 것이 좋다.(위에서 언급한 거랑 비슷한 맥락도 있고 무엇보다도 본인의 스터디에 전혀 도움이 안됨)

2. 사용시 호불호가 갈릴 수 있다.

아무리 Copilot을 사용해도 될 정도의 실력이 갖춰진 개발자라도, Copilot이라는 기능 특징 상 사용하는 사람마다 호불호가 갈릴 수 있다. Copilot은 개발자가 코드를 입력하면서 앞으로 입력될 가능성이 높은 코드를 계속해서 추천해서 내보내주기 때문에 이걸 편하게 받아들일 사람이 있고 불편하게 받아들일 사람이 있을 수 있다.
또, Copilot이 유료(월 $10)라는 점 때문에 사용이 망설여질 수 있다. 정말 궁금하다면 일단 유료 등록을 하고 한달만 사용해본 다음에 결정하는 것도 좋을 것 같다.(유료 등록을 해도 첫 한달은 체험 기간이라 금액이 안나가기 때문)

3. Copilot이 작성해준 코드는 반드시 테스트를 거칠 것.

위에서 이야기 했다시피, Copilot이 완벽한 게 아니기 때문에 추천해준 코드의 성능에 문제가 있는 코드일 수도 있고 무엇보다도 변수 호출 시 본인이 선언한 변수명이 아닐 수 있다. 따라서 Copilot이 코드를 작성해준 다음에는 본인의 의도대로 기능이 동작하는지 테스트를 해봐야 한다. 특히 JavaScript, Python의 경우 Copilot으로 작성된 코드라면 반드시 테스트를 거쳐야 한다.
=> 동적타입 언어 특성상, 변수 선언이 잘못된 걸 모르고 넘어갔다가 런타임 에러로 이어질 수 있다.

4. VSCode 사용시 단축키 배열이 바뀔 수 있다.

VSCode에서 Copilot 익스텐션을 설치할 경우 내가 설정해놓은 단축키 배치가 바뀔 수 있다. 만약 나만의 단축키를 설정해 사용하고 있었다면 자주쓰는 단축키 기능이 그대로 살아있는지 확인해봐야 한다.
나도 이클립스 단축키에 익숙해서 VSCode에서 "Eclipse Keymap"을 설치해 사용하고 있었는데 Copilot 익스텐션을 설치하면서 자주쓰는 단축키 배열이 바뀌어 다시 설정해야 했다.(모든 단축키가 바뀌는 거는 아님!!!!)

5. 전적으로 의존하게 되선 안된다.

내가 예전에 스쿠버 다이빙을 배우면서 선생님이 해준 말이 있는데, 가급적 자격증 시험을 보면 처음부터 끝까지 필리핀에서 보지 말라는 것이다. 필리핀이 안 좋은 나라라서가 아니라 원래는 다이빙을 하면 장비 조립 같은 거를 내가 직접 해야 하는데, 필리핀에서는 필리핀 사람들이 조립을 전부 다 해주다보니 나중에 자격증을 따도 내 스스로 장비 조립을 못해 필리핀밖에 못간다는 것이다. 그래서 실제로 필리핀에선 "황제 다이빙"이라는 말이 나오곤 한다.

실제로 다이빙을 배우면 공기탱크랑 장비 조립법은 익숙해질 때까지 반복해서 교육받는다.

내가 3개월동안 사용해온 Copilot 역시 마찬가지이다. 나도 Copilot을 통해 작업 효율성을 높일 수 있었지만 그 이상이 되지 않으려고 노력한다. 그 이상이 되어 전적으로 이 툴에 의존하게 되면 나중에 내가 이해를 못하는 것을 넘어 치명적인 오류가 발생할 수 있게 된다. 그래서 내가 위에서 저연차 개발자는 사용하지 말라고 이야기 한 이유가 저연차 개발자면 이 개발환경이나 언어에 대해 잘 모르기 때문에 Copilot에 전적으로 의존하게 될 수 있기 때문이다. 따라서 Copilot을 사용할 때는 내 작업을 도와주는 보조수단으로만 활용하고 그 이상이 되지 않도록 내 스스로 노력해야 한다.

4. 느낀 점

Copilot을 사용하면서 기존에 내가 일일이 입력해야 했던 반복되는 코드를 AI가 알아서 작성해주니 작업속도가 2배 이상 빨라지면서 나는 상당히 만족하면서 사용하고 있다. 대략적으로 내가 의도하는 코드의 한 60% 정도는 맞춰서 추천이 이루어지는 것 같다. 하지만 반대로 40% 정도는 내가 의도한 코드가 나오지 않았다는 의미이기 때문에 사용할 때도 주의를 기울여서 사용해야 한다는 것을 느꼈다. 특히 Github에 올라와있는 프로젝트를 포함해 내 프로젝트 안에서 작성된 코드 패턴을 학습해서 반복되는 구조의 코드 추천은 거의 100% 맞게 나오는 것이 상당히 인상적이었다.

AI가 사람 개발자를 대체할 것이다에 대한 생각

언론에서는 이제 몇년 안에 AI가 사람 개발자를 대체할 것이다라고 말을 하고 있지만 나는 이에 대해서는 반반인 것 같다. AI가 개발자를 대체할 수 있다는 점에는 동의하지만 몇년 안에 그게 현실화할 것이라는 것에는 반대다. 프로젝트의 전반적인 흐름을 파악하고 앞으로 발생할 가능성을 대략적으로 예측해 세부적인 프로세스 단위로 동작하게 만드는 것이 프로그래밍이기 때문에, 그건 아직까지는 사람의 임기응변이 있어야 효율적인 프로그래밍이 가능하다고 생각한다. 물론 앞으로 몇십년 뒤에도 그게 불가능하리라는 보장은 없지만...

0개의 댓글