grep

AI/ML

Github Copilot 사용기

장정호Walter(월터) / 주문결제개발팀여기어때

2023년 4월 16일

원문에서 보기 ↗

결론

내가 감동한 순간

개발자답게 돈을 벌기 위해 코로나 이후 한참 불장이었던 시점에 자동 매매 프로그램을 만들어 주식과 코인 투자를 하고 있다. 좌절과 희망을 겪으며 프로그램을 업데이트해왔다. 그러던 중, ChatGPT 유행에 연관된 Github Copilot를 알게 되었다. 플러그인을 설치하고 기초 데이터를 바탕으로 분석 결과를 얻기 위한 모듈 개발을 하고 있을 때다. 분석 데이터 중 자산군별 상관계수라는 게 있다. 자산 배분 투자를 위해서 꼭 필요한 정보다. 아래 표가 자산군별 상관계수 예시다. 아마 자산 배분 투자에 관심 있는 사람들은 익숙할 거다.

일단 두 자산군별 상관계수를 구하는 메소드를 만들었다.

fun calculateByMonth(
   stockCode1: StockCode, 
   stockCode2: StockCode, 
   dateRange: DateRange): CorrelationResult
{ ... }

그다음에는 위에 표처럼 여러 자산군에 대한 상관계수를 구하는 메소드가 필요하다. fun calculateByMonthMatrix을 입력하는 순간 아래 이미지처럼 코드가 추천됐다.

Copilot이 자동으로 만든 코드

순간 나도 모르게 와~ 하는 소리가 나왔다. 1분 정도 모니터만 쳐다봤다. 이게 특이점이라는 건가? 내 마음을 기계에 읽힌 것 같다. 물론 이 추천 코드는 완벽하지 않고 최적화가 되어 있지 않다. 상관계수 표는 대칭행렬이기 때문에 중복 연산에 대해 제거가 필요하다. 그래도 이게 어디인가!

그럼 단점은 없냐?

사용하면서 짜증 날 때가 많다. 필요도 없는 추천을 해서 코딩하는데 흐름이 끊인 적이 여러번이다. 심지어는 괄호 여닫는 것조차 제대로 안 돼 문법 오류가 빈번하게 발생한다. 이런 것들 때문인지 내 주위에 사용하고 있는 개발자들은 별로 없다.

그동안 사용한 개발도구들

직업으로 개발을 시작할 때 EditPlus와 UltraEdit를 사용했다. 아주 잠깐 JBuilder를 사용했지만, 속도가 너무 느려 일찍 접었다. 그때만 해도 EditPlus만 가지고도 개발하는데 불편함이 없었다. 그러던 중 ‘테스트 주도 개발’이란 책에 들어 있는 LineReader라는 프로그램을 TDD에 맞게 개발하는 시연 동영상을 봤다. 동영상을 보고 TDD 기법보다 현란하게 Eclipse를 사용하는 모습에 충격을 받았다. 그중에서 리팩토링 기능은 정말 압권이었다. 나는 어렵게 정규표현식을 사용해서 변수, 메소드명을 바꿨는데 Eclipse를 이용하면 너무 쉽게 된다. 도저히 불가능할 것 같은 메소드 파라미터 순서 바꾸는 것도 순식간에 된다. 그날로부터 Eclipse를 사용하기 시작했다.

다행히 잃어버리지 않았지만, CD를 읽을 수 있는 컴퓨터가 없네

Eclipse를 최고의 개발 도구로 알고 지낸 지도 몇 년이 지났다. 개발자 콘퍼런스에 가도 유튜브 동영상을 봐도 대부분 개발자가 IntelliJ를 사용하고 있다. 그때만 해도 아직 우리나라는 Eclipse를 많이 썼다. 하지만 대세는 IntelliJ로 바뀌고 있었다. 내 주위에 점점 IntelliJ를 많이 사용한다. 10년 가까이 Eclipse를 사용하다 IntelliJ를 사용하려니 너무 힘들다. 익숙한 단축키, UI, 설정을 버리고 IntelliJ를 쓰려고 하니 몸에 맞지도 않는 옷을 입은 것처럼 답답했다. 적응하는데 1년 정도는 걸린 것 같다. EditPlus에서 Eclipse는 쉽고 빠르게 적응했는데, IntelliJ로 넘어가는 건 너무 어려웠다.

그럼, 개발자들은 어떻게 될까?

짤방 — Bing Image Creator로 만듦

개발의 영역을 어디까지 보느냐에 따라 다르겠지만 조만간에 인공지능이 ‘코딩’은 인간보다 잘할 것 같다. 그렇게 되면 개발 생산성은 놀라울 정도로 빠르게 높아질 것이다. 역사적으로 기술 과학의 발전은 생산성 향상을 가져왔다. 그런데도 수요는 그보다 더 많이 증가했기 때문에 일자리는 늘어나고 직업은 다양해졌다.

copilot을 사용하면서 어쩌면 생산성 향상이 수요를 압도할 수 있을 것 같다는 생각이 들었다. 어떤 이는 ‘에이 별거 아니네. 멍청하네. 개발하는데 오히려 방해가 되네’ 이렇게 생각할 수도 있다. 맞는 말이다. 아직 부족한 점이 많이 있다. 그렇지만 발전 가능성은 무궁무진 하다는 거다. 인공지능은 ‘인공지능의 겨울’이라는 몇 번의 부침을 겪었다. 유비쿼터스, 3D 텔레비전, NFT처럼 한때 유행되다 시들해진 경험이 있다. 그러나 이번에는 달라 보인다. 스마트폰처럼 내 곁에 언제나 있는 기술이 될 가능성이 크다.

수요를 초과하는 생산성 향상은 개발자 수를 감소시킬 수 밖에 없다. 이것이 자본주의의 논리다. 세 명이 할 일을 한 명으로도 넉넉히 할 수 있는 때가 머지않아 보인다.

개발자라는 직업은 기술 발전 덕으로 새롭게 생겨났지만, 먼 훗날 기술 발전 때문에 사라질 수도 있다. 그때가 궁금하긴 하지만 내가 그 모습을 볼일은 없을 것 같다.

번외: 인공지능에게 평가 받기

ChatGPT에게 내가 쓴 글에 대해서 평가를 받았다. (GPT4 기준)

질문: 이 글의 완성도를 평가한다면 어떻게 봐?

이 글의 완성도는 전반적으로 중간 수준이라고 평가할 수 있습니다. 글의 장점과 단점을 요약하면 다음과 같습니다.

장점:

1. 주제에 대한 개인적인 견해와 경험이 잘 표현되어 있습니다.
2. 글의 흐름이 자연스럽고 이해하기 쉽습니다.
3. 개발 도구와 인공지능 기술의 발전에 대한 비교를 통해 흥미로운 관점을 제시하고 있습니다.

단점:

1. Github Copilot에 대한 기본적인 정보와 구체적인 기능 소개가 부족합니다.
2. 일부 구절에서 문장 구조가 다소 어색하거나 글의 주제와 직접적인 연관성이 떨어지는 부분이 있습니다.

글의 완성도를 높이기 위해서는 다음과 같은 개선 사항을 고려해 볼 수 있습니다.

1. Github Copilot의 기본적인 정보와 구체적인 기능을 소개하는 내용을 추가합니다.
2. 글 전체의 구성을 좀 더 체계적으로 정리하여 독자가 이해하기 쉽도록 합니다.
3. 문장 구조를 개선하고, 주제와 관련성이 낮은 내용을 수정하거나 삭제하여 글의 일관성을 높입니다.

이러한 개선 사항을 고려하여 글을 수정하면, 완성도가 더 높은 글이 될 것으로 예상됩니다.

중간 수준이라고 생각해주니 고맙다. ㅡㅡ;