- "AI 코드 분석에 대한 사고방식을 바꾼 혼란스러운 실험"
- 기존 AI가 React 코드베이스를 분석하다가 자주 실패하는 상황을 목격했음
- 원인은 주니어 개발자가 코드를 처음 읽을 때처럼 라인 단위로만 분석하는 방식에 있었다고 깨달음
부트캠프 시절과 시니어 마인드셋의 차이
-
주니어 시절에는 파일을 순서대로, 라인 단위로 읽다가 금방 길을 잃는 경우가 많음
-
시니어 개발자는 대규모 PR을 볼 때 다음과 같은 방식을 사용함
- 핵심 파일을 먼저 확인함
- 기능별로 변경 사항을 묶어서 파악함
- 전체 아키텍처를 먼저 이해하고, 이후에 세부 구현을 살핌
- 이러한 접근 방식을 AI에게 적용하기로 결정함
실험
- 파일을 기능별로 그룹화하고, 그룹에 대한 맥락 정보를 AI에게 먼저 제공하는 방식을 시도함
- 예시 코드에서 FileGroup 인터페이스를 정의하고, 파일을 관련 기능과 파일 크기에 따라 묶어서 처리함
- 그룹 단위로 AI에게 “어떤 기능 영역인지, 무엇을 중점적으로 살펴야 하는지” 등을 안내하는 프롬프트를 구성함
놀라운 변화의 순간
- 기존에는 “JWT 토큰 인증 로직이 포함되어 있음” 정도로 단순 응답하던 AI가
- “웹소켓 연결 등에 미칠 영향, 최근 합쳐진 PR에 대한 레이스 컨디션 가능성” 등 시니어 개발자 수준 통찰을 제시하게 됨
- AI가 시스템 전체 맥락을 고려해 지적하기 시작했음
실제로 달라진 점
- 더 복잡한 머신러닝 모델을 쓴 게 아니라, 시니어 개발자처럼 생각하는 순서를 AI에게 부여한 것이 핵심임
-
맥락 우선: 전체 시스템 이해부터 진행함
-
패턴 매칭: 유사한 파일을 그룹화해 반복되는 로직을 찾음
-
영향 분석: 변경 사항이 시스템 전체에 주는 영향을 인식함
-
히스토리 이해: 과거 코드 변경 이유나 맥락까지 추적함
예상치 못한 부수 효과
- 단순히 원하는 지점만 고치는 것이 아니라, 다음과 같은 인사이트들도 포착함
- 복사-붙여넣기로 인한 중복된 코드 블록 식별
- 일관되지 않은 오류 처리 패턴 경고
- 잠재적인 성능 병목 가능성 파악
- 사용 패턴에 따른 아키텍처 개선 제안
왜 중요한가
- 최근 AI 기반 IDE들은 코드를 자동 생성하는 데 집중하고 있음
- 하지만 전체 시스템 맥락 없이 단순 제안만 하는 것은 “방금 합류한 주니어 개발자”처럼 위험할 수 있음
- 진정 중요한 것은 “깊이 있는 코드 이해”임
남은 질문
- 콘텍스트(역사 정보)을 언제 갱신하고 언제 유지할지를 결정하는 문제
- 서로 충돌하는 패턴이 발견될 때 어떻게 대응할지
- 불확실성이 높은 분석 결과를 사용자에게 어떻게 표시할지
앞으로의 방향
- 시니어 개발자처럼 다음과 같은 감각도 AI에게 가르칠 수 있을지 고민 중임
- 기술 부채를 사전에 감지하는 능력
- 아키텍처 개선안을 능동적으로 제안하는 역량
- 사용 패턴에서 보안 문제를 감지하는 능력
- 팀 내부의 비공식적 규칙을 파악하는 감각
- 단순히 “더 많은 코드”를 생성하는 것이 아니라, “시니어 개발자처럼 코드 전체를 깊이 있게 이해하는 방법”을 가르치는 것이 궁극적인 목표임