피드백 루프가 전부다
AI 모델이 스스로 코딩하는 것 자체는 흥미로운 부분이 아니다. 흥미로운 것은 코드를 생성한 다음에 일어나는 일이다. 모델이 코드가 올바른지 얼마나 빨리 알 수 있는가? 생성과 검증 사이의 피드백 루프가 얼마나 타이트한가?
그 루프가 모든 것을 결정한다. 모델이 자신의 출력을 스스로 반복 개선할 수 있는지, 사람이 수동 검사 없이 출력을 신뢰할 수 있는지, AI 코딩이 실제로 어떤 도메인에서 작동하는지 모두 이 루프에 달려 있다.
루프 속도는 균일하지 않다. 스펙트럼을 따라 분포한다. 그리고 그 스펙트럼은 더 단순한 진실에 의해 결정된다. AI는 텍스트 네이티브(text-native)라는 사실이다.
백엔드 코드는 텍스트다. API 응답은 텍스트다. 데이터베이스 스키마는 텍스트다. 전체 도메인이 언어 모델이 네이티브 매체를 벗어나지 않고도 읽고, 생성하고, 검증할 수 있는 문자열로 표현된다. 백엔드에 CLI 명령어가 포함되더라도, 그 명령어는 텍스트다. 모델은 볼 필요가 없다. 읽으면 된다.
시각적 인터페이스는 다르다. UI는 정적 이미지가 아니다. 시간적이다. 상태가 변한다. 애니메이션이 전환된다. 제스처가 연쇄 반응을 일으킨다. 모델은 버튼을 스크린샷할 수 있지만 누르는 타이밍을 느낄 수는 없다. CSS를 읽을 수 있지만 이징 곡선이 시간에 따라 펼쳐지는 것을 지켜볼 수는 없다. 시각적 정확성은 경험적이며, 경험은 시간 속에서 일어난다.
백엔드: 밀리초
백엔드 코드는 결정론적으로 검증된다. 함수에는 입력과 출력이 있다. Type checker는 컴파일 타임에 contract를 검증한다. 테스트 스위트는 밀리초 단위로 동작을 실행한다. API 엔드포인트는 스키마와 일치하는 응답을 반환하거나 그렇지 않다. 데이터베이스 마이그레이션은 깔끔하게 적용되거나 롤백된다.
모든 검증 신호는 텍스트 기반이고, 결정론적이며, 빠르다. 모델은 함수를 생성하고, type checker를 실행하고, 오류를 확인하고, 수 초 내에 재생성할 수 있다. 테스트를 작성하고, 실행하고, 실패를 확인하고, 구현을 수정할 수 있다. 반복 주기가 충분히 타이트해서, 모델은 제한된 백엔드 작업 내에서 반자율적으로 작동할 수 있다.
이것이 바로 백엔드에서 AI 코딩이 오늘날 가장 마법처럼 느껴지는 이유다. 도메인은 순수한 로직이다. 검증은 즉각적이다. 모델은 자신이 틀렸을 때 그것을 안다. 이것이 바로 결정론적 가드레일이 코드베이스의 나머지 부분에 부여하려고 하는 것이다.
웹: 분
웹 개발에는 시각적 정확성이 추가된다. 컴포넌트가 올바른 props를 가지고 있으면서도 잘못된 패딩을 가질 수 있다. 레이아웃이 모든 type check를 통과하면서도 여전히 깨져 보일 수 있다. 검증의 범위가 더 이상 순수하게 결정론적이지 않다.
Playwright가 도움이 된다. 컴포넌트를 렌더링하고, 스크린샷을 찍고, 기준 이미지와 비교할 수 있다. 하지만 이것은 느리다. 백엔드 테스트 스위트는 수 초 만에 실행된다. Playwright 비주얼 리그레션 스위트는 수 분이 걸린다. 검증 단계가 한 자릿수 더 느리기 때문에, AI는 같은 속도로 자신의 출력을 반복 개선할 수 없다.
모델은 컴파일되는 React 코드를 생성할 수 있다. 하지만 브라우저를 실행하고, DOM을 렌더링하고, 픽셀을 비교하기 전까지는 결과 UI가 올바르게 보이는지 알 수 없다. 그 병목은 실제로 존재한다. 웹 AI 코딩은 작동하지만, 피드백 루프는 더 느슨하다.
모바일: 시간
모바일에는 물리적 현실이 추가된다. 제스처에는 타이밍과 물리 법칙이 있다. 애니메이션에는 옳거나 그르게 느껴지는 이징 곡선이 있다. 화면은 iOS 16과 iOS 18에서 다르게 렌더링된다. Bluetooth, 카메라, GPS, 푸시 알림 모두 기기별, OS 버전별, 제조사 스킨별로 동작이 달라진다.
이것을 빠르게 검증할 방법은 없다. 유닛 테스트는 비즈니스 로직을 커버하지만 스와이프의 느낌은 커버하지 못한다. 시뮬레이터에서의 UI 테스트는 레이아웃 문제를 잡아내지만 3년 된 Android 기기에서의 프레임 드롭은 잡아내지 못한다. 실제 검증은 빌드, 서명, 설치, 그리고 물리적 하드웨어에서 앱과 상호작용하는 과정을 필요로 한다. 피드백 루프는 초 단위가 아닌 시간 단위로 측정된다.
모델은 컴파일되는 SwiftUI나 Jetpack Compose 코드를 생성할 수 있다. 하지만 앱이 네이티브처럼 느껴지는지는 알 수 없다. 그것은 실제 기기에서 사람의 손을 필요로 한다. 반복 주기가 너무 느려서 모델이 효과적으로 자가 수정할 수 없다. 이것이 바로 AI로 코딩된 React Native 앱이 확장을 위해 가드레일을 필요로 하는 이유다.
스펙트럼이 의미하는 것
AI 코딩은 모델 능력의 속도로 확장되지 않는다. 검증의 속도로 확장된다.
모델은 오늘날 모바일 코드를 작성할 수 있다. 할 수 없는 것은 그 코드가 좋은지 아는 것이다. 알기 위해서는 모바일에 아직 존재하지 않는 검증 인프라가 필요하다. 백엔드는 그것을 가지고 있다. 웹은 구축 중이다. 모바일은 수년 뒤쳐져 있다.
AI 코딩을 어디에 적용할지 선택하는 팀에게 답은 분명하다. 검증이 가장 빠른 곳에서 시작하라. 백엔드가 첫 번째다. 웹이 두 번째이며, 시각적 테스트에 대한 투자가 필요하다. 모바일이 마지막이며, 여전히 사람의 손이 최종 검증을 담당한다. 그 선택의 유지보수 비용은 시간이 지남에 따라 복리로 증가한다. 이것이 바로 버전 1이 결코 진짜 문제가 아닌 이유다.
모델이 백엔드에서 더 똑똑한 것이 아니다. 단지 더 잘 알고 있을 뿐이다.