← Yeongjun Yoo
Andrew Ng: AI Engineering Skills Map · Part 3 of 52026-08-28

This post is in Korean.

2부: 소프트웨어 엔지니어링 펀더멘털 — 바이브 코딩의 한계와 트레이드오프

원작자: 앤드류 응 (Andrew Ng / DeepLearning.AI)
출처: DeepLearning.AI 뉴스레터 The Batch (Issue 368, 2026년 8월 28일)
역자: 유영준 (완역 및 큐레이션)


TL;DR


[한국어 완역]

친애하는 친구들에게,

에이전틱 코딩의 등장으로 소프트웨어 엔지니어링 펀더멘털은 어떻게 변화했을까요?

코딩 에이전트에게 모든 코드를 작성하게 하더라도, 자신이 원하는 트레이드오프를 내리도록 에이전트를 유도하거나 애초에 어떤 트레이드오프가 존재하는지 파악하기 위해서는 소프트웨어 펀더멘털에 대한 이해가 필수적입니다. 또한 AI 애플리케이션을 만들 때 핵심 AI 로직은 결국 더 넓은 소프트웨어 애플리케이션을 통해 사용자에게 전달되며, 숙련된 엔지니어가 이 전체 구조를 형성해야 합니다.

소프트웨어 펀더멘털 없이 바이브 코딩(vibe coding)하는 초심자도 단순한 애플리케이션은 만들 수 있습니다. 하지만 이는 흔히 지연 시간, 가용성, 일관성, 신뢰성, 유지보수성, 단순성, 비용 측면에서 에이전트가 잘못된 트레이드오프를 내리게 만듭니다. 대부분의 경우 개발자는 그러한 상충 관계가 존재하는지조차 몰랐기 때문에 에이전트를 올바른 방향으로 이끌지 못한 것입니다.

소프트웨어 엔지니어링에서 알아야 할 5대 핵심 영역은 다음과 같습니다:

  1. 풀스택 애플리케이션 구축 (Building full-stack applications)
  2. 데이터 관리 (Managing data)
  3. 시스템 아키텍처 설계 (Designing system architectures)
  4. 보안과 신뢰성 확보 (Making systems secure and reliable)
  5. 프로덕션 확장 및 운영 (Scaling and operating in production)

1. 풀스택 애플리케이션 구축 (Building full-stack applications)

코딩 에이전트는 프론트엔드나 모바일 등 특정 영역에 머물던 개발자들을 광범위한 풀스택 엔지니어로 확장시킵니다. 하지만 풀스택이 실제로 어떻게 맞물려 돌아가는지 이해해야 합니다.

UI 컴포넌트, 캐싱, 페이지 렌더링, API 설계, 인증, 상태 및 세션 관리, 비동기 처리, 데이터 영속화, 테스팅, 보안, 웹 접근성의 핵심 원리를 알아야 에이전트를 통제할 수 있습니다.

2. 데이터 관리 (Managing data)

데이터는 소프트웨어가 세워지는 기반이며 (에이전트가 마이그레이션을 돕더라도) 상대적으로 변경하기 어렵습니다.

접근 패턴을 고려해 무엇을 얼마나 오래 저장할지 결정하고, 관계형 테이블·문서·Key-Value·그래프 등 적합한 데이터 모델과 저장소를 선택해야 합니다. 트랜잭션, 동시성, 정합성, 신선도를 보장해야 합니다. 무엇보다 AI 시스템은 데이터 소스로부터 입력 컨텍스트를 가져오므로, 데이터 아키텍처가 잘못되면 AI는 “자신이 무엇을 모르는지조차 모르는” 상태에 빠집니다. 에이전트를 위한 데이터 인프라 구축은 매우 빠르게 발전하는 영역입니다.

3. 시스템 아키텍처 설계 (Designing system architectures)

소프트웨어의 목적(사용자 수, 레이턴시 중요도, 비용 제약)에 맞춰 프론트와 백엔드의 경계, 시스템 분해, 상태 배치, 모놀리스 vs 마이크로서비스 단위를 결정합니다. 실험을 통해 최적의 언어와 프레임워크 스택을 선정합니다.

나아가 아키텍처는 고정된 것이 아닙니다. 프로토타입 단계의 단순한 구조와 첫 프로덕션 구조, 대규모 스케일업 단계의 구조는 달라져야 하며, 엔지니어는 아키텍처를 유연하게 진화시킬 수 있어야 합니다.

4. 보안과 신뢰성 확보 (Making systems secure and reliable)

단위 테스트와 통합 테스트의 조합, 테스트 커버리지 전략을 수립하고, API 레이트 리밋 등 잠재적 장애를 대비해 우아한 성능 저하(graceful degradation)와 장애 반경(blast radius) 최소화를 설계합니다.

나아가 보안을 개발 주기 앞단으로 당기는 “시프트 레프트(shift left)” 흐름에 맞춰, AI 도구로 취약점을 스캔하고 공급망 주입 공격을 점검하며 클라우드 공격 표면을 분석하되 이를 해석하고 조치할 보안 지식을 갖춰야 합니다.

5. 프로덕션 확장 및 운영 (Scaling and operating in production)

CI/CD 배포 자동화, IaaS 인프라 이해, 관측성 도구와 알림 설정, 장애 대응 체계를 구축합니다.

실제 트래픽 부하를 이해하고 서버 확장, 로드 밸런싱, 샤딩/인덱싱/복제를 통한 데이터 인프라 적응을 실행합니다. 버전 관리, 코드 리뷰, 기술 부채 관리 등의 규율을 유지합니다.


코딩 문법을 암기하는 것과 같은 지식은 빠르게 퇴색하고 있습니다. 그러나 소프트웨어가 어떻게 작동하는지 본질적으로 이해하는 개발자는 맹목적으로 바이브 코딩하는 이들을 압도적인 격차로 능가합니다.

Keep building!
— 앤드류 응 (Andrew Ng)


큐레이터 노트

"바이브 코딩(Vibe Coding)"이라는 신조어가 유행하면서 '이제 엔지니어링 원리는 몰라도 된다'는 착각이 번지고 있습니다.

앤드류 응의 경고는 명확합니다. 에이전트는 지시한 대로 코드를 짤 뿐, 그 코드가 유발할 N+1 쿼리 문제, 트랜잭션 격리 수준 실패, 메모리 누수, 무한 재시도로 인한 비용 폭탄을 스스로 걱정해주지 않습니다.

결국 에이전트를 제대로 부리기 위해서는 에이전트보다 더 넓은 시야에서 시스템의 상충 관계(Tradeoff)를 꿰뚫어보는 엔지니어링 뼈대가 절대적으로 필요합니다.