일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Domination Game
- 2인 사무실
- select css
- 느린 서버
- css
- typescript
- select tag
- multiprocessing
- 리더
- html
- 개발자
- 공유 오피스
- PM
- 테드스페이스
- Django
- 좋은 리더란
- turborepo
- JS
- iframe
- 구로 공유 오피스
- XFrameOptions
- python
- React
- 구로 디지털 단지 사무실
- 스타트업
- javascript
- 동료리뷰
- 빠른 서버
- Regexp
- ai로 앱 만들기
- Today
- Total
개발하는 일상
AI로 40분만에 앱을 만들 수 있을까? 정말? 본문
최근에 회의실 예약 앱을 만들게 되었다.
그런데 링크드인에서 본 AI로만 코딩했다는 글이 떠올라 나도 시도해 보기로 했다.
작업은 일주일 정도 걸렸고, cursor를 사용했다.
AI 코딩에 대한 잘못된 인식을 고치는 기간이 되었고, 그 경험을 공유해보고자 한다.
첫 번째 문제: 마법 램프의 지니처럼 알아서 해줄 거라는 기대
먼저 Next 템플릿을 생성하고, 회의실 예약 시스템을 만들겠다는 프롬프트를 썼다.
composer는 바로 코드를 작성하기 시작했다.
원래는 추가 설명을 잔뜩 할 생각이었는데, 냅다 코드를 작성하기 시작하는 것을 보고 나도 기대를 갖게 되었다.
보편적인 앱이니까 설명 없이도 어느 정도는 해줄 거라는 기대.
거의 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 팀의 인터뷰 영상을 보게 되었는데, 이러한 철학을 비슷하게 얘기하고 있어서 놀랐다.
이 글이 나처럼 잘못된 기대를 갖고 있는 사람에게 도움이 되길 바란다.
'개발 기록' 카테고리의 다른 글
모노레포에서 Next.js 앱 테스트 환경 통합하기: Jest 설정 패키지 만들기 (0) | 2024.12.15 |
---|---|
3분만에 합격률 5배 높여주는 지원동기 작성하기 (0) | 2024.10.12 |
개발자에게 오퍼받는 개발자 되기(feat. 문대승님) (9) | 2024.09.11 |
왜 나는 느린 서버를 만드려고 했을까? (1) | 2024.04.21 |
갈 곳을 정하지 않고 그만 두는 개발자 이야기 (1) | 2024.03.03 |