30년 넘게 코딩하며 깨달은 AI 스파게티 코드 피하는 법
30+ years of coding later: this is how I avoid AI-generated spaghetti
핵심 요약
AI를 기억상실증 환자처럼 다루고, 데이터 모델링과 행동 정의를 먼저 수행하여 AI가 엉망인 코드를 짜지 않게 하는 실무 가이드.
- 기억상실증 어시스턴트 — AI에게 매번 목표와 제약 조건을 명확히 다시 설명하여 문맥을 유지함.
- 데이터 우선 설계 — UI보다 도메인 모델과 데이터 구조를 먼저 정의하여 견고한 기반을 마련함.
- 행동 정의 선행 — 코드를 짜기 전에 입력, 출력, 검증 규칙을 명확히 정의해 불필요한 시행착오를 줄임.
- 엔지니어식 프롬프트 — 코드 생성 요청 전 구현 전략과 테스트 전략을 먼저 검토받아 오류를 방지함.
이게 소프트웨어를 만드는 유일한 방법이라고 주장하는 건 아니지만, 이 워크플로우는 AI가 생성하는 많은 혼란을 피하는 데 도움이 되었습니다.
저는 1980년대 후반에 코딩을 배웠습니다. 처음에는 KC85/3(“Kleincomputer”)에서 간단한 BASIC 방언으로, 그 다음에는 Commodore 64에서 BASIC으로 배웠죠. 저는 C64의 스프라이트와 사운드를 정말 좋아했습니다.
나중에 MS-DOS를 실행하는 PC에서 Turbo Pascal과 그래픽을 위한 어셈블러를 사용했습니다.
그 후 30년 넘게 Visual Basic, VBA, Delphi, Java, JSP, ASP, PL/SQL, PHP, JavaScript, Python 등을 다뤘습니다.
그러니 저는 소프트웨어 개발이 처음인 사람이 아닙니다.
새로운 점은 이것입니다: 바이브 코딩(vibe coding)은 기계적인 작업을 엄청나게 줄여줄 수 있습니다.
잘못 사용하면 고속으로 쓰레기를 생성하지만, 잘 사용하면 강력한 생산성 도구가 됩니다.
유지보수하기 어려운 엉망진창인 상태를 만들지 않고 간단한 웹 앱을 바이브 코딩하고 싶다면, 저에게 가장 효과적인 접근 방식은 다음과 같습니다:
0. 어시스턴트가 똑똑하고 빠르지만 전향적 기억상실증을 앓고 있다고 가정하세요
코딩 어시스턴트를 지금 막 프로젝트에 뛰어든 레너드 셸비(영화 메멘토의 주인공 - 훌륭한 영화죠)처럼 대하세요.
물론 컨텍스트 윈도우는 존재하고 계속 커지고 있습니다. 도구가 파일을 검사할 수도 있죠. 하지만 모든 중요한 프롬프트에 다음 내용을 다시 명시하는 것이 여전히 큰 도움이 됩니다:
목표
제약 조건
현재 아키텍처
변경해서는 안 되는 것
1. 화려한 부분부터 시작하지 마세요
가장 먼저 하고 싶은 유혹은 UI부터 시작하는 것입니다.
레이아웃, 버튼, 흐름, 깔끔한 대시보드, 아름다운 랜딩 페이지(저는 아직 하나도 없지만요)를 상상하죠.
그것도 괜찮지만, 보통은 시작할 곳이 아닙니다.
도메인부터 시작하세요:
핵심 엔티티는 무엇인가?
그들은 어떻게 연관되는가?
어떤 상태가 유지되어야 하는가?
앱의 본질은 무엇인가?
이걸 건너뛰면 어시스턴트는 기꺼이 화려한 헛소리 기계를 만드는 걸 도와줄 겁니다.
2. 코딩 전에 데이터를 모델링하세요
스스로에게 물어보세요:
어떤 필드가 필수인가?
어떤 값이 null일 수 있는가?
무엇이 고유해야 하는가?
기본값은 무엇인가?
시간에 따라 무엇이 변하는가?
앱 대신 데이터베이스가 강제해야 할 것은 무엇인가?
저는 첫 번째 버전을 SQL로 직접 스케치하는 것을 좋아합니다. 완벽할 필요는 없습니다. 거친 DDL만으로도 나쁜 가정을 일찍 발견할 수 있습니다.
다음 항목들을 정의해보세요: 기본 키, 외래 키, 제약 조건, 기본값, 타임스탬프
(네, 이건 지루할 수 있지만 중요합니다)


