[후기] 웹 개발자의 Cursor AI 사용기

copilot + Intelij IDEA와 비교해Cursor AI를 사용하면서 느낀 점

Posted by ash tensor on November 02, 2024 · 9 mins read 카테고리
카테고리 링크
📁 WEB 📁 리뷰

[후기] 웹 개발자의 Cursor AI 사용기

1. 서론

원래 내 개발환경은 Intelij에서 github copilot을 추가해서 사용하고 있었는데 처음에는 무척이나 편리하다고 느꼈다. 그런데 시간이 지나면서 코파일럿이 뭐랄까, 거슬리는 점이 많아지기 시작했다.

첫번째로 맥락 부분에서 이야기하자면 코파일럿은 맥락을 파악하기 보다는 그냥 내 코드 베이스나 해당 코드 파일에서 이미 존재하는 코드를 단순 참고, 및 붙여넣기 하는 정도의 수준이었다.

코파일럿을 사용하면서 느꼈던 가장 큰 문제가 되는 점은, Copliot이 오류가 발생하는 코드를 작성한다는 점이다. 그러니까 맥락성이 너무 강한 나머지, 무분별한 복사 및 붙여넣기로 오히려 오류가 발생하는 코드를 자동완성하는 경우가 너무 많았다. 예를 들어서, 해당 클래스에는 .isFalse() 메소드가 없는데 이를 자동완성해 버리는 경우같은 게 그렇다. 또 내 코드를 참고해서 그냥 복사 붙여넣기 하는 수준의 자동완성을 제공하는 경우도 많았다. 예를 들어서, 내가 해당 코드 파일에 testToken 이라는 변수를 사용했다고 치자, 내가 다시 testToken을 치면 맥락을 단순히 내가 썼던 코드로 자동완성 해 버린다.

또 이 문제도 좀 치명적인 문제였는데, 추천해주는 코드가 Depricated된 코드인 경우가 너무 많았다. 이 부분은 코파일럿이 GPT, 언어모델을 사용하기 때문에 발생하는 문제라고 느껴지지만 그래도 짜증나는건 마찬가지다.

두번째 큰 문제점은, Copilot Chat이 너무 성능이 떨어져서 쓰기가 불편했다는 점이다. 진짜 너무 쓸모없고 오히려 사용에 있어서 개발 시간을 줄여주는 도구가 아니라 여기서 대답을 못찾아서 시간 낭비를 하고 더 많은 시간을 써야하는 경우가 너무 많았다.

지금 gpt 4o는 물론이고, 클로드 및 라이트형 모델들 중에서도 오히려 더 좋은 성능을 보여주는 모델이 수없이 많은데 코파일럿이 이런 성능을 보여주는게 너무 아쉬웠다. 아무리 자세히 대답을 요구해도 대답이 너무 간략하고, 완전히 헛소리를 하는 경우도 많았고, 한글로 질문했는데 계속 이악물고 영어로 대답하는 경우가 많았다.

이해는 한다. 왜냐하면 코파일럿의 시스템 메시지가 영어로 되어 있을테니까. 그래도 계속 한글로 대답을 하라고 채팅을 치는것도 너무 짜증나는 부분이다.

코파일럿이 gpt-4를 사용한다고 하는데 왜 이런 성능을 보여주는지 잘 모르겠다.

물론 코파일럿이 없는 것보다는 있는게 개발 속도가 훨씬 빨라서 좋기는 하지만, 10$를 내고 사용하는데 그냥 참고용으로만 쓰는 것도 아깝고, 너무, 너무 성능이 떨어져서 쓰기가 불편했다.

그러던 참에 Cursor AI를 알게 되었고, 이 때문에 코파일럿 대신 Cursor AI를 사용해 보았다.

2. Cursor AI

장점

장점은 아무래도 일단 성능이다.

Cursor AI는 코파일럿과 비교했을 때 코드 자동완성과 챗봇 기능 모두에서 훨씬 더 뛰어난 성능을 보여주고 있다. 특히 맥락 파악 능력이 뛰어나서, 기존 코드베이스의 맥락을 정확하게 이해하고 이에 맞는 제안을 해준다는 점이 인상적이다.

예를 들어, JWT 토큰 발급 코드를 작성할 때의 경우를 보자. 코파일럿은 내가 이미 ‘TokenProvider’라는 클래스명을 사용하고 있음에도 불구하고, 일반적으로 많이 사용되는 ‘JwtTokenProvider’와 같은 이름을 무분별하게 제안하곤 했다. 반면 Cursor AI는 기존 코드의 네이밍 패턴을 정확히 파악하고 일관성 있는 제안을 해준다.

최신 언어 모델을 사용해서인지 코파일럿보다 훨씬 더 정확한 코드 자동완성을 제공해주기 때문에 단순히 이미 존재하는 코드들을 복사 붙여넣기 하는 코파일럿 수준의 컴플리션보다도 훨신 더 나은 성능을 보여준다.

또한 Cursor AI의 대화형 챗 모드는 코파일럿과 비교했을 때 응답의 정확도와 상세함이 월등히 뛰어나다. 개발 과정에서 발생하는 질문에 대해 더 구체적이고 실용적인 답변을 제공하며, 코드 예시도 현재 프로젝트의 맥락에 맞게 제시해준다.

사진에서 볼 수 있듯, 원하는 용도에 맞게 언어 모델을 선택할 수 있는것도 꽤 장점이다. 평상시에는 4o로 작동하다가도 어려운 문제에 대해서는 o1 mini로 선택해서 더 정확한 답변을 요청할 수도 있다.

그리고 챗 모드에서 ctrl + l을 눌러서 선택한 코드를 바로 챗 모드의 맥락으로 사용할 수 있는것도 편리할 뿐만 아니라 언어 모델이 개선한 코드를 apply 버튼을 눌러 바로 적용할 수 있는것도 매우 편리하다.

이런 식으로 마치 git conflict 해결 과정처럼 어떤 코드를 적용할건지 선택하는 식으로 작동하는데, 해당 사진은 ctrl + k를 눌러서 채팅 모드가 아니라 언어 모델에 디렉션을 주고 편집기 내에서 코드 개선을 시도하는 기능도 주석을 작성할 때 특히 유용했다.

javadoc 주석을 작성하는 데 있어서도 마찬가지로 코파일럿보다 훨씬 더 정확하게 주석을 작성해주는 것을 볼 수 있다.

Cursor AI Composer

(2024-12-11 추가)

커서 이야기를 하면서 컴포저를 이야기 하지 않을 수가 없다. 왜 커서에서 컴포저가 킬러 기능이라고 하는지 좀 알겠다. 그렇다고 해도 다른 리뷰들에서 호들갑 떨 만큼 차원이 다른 기능이냐라고 한다면, 꼭 그런가? 싶긴 하다. 내가 원래 이렇게 모든지 호들갑 떠는걸 썩 좋아하지는 않기 때문일지도 모른다.

아무튼. 컴포저는 챗 모드와는 다르게 실제 파일을 대규모로 생성해주고, 편집해주는 기능이다.

예를 들어 볼까? 일단 리액트 프로젝트에서 이미 작은 버튼 컴포넌트가 존재하는데, 이와 비슷하지만 그냥 크기가 큰 버튼을 만들어 주고 싶다고 하자.

그럼 이런식으로 요청하면 컴포저가 실제로 파일을 생성해가며, 그리고 해당 파일을 이용하기 위해 다른 파일을 수정해야 한다면, 다른 파일까지 수정해가며 컴포저가 자동으로 파일을 생성해주고 수정해주는 것을 볼 수 있다.

이런식으로 컴포저가 자동으로 파일을 생성해주고 수정해주는 것을 볼 수 있다. 해당 버튼을 위한 css 파일도 생성하고, 필요하다면 다른 컴포넌트까지 수정해주는 것을 볼 수 있다.

컴포저의 장점은 일단 파일을 대규모로 생성하고 수정해 준다는 점이다. 이 점이 컴포저의 가장 큰 장점이라고 생각한다. 사실 챗 모드와 딱히 엄청 다른 건 없기는 하다. 이렇게 말하면 뭔소리지? 싶긴 하겠지만, 컴포저를 이용한다고 해도, 결국 GPT 엔진 성능 이상의 결과를 얻는건 불가능하다.

그러니까 GPT가 못 만들어 주는건 컴포저라고 만들 수 있는 건 아니라는 말이다. 물론 내가 우물안 개구리라 커서의 더 많은 성능을 끌어 올리지 못하는 것일 수도 있지만, 결국에는 프레임워크의, 프로젝트의 구성을 제대로 알고 있는 개발자가 컴포저가 생성한 코드를 정리해주고 수정해주는 것이 필요하다.

그런데 그럼에도, 컴포저는 챗 모드보다 훨씬 더 빠르게 코드를 생성해주고 수정하는데 도움을 주는 건 사실이다. 나는 컴포저를 어떻게 이용하냐면, 일단 컴포저를 이용해서 코드의 뼈대를 잡고, 그걸 수정하는 식으로 이용하고 있다.

단점

일단 단점으로는 비용이다. 코파일럿은 학생이면 무료, 아니면 10$를 내고 사용할 수 있는데, 커서는 월 20$, 한화 약 3만원을 내고 사용해야 한다.

솔직히 조금 비싸다고 느껴지긴 했는데, 챗 GPT 구독료도 이정도 한다는 걸 생각하면 그럭저럭 납득이 되긴 한다.

그리고 또 내가 느끼는 개인적인 단점으로는, 베이스가 VSCODE라는 점이다. 일단 커서를 이용하기 전에는 Intelij에 코파일럿 애드온을 설치해서 사용하고 있었는데, 인텔리제이에 익숙해져서 그럴 수도 있지만 VSCODE는 인텔리제이에 비해 좀 더 불편한 점이 있다.

익스텐션이나 플러그인을 추가해야만 사용할 수 있는 기능들도 많기도 하고, Auto import 기능도 좀 Intelij에 비해 불편한 점이 있다. Intelij는 모든 파일을 인덱싱해두기 때문에 빠르게 오류를 잡아주거나, 자동 import를 해주는데 비해서 커서는 그런 점에 있어서는 조금 떨어진다.

IDE의 기본기는 아무래도 Intelij가 훨신 좋은 편이다.

내가 커서를 사용하면서 겪은 문제점으로는 vscode의 문제점이기도 했는데, 예를 들어서 내가 해당 패키지를 import 했음에도 불구하고 java에서 해당 패키지를 resolve 하지 못했다고 헛소리하는 이슈가 몇 번 발생하기도 했다. 아무리 Clean Build를 하고, 빌드가 제대로 수행됨에도 불구하고 계속 java can not be resolved 에러가 발생해서 너무 짜증났다.

또한 오류가 아닌 것 같은데 계속 오류라고 표시해서 짜증나는 경우도 있었다(이 경우에는 커서를 종료하고 Intelij로 돌아가서 불러오니까 오류가 결국 아니었다).

또 어떤 문제인지 정확히는 모르겠는데, 자동 저장을 켜놨음에도 불구하고 실행할 때 자꾸 예전 코드를 실행해서 문제가 발생하는 경우도 있었다. 이 경우에도 커서를 껐다가 다시 실행하니까 문제가 해결되긴 했지만 오류가 아니었고, 빌드 및 실행도 문제없이 잘 됐음에도 불구하고 결과가 이상하게 나오니까 필요없는 디버깅만 수없이 발생했다.

이런 경우에 Stack Overflow에 찾아보니까, F1을 눌러서 Java Language Server 작업 공간 디렉토리를 삭제하면 깨끗한 상태로 돌아가는 데 도움이 된다고 하고, 실제로 그 방법을 이용해서 문제를 해결할 수 있었다.

(2024-12-11 추가)

그리고 컴포저의 단점을 설명해 보자면, 앞서 말했듯 대규모로 다른 파일까지 수정한다 고 했는데, 이 부분은 컴포저가 코드를 생성하고 수정하는 과정에서 문제가 발생할 수 있는 부분이다. 예를 들어 보자면, 나는 앞선 맥락은 유지하면서 새로운 기능을 추가하고 싶은데, 컴포저는 새로운 기능에 맥락을 깊게 맞춰, 앞선 맥락을 무시하는 경우가 종종 있었다.

이런 경우에 발생할 수 있는 문제가, 주 파일은 괜찮지만, 컴포저가 건드린 다른 파일에서 문제가 생기는 경우이다. 나같은 경우에는 메인 파일은 괜찮아서 Accept를 눌렀지만, 컴포저가 건드린 다른 파일에서 문제가 생겨서 되돌리는데 고생을 했던 적이 있다. 깃이 있긴 하지만 한줄 한줄 작성할 때마다 커밋을 올릴 수도 없는 노릇이기도 하고.

아무튼 이런 문제가 있다.

마치며

이러한 단점들이 있음에도 불구하고, Cursor AI는 충분히 투자할 가치가 있는 도구라고 생각한다. ChatGPT Plus를 따로 구독하는 것보다 Cursor AI를 사용하는 것이 개발 생산성 향상에 더 도움이 되며, GitHub Copilot과 비교했을 때도 월 10$ 더 비싸지만 훨씬 뛰어난 성능과 기능을 제공한다. 특히 Copilot은 기본적인 코드 자동완성 외에는 제한적인 기능을 제공하는 반면, Cursor AI는 강력한 대화형 AI 기능과 코드 분석 능력을 갖추고 있어 추가 비용을 충분히 정당화한다고 볼 수 있다.

결국 Intelij보다 IDE로써의 불편함은 있긴 해도 pro 버전을 결제해서 사용하고 있다. Intelij도 엄청 비싼 도구임을 생각하면(나는 아직 학생 무료 기간이 남아서 무료로 사용하고 있지만) 커서의 20$를 내고 사용하는 것이 낫다고 생각한다.

그리고 나는 Intelij에 익숙해져 있지만, 오히려 vscode에 익숙한 사람이라면 훨신 더 유용한 툴일 것이다.

내가 추가해서 사용하고 있는 플러그인은 Spring Boot, Spring Boot Dashboard, Spring Initializr, Maven Helper, Rainbow Brackets, Auto Import, Extension Pack for Java, Gradle for Java, Korean Language Pack 등이다.

그럼 끝!!


Thanks. mind sharing?

← Previous Post Next Post