AI에게 시니어 개발자처럼 코드를 읽도록 가르치다

1 week ago 2

  • "AI 코드 분석에 대한 사고방식을 바꾼 혼란스러운 실험"
  • 기존 AI가 React 코드베이스를 분석하다가 자주 실패하는 상황을 목격했음
  • 원인은 주니어 개발자가 코드를 처음 읽을 때처럼 라인 단위로만 분석하는 방식에 있었다고 깨달음

부트캠프 시절과 시니어 마인드셋의 차이

  • 주니어 시절에는 파일을 순서대로, 라인 단위로 읽다가 금방 길을 잃는 경우가 많음
  • 시니어 개발자는 대규모 PR을 볼 때 다음과 같은 방식을 사용함
    • 핵심 파일을 먼저 확인함
    • 기능별로 변경 사항을 묶어서 파악함
    • 전체 아키텍처를 먼저 이해하고, 이후에 세부 구현을 살핌
  • 이러한 접근 방식을 AI에게 적용하기로 결정함

실험

  • 파일을 기능별로 그룹화하고, 그룹에 대한 맥락 정보를 AI에게 먼저 제공하는 방식을 시도함
  • 예시 코드에서 FileGroup 인터페이스를 정의하고, 파일을 관련 기능과 파일 크기에 따라 묶어서 처리함
  • 그룹 단위로 AI에게 “어떤 기능 영역인지, 무엇을 중점적으로 살펴야 하는지” 등을 안내하는 프롬프트를 구성함

놀라운 변화의 순간

  • 기존에는 “JWT 토큰 인증 로직이 포함되어 있음” 정도로 단순 응답하던 AI가
  • “웹소켓 연결 등에 미칠 영향, 최근 합쳐진 PR에 대한 레이스 컨디션 가능성” 등 시니어 개발자 수준 통찰을 제시하게 됨
  • AI가 시스템 전체 맥락을 고려해 지적하기 시작했음

실제로 달라진 점

  • 더 복잡한 머신러닝 모델을 쓴 게 아니라, 시니어 개발자처럼 생각하는 순서를 AI에게 부여한 것이 핵심임
    1. 맥락 우선: 전체 시스템 이해부터 진행함
    2. 패턴 매칭: 유사한 파일을 그룹화해 반복되는 로직을 찾음
    3. 영향 분석: 변경 사항이 시스템 전체에 주는 영향을 인식함
    4. 히스토리 이해: 과거 코드 변경 이유나 맥락까지 추적함

예상치 못한 부수 효과

  • 단순히 원하는 지점만 고치는 것이 아니라, 다음과 같은 인사이트들도 포착함
    • 복사-붙여넣기로 인한 중복된 코드 블록 식별
    • 일관되지 않은 오류 처리 패턴 경고
    • 잠재적인 성능 병목 가능성 파악
    • 사용 패턴에 따른 아키텍처 개선 제안

왜 중요한가

  • 최근 AI 기반 IDE들은 코드를 자동 생성하는 데 집중하고 있음
  • 하지만 전체 시스템 맥락 없이 단순 제안만 하는 것은 “방금 합류한 주니어 개발자”처럼 위험할 수 있음
  • 진정 중요한 것은 “깊이 있는 코드 이해”임

남은 질문

  • 콘텍스트(역사 정보)을 언제 갱신하고 언제 유지할지를 결정하는 문제
  • 서로 충돌하는 패턴이 발견될 때 어떻게 대응할지
  • 불확실성이 높은 분석 결과를 사용자에게 어떻게 표시할지

앞으로의 방향

  • 시니어 개발자처럼 다음과 같은 감각도 AI에게 가르칠 수 있을지 고민 중임
    • 기술 부채를 사전에 감지하는 능력
    • 아키텍처 개선안을 능동적으로 제안하는 역량
    • 사용 패턴에서 보안 문제를 감지하는 능력
    • 팀 내부의 비공식적 규칙을 파악하는 감각
  • 단순히 “더 많은 코드”를 생성하는 것이 아니라, “시니어 개발자처럼 코드 전체를 깊이 있게 이해하는 방법”을 가르치는 것이 궁극적인 목표임

Read Entire Article