몇 년 전만 해도 우리는 AI에게 어떻게 코드를 짜달라고 질문할지 고민했습니다. 하지만 걷잡을 수 없는 기술의 발전 속도로 이제 AI는 단순한 코드 조각을 생성하는 보조 도구를 넘어 스스로 목표를 달성하는 '자율형 에이전트(Agent)'로 진화했습니다. AI가 코드를 작성하고 수정하는 시대, 개발자는 어떤 역할을 맡아야 할까요?
프롬프트에서 하네스로: AI 개발 방법론의 패러다임 전환
AI를 소프트웨어 개발에 활용하는 방법론은 기술 발전과 함께 다음과 같이 변화해 왔습니다.
1. 프롬프트 엔지니어링(2023~2024): "어떻게 지시할 것인가"
LLM(대형 언어 모델)이 대중화되던 초기 단계로, AI가 의도한 결과물을 내도록 질문의 구조(Prompt)를 세밀하게 다듬는 데 집중했습니다. '역할 부여하기', '단계별로 생각하게 하기’ 등을 통해 AI의 단발성 응답 품질을 높이는 것이 개발자의 주요 관심사였습니다.
2. 컨텍스트 엔지니어링(2025): "어떤 정보를 줄 것인가"
프롬프트만으로는 복잡한 프로젝트를 해결할 수 없다는 한계가 명확해지면서 등장한 방법론입니다. RAG(검색 증강 생성) 기술 등을 활용해 AI에게 프로젝트 전체의 코드베이스, 최신 API 문서, 아키텍처 가이드라인 등 정확한 '배경 정보(Context)'를 주입해 환각(Hallucination)을 줄이고 실무 적용성을 높였습니다.
3. 하네스 엔지니어링(2026): "어떻게 통제하고 자동화할 것인가"
단발성 문답을 넘어, AI가 스스로 코드를 짜고 테스트하는 '에이전트' 시대로 접어들며 등장한 최신 방법론입니다. 에이전트의 자율성을 극대화하면서도 시스템의 안정성을 보장하기 위한 환경 구축에 초점을 맞춥니다.
하네스 엔지니어링(Harness Engineering)이란?
하네스 엔지니어링은, AI 모델 자체의 지능을 튜닝하는 것이 아닌, 에이전트가 뛰어놀 수 있는 외부 인프라와 제어 환경을 설계하는 방법론입니다. 여기서 '하네스(Harness)'는 야생마에 장착하는 마구(고삐와 제어 장치)에서 온 용어입니다. 아무리 강력한 말(AI 모델)이라도 마구가 없으면 원하는 목적지로 갈 수 없듯, AI가 엉뚱한 코드를 짜거나 치명적인 오류로 시스템을 망가뜨리지 않도록 통제하는 안전 장치와 자동화된 제어 환경을 뜻합니다.
하네스 엔지니어링의 핵심 구성 요소는 크게 세 가지입니다.
1. 컨텍스트 엔지니어링(Context Engineering)
에이전트가 작업을 수행하는 데 필요한 '올바른 현재 상태'를 끊임없이 제공하는 구조입니다. 프로젝트의 룰을 담은 명시적 파일(AGENTS.md 등)을 유지 관리하고, AI가 작업 중인 파일의 최신 의존성이나 빌드 에러 로그를 실시간으로 피드백해 에이전트가 길을 잃지 않도록 지속적인 컨텍스트를 공급합니다. 더 나아가 인간이 보기 편한 UI나 로그가 아닌, 에이전트가 직접 쿼리하고 해석할 수 있는 형태(DOM 스냅샷, LogQL 등)로 시스템 가독성(Application Legibility)을 높이는 작업이 포함됩니다.
2. 아키텍처 제약(Architectural Constraints)
AI가 넘어서는 안 될 명확한 울타리를 치는 작업입니다. 엄격한 자동화 테스트(CI/CD), 린터(Linter), 타입 체커 등을 구축해 AI가 작성한 코드의 문법 오류나 보안 취약점을 즉각적으로 차단합니다. 단순히 문서로 규칙을 적어두는 것을 넘어, 잘못된 의존성을 참조하면 즉시 빌드를 실패하게 만드는 등 시스템 레벨에서의 '기계적 강제(Mechanical Enforcement)'로 에이전트의 탈선을 물리적으로 차단합니다.
3. 가비지 컬렉션(Garbage Collection)
AI가 생성하는 코드의 파편들을 청소하는 자동화 시스템입니다. AI 에이전트는 시행착오를 겪으며 엄청난 양의 코드를 생성하는데, 이 과정에서 불필요한 더미 코드, 중복 로직, 혹은 사용되지 않는 레거시(Dead Code)가 급격히 쌓이게 됩니다. 이러한 'AI 가비지'를 주기적으로 탐지하고 가지치기(Pruning)해 시스템이 무거워지는 것을 방지하는 필수적인 프로세스입니다.
실제 사례: OpenAI의 100만 줄 프로젝트
이러한 하네스 엔지니어링의 위력을 가장 잘 보여주는 것이 2026년 2월 공개된 OpenAI 내부 엔지니어링 팀의 사례입니다.
3명에서 시작해 7명으로 구성된 이 팀은 5개월 동안 "인간은 단 한 줄의 코드도 직접 타이핑하지 않는다"는 규칙 아래 내부 프로젝트를 진행했습니다. 초기 한 달 반 동안은 생산성이 매우 낮았습니다. 엔지니어들이 코드를 짜는 대신 에이전트가 뛸 수 있는 '하네스'를 구축하는 데 모든 시간을 쏟았기 때문입니다. 하지만 하네스 구조가 완성되자 생산성이 폭발적으로 향상되었습니다.
에이전트는 스스로 코드를 짜고, 견고한 하네스에 부딪혀 스스로 오류를 깨닫고 수정하는 '자동화된 피드백 루프'를 끊임없이 반복하며 5개월 만에 무려 100만 줄의 생성 코드를 작성했고 약 1,500개의 PR(Pull Request)을 병합했습니다. 이는 엔지니어 1인당 하루 평균 3.5개의 PR을 처리한 셈으로, 수동 작업 대비 약 10배에 달하는 속도였습니다.
2026년 2월 OpenAI가 하네스 엔지니어링을 선언한 데 이어, 한 달 뒤인 3월 Anthropic 역시 유사한 철학을 담은 '장기 실행 앱을 위한 하네스 설계(Harness Design for Long-Running Apps)'를 발표했습니다. AI 시대의 양대 산맥 모두 '모델의 지능'보다 '모델을 제어하는 환경'이 더 중요해졌음을 공식화한 것입니다.
현 시대에서 개발자에게 요구되는 역할은?
OpenAI 팀은 프로젝트를 마치며 "이제 엔지니어링 팀의 주된 역할은 에이전트가 유용한 일을 할 수 있게 만드는 것이다."라고 회고했습니다. 하네스 엔지니어링 시대의 개발자는 더 이상 에디터에 코드를 일일이 타이핑하는 '작업자'가 아닙니다.
1. 제약 조건 설계자(Constraints Designer): 시스템의 요구사항을 명확히 정의하고, 에이전트가 안전하게 활동할 수 있는 테스트 코드와 CI/CD 파이프라인을 견고하게 설계하는 능력이 중요해졌습니다.
2. 시스템 아키텍트 (System Architect): AI가 파편화된 코드를 짜맞출 때, 전체 시스템의 구조(Architecture)가 무너지지 않도록 큰 그림을 그리고 유지보수하는 안목이 필수적입니다.
3. 코드 리뷰어 및 의사 결정자 (Reviewer & Decision Maker): 에이전트가 가져온 수많은 결과물 중 어떤 것이 최적의 해결책인지 비판적으로 판단하고 최종 승인하는 '오케스트레이터'로서의 역할이 그 어느 때보다 중요해졌습니다. 특히 코드가 쏟아지면서 인간의 리뷰 능력이 병목 현상을 일으키자, 최근에는 에이전트가 작성한 코드를 또 다른 검증용 에이전트가 1차 리뷰하는(Agent-to-Agent Review) 구조까지 도입되고 있습니다.
결국 기술의 패러다임이 바뀌어도, "문제를 정의하고 시스템의 무결성을 책임지는 것"은 여전히 인간 엔지니어의 고유하고 핵심적인 영역으로 남아있습니다.
주니어 개발자, '코더'가 아닌 '오케스트레이터'로 시작하려면?
OpenAI 팀의 회고처럼, 기술의 패러다임이 바뀌어도 ‘문제를 정의하고 시스템의 무결성을 책임지는 것’은 결국 인간 엔지니어의 몫입니다. 하지만 이제 막 커리어를 시작하거나 성장을 고민하는 주니어 개발자 입장에선 '당장 실무 경험도 부족한데, 어떻게 AI 에이전트가 뛸 하네스(구조)를 설계하지?'라는 생각에 막막할 수 있습니다. 원티드는 이런 주니어 개발자를 위해 ‘포텐업 AI 에이전트 개발 트랙’을 준비했습니다.