콘텐츠로 이동

커리어와 조직 변화

2026년, 소프트웨어 엔지니어링에 새로운 전문 역할이 등장했습니다. Harness Engineer는 AI 에이전트가 올바르게 동작할 수 있는 환경을 설계하고 운영하는 사람입니다.

이 역할은 기존 역할들과 어떻게 다를까요?

역할주요 산출물핵심 관심사
소프트웨어 엔지니어프로덕션 코드기능 구현, 버그 수정
DevOps 엔지니어배포 파이프라인안정성, 확장성
ML 엔지니어모델 학습 파이프라인정확도, 성능
Harness Engineer에이전트 실행 환경에이전트 성공률, 비용, 안전성

개별 컴포넌트가 아닌 전체 시스템의 동작을 이해합니다.

전통적 사고: "이 함수가 올바른 값을 반환하는가?"
시스템 사고: "이 에이전트가 이 도구를 호출할 때 전체 시스템에 어떤 영향을 미치는가?"

시스템 사고를 키우는 방법:

  • 에이전트 실행 전체를 추적하는 습관
  • 실패 모드 분석 (무엇이 잘못될 수 있는가?)
  • 피드백 루프 식별 (어디서 정보가 순환하는가?)

2. 아키텍처 설계 (Architecture Design)

섹션 제목: “2. 아키텍처 설계 (Architecture Design)”

에이전트 시스템의 구조적 결정을 내립니다.

결정해야 할 질문들:
- 단일 에이전트 vs 멀티 에이전트?
- 어떤 도구를 에이전트에게 줄 것인가?
- 컨텍스트는 어떻게 구조화할 것인가?
- 실패 시 복구 전략은?
- 어느 지점에서 인간을 개입시킬 것인가?

에이전트가 이해할 수 있는 정확하고 구체적인 명세를 작성합니다.

약한 명세:
"사용자 인증 기능을 구현하라"
강한 명세:
"JWT 기반 인증 구현:
- /auth/login: POST, { email, password } → { token, expiresAt }
- /auth/refresh: POST, { refreshToken } → { token }
- 토큰 만료 시간: 15분 (액세스), 7일 (리프레시)
- 실패 시: 401 { error: 'INVALID_CREDENTIALS' }
- bcrypt rounds: 12
- 테스트: 정상 로그인, 잘못된 비밀번호, 만료된 토큰 최소 포함"

에이전트 시스템의 내부 상태를 외부에서 관찰할 수 있게 만듭니다.

세 가지 옵저버빌리티 축:
- Metrics: 성공률, 비용, 지연 시간 (숫자)
- Logs: 에이전트 행동 기록 (텍스트)
- Traces: 에이전트 실행 전체 흐름 (그래프)
harness/observability.ts
import { trace, metrics, logs } from '@opentelemetry/api'
const tracer = trace.getTracer('agent-harness')
const meter = metrics.getMeter('agent-harness')
const agentSuccessCounter = meter.createCounter('agent.success', {
description: '에이전트 성공 횟수'
})
const agentDurationHistogram = meter.createHistogram('agent.duration', {
description: '에이전트 실행 시간 (ms)',
unit: 'ms'
})
async function instrumentedAgentRun(
task: string,
agentFn: () => Promise<string>
): Promise<string> {
const span = tracer.startSpan('agent.run', { attributes: { 'task.length': task.length } })
const start = Date.now()
try {
const result = await agentFn()
agentSuccessCounter.add(1, { status: 'success' })
span.setStatus({ code: 1 }) // OK
return result
} catch (error) {
agentSuccessCounter.add(1, { status: 'failure' })
span.recordException(error as Error)
span.setStatus({ code: 2, message: String(error) }) // ERROR
throw error
} finally {
agentDurationHistogram.record(Date.now() - start)
span.end()
}
}

빠르게 실험하고, 측정하고, 개선하는 능력입니다.

느린 반복 사이클 (피해야 함):
변경 → 수동 테스트 (1시간) → 결과 확인 → 다시 변경
빠른 반복 사이클 (목표):
변경 → 자동 테스트 (5분) → 메트릭 확인 → 다시 변경
프로덕트 매니저
↓ 요구사항
소프트웨어 엔지니어 (5~10명)
↓ 코드
QA 엔지니어
↓ 검증
DevOps 엔지니어
프로덕트 매니저
↓ 요구사항
Harness Engineer (1~2명)
↓ 에이전트 환경 설계
AI 에이전트 (다수)
↓ 코드 작성
소프트웨어 엔지니어 (3~5명) ← 리뷰, 의사결정, 복잡한 작업
↓ 검증/머지
CI/CD 파이프라인 (자동화)

핵심 변화:

  • 엔지니어 가 줄어드는 것이 아니라 역할이 바뀜
  • 코드 작성 비중 감소, 코드 리뷰·설계·명세 작성 비중 증가
  • 에이전트 환경을 전담하는 Harness Engineer 포지션 등장
현재: 소프트웨어 엔지니어
Step 1 (1~3개월): Agent Harness 기초 학습
- 이 과정 완료
- 개인 프로젝트에 에이전트 도입
Step 2 (3~6개월): 팀 도입 경험
- 팀에 AGENTS.md, CI 통합 제안
- 에이전트 성공률 측정 시작
Step 3 (6~12개월): 전문화
- 옵저버빌리티 스택 구축
- 비용 최적화 실적 데이터 확보
- 조직 내 Harness Engineering 챔피언
목표: Harness Engineer / AI Platform Engineer

Harness Engineer는 코드 작성에서 에이전트 환경 설계로 무게 중심이 이동한 새로운 역할입니다. 시스템 사고, 아키텍처 설계, 명세 작성, 옵저버빌리티, 반복 속도의 5가지 역량이 핵심입니다. 팀 구조는 점진적으로 변화하며, 엔지니어의 역할은 사라지는 것이 아니라 더 높은 수준의 판단과 설계로 이동합니다.