KEY POINT
- AI 코딩은 6시간 만에 작동하는 프로토타입을 만들 정도로 초기 속도는 빠르나, 나머지 20%의 완성도를 높이는 데 전체 시간의 80% 이상이 소요된다.
- AI가 생성한 코드는 1,000라인이 넘는 단일 뷰 파일과 비효율적인 루프 계산 등 유지보수가 불가능한 '기술 부채'를 대량으로 생성한다.
- 개발자는 AI가 '작동하는 코드'를 내놓은 즉시 뷰 단위를 100라인 이하로 쪼개고 데이터 모델을 재설계하는 리팩토링을 수행해야 한다.
#Cursor #Claude #AI코딩 #리팩토링 #Swift #기술부채
구독료 부담이 불러온 AI 기반의 초고속 프로토타이핑
개발자는 기존 습관 추적 앱들의 높은 구독 비용 문제를 해결하기 위해 직접 앱 개발에 착수했다. 시장의 Grit 앱은 월 9.99파운드, 연간 29.99파운드, 평생 라이선스 44.99파운드라는 가격 정책을 유지하고 있었으며, HabitKit 역시 월 1.99파운드와 연간 11.99파운드의 구독료를 요구했다. 무료 앱인 Streaks가 존재했으나 개발자가 요구하는 세부 기능을 모두 충족하지 못했다. 이에 개발자는 AI를 활용해 본인과 가족의 요구사항에 맞는 'HabitTed'라는 앱을 기획했다.
개발자는 작년 3월 Cursor의 무료 크레딧을 활용해 Swift 언어 기반의 iOS 앱 개발을 시작했다. 당시 환경은 Claude Code와 같은 완전 자율형 에이전트 방식이 출시되기 전이었으므로, 개발자가 전체 공정을 작은 작업 단위로 나누어 AI에게 요청하고 이를 Xcode 시뮬레이터에서 수동으로 테스트하는 방식을 취했다. 개발자는 주말 동안 약 6시간을 투입해 커스텀 아이콘 설정, 습관 완료 표시, 다양한 목표 옵션 선택, iCloud 동기화 기능이 포함된 프로토타입을 구현했다.
이 과정에서 AI는 초기 개발 속도를 극대화하며 겉보기에 작동하는 결과물을 빠르게 도출했다. 하지만 개발자는 6시간의 작업 끝에 기능 구현에는 성공했음에도 불구하고 Swift 개발에 대한 실질적인 학습이 이루어지지 않았음을 깨달았다. 에러가 발생할 때마다 AI에게 메시지를 복사해 붙여넣어 수정하는 방식에 의존했기 때문에, 코드의 내부 구조가 어떻게 작동하는지에 대한 이해 없이 '작동만 하는 상태'에 도달한 것이다.
1,000라인의 단일 뷰와 비효율적 루프가 만든 기술 부채
AI가 생성한 코드는 기능적으로는 작동했으나 유지보수가 불가능한 저품질 상태였다. 개발자는 각 뷰(View) 파일이 1,000라인에 육박하는 비대한 구조로 작성된 것을 발견했다. 이로 인해 Xcode 컴파일러는 코드 길이를 감당하지 못해 지속적으로 파일을 분리하라는 경고 메시지를 출력했다. 또한 동일한 디자인의 버튼임에도 불구하고 서로 다른 뷰 파일마다 완전히 다른 코드로 구현되어 있어 일관성이 결여된 상태였다.
기능적 결함은 데이터 처리 로직에서 더욱 심각하게 나타났다. AI가 구현한 iCloud 동기화 기능은 겉으로는 정상 작동하는 것처럼 보였으나, 사용자가 앱을 삭제 후 재설치하면 모든 데이터가 소실되는 치명적인 버그가 있었다. 성능 저하 문제도 발생했다. 상세 페이지의 통계 수치를 계산할 때마다 모든 습관 데이터를 처음부터 끝까지 훑는 루프(Loop) 계산 방식을 사용했기 때문에, 누적 데이터가 많아질수록 앱의 반응 속도가 급격히 느려지는 현상이 관찰되었다.
이러한 문제는 AI가 코드의 전체적인 아키텍처를 설계하지 않고, 요청받은 개별 기능만을 단편적으로 구현했기 때문에 발생했다. AI는 당장 에러가 나지 않는 코드를 만드는 데 집중했을 뿐, 데이터 모델의 효율성이나 확장성을 고려하지 않았다. 결과적으로 개발자는 AI가 만든 '작동하는 코드'가 실제로는 유지보수 비용을 폭증시키는 기술 부채의 덩어리였음을 확인했다.
수동 리팩토링과 OS 제약 극복을 통한 1년의 완성 과정
개발자는 AI에 의존하는 대신 '올드 스쿨' 방식의 수동 리팩토링을 통해 코드 구조를 전면 개편했다. 모든 뷰 파일을 100라인 이하의 작은 단위로 분리하여 복잡도를 낮추고, 중복된 스타일 코드를 통합해 일관성을 확보했다. 성능 개선을 위해 통계 계산 로직을 변경했다. 매번 전체 데이터를 루프 도는 대신, 습관을 완료하는 시점에만 통계치를 계산해 속성에 저장하는 방식으로 전환하여 성능 저하 문제를 해결했다.
데이터 모델의 구조적 결함도 직접 수정했다. 개발자는 데이터 모델이 지나치게 복잡하고 명명 규칙이 일관되지 않다는 점을 발견하고, 스키마 변경에 따른 데이터 마이그레이션 계획을 수립해 기존 데이터의 손실 없이 구조를 개선했다. 이후 리마인더 기능과 다양한 목표 옵션 등 누락되었던 세부 기능들을 추가하며 앱의 완성도를 높였다.
최신 OS 대응 과정에서는 AI의 한계가 명확히 드러났다. iOS 26 출시 초기, 투명도 감소 설정 시 타이틀 바의 텍스트가 흰색 배경에 흰색 글씨로 표시되어 읽을 수 없는 버그가 발생했다. AI는 iOS 26이 최신 버전이라는 사실조차 인지하지 못하고 개발자의 주장을 부정하는 환각 현상을 보였다. 개발자는 AI 대신 다른 개발자들의 블로그 포스트를 참고해 문제를 해결했으며, 최종적으로 애플이 iOS 26.1에서 해당 버그를 수정하며 상황이 종료되었다.
결과적으로 6시간 만에 작동하던 앱이 실제 배포 가능한 수준의 품질을 갖추기까지는 수개월의 개발과 테스트를 거쳐 총 1년의 시간이 소요되었다. AI 코딩을 활용할 때 개발자가 반드시 기억해야 할 리팩토링 수행 시점 기준은 다음과 같다.
[AI 코딩 리팩토링 수행 체크리스트]
1. 단일 뷰 파일이 1,000라인에 근접하여 Xcode 등 IDE에서 컴파일러 경고가 발생할 때
2. 동일한 UI 요소가 서로 다른 파일에서 중복된 코드로 구현되어 있을 때
3. 데이터 증가에 따라 루프 계산으로 인한 체감 성능 저하가 관찰될 때
4. AI가 최신 OS 버전의 변경 사항을 인지하지 못하고 잘못된 가이드를 제공할 때




