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

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

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

실험

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

놀라운 변화의 순간

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

실제로 달라진 점

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

예상치 못한 부수 효과

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

왜 중요한가

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

남은 질문

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

앞으로의 방향

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

코드베이스 분석과 개선을 위해 할만한 질문은 정형화되어 있지 않나요? 저자가 많이 들뜬 것 같네요

Hacker News 의견
  • 댓글에서 사람들이 비판적임. 이 글은 새로운 도구 가능성에 대한 짧고 긍정적인 결과를 다루고 있으며, 솔직하고 합리적인 생각을 포함하고 있음

    • "Senior vs Junior Developer" 내러티브가 다소 과장되었을 수 있지만, 글의 본질은 훌륭함
    • 사람들이 위협을 느껴 화를 내는 것인지 궁금함
  • LLM이 놀라운 일을 하는 또 다른 예시임. 그러나 일관되고 정확하게 모든 입력에 대해 작동하는 시스템을 구축하는 것은 매우 어려움

    • 인증 시스템 파일 분석 예시가 있음
    • 이 하드코딩된 문자열이 중요한 역할을 하지만, 모든 PR에 대해 정확하고 일관되게 생성될 때까지 특별하지 않음
    • 다양한 코드베이스와 실제 PR을 통해 평가를 설정해야 함
  • 코드 작성에 있어 더 나은 에이전트 시스템을 위한 교훈이 있을 것임

    • Claude/chatGPT 등에게 코드를 생성하지 말라고 지시함. 초기 구조를 생성한 후에 코드를 작성하도록 함
  • 글의 첫 줄을 읽고 외계인처럼 느껴졌음. 전체 글을 읽어야겠지만, 기존 코드를 순차적으로 읽는다는 것은 이상하게 느껴짐

    • "주니어 개발자"에 대한 잘못된 인식이 많음
  • 인간 요소의 중요성을 강조함. 코드베이스의 맥락적 이해 없이는 AI 경고의 의미를 알 수 없음

    • "공유 패턴"이 무엇인지, 왜 경합 조건을 유발하는지 이해하기 어려움
    • 인증 변경과 "재시도 로직" PR 간의 관계가 명확하지 않음
  • AI가 존재하지 않는 API를 만들어내는 것을 막기 어려움. 잘 작동할 때는 좋지만, 대부분은 잘 작동하지 않음

    • AI가 잘 작동하는 것은 많은 사람들이 이미 작성한 코드를 작성하고 있을 때임
  • 코드 맥락과 이해가 LLM 생성 코드의 품질을 향상시키는 데 중요함

    • Bismuth 제품은 사용자 요청에 따라 프로젝트를 논리적 영역으로 나누고, 심볼 정보를 검색하여 코드베이스를 탐색함
    • 경쟁 제품 중 일부만이 이와 같은 수준의 검색 기능을 제공함
  • John McCarthy의 불만처럼, 이건 실험이나 증명이 아닌 이야기임

    • 커뮤니티가 비판적 사고와 훈련을 활용하길 바람
  • 결과가 인상적임. 스타일과 통일성에 대한 비판은 있지만, 결과는 유용해 보임

    • 제목에서 AI가 다른 사람의 작업을 무시하고 자신의 작업만을 강조하는 내용일 줄 알았음
  • 이 기술의 중요한 부분이 글에서 빠진 것 같음. getFileContext()와 shouldStartNewGroup()의 구현이 없음

cursor에서 notepad로 프로젝트 전반에 대한 설명을 해주는 것과 같은 맥락같아 보이네요