콘텐츠로 이동

커리어와 조직 변화

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가지 역량이 핵심입니다. 팀 구조는 점진적으로 변화하며, 엔지니어의 역할은 사라지는 것이 아니라 더 높은 수준의 판단과 설계로 이동합니다.