# AI는 코딩을 잘하는 척한다: 왜 결정적인 순간에 무너질까?

요즘 ChatGPT나 Copilot 같은 AI 도구들을 쓰다 보면  
“이제 코딩도 AI가 다 해주는 시대다!”  
라는 생각이 들기도 한다.  
실제로 간단한 함수 뼈대, 반복문, API 연동 코드까지 술술 생성해낸다.

그런데 이상하다.  
코드가 돌아가긴 하되, **어딘가 불안하다.**  
그리고 실전에서 쓸수록… **결정적인 순간에 무너진다.**

---

## 1. 문맥 추론 능력의 한계

코드는 단순한 텍스트가 아니다.  
**문맥(context), 흐름(flow), 의도(intent)**의 결정체다.

AI는 이전 함수, 타입, 데이터 흐름을 “부분적으로만” 이해한다.  
그 결과, 함수 이름도 맞고 로직도 그럴듯한데…  
**정작 연결하면 에러 나고, 돌아가도 이상하게 작동한다.**

---

## 2. 구조화와 재사용성 개념이 없음

AI가 짜주는 코드는 **그 순간만 맞는 코드**다.  
모듈화? 책임 분리? 유지보수?  
그런 건 모른다.

프롬프트를 달리 입력하면,  
**같은 기능도 전혀 다른 구조로 나오는 게 대부분이다.**  
일관성과 설계 철학은 없다.

---

## 3. 애매한 질문엔 애매한 코드가 나온다

프로그래밍의 핵심은 **모호한 요구사항을 명확히 정의하는 것**이다.  
AI는 질문이 애매하면 “대충 맞는 코드”를 만든다.  
그리고 그게 바로 **지옥의 시작**이다.

```
// "사용자 로그인 처리 코드"라고 요청했을 때…
func login() {
    // TODO: 로그인 처리
}


그럴듯하지만 비어 있다.
문제는, 비어 있는 걸 인식 못한 채 배포하는 건 사람이다.

4. 디버깅은 못 한다

에러 메시지 요약해주고, 고칠만한 코드 제시까지는 한다.
하지만 진짜 문제의 원인, 코드 전체 흐름에서 왜 이 오류가 터졌는지는 모른다.
AI는 현상을 설명할 뿐, 근본 원인을 추적하지 못한다.

결론: AI는 “도구”일 뿐, “해결사”는 아니다

AI는 “빨리 실패할 수 있게 도와주는 도구”로는 최고다.
하지만 그 실패를 이해하고, 리팩터링하고, 설계로 바꾸는 일
아직도 인간 개발자의 몫이다.

✍+ 요약하자면...
AI는 코드를 멋지게 ‘생성’하지만,
그 코드가 왜 그렇게 구성돼야 하는지는 설명하지 못한다.
그리고 그게,
아직 우리가 키보드를 손에서 놓지 못하는 이유다.