AI 시대, 개발자는 프롬프트 대신 하네스를 쓴다
AI의 발전으로 인해 코드 생성 방식이 변화하면서, 개발자의 역할에 대한 근본적인 질문을 던짐
AI를 활용한 개발 방식에서 프롬프트 엔지니어링의 한계를 인식하고, 스킬과 에이전트를 활용한 개발 방식으로 전환
하네스(Harness) 엔지니어링의 중요성을 강조하며, 비결정적인 AI 모델의 출력을 통제하는 기술의 필요성을 역설
AI가 코드 생성을 담당하면서, 개발자는 시스템 설계와 비결정성 통제에 집중해야 함을 강조
AI 시대의 개발자는 추상화를 통해 자신을 정의하고, 새로운 디테일을 챙기는 역할을 수행해야 함을 제시
AI 시대, 개발자의 정체성 재정립
본문은 AI 시대에 개발자의 역할이 변화하고 있음을 강조하며, 디테일(Detail)을 챙기는 프로그래머의 정체성을 재조명한다. AI가 코드 생성을 자동화하면서, 개발자는 더 이상 코드 구현에 매달릴 필요가 없어졌다. 대신, 시스템 설계, 비결정성 통제, 그리고 자신을 추상화하는 역할에 집중해야 한다고 말한다. 즉, 개발자는 AI가 생성한 코드를 관리하고, 예측 불가능한 상황에 대처하는 능력을 갖춰야 한다. 이는 단순히 코드를 작성하는 것을 넘어, 시스템 전체를 이해하고 통제하는 '하네스(Harness) 엔지니어링'의 중요성을 시사한다.
프롬프트 엔지니어링의 한계와 스킬 기반 개발
글에서는 프롬프트 엔지니어링의 한계를 지적하고, 스킬(Skill)과 에이전트(Agent)를 활용한 개발 방식의 필요성을 강조한다. 프롬프트는 완벽한 지시를 제공하기 어렵고, AI 모델의 '골 픽세이션(Goal Fixation)'으로 인해 예상치 못한 결과를 초래할 수 있다. 따라서, 개발자는 스킬을 함수처럼 쪼개고, 파이프라인으로 연결하여 AI의 출력을 제어해야 한다. 이는 마치 함수형 프로그래밍과 유사하며, 코드의 재사용성과 유지보수성을 높이는 효과를 가져온다. 결국, 개발자는 AI를 '지시'하는 것이 아니라, '위임'하는 방법을 익혀야 한다.
하네스(Harness) 엔지니어링: 비결정성 통제의 핵심
본문은 AI 모델의 비결정적인 출력을 통제하기 위한 하네스(Harness) 엔지니어링의 중요성을 강조한다. 하네스는 AI가 생성한 코드의 품질을 보장하고, 예측 불가능한 상황에 대처하기 위한 안전 장치이다. 이는 컴파일러, 테스트 러너, 린터와 같은 결정적인 도구를 활용하여, AI의 출력을 검증하고 오류를 방지하는 과정을 포함한다. 하네스 엔지니어링은 코드의 안정성을 높이고, 프로덕션 환경에서의 신뢰성을 확보하는 데 필수적이다. 즉, 개발자는 AI의 '무책임한 유능함'을 제어하기 위해 결정적인 통제 도구를 구축해야 한다.
TDD와 파이프라인: AI 개발의 새로운 표준
글에서는 TDD(Test-Driven Development)를 AI 기반 개발에 적용하는 방법을 제시하며, TDD를 통해 코드의 품질을 향상시키고, AI의 출력을 효과적으로 제어할 수 있다고 설명한다. TDD는 테스트 코드를 먼저 작성하고, 이를 통과하는 코드를 구현하는 방식으로, 코드의 안정성을 높이는 데 기여한다. 또한, /red, /green, /refactor 단계를 분리하여, 각 단계의 산출물을 명확하게 정의하고, 파이프라인으로 연결하는 방식을 제안한다. 이는 AI 모델의 '한 턴'의 개념을 이해하고, 산출물(Output)을 통해 개발 과정을 통제하는 데 중요한 역할을 한다.
AI 시대, 개발자의 미래와 새로운 추상화
본문은 AI 시대의 개발자가 겪는 불안감을 공감하며, 새로운 시대의 프로그래머가 가져야 할 역할의 형태를 제시한다. AI는 코드 생성을 자동화하지만, 시스템 설계, 비결정성 통제, 그리고 자신을 추상화하는 일은 여전히 인간의 몫으로 남아있다. 개발자는 AI의 비결정적인 출력을 다루기 위해, 새로운 디테일을 챙기고, 스킬과 에이전트로 감싸고, 검증 파이프라인으로 지층을 쌓는 과정을 반복해야 한다. 즉, 개발자는 '새로운 추상화의 탑'을 쌓아가는 역할을 수행하며, AI 시대에도 변함없이 중요한 존재임을 강조한다. 결국, 개발자는 끊임없이 변화하는 환경에 적응하고, 새로운 기술을 습득하며, 자신만의 전문성을 구축해야 한다.