개발하는 일상

AI로 40분만에 앱을 만들 수 있을까? 정말? 본문

개발 기록

AI로 40분만에 앱을 만들 수 있을까? 정말?

롯데빙빙바 2024. 11. 2. 22:46

최근에 회의실 예약 앱을 만들게 되었다.

그런데 링크드인에서 본 AI로만 코딩했다는 글이 떠올라 나도 시도해 보기로 했다.

작업은 일주일 정도 걸렸고, cursor를 사용했다.

 

AI 코딩에 대한 잘못된 인식을 고치는 기간이 되었고, 그 경험을 공유해보고자 한다.

 

첫 번째 문제: 마법 램프의 지니처럼 알아서 해줄 거라는 기대

먼저 Next 템플릿을 생성하고, 회의실 예약 시스템을 만들겠다는 프롬프트를 썼다.

그림 1. 아주 러프한 설명에도 코드를 작성하기 시작하는 composer

 

composer는 바로 코드를 작성하기 시작했다.

원래는 추가 설명을 잔뜩 할 생각이었는데, 냅다 코드를 작성하기 시작하는 것을 보고 나도 기대를 갖게 되었다.

보편적인 앱이니까 설명 없이도 어느 정도는 해줄 거라는 기대.

 

그림 2. cusor를 통해 3분만에 만든 회의실 예약 시스템 화면

 

거의 3분 만에 이런 화면을 보게 되었다. 내가 한 거라곤 첫 프롬프트 이후에 계속 "다음"이라고 입력한 것 밖에 없었다.

아래 그림 3처럼 실제로 예약을 해봤는데, 기대를 아주 빗나가는 동작을 보게 되었다.

그림 3. 시작시간보다 종료시간이 이전이어도 예약이 되는 모습

 

시작시간보다 종료시간이 이전인데 예약이 성공했다.

이 사건으로 AI에게 보편적인 수준이라는 것은 없다는 생각을 하게 되었다. 

즉, "당연히 회의실 예약 앱이라면 이렇게 만들었겠지~"라는 생각은 위험하다.

AI는 마법램프 지니가 아니었다.

 

나는 아주 구체적인 기획요구사항을 만들고, 앱을 다시 만들기 시작했다.

 

두 번째 문제: 코드를 잘 짜는 척

이 앱에는 예약을 하면 이메일로 예약 내역을 발송해 주는 기능이 있었다.

Nodemailer라는 라이브러리와 Gmail 계정을 사용했는데, 이때 또 문제가 생겼다.

 

AI가 작성해 준 코드는 이메일과 비밀번호를 사용했는데, deprecate 된 방식이라 제대로 동작하지 않았던 것이다.

나는 직접 문서를 검색하고 방법을 찾아보았다. 이때부터는 불신이 조금 커져 일부 코드를 직접 수정하는 일이 발생하곤 했다.

 

시간과 관련된 date-fns 라이브러리를 사용할 때는 모듈 안에 없는 라이브러리를 제안하는 일도 있었다.

 

AI는 때때로 믿을 수 없는 정보를 제공한다는 사실을 느끼게 되었다.

 

이때 테디노트님의 RAG 영상이 이 문제를 이해하고 해결방법을 생각하는데 큰 도움이 되었다.

 

AI에게 양질의 정보를 제공할수록 문제를 잘 해결할 확률이 높아진다.

cusor의 경우 chat이나 composer에서 @docs라는 기능을 제공한다.

이 기능을 통해 최신 문서를 참고해 코드를 작성하게 할 수 있다.

여의치 않을 경우 샘플 코드를 직접 작성해 제공하는 것도 도움이 되었다.

 

 

세 번째 문제: 때때로 멀리 돌아가려는 AI

기존에 한 시간 단위로만 예약이 가능했는데, 이를 두 시간까지 가능하도록 수정하면서 문제가 생겼다.

 

나는 기존의 데이터 구조를 그대로 유지해도 된다고 생각했지만, Cursor는 데이터를 수정하는 방식으로 접근했다.

나는 이때까지 만들어 주는 코드를 잘 보지 않았었는데, 적용하고 나서야 문제가 생긴 것을 알았다.

 

이로 인해 다른 코드와 충돌이 발생했고, AI에게 문제 해결을 요청했으나 전체 구조가 예상치 못한 방향으로 바뀌었다.

이전에 커밋을 하지 않아 복구하는 것도 번거로웠다.

 

이 경험을 통해 프로젝트를 주도해야 하는 것은 AI가 아니라 사람이어야 한다는 사실을 느꼈다.

어떤 기술을 사용하고, 어떤 구조를 선택하며 AI가 그렇게 가고 있는지를 살필 수 있어야 한다는 것이었다.

 

AI로 앱을 쉽게 만든다는 것의 의미

이번 작업에서 실제로는 훨씬 많은 문제가 있었다.

그래서 다른 사람은 어떻게 하는지도 많이 봤는데, 그중 AI로 40분 만에 앱 완성하기 같은 제목의 영상도 많이 보았다.

 

그런 영상에서는 기획 요구사항을 비롯한 다양한 템플릿을 제공했다.

firebase를 통해 어떤 설정을 해야 하는지도 알려주었다.

 

영상을 보는 사람은 아무것도 모르고 따라 할 수 있었지만, 그렇기 때문에 내 입맛에 맞춰 개선하기란 그만큼 힘들었다.

영상에서도 때때로 ai에게 모든 문제를 묻지 않고 이건 이렇게 하셔야해요하고 넘어가는 일이 있었다.

 

마법처럼 짠하고 만들 수 있는 수준의 앱이란 결국 이런 것이었다.

남들이 만들어준 템플릿, 남들이 제공한 배경지식 위에서만 할 수 있는 아주 제한적인 일인 것이다.

 

나도 이번 작업을 하기 전까지 AI를 쓰면 마법처럼 쉽게 앱을 만들 수 있다고 생각했다.

하지만 실제로는 

"사용자가 프로젝트를 주도해야 하며, 기획, 설계 등을 직접 결정하고 끝까지 팔로우해야 한다. AI는 그 과정에서 도움을 주는 역할이다."

라는 것을 깨달았다.

 

마침 cursor 팀의 인터뷰 영상을 보게 되었는데, 이러한 철학을 비슷하게 얘기하고 있어서 놀랐다.

 

 

이 글이 나처럼 잘못된 기대를 갖고 있는 사람에게 도움이 되길 바란다.

 

Comments