[HanBitN MSA Season 1-4] 코딩 친구 넘어 코딩 선생님으로 Github Copilot 리뷰

Changmin Lee·2023년 9월 22일
0

한빛MSA

목록 보기
4/10
post-thumbnail

HanBitN MSA?

한빛N MSA(Micro Seminar Assemble)는 한빛미디어 디지털콘텐츠개발연구소에서 준비한 세미나 시리즈다. 학교와, 학원 등에서 다루지는 않지만, 현업에서 일을 할 때 필요한 지식, 기술, 정보 등을 전달하는 걸 목표로 진행되는 세미나다.


코딩 친구 넘어 코딩 선생님으로 Github Copilot

새로운 환경, 처음보는 도메인에 익숙해지기 전까지 '어떻게 하면 나의 생산성을 다시 끌어올릴 수 있을까?'와 같은 고민을 하던 중 공개된 Github Copilot. 오늘 세미나는 Copilot을 사용해 어떻게 퍼포먼스를 끌어올렸는지 그 경험담을 공유하는 시간이었다.

본 게시글에 사용된 강의 자료는 한빛미디어의 지원을 받았습니다.


AI Everywhere

요즘은 무슨 서비스만 해도 'AI를 베이스로 한 !@#$%~', 'AI가 생성한 !@#%'하는 이야기들이 너무 심심치않게 들린다. 유튜브에서 AI 자막을 달거나, 블로그 썸네일을 위해 AI 그림을 생성하는 것만 봐도 이제는 너무 당연하게 AI가 생활속에 녹아있다고 볼 수 있다. 이런 시대에서 우리는 지금 어떻게 개발을 하고 있는지 돌아보자.


그럼 개발은?

'개발을 어떻게 하고 계신가요?'
누구라도 이런 질문을 받는다면 기술서를 보거나, 기술 블로그, 유튜브, 테크 컨퍼런스, 밋업에 참가한다는 답변을 내놓을 것 같다. 여기서 좀만 더 솔직하게 접근하자면 아래 루틴이 아닐까?

  1. IDE를 키고 기지개를 편다.
  2. 모르는 부분을 스택오버플로우에 잘 찾아보며 열심히 코드를 짠다.
  3. 돌려보고 에러가 나면, 일단 에러메시지를 복붙해 찾아본다.
  4. 추천을 많이 받거나, 코드가 있는 답변을 복붙해 다시 돌려본다.
  5. 역시나 안돌아간다. 다시 돌려본다음에 그제서야 답변을 읽어본다.
  6. 3~5의 과정을 반복한다.

성장하는 것은 그럴싸한 질문 잘하기

저런 루틴을 돌다보면 어느 순간 '이게 정말 내 개발 능력이 오르는걸까, 아니면 구글링을 잘하는 질문능력이 오르는걸까?' 하는 여러가지 복잡한 심경이 든다.

근데 반대로 생각해서 내가 뭘 만들고 싶은지, 그리고 이 결과물이 어떠한 모습인지 모른다면 과연 질문을 잘 던질수 있을까? 개발자가 코딩을 잘하는 것도 중요하지만 결국 하고자 하는건 문제해결이기에, 이런 부분에서 정말 적절하고 좋은 질문을 던지는게 개발자에게 정말 중요하다고 말씀하셨다.

좋은 질문을 던졌다면, 이젠 질문에 대한 답을 Copilot으로 받아보자!


Copilot?

Github의 공개 코드를 포함하여 공개적으로 사용가능한 코드의 자연어 텍스트 & 소스 코드로 학습한 AI를 기반으로 한 페어 프로그래밍 도구. 요약하자면 코드를 대신 짜주는 좋은 친구다.

코드를 대신 짜준다 하면 먼저 떠오르는건 사실 IDE의 Auto complete 기능이다. 보통 아래와 같은 기능을 지원하는데, 우리가 메모장에 안쓰고 비싼 돈 내고 IDE를 사용하는 이유라고도 볼 수 있겠다.

  • Type matching completion
  • Statement completion
  • Auto import
  • ...

하지만 IDE는 자동으로 코드를 써주는 것이 아니라, 내가 뭔가를 입력해야만 그에 맞는 기능들을 보여준다. 사용자가 작성하는 코드의 context를 파악한 뒤 추천하는게 아니기에, 마치 “니가 뭘 좋아할진 모르겠지만 우린 일단 되게 많은 옵션을 가지고 있어. 너가 알아서 골라"라고 말하는 꼴이다. 이렇게 되면 IDE의 Auto complete 기능이 우리가 요즘 이야기하는 AI와 같다고 볼 수 있을까?

이와 반대로 Copilot은 처음에 원하는 것을 주석으로만 작성하면 요구사항에 맞는 코드를 전부 작성해준다. 심지어 코드를 뽑아내는 중간에 사용자에게 계속 더 좋은 방법을 제안하기도 한다.


Copilot 많이들 쓰나요?

'확실히 좋아보이긴 하는데,, 정말 남들이 많이 쓰는걸까?'

길거리에서 아무나 붙잡고 '사람으로 가득한 50년 전통의 노포 맛집' vs 'SNS 홍보글로 가득한 일명 SNS맛집'을 두고 밸런스 게임을 하자면 누구나 전자를 택할 것이다. 남들이 많이 간다는 것은 어느정도 검증됐다는 말이니까.

마찬가지로 우리가 Github에서 오픈소스를 쓸때 스타 카운트를 먼저 보는 것 처럼, Copilot가 아무리 좋다 하더라도 검증이 안됐거나 점유율이 낮다면 별로 내키지 않을게 분명하다. Copilot을 사용한 개발자들이 어떤 부분에서 만족했는지 알아보자.

위 아티클은 GitHub Copilot이 개발자의 생산성과 행복에 미치는 영향을 리서치한 뒤 올라온 글이다. 발표에서 언급된 내용을 요약하면 다음과 같다.

  1. Copilot은 프로그래머가 작성하는 코드의 40%까지 작성 가능하며, 5년 이내에 80%까지 향상될 예정.
  2. 지루한 반복 작업을 Copilot에 맡김으로써 생산성이 증가하고, 작업의 흐름을 벗어나지 않는 등 멘탈 스트레스를 많이 감소시켜 만족한다는 평이 많음.
  3. 그중에서도 가장 만족스러운 부분은 속도. 같은 task를 두고 Copilot을 사용한/사용하지 않은 개발자들의 시간 차이를 비교해보면 절반 넘게 차이가 남.

개발자가 대체되는건가요?

"인간 시대의 끝이 도래했다."

게임 <리그 오브 레전드>의 챔피언 블리츠크랭크의 대사다.

되게 빠른 속도를 자랑하고, 반복되는 지루한 작업 역시 다 Copilot이 해주는 것을 보며 '내 밥그릇을 빼앗아 가는 존재 아닌가?' 하는 생각이 든다. 실제로 몇몇 직업이 AI의 출현으로 대체되었던걸 봐왔기 때문에. 그렇지만 아티클에서는 Copilot은 개발자를 대체하는 것이 아니라 작업의 흐름을 유지시켜주는 것을 목표로 한다고 나와있다. 다시 말해 소프트웨어 개발자가 고부가가치의 업무를 하도록 도와주는 역할이다.

네비만 찍으면 알아서 운전해주는 테슬라의 오토파일럿 같이 Copilot 역시 부조종사와 같다. 내가 궁극적으로 만들자 하는 것을 단순히 tab키를 누르며 결정하면된다. 그렇지만 어디까지나 Copilot도 AI다. 잘 가다가 삼천포로 빠질때 방향을 잘 잡아주어야 하는데, 이는 개발자의 역할이다. 이런 의미에서 개발자가 대체되는 것이 아닌, 부조종사를 데리고 내가 원하는것에 얼마나 빠르고 재밌게 도달하느냐가 관건이라 하셨다.

이미 기술은 우리보다 먼저 앞서 달려나가고 있다. 그 말인즉슨 그 기술을 안쓰게 되면 그만큼 뒤쳐진다는 소리다. 흐름에 뒤쳐지지 않기 위해서라도 더 효율적으로 개발하는 방법을 찾아야 할텐데, Copilot이 정답이 될 수 있을 것 같다.

Copilot 실습

💡 안내사항
실습은 personal plan 사용자 대상으로 진행됐다. Copilot은 VS Code, IntelliJ, PyCharm 등 다양한 IDE랑 같이 결합할 수 있으니 평소 사용하는 IDE에 맞는 extension을 찾아 세팅하자.

실습 내용은 유저 데이터가 들어가있는 더미데이터를 만들고, 개인정보인 유저데이터를 마스킹하는 것이었다. 물론 Copilot만 이용해서! 자세한 내용은 한빛미디어에서 제공한 영상을 확인해보자.

실습 과정에서 Copilot을 사용하기 위해선 어떤 context를, 어떻게 던져줘야 하는지, Copilot이 작성한 코드에서 에러 발생시 어떻게 해결하는지를 볼 수 있었는데, 이 친구가 내놓는 코드가 확실히 개발자를 대체한다는 느낌보다는 내가 풀고자 하는 문제를 도와주는 조수의 느낌이 더 강했다.

아무래도 내가 짠게 아니다보니 100% 요구사항대로 짜는 경우는 없을 것이다. 실제로도 내가 A라는 요구사항을 던졌는데 B로 해석해 엉뚱한 코드를 던지거나, 내가 생각한 방식과는 다르게 풀어주는 경우가 대표적인 경우로 꼽힌다. 그래서 더더욱 개발자가 중간중간 길잡이 역할을 해줘야 한다.

평소에 잘 짜지않는 쉘 스크립트를 꼭 개발해야 하는 경우를 생각해보자. 문법도 긴가민가하고 많이 가물가물해 시간을 들이게 되는데 이런 경우에 우리의 코딩친구를 잘 활용해 시간과 멘탈을 지킬 수 있지 않을까? 이런 면에서는 매우 좋은 것 같다.

보안 이슈

Copilot을 사용할때 신경쓰이는게 있다면 아무래도 보안이슈다.

아무래도 공개된 코드와 사용이 가능한 코드에 대해 AI 학습을 계속 진행하기 때문에, 내가 속해있는 환경에 따라 이 부분이 굉장히 중요한 이슈가 될 수 있다. 당연한거지만 회사에서 사용하는 경우 보안팀과 꼭 이야기해서 사용 여부를 확인하자. 만약 내 데이터가 학습 데이터로 쓰이지 않기를 원한다면 Copilot Settings에 들어가 토글을 꺼주면 된다.

참고로 공식문서에서 명시된 실제 수집 데이터의 종류는 다음과 같다.

  • 사용자 참여 데이터(사용자의 상호작용: 이벤트, 편집시간, 참여도 등)
  • 프롬포트(어떤것들을 요구했는지에 대한 정보, 어떤게 제안됐는지)
  • 코드 스니펫

나의 코딩 선생님 copilot X

Copilot이 코딩 친구였다면, Copilot X는 코딩 선생님이 아닐까 싶어요.

자신의 미래 개발환경을 바꿀 수 있겠다고 생각하게 됐다는 Copilot X.

지금도 강연자 분이 정말 많은 도움을 받으며 배우고 있는 도구라고 한다. 코딩 친구에서 선생님으로 진화한 Copilot X의 경우엔 GPT-4 모델을 활용한다. 마치 chatGPT를 사용하듯 조금 더 파워풀하게 사용할 수 있는 것이다. X가 무엇이든 될 수 있다는 의미를 내포한 것 처럼 다양한 기능을 제공하고 있다.

세미나에선 Copilot Chat, Copilot PR, Copilot CLI를 언급하셨는데, PR을 올려두면 Copilot이 보고 개선하면 좋을 부분을 제안하고, 심지어 테스트 코드가 빠졌다면 해당 테스트도 알아서 짜줘서 로직을 검증할 수 있다는게 제일 기억에 남는다. 조만간 PR 코드 리뷰에도 Copilot이 관여하지 않을까 싶다.

정말 MS에게 감사해지는 순간이다.

맛집을 찾아가면 항상 줄이 길게 있어서 발걸음을 돌렸던 경험이 있는데, Copilot X의 모든 기능 또한 웨이팅을 해야한다. 되게 아쉬운 부분이지만 당장 내가 사용하지 않더라도 먼저 대기열에 이름을 올려두자.

실제로 사용해보자!

Github Student Pack을 통해 Copilot을 무료로 사용가능하다는 정보를 주변에서 들어 직접 해봤다. 요즘 PS(알고리즘) 문제 풀이에 한창 맛을 들인터라, Copilot을 통해 문제 풀이가 가능한지 우선 테스트해봤다. 테스트에는 Copilot Chat 기능을 사용했다.

우리의 코딩친구 Copilot에게 문제만 던져주고 정답 코드를 뽑아내라고 요청해봤다. 던져준 문제는 "하노이의 탑"으로, solved.ac 기준으로는 G5로 측정되어 있는 문제다. 단순 구현 문제는 아니었기에 그래도 이상하게 코드를 내놓지 않을까 싶었는데 실제로 제출했을때 통과하는 코드를 뽑아줬다.

물론 한글로 설명해달라고 해도 잘 설명해준다.

같은 요청을 여러번 하면 계속 다른 코드를 뽑아주긴 했지만, 전부 문제를 통과하긴 했다. 그리고 세미나에서도 나온 내용이지만 어디까지나 AI이기에 완벽하지 않다는게 흠이다. 문제를 이상하게 해석하거나, 분명 DFS를 사용해 풀이하는 그래프 문제인데 팰린드롬 문제를 해결하는 코드를 뽑아내는 경우도 있었다. 옛날에 나온 문제는 쉽게 푸는데 최근에 나온 문제는 못푸는걸로 봐선 만만한거만 잘 푸는 것 같다.

예를 들어 위 사진과 같은 경우다. 코드포스의 XOR Palindromes문제를 던져줬더니, 엉뚱한 답을 던지는게 아닌가... 아무래도 문제를 잘못 이해한게 아닌가 싶어 다른 질문들을 던졌지만 돌아오는 답은 똑같았다. 내가 질문을 더 잘했으면 정답 코드가 돌아왔을까?

마지막으로 최근에 짠 크롤링 코드를 설명해보라고 했는데 얼추 잘 나온다. 사진 아래쪽을 보면 파란색으로 "What is Tesseract OCR?"라 적혀있다. 이 제안을 누르면 쭉 설명을 해주고 부가적인 질문을 계속 던져주는데, 세미나에선 이런 부분들을 통해 우리가 더 배울 수 있다며, Copliot X가 선생님의 역할을 할거라고 언급했다.


계속 기다려야 하나요?

다행히도, 혼자 쓸 수 있다고 자랑하는 세미나는 아니었습니다.

이렇게 말해놓고 못쓰면 너무 아쉬운게 사실이다. 그렇지만 Copilot을 대체할 수 있는 친구들을 먼저 경험해보고, 나랑 더 맞는것들을 사용해보자. 세미나에서 소개한 대체제들을 간략히 정리했다.

Codeium

만약 Chat 기능을 빠르게 써보고 싶다면 추천한다.

  1. Personal User의 경우 Copilot과 달리 무료다.
  2. Auto-Completion, Chat Assistant 기능을 지원한다.
  3. Search 기능을 베타로 제공한다. (일종의 내 코드를 베이스로 하는 구글링 느낌)

Tabnine

보안 이슈가 걱정되는 개발자에게 추천하는 친구다.

  1. 무료 플랜을 제공한다.
  2. 로컬머신에서 모델이 돌아가는 방식을 지원한다!
    그래서 tabnine 서버에서는 모델만 다운받고, 실제로 Auto-completion, Suggestion 기능은 로컬에서 돌아가게 하는 방식을 할 수 있다.

지금까지 나온 내용을 정리하자면 위와 같다. 세미나에서 듣기로는 Copilot 정도의 Auto-Completion 기능을 쓰기 위해서는 조금 돈을 얹어야 한다고 한다...

codeium이나, tabnine을 실제로 구글링해보면 바로 "[대체제] vs copilot" 키워드가 뜬다. 위 요약 내용도 좋지만 실제로 찾아서 자신에게 맞는 것을 찾아보자!


마무리 & 후기

'AI가 다 짜주면 코딩 실력이 안늘어나는게 아닐까?'
'코딩을 직접하지 않고서 내가 잘 이해했다고 말할 수 있을까?'

개발자로서의 역할은 시대에 맞춰 변화해야 한다. 확실히 클라우드와 같은 기술의 발전으로 인해 우리가 더 편리하게 개발을 진행할 수 있게 되었지만, 그렇다고 해서 우리의 역할이 작아졌다거나 별거 없는 것은 분명히 아닐 것이다. 오히려 우리는 이러한 기술을 활용하여 더 큰 문제에 도전해야 한다.

예전 개발자들의 역할이 신기술을 만들고 거인을 점점 키우는 과정이라 한다면, 이 시대에는 아무래도 거인의 어깨에 올라타 더 빨리, 더 멀리 나아가는게 개발자들의 역할이고 태도여야 할 것 같다.

Copilot X는 코딩 친구에서 선생님으로 진화한 녀석이다. 이제 더 이상 단순한 코드 제안을 넘어, 우리가 개발자로서 성장하거나 문제 해결에 있어서 날개를 달아주는 가장 소중한 동반자로 볼 수 있겠다. Copilot X와 함께 더 큰 문제, 더 가치있는 문제를 푸는 코딩 여정을 꿈꿔보는게 어떨까?


해당 게시글을 작성하며 많이 스킵한 부분이 있다. Copilot 실습 내용이나, Copilot X와 관련된 자세한 내용을 확인하고 싶다면 아래 링크로 들어가 한빛미디어에서 공개한 VOD, 세미나 자료를 확인해보도록 하자.

https://www.hanbitn.com/product/msa2003-copilot/

profile
저 이러고 삽니다.

0개의 댓글