프로그래밍을 모르면 어디서 막히는가

by jeromeNa

AI 코딩은 개발의 속도를 비약적으로 높여준다. 동시에 잔인한 사실을 드러낸다. 프로그래밍을 모르면, AI가 만든 코드 앞에서 아무것도 할 수 없게 된다.


앞서 바이브 코딩이 왜 쉬워 보이는지, 코드를 몰라도 된다는 말의 함정이 무엇인지, 그리고 툴 이전에 반드시 알아야 할 기초 개념과 웹의 본질을 살펴봤다. 이제 더 구체적으로 들어가 보자. 실제로 어디에서, 어떤 이유로, 어떤 방식으로 막히는지를 정확히 보여주는 것이 이 장의 목적이다.




AI 코딩을 하다 보면 초보자들은 거의 동일한 지점에서 멈춘다. 그리고 그 순간, AI는 더 이상 마법이 아니라 읽을 수 없는 외계어 생성기처럼 느껴지기 시작한다.


1) 코드가 '돌아가긴 하는데', 왜 돌아가는지 모를 때


가장 첫 번째로 막히는 지점은 AI가 만들어준 코드가 "동작은 하는데 이해가 되지 않는 순간"이다.

if (!user || user.isDeleted) {
throw new Error("Invalid user");
}


코딩을 모르면 초보자는 이 코드를 이렇게 인식한다. "AI가 만들어준 거니까 맞겠지."

하지만 이 코드가 의미하는 바를 이해하지 못하면 다음 질문에 절대 답할 수 없다.


왜 !user 조건이 필요한가?

isDeleted는 언제 true가 되는가?

soft-delete 정책인가?

이 에러는 클라이언트에서 어떻게 처리되는가?


이 지점에서 초보자는 수정도, 확장도 하지 못한다. 조금만 요구사항이 바뀌어도 AI에게 다시 묻는 것밖에 할 수 없다. 즉, 코드를 이해하지 못하는 순간부터 AI는 "협업 파트너"가 아니라 유일한 조종사가 되어버린다.


2) 에러 메시지를 봐도 무슨 뜻인지 모를 때


프로그래밍을 모르면 에러는 단순한 공포다.

TypeError: Cannot read properties of undefined


AI에게 이 에러를 복사해서 보내면 AI는 몇 가지 가능성을 제시해 준다.

변수 초기화 문제

비동기 처리 타이밍 문제

데이터 구조 불일치


하지만 이 중 무엇이 문제인지 판단할 수 있는 사람은 오직 기초를 아는 사람뿐이다.

초보자는 이 순간 이렇게 느낀다. "AI가 고쳐줄 때까지 에러를 던지고 다시 돌려봐야지."


이 태도는 프로젝트 규모가 커질수록 치명적인 리스크가 된다. 에러를 읽을 수 없는 사람은 문제의 원인을 추적할 수 없고, 결국 서비스가 멈췄을 때 아무 대응도 하지 못한다.


3) 데이터가 꼬이기 시작하는 순간


AI 코딩 초반에는 데이터가 단순하다. 사용자 몇 명, 게시글 몇 개, 댓글 몇 줄.


하지만 운영을 시작하면 상황이 완전히 달라진다. 데이터가 누적되고, 관계가 복잡해지고, 삭제/수정이 반복되면서 정합성 문제가 발생한다.


이때 다음과 같은 현상이 나타난다.


삭제한 데이터가 다른 화면에서 계속 보인다

A 사용자 데이터가 B 사용자에게 보인다

관리자 페이지와 사용자 페이지의 수치가 다르다


이 문제의 원인은 대부분 프로그래밍 기초 부족이다.


트랜잭션 개념 부재

비동기 처리 이해 부족

상태와 데이터의 경계 혼동

참조 무결성 개념 부재


AI는 이런 문제를 고쳐줄 수는 있다. 문제가 왜 생겼는지 설명해 주지만, AI가 만든 코드에서 생긴 부분만 설명해 준다. 그리고 설명을 이해할 수 없는 사람은 같은 문제를 반복해서 만든다.


4) 구조를 바꾸려는 순간, 아무것도 못 할 때


요구사항은 반드시 바뀐다.

"나중에 관리자 기능도 추가하고 싶어요."

"권한을 좀 더 세분화하고 싶어요."

"이 기능을 다른 서비스에서도 쓰고 싶어요."


이 순간이 바로 프로그래밍을 모르는 사람에게 가장 잔인한 순간이다. 구조 변경은 코드를 조금 고치는 문제가 아니라 사고방식을 다시 짜는 문제이기 때문이다.


함수 책임 분리

레이어 분리

의존성 관리

공통 로직 추출


이 개념이 없으면 AI가 아무리 코드를 잘 만들어줘도 "어디를 건드려야 하는지, 맞게 수정한건지"조차 알 수 없다.

결국 선택지는 두 가지뿐이다.


전체를 다시 만든다

전문가에게 맡긴다


이 시점에서 많은 사람들이 "AI 코딩은 별로다"라고 말하지만, 사실문제는 AI가 아니라 준비되지 않은 사용자다.


5) AI에게 '제대로 질문'을 못 던질 때


AI 코딩의 성패는 프롬프트의 문장력에 있지 않다. 구조적 질문을 던질 수 있는가에 있다.

다음 두 요청의 차이를 보자.


잘못된 질문 "이 코드 왜 안 돼?"

올바른 질문 "비동기 요청 이후 상태 업데이트가 한 프레임 늦게 발생하는데, 이 구조에서 race condition이 발생할 수 있는지 검토해 줘."


두 번째 질문을 던질 수 있으려면 이미 다음 개념들을 이해하고 있어야 한다.


비동기 처리

상태 업데이트 타이밍

이벤트 루프

데이터 흐름


즉, 프로그래밍 기초는 AI에게 질문할 수 있는 언어다. 이 언어가 없으면 AI 코딩은 절대 정밀해지지 않는다.


6) 운영 단계에서 혼자 아무것도 못 할 때


가장 치명적인 막힘은 서비스가 실제로 운영 단계에 들어갔을 때 발생한다.

로그를 봐야 할 때

에러가 간헐적으로 발생할 때

특정 사용자에게만 문제가 생길 때

성능이 서서히 떨어질 때


이 순간 AI는 옆에 없다. 로그는 자동으로 해석되지 않는다. 사용자의 불만은 즉각적인 대응을 요구한다.


프로그래밍 기초가 없는 사람은 이 시점에서 완전히 손을 놓게 된다. AI 코딩은 혼자서 운영할 수 있는 최소한의 기술 기반이 없으면 아무 의미가 없다.




AI 코딩은 프로그래밍을 없애는 기술이 아니라 프로그래밍의 책임을 인간에게 되돌리는 기술이다.


AI는 코드를 만들 수 있지만 그 코드의 의미를 이해하고, 그 결과에 책임지는 것은 언제나 사람의 몫이다. 직원이 실수하면 위의 책임자가 책임을 지는 것과 같다고 생각하면 된다.


프로그래밍을 모르면 AI 코딩은 잠깐은 빨라 보이지만, 반드시 한 지점에서 멈춘다. 그리고 그 지점은 항상 "이제 어떻게 해야 하지?"라는 질문 앞이다.