
2024년, AI 코드 작성은 모든 계층에 스며들어 소프트웨어의 전체 수명 주기에 깊은 영향을 미쳤습니다. 그렇다면 문제는 사람들이 사용하는 AI 코드 도구는 좋다고 말하지만, 우리가 일반적으로 사용하는 소프트웨어는 왜 큰 진전을 느끼지 못하는 것일까요? 우리가 AI를 잘못된 방식으로 사용하고 있기 때문일까요?
최근 구글의 엔지니어링 책임자이자 아마존 베스트셀러 작가인 애디 오스마니는 실제 개발 현장에서 AI 지원 코딩이 실제로 어떤 모습인지 공개하며 AI 도구가 실제 개발에서 제시하는 도전과 기회에 대해 공유했습니다.
엔지니어는 AI를 어떻게 사용하나요?
일반적으로 AI로 개발하는 팀에는 '부트스트래퍼'와 '이터레이터'라는 두 가지 모델이 있습니다. 두 모델 모두 엔지니어(그리고 기술적 배경 지식이 부족한 사용자)가 아이디어에서 실제 코드까지의 거리를 단축하는 데 도움이 됩니다.
부트스트래퍼
이 범주에는 Bolt, v0, 스크린샷 투 코드와 같은 AI 도구가 포함됩니다:
- 디자인 도면이나 대략적인 콘셉트로 시작하세요;
- AI를 사용하여 완전한 초기 코드 베이스를 생성하세요;
- 몇 시간 또는 며칠 내에 작동하는 프로토타입을 얻을 수 있습니다;
- 아이디어의 실현 가능성을 빠르게 검증하는 데 집중합니다.
이것은 인상적인 워크플로입니다. 예를 들어, 독립 개발자는 Bolt를 사용하여 Figma 디자인을 즉시 작동하는 웹 애플리케이션으로 전환할 수 있습니다. 프로덕션 수준은 아니지만 초기 사용자 피드백을 받기에 충분합니다.
이터레이터
이 카테고리는 주로 커서, 클라인, 코파일럿, 코파일럿 등 일상적인 개발 워크플로우를 담당합니다. 윈드서핑 이러한 도구는 위와 같이 '화려'하지는 않지만 더 실용적입니다:
- 코드 완성을 자동화하고 코드 제안을 제공하세요;
- 복잡한 코드 리팩토링 작업을 수행합니다;
- 테스트 코드와 문서를 생성합니다;
- "프로그래밍 문제 해결을 위한 '프로그래밍 파트너 자매결연'
두 가지 방법 모두 개발 속도를 크게 높일 수 있지만, "공짜 점심은 없다"는 말이 있듯이 공짜 점심은 없습니다.
'AI 속도'의 숨겨진 비용
선임 엔지니어가 사용 커서 어쩌면 부조종사 이와 같은 AI 도구는 적절한 테스트와 문서화를 통해 전체 기능의 기본 프레임워크를 몇 분 만에 구축할 수 있으며, 이는 마법과도 같습니다.
하지만 자세히 살펴보면 시니어 엔지니어는 AI 추천을 참조하는 것과 함께 다음과 같은 작업을 수행합니다:
- AI가 생성한 코드를 더 작은 모듈로 리팩토링합니다;
- 다양한 극한 상황을 처리할 수 있는 기능을 추가하세요;
- 유형 정의 및 인터페이스 디자인 최적화;
- 포괄적인 오류 처리 메커니즘을 추가합니다;
- 심지어 AI가 제공하는 아키텍처 솔루션에 의문을 제기할 수도 있습니다.
즉, 수년간 축적된 엔지니어링 노하우를 적용하여 코드 구현을 가속화하는 AI의 출력을 형성하고 제한하지만, 인간의 전문 지식은 코드의 유지보수를 보장하므로 어느 한쪽이 없으면 다른 한쪽을 가질 수 없습니다.

하지만 주니어 엔지니어는 이러한 중요한 단계를 간과하는 경향이 있습니다. 이들은 AI의 결과물을 그대로 받아들일 가능성이 높기 때문에 겉보기에는 완벽해 보이지만 실제 스트레스를 받으면 쉽게 무너질 수 있는 '카드의 집 코드'가 만들어질 수 있습니다.
지적 역설
따라서 실제로 AI는 초보자보다 숙련된 개발자를 더 잘 도와주는데, 이는 다소 직관적이지 않은 결과입니다.
선임 엔지니어는 AI를 사용하여 아이디어를 신속하게 프로토타이핑하고(요구 사항을 파악하기 위해), 기본 구현을 생성하고(후속 개선을 촉진하기 위해), 알려진 문제에 대한 대체 솔루션을 탐색하는 등의 작업을 수행합니다;
대신, 초보자는 AI가 제공하는 부정확하거나 오래된 솔루션을 직접 채택하고, 중요한 보안 및 성능 문제를 무시하며, AI가 생성한 코드를 디버깅하는 방법을 모르고, 결국 완전히 이해하지 못하는 취약한 시스템을 구축하는 경우가 많습니다.
70% 질문
AI를 사용하여 코드를 작성하는 비엔지니어는 종종 70%의 작업을 놀라울 정도로 빠르게 수행할 수 있지만 마지막 30%는 매우 고통스럽다는 답답한 딜레마에 빠지게 됩니다.
'70% 문제'는 신의 선물인 것처럼 시작했지만 현실의 벽에 부딪힌 AI 지원 개발의 현주소를 보여줍니다.
현실은 대개 이렇습니다:
- 작은 버그 수정 시도 중 -->
- AI는 겉보기에 합리적인 변화를 제안합니다 -->
- 이 변경으로 인해 나머지 코드가 손상됩니다 -->.
- AI에게 새로운 문제 해결 요청하기 -->
- 두 개의 새로운 버그가 생성되었습니다 -->
- 무한 루프
이 주기는 무엇이 실제로 잘못되었는지 이해할 수 있는 전문 지식이 부족한 비엔지니어에게는 특히 고통스러운 과정입니다.
버그를 발견한 숙련된 개발자는 다년간의 경험과 패턴 인식을 바탕으로 잠재적인 원인과 해결책을 유추할 수 있습니다. 이러한 배경 지식이 없으면 기본적으로 완전히 이해하지 못하는 코드를 '땜질'하는 것이므로 문제가 끝없이 발생할 수 있습니다.

학습 역설
비엔지니어에게 AI 코드 작성 도구에 대한 액세스 권한을 부여하면 오히려 학습에 방해가 될 수 있다는 더 심각한 문제도 있습니다.
코드는 생성되고 실행되지만 '개발자'는 기본 원칙을 이해하지 못합니다. 기본 프로그래밍 패턴을 배우고, 디버깅 기술을 개발하며, 향후 유지 관리 및 확장해야 할 아키텍처 결정에 대해 추론할 기회를 놓치게 됩니다.
그 결과, '개발자'는 스스로 문제를 해결할 수 있는 전문성을 개발하지 못한 채 문제를 해결하기 위해 끊임없이 AI에 의존하고 있습니다.
엔지니어가 아닌 사람이 AI 코드 작성 도구를 사용하는 가장 좋은 방법은 아마도 '혼합 모드'일 것입니다:
- AI를 활용한 신속한 프로토타이핑
- 생성된 코드의 작동 방식을 이해하는 시간을 가져보세요.
- 기본 프로그래밍 개념과 AI 사용 방법 알아보기
- 단계별로 지식창고를 구축하세요
- 단순한 코드 생성기가 아닌 학습 도구로 AI 사용
하지만 많은 사람이 애초에 AI 도구를 사용하는 목적과는 정반대로 빠른 해결책을 원하기 때문에 인내심과 헌신이 필요합니다.
'70% 문제'는 현재의 인공지능이 많은 사람들이 기대하는 '완벽한 인공지능'이 아니라는 것을 보여줍니다. 결국, 30%가 하는 일(소프트웨어를 프로덕션 환경에서 사용할 수 있게 만들고 유지보수를 가능하게 하는 등)에는 여전히 AI로 완전히 대체할 수 없는 실제 엔지니어링 지식이 필요합니다.
모범 사례
수십 개의 팀을 관찰한 후 Addy Osmani는 몇 가지 모범 사례 접근 방식을 생각해냈습니다:
- "AI 초안" 모델
AI가 코드의 기본 구현을 생성하고, 모듈식 리팩토링을 수동으로 검토 및 수행하고, 포괄적인 오류 처리를 추가하고, 포괄적인 테스트 사례를 작성하고, 주요 결정을 문서화하도록 하세요. - "연속 대화" 모델
각기 다른 작업에 대해 새로운 AI 대화를 시작하고, 문맥을 집중적이고 간결하게 유지하고, 변경 사항을 자주 검토하고 커밋하며, 피드백 루프를 긴밀하게 유지하세요. - "신뢰하되 검증" 모델
AI를 사용하여 초기 코드를 생성하고, 모든 중요 경로를 수동으로 검토하고, 다양한 경계 사례에 대한 테스트를 자동화하고, 정기적인 보안 감사를 수행하세요.
AI의 진정한 미래는?
이러한 어려움에도 불구하고 저자들은 소프트웨어 개발에서 AI의 역할에 대해 낙관적으로 전망합니다. 핵심은 AI의 실질적인 이점을 최대한 활용하는 것입니다:
- 알려진 가속도
AI는 무한한 인내심과 빠른 타이핑 속도를 가진 쌍둥이 프로그래밍 파트너처럼 우리가 이미 알고 있는 패턴을 실현하는 데 탁월합니다. - 가능성 살펴보기
AI는 아이디어를 빠르게 프로토타이핑하고 개념을 빠르게 테스트할 수 있는 샌드박스와 같이 다양한 접근 방식을 탐색하는 데 유용합니다. - 자동화 루틴
AI는 샘플 코드와 일상적인 프로그래밍 작업에 소요되는 시간을 획기적으로 줄여주므로 더 흥미로운 문제에 집중할 수 있습니다.
이제 막 AI 지원 개발을 실험하기 시작했다면, 저자들은 작은 것부터 시작하라고 조언합니다. 결합되지 않고 잘 정의된 작업에 AI를 사용하고, 생성되는 모든 코드 줄을 면밀히 검토한 다음 점차 더 큰 기능을 구축하는 것입니다.
개발 프로세스에서 모듈성 유지: 모든 것을 작고 집중도가 높은 문서로 세분화하고, 구성 요소 간의 인터페이스를 명확하게 유지하며, 모듈 경계를 문서화하세요.
중요한 점은 자신의 경험을 신뢰하는 것입니다. AI는 개발을 가속화하는 데 사용되지만 판단을 대체할 수는 없으며, 무언가 옳지 않다고 느껴질 때 의문을 제기할 용기를 갖고, 항상 엔지니어링 표준을 준수해야 합니다.
에이전트 출현
2025년에 접어들면서 AI 지원 개발의 환경은 극적으로 변화하고 있습니다. 현재의 도구가 프로토타이핑과 반복 작업의 방식을 변화시켰지만, 우리는 AI 에이전트(에이전트) 소프트웨어 엔지니어링의 부상이라는 훨씬 더 중요한 변화의 시작점에 서 있습니다. AI 에이전트는 명령에 응답할 수 있을 뿐만 아니라 점점 더 높은 수준의 자율성으로 솔루션을 계획하고 실행할 수 있게 될 것입니다.
예를 들어 인류학 (명목식 형태로 사용됨) Claude 컴퓨터에 직접 액세스할 수 있거나 Cline 브라우저를 실행하고 자동으로 테스트를 실행할 수 있습니다.
디버깅하는 동안 AI 에이전트는 버그 수정을 제안할 뿐만 아니라 잠재적인 문제를 사전에 파악하고, 테스트 스위트를 실행 및 실행하고, UI 요소를 검사하고 스크린샷을 캡처하고, 수정 사항을 제안 및 구현하고, 솔루션이 작동하는지 확인합니다.
차세대 도구는 시각적 이해(UI 스크린샷, 모델, 다이어그램), 구두 언어 대화, 환경적 상호작용(브라우저, 터미널, API)을 원활하게 통합할 수 있게 될 것입니다.
미래의 AI는 개발자를 대체하는 것이 아니라 인간의 지침과 전문성을 존중하면서 능동적으로 업무를 수행할 수 있는 점점 더 강력한 협업 파트너가 될 것입니다.
© 저작권 정책
기사 저작권 AI 공유 서클 모두 무단 복제하지 마세요.
관련 문서
댓글 없음...