IT 업무를 복잡성 클래스로 정리하기 ~ 생성 AI 시대의 엔지니어 역할 변화 ~
요약
생성 AI의 등장으로 소프트웨어 개발 과정은 코드 작성 시간 단축과 리뷰/검증 중요도 증가라는 변화를 겪고 있으며, 이를 컴퓨터 과학의 복잡성 클래스(P, NP 등)로 분석할 수 있습니다. P 문제는 자동화 도구에 적합하고, NP 문제는 검증을 통해 정답성을 판단하는 영역입니다. 따라서 생성 AI는 '해결'보다는 '후보 생성'에 강점을 가지며, 인간 엔지니어의 역할은 문제 자체를 정의하고(NP 난문), 그 문제를 검증 가능한 형태로 분해 및 변환하는 능력으로 변화해야 합니다.
핵심 포인트
- 생성 AI는 코드를 직접 '해결'하기보다 '후보를 생성'하는 도구이므로, 결과의 정답성을 항상 보장할 수 없습니다.
- 엔지니어의 역할은 단순한 문제 해결(Solving)에서 벗어나, 문제를 명확히 정의하고 검증 가능한 형태로 변환하는 능력(Defining & Transforming)으로 이동해야 합니다.
- P 문제는 자동화 도구로 처리 가능하며, NP 난문 문제는 인간의 문제 설정 및 평가가 필수적입니다.
- AI 시대에 중요한 역량은 '문제 해결' 자체가 아니라, 문제를 '분해하고, 검증하고, 정의하는' 능력입니다.
생성 AI 의 등장으로 인해 소프트웨어 개발의 역할이 크게 변했습니다.
- 코드 작성 시간이 줄었다
- 리뷰 및 검증의 중요성이 높아졌다
이러한 변화를 이해하는 하나의 관점으로는 복잡성 클래스에 적용하여 정리해 볼 수 있습니다.
※실무는 엄밀한 계산 문제가 아니므로, 오직 性質의 유사입니다.
복잡성 클래스는 많지만,
- P 문제 (다항식 시간으로 해결 가능한 문제)
- NP 문제 (다항식 시간으로 정답성을 검증할 수 있는 문제)
- NP 완전 문제 (NP 문제 중 가장 어려운 문제)
- NP 난문 문제 (NP 문제와 동일 이상으로 어려운 문제)
에 한정하여 분류합니다.
이러한 관계는 다음과 같습니다.
※주의: P≠NP 로图示하고 있습니다.
다항식 시간으로 해결 가능한 문제 = 절차가 명확하고 기계적으로 해결할 수 있는 일
- 절차가 명확
- 입력/출력이 결정됨
- 재현성이 높음
도구 또는 스크립트로 자동화할 수 있는 영역
- CRUD 구현 (단순 로직)
- SQL 생성
- 마이그레이션
- API 스키레톤 생성
- 코드 변환 (DTO ⇔ Entity)
- 표준형 배치 처리
다항식 시간으로 정답성을 검증할 수 있는 문제 = 해결하는 것은 어렵지만 정답성을 확인할 수 있는 일
- 해를 만드는 것이 어려움
- 정답성은 검증 가능
정확한지 여부를 테스트 또는 리뷰로 판단할 수 있는 영역
- 상세 설계서 ⇒ 코딩
- 테스트 코드 작성
- 단위 테스트 작성
- 버그 수정
- 코드 리뷰
- API 설계 (요청이 명확한 경우)
NP 문제 중 가장 어려운 문제 = 최적해를 찾는 것이 매우 어려운 일
- 선택지가 폭발적으로 증가함
- 최적해를 찾기 어려움
설계력, 경험, 트레이드오프 판단이 요구되는 영역
- 아키텍처 설계
- 마이크로서비스 분할
- DB 설계
- 성능 최적화
- 캐스트 전략 설계
- 대규모 리팩토링
NP 문제와 동일 이상으로 어려운 문제 = 정답의 정의 자체가 어려운 일
- 정답의 정의가 모호함
- 검증조차 어려움
의사결정 영역
- 요구사항 정의
- 프로덕트 기획
- UX 설계
- 기술 선정
- 개발 프로세스 설계
- 팀 설계
복잡성과 일의 관계는 다음과 같습니다.
| 복잡성 | 일 |
|---|---|
| P 문제 | 절차가 명확하고 기계적으로 해결할 수 있는 일 |
| ... |
생성 AI 는 알고리즘으로서 문제를 해결하는 것이 아닙니다.
입력에 대해 유추 가능한 답변을 출력합니다.
따라서, 정확한 답을 제시할 수는 있지만 항상 정답성이 보장되는 것은 아닙니다.
생성 AI 는
"해결하는" 것이 아니라 "후보를 생성하는"
P 문제에는 높은 정확도로 구현 또는 코드 생성을 수행할 수 있습니다.
NP 문제에는 해의 후보를 빠르게 생성하고 탐색을 크게 효율화합니다.
그러나 NP 난문 문제에는 인간에 의한 문제 설정 및 평가가 필수적입니다.
생성 AI 는
- P 문제를 자동화
- NP 문제를 지원
- NP 난문 문제는 인간 의존
생성 AI 의 도입으로 인해 인간의 역할이 변합니다.
중요해지的是 문제의 해결 방법보다 처리 방법입니다.
생성 AI 시대에서의 인간의 역할은 세 가지로 요약할 수 있습니다.
- 출력 결과의 정답성을 판단하는
- 테스트 및 리뷰를 설계하는
- 경계 조건 및 예외를 확인하는
NP 문제의 "검증 측면"
- 입력/제약/평가 축을 명확히 하는
- 무엇을 해결해야 하는지 결정하는
- 성공 조건을 정의하는
NP 난문 문제 영역
- 문제를 부분 문제로 분할하는
- 검증 가능한 형태로 변환하는
- 생성 AI 가 처리할 수 있는粒度로 낮추는
NP 문제에 귀착 가능 (=검증 가능) 한 형태로 변환하는 능력
복잡성 클래스의 관계에서 보면, 생성 AI 의 본질이 보입니다.
| 복잡성 | 본질 | 담당자 |
|---|---|
| P 문제 | 절차화 가능 | 자동화/도구 |
| ... |
생성 AI 는 해답자가 아니라 해답의 후보를 대량으로 출력하는 존재입니다.
그리고 인간은 문제를 "분해하고, 검증하고, 정의하는" 측면에 돌아갑니다.
생성 AI 시대에서 엔지니어에게 요구되는 것은 "문제를 해결하는 것"이 아니라 "문제를 해결할 수 있는 형태로 변환하는 것"입니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Qiita AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기