AI 코딩 도구 6개월 실사용 후기 — 생산성이 정말 올랐을까?

게시일: 2025년 4월 8일 · 15분 읽기

처음 3개월은 마법 같았다. 6개월 지나니 품질 부채가 보이기 시작했다.

우리 팀 (4명 개발자)이 Copilot, Claude, Cursor를 6개월간 실제로 사용한 경험을 정직하게 공유한다.

Month 1-3: 마법의 시간

처음 도입했을 때:

"와, 이게 이렇게 잘되다니?"
"코드 작성 속도가 진짜 2배네요"
"보일러플레이트는 이제 AI가 하네"

실제로 측정한 데이터:

메트릭AI 도구 전도입 후 1주일변화
코드 작성 시간/기능45분18분60% 단축
테스트 작성 시간30분12분60% 단축
코드 리뷰 시간20분/PR35분/PR75% 증가

코드 리뷰 시간이 늘어난 이유? AI 생성 코드의 미묘한 버그를 잡느라.

Month 3-6: 현실이 보이기 시작

문제점들이 나타났다:

1. AI 코드의 테스트 커버리지가 낮다
2. 엣지 케이스를 놓친다
3. 과거 코드 패턴을 모른다
4. 성능 최적화는 하지 않는다

예시:

// AI가 생성한 코드
async function processLargeFile(filePath: string) {
    const content = await fs.readFile(filePath, 'utf-8');
    const lines = content.split('
');

    for (const line of lines) {
        await processLine(line);  // ❌ 직렬 처리, 느림
    }
}

// 개발자가 수정한 코드
async function processLargeFile(filePath: string) {
    const content = await fs.readFile(filePath, 'utf-8');
    const lines = content.split('
');

    await Promise.all(lines.map(line => processLine(line)));  // ✅ 병렬 처리
}

AI는 작동하는 코드를 생성한다. 하지만 최적화는 개발자가 해야 한다.

도구별 평가

GitHub Copilot (월 $10)

장점:

단점:

실제 사용 비율: 30% (주로 자동완성)

Claude (Claude API 기반 Cursor 등)

장점:

단점:

실제 사용 비율: 50% (주로 복잡한 기능)

Cursor IDE (Claude 기반)

장점:

단점:

실제 사용 비율: 20% (시험 중)

생산성 분석: 정량적 결과

6개월 후 정리한 데이터:

항목개선도
새 기능 구현 시간40% 단축
버그 수정 시간20% 단축 (복잡도에 따라 다름)
테스트 작성 시간50% 단축
코드 리뷰 시간30% 증가
리팩토링 시간25% 단축
전체 개발 시간22% 단축 (리뷰 포함)

예상: 40% 단축
실제: 22% 단축

왜? 코드 리뷰에 더 많은 시간을 쓰게 되었기 때문이다.

AI 코드의 함정

함정 1: 보안 감시 부족

AI가 생성한 코드:

// ❌ AI 생성
app.post('/api/user/:id', (req, res) => {
    const user = {
        id: req.body.id,
        email: req.body.email,
        password: req.body.password,  // ← 평문 저장!
    };
    db.save(user);
});

개발자가 수정:

// ✅ 수정된 버전
app.post('/api/user/:id', async (req, res) => {
    const { email, password } = req.body;

    const hashedPassword = await bcrypt.hash(password, 10);
    const user = {
        id: req.params.id,  // ← URL에서, body가 아님
        email,
        password: hashedPassword,
    };

    await db.save(user);
});

AI는 요청한 대로 만든다. 하지만 보안은 따로 생각해야 한다.

함정 2: 성능

// ❌ AI 생성 (O(n²))
function findDuplicates(arr: number[]) {
    const duplicates = [];
    for (let i = 0; i < arr.length; i++) {
        for (let j = i + 1; j < arr.length; j++) {
            if (arr[i] === arr[j]) {
                duplicates.push(arr[i]);
            }
        }
    }
    return duplicates;
}

// ✅ 개선 (O(n))
function findDuplicates(arr: number[]) {
    const seen = new Set();
    const duplicates = new Set();

    for (const num of arr) {
        if (seen.has(num)) {
            duplicates.add(num);
        } else {
            seen.add(num);
        }
    }

    return Array.from(duplicates);
}

함정 3: 타입스크립트 any 증가

AI가 작동하는 코드를 빨리 만들려고 any를 쓴다:

// ❌ AI 생성
function handleData(data: any) {
    return data.map(item => item.value);
}

// ✅ 올바른 타입
interface DataItem {
    value: string;
}

function handleData(data: DataItem[]) {
    return data.map(item => item.value);
}

6개월 동안 any의 개수가 23% 증가했다. 이건 부채다.

최고의 사용 방법: Multi-model 전략

우리 팀이 찾은 최고 효율 방식:

1. 복잡한 기능 구상: Claude (Cursor) 사용 → 아키텍처 제안받기
2. 구현 시작: Copilot 자동완성으로 빠르게 작성
3. 완성 후: Claude로 코드 리뷰 (성능, 보안, 타입 체크)
4. 최종 리뷰: 시니어 개발자 (인지적 오류 체크)

이 프로세스로 품질을 유지하면서도 속도를 얻었다.

팀 규칙

1. AI 생성 코드에는 항상 TODO 주석 (리뷰 표시)
2. 보안 관련 코드는 AI로 생성하지 않음
3. 성능이 중요한 함수는 AI 생성 후 반드시 최적화
4. any는 금지 (satisfies 연산자로 대체)
5. 테스트는 항상 수동 작성 (AI 테스트는 불충분)

결론: 정직한 평가

AI 코딩 도구는 생산성을 올린다. 하지만 40%가 아니라 20-25%다.
그리고 코드 리뷰 비용이 증가한다.
하지만 보일러플레이트 작성 시간이 크게 줄면, 더 중요한 설계와 최적화에 집중할 수 있다.

오랜 개발 경험에서: AI 도구는 손가락이다. 뇌는 여전히 인간이어야 한다.

iL
ian.lab

실무 개발자입니다. 현장에서 겪은 문제와 해결 과정을 기록합니다. 오류 제보는 연락처로 보내주세요.