Andrew Ng · X (2026-08-29)

AI 엔지니어링 스킬 맵: 소프트웨어 엔지니어링 기본기

에이전트가 코드를 다 짜주는 시대에도, 왜 소프트웨어의 기본 원리를 이해해야 할까 — 8월 14일 공개된 AI 엔지니어링 스킬 맵의 두 번째 후속글(software engineering fundamentals 분기).

읽기 전에

핵심 질문 — 에이전트가 코드를 다 짜준다면, 개발자가 여전히 붙들고 있어야 할 소프트웨어 기본기는 정확히 무엇이고, 왜 그것이 사라지지 않는가?

선행 개념 (모르면 막힘)

  • Agentic coding / vibe coding — AI 에이전트가 반복 루프로 코드를 쓰고 실행하고 고치는 방식. "vibe coding"은 Karpathy가 2025-02 만든 말로, 코드 자체를 정독하지 않고 "느낌으로" 넘기는 극단. Ng이 초심자 예로 드는 대상.
  • 4-스킬 스킬 맵 — 이 글은 단독 글이 아니다. 8월 14일 Ng이 공개한 "AI Engineering Skills Map"(4가지 최상위 스킬: AI 앱 구축·SW 기본기·코딩 에이전트 활용·빌드 셰이핑) 중 두 번째 가지를 확대한 후속글이다.
  • 트레이드오프 어휘 — latency, availability, consistency, reliability, maintainability, simplicity, cost. Ng의 논지는 "이 단어들을 모르면 에이전트에게 뭘 시키고 있는지도 모른다"이다.

멘탈 모델

이 글의 뼈대는 단순하다 — "소프트웨어 기본기 = 에이전트를 조종하기 위한 언어". 에이전트는 여전히 트레이드오프를 대신 결정해주지 못한다. 결정을 위임하려면 어떤 트레이드오프가 존재하는지 알아야 하고, 그러려면 5개 하위 스킬(풀스택 · 데이터 · 아키텍처 · 보안·신뢰성 · 확장·운영)을 각각의 어휘 수준으로 이해해야 한다.

읽기 순서

2~3분: 아래 Executive Summary + 이미지의 트리 구조. 5분: 5개 하위 스킬의 첫 문장씩. 완독: 각 하위 스킬 문단(각 4~7줄)의 핵심 어휘를 자기 프로젝트에 매핑하며 읽는다.

예상 소요

요약만 3분 · 완독 8~10분

점검 질문 (읽고 나서)

  1. Ng이 말하는 "vibe codes without understanding"의 실패는 어떤 종류의 트레이드오프에서 가장 자주 나타난다고 열거되었는가? (7개 이상)
  2. 데이터 아키텍처가 "AI가 자기가 뭘 모르는지도 모르게" 만드는 이유를 한 문장으로.
  3. "shift left"는 무엇을 좌측으로 옮기는가, 그리고 그 결과 개발자에게 붙는 역할은?

Executive Summary

한 문장 요약. 에이전트 코딩 시대에도 소프트웨어 기본기는 사라지지 않는다 — 사라지는 것은 문법 암기 뿐이고, 남는 것은 에이전트를 조종하는 데 필요한 트레이드오프 언어다. 이 언어는 다섯 축(풀스택·데이터·아키텍처·보안·운영)에 걸쳐 있다.

주요 주장 (전수)

  • 모든 코드를 에이전트가 쓰더라도, 어떤 트레이드오프가 존재하는지 알아야 에이전트를 원하는 방향으로 조종할 수 있다.
  • 기본기 없이 "vibe code"만 하는 초심자는 간단한 앱은 만들지만 latency·availability·consistency·reliability·maintainability·simplicity·cost에서 나쁜 선택을 하게 된다 — 자기가 나쁜 선택을 하고 있다는 사실 자체를 모른다.
  • AI 애플리케이션은 대개 더 넓은 소프트웨어 애플리케이션 안에 AI 코어가 얹힌 형태다. AI만 알고 그 껍데기를 모르면 만들거나 다듬을 수 없다.
  • 다섯 개 하위 스킬: 풀스택 애플리케이션 구축 · 데이터 관리 · 시스템 아키텍처 설계 · 시스템의 보안과 신뢰성 · 프로덕션에서의 확장과 운영.
  • 에이전트 코딩은 예전에 프런트엔드·모바일 같은 특화 롤이었던 개발자를 풀스택 롤로 확장시킨다.
  • 데이터는 특별대우 — 바꾸기 어렵고(에이전트가 마이그레이션을 도와도), AI 시스템의 입력 컨텍스트이기 때문. 데이터 아키텍처가 나쁘면 AI는 자기가 뭘 모르는지도 모른다.
  • 아키텍처는 움직이는 표적이다 — 프로토타입 아키텍처 ≠ 첫 프로덕션 아키텍처 ≠ 스케일 확장 후 아키텍처. 각 단계 결정에는 소프트웨어 컴포넌트에 대한 깊은 지식이 필요하다.
  • "shift left" — 보안은 소프트웨어를 다 짜고 나서 붙이는 게 아니라 SDLC의 왼쪽(초기)으로 이동한다. 그래서 많은 개발자가 부분적으로 보안 엔지니어 역할도 겸하게 된다.
  • 프로덕션 운영에는 배포 자동화(CI/CD) · IaaS · 관측성 · 알림 · 인시던트 관리 · 샤딩/인덱싱/복제 · 버전 관리 · 코드 리뷰 · 의존성 유지 · 기술 부채 관리가 포함된다.
  • 사라지는 것: 문법 암기. 남는 것: 소프트웨어가 실제로 어떻게 작동하는지에 대한 깊은 이해 — 이 이해가 있는 개발자는 없는 개발자를 크게 능가한다.
  • 이 글은 스킬 맵 시리즈의 세 번째 축(코딩 에이전트 활용)과 네 번째 축(빌드 셰이핑)이 따로 다뤄질 것임을 예고한다.
발행일 2026-08-29
플랫폼 X (Andrew Ng)
하위 스킬 5개
AI Engineering Skills Map 트리 다이어그램 — 최상위 'AI Engineering' 아래 4개 스킬(Building and deploying AI applications, Software engineering fundamentals[강조], Using coding agents, Shaping the build)이 있고, 강조된 노드가 다시 5개(Building full-stack applications, Managing data, Designing system architectures, Making systems secure and reliable, Scaling and operating in production)로 확장됨
원문 첨부 다이어그램. 이번 글은 두 번째 노드(Software engineering fundamentals)를 5개 하위 스킬로 확대한다.

팩트체크

A종합 신뢰도 — A. 원문은 에세이/오피니언이지 실증 논문이 아니므로 사실 주장은 대부분 정의적/규범적이고 검증 가능한 것들은 모두 확인된다. 상위 스킬 맵의 존재·발표일·구성, "shift left"·CAP류 트레이드오프, "vibe coding"의 원저작·정의 모두 1차 출처와 일치. 유일하게 약간의 유의 필요: "10,000+ 채용공고 분석" 등의 방법론 수치는 이 X 글에는 없고 상위 원출처(The Batch)에서만 확인되므로, 이 글 단독으로 인용할 수는 없다.
정합성 한줄평. 오피니언 에세이로서 내부 논리가 촘촘하고, 인용 없이 든 개념들(vibe coding, shift left, 트레이드오프 리스트)은 모두 업계 표준 정의와 정렬된다.

이 글이 "AI Engineering Skills Map" 시리즈의 두 번째 지도 — 즉 4개 최상위 스킬 중 "Software engineering fundamentals"를 확대한 후속글이라는 것.

사실 (✅). 원 스킬 맵은 2026-08-14 The Batch/X에 공개되었고 최상위 4스킬(Building and deploying AI applications, Software engineering fundamentals, Using coding agents, Shaping the build)이 명시되어 있다. 이번 글은 그중 두 번째를 5개 하위 스킬로 펼친다.

deeplearning.ai/the-batch — AI Engineering Skills Map 원 스킬 맵 X 포스트 (2026-08-14)

"vibe codes" 표현은 Andrej Karpathy의 조어를 재활용한 것이며, "코드 자체를 이해하지 않고 AI 산출을 그대로 받는" 방식이라는 이 글의 함의도 원의미와 일치한다.

사실 (✅). Karpathy는 2025-02에 "vibe coding"을 "vibe에 완전히 항복하고, 지수에 몸을 맡기고, 코드가 존재한다는 사실조차 잊는" 실험적 스타일로 소개했다. Ng이 여기서 쓰는 부정적 뉘앙스("without understanding")도 원조어의 극단 지점과 정확히 겹친다.

Wikipedia — Vibe coding IBM — What is Vibe Coding?

"shift left"는 보안(및 테스트) 작업을 SDLC의 초기 단계로 옮기는 실무로, DevSecOps의 근간이라는 것.

사실 (✅). 업계 표준 정의와 일치. 이름 그대로 전통적 프로젝트 타임라인의 좌측(설계·초기 개발)으로 보안을 이동시키는 것이며, 여러 벤더/기관 문서가 이를 DevSecOps의 핵심 원리로 규정한다.

EC-Council — Shift Left in DevSecOps GitLab — Shift left security

"latency·availability·consistency·reliability·maintainability·simplicity·cost" 트레이드오프 리스트는 시스템 설계의 공인된 축이라는 함의.

부분 사실 (🟡). Ng이 나열한 축은 모두 시스템 설계의 실제 트레이드오프 어휘이지만, CAP 정리(Consistency/Availability/Partition tolerance)처럼 하나의 공리로 묶인 세트는 아니고 여러 문헌에서 서로 다른 조합으로 다뤄지는 느슨한 실무 어휘다. 이 글이 이를 "표준 세트"로 주장하지는 않으므로 오해 소지는 낮다.

Hello Interview — CAP Theorem BMC — CAP Theorem

저자 신원 — Andrew Ng은 DeepLearning.AI 창립자, Landing AI 창립자·CEO, Coursera 공동창립자·이사장, Stanford 부교수, Google Brain 창립 리더, 前 Baidu VP·수석과학자.

사실 (✅). 여러 1차/2차 자료로 확인.

andrewng.org — 공식 사이트 Stanford AIMI — Andrew Ng

"10,000+ 채용공고 분석" 등 방법론 수치.

이 X 글 안에는 없다 (🟡 이 글에는 언급 없음). 상위 원출처(The Batch)에는 "over 10,000 job postings"라는 표현이 있으므로 시리즈 전체의 근거로는 유효하나, 이 후속글 단독을 인용해 방법론 수치를 주장하면 안 된다.

The Batch — 원 스킬 맵 (방법론 수치의 유일 근거)

원본 (완역)

원문 첨부 다이어그램 — AI Engineering 트리
원문 첨부 이미지: AI 엔지니어링 스킬 맵 (Software engineering fundamentals 노드가 이 글의 초점).

도입: 에이전트 시대에도 왜 기본기인가

에이전트 코딩(agentic coding)과 함께 소프트웨어 엔지니어링 기본기는 어떻게 달라졌는가? 여러분이 코딩 에이전트를 써서 모든 코드를 쓰게 하더라도, 소프트웨어 기본기를 이해하는 것은 여전히 중요하다 — 원하는 트레이드오프를 하도록 에이전트를 조종하려면, 아니 어떤 트레이드오프가 존재하는지라도 알려면 그것이 필요하기 때문이다. 게다가 AI 애플리케이션을 만들 때 AI 코어는 대개 더 넓은 소프트웨어 애플리케이션 안에서 표현되며, 여러분은 그 애플리케이션을 함께 만들거나 다듬고 싶어질 것이다.

소프트웨어 기본기를 이해하지 못한 채 "vibe code"만 하는 초심자는 간단한 애플리케이션은 만들 수 있지만, 이런 경우 코딩 에이전트는 latency, availability, consistency, reliability, maintainability, simplicity, 그리고/또는 cost에서 잘못된 트레이드오프를 하게 되기 일쑤다. 그런 상황에서 개발자는 그런 트레이드오프가 존재한다는 사실 자체를 몰랐고, 따라서 자기 애플리케이션의 맥락에 맞는 올바른 결정을 하도록 에이전트를 조종하지 못했다.

이 글은, AI 엔지니어링 스킬에 관한 우리의 연구가 소프트웨어 엔지니어링에서 가장 알아야 한다고 보여준 것들을 정리한다. 그것은 다음을 잘하는 것을 필요로 한다:

1. 풀스택 애플리케이션 구축

Building full-stack applications. 에이전트 코딩은, 예전에 좀 더 특화된 역할(예: 프런트엔드 개발자, 모바일 개발자)만 해오던 많은 개발자를 더 넓은 풀스택 역할로 옮겨준다. 코딩 에이전트는 여러분이 익숙하지 않은 개발 프로세스의 일부를 도울 수 있다. 그렇더라도, 풀스택이 실제로 어떻게 작동하는지 이해하는 것은 중요하다. 숙련된 개발자는 프런트엔드와 백엔드 시스템의 핵심 컴포넌트와 개념들 — UI 컴포넌트, 캐싱, 페이지 렌더링, API의 선택과 설계, 인증(authentication), 상태·세션 관리, 비동기 처리, 데이터 영속화, 테스팅, 보안, 접근성 — 을 이해한다.

2. 데이터 관리

Managing data. 데이터는 특별한 주의를 받을 자격이 있다. 왜냐하면 데이터는 소프트웨어가 그 위에 세워지는 기반이고, 상대적으로 바꾸기 어렵기 때문이다(에이전트가 마이그레이션을 돕는다고 해도). 데이터 관리를 알면, 액세스 패턴을 따져보고 그것을 근거로 무엇을 얼마 동안 저장할지 결정할 수 있다. 올바른 데이터 모델과 저장 유형(관계형 테이블, 문서, 키-값, 그래프 등), 인프라를 선택할 수 있고, 이 선택은 다시 속도·확장성·가용성·신뢰성·비용에 영향을 미친다. 트랜잭션, 동시성, 그리고 데이터가 깨끗하고 일관되며 최신 상태로 유지되도록 하는 법을 이해한다. 필요할 때 프라이버시·거버넌스·컴플라이언스를 적절히 확보할 수 있다. 데이터 라이프사이클을 관리할 줄 안다.

애플리케이션이 진화함에 따라 데이터 아키텍처도 함께 진화시킬 줄 안다. 데이터 관리 방식을 결정하려면 사람으로부터 나오는 상당한 컨텍스트가 필요하다. 여러분의 AI 시스템은 그 데이터 소스에서 자기 입력 컨텍스트를 받게 되므로, 데이터 아키텍처가 잘못 골라지면 AI는 자기가 무엇을 모르는지도 모른다. 그래서 관련 컨텍스트와 AI 엔지니어링 실력을 갖춘 누군가 — 바로 당신 — 의 숙련된 개입이 필요하다. 전통적 소프트웨어나 사람이 아니라 에이전트를 위한 데이터 인프라를 어떻게 지을 것인가는 빠르게 진화하는 영역이므로, 이 분야가 발전함에 따라 모범 사례를 계속 조정해야 한다.

3. 시스템 아키텍처 설계

Designing system architectures. 소프트웨어와 데이터 풀스택의 주요 컴포넌트를 이해하고 나면, 조각들을 어떻게 조합할지 결정하는 데 더 유리한 자리에 서게 된다. 좋은 시스템 설계는 소프트웨어가 무엇을 하도록 되어 있는지(사용자는 몇 명? latency는 얼마나 중요? cost는 얼마나 중요?)를 이해해야 하고, 그래야 애플리케이션 플랫폼, 프런트엔드-백엔드 경계, 시스템 분해, 애플리케이션 상태의 배치, 아키텍처 세분화(모놀리스 vs. 마이크로서비스)에 관한 선택을 할 수 있다. 스택도 고르게 된다 — 프로그래밍 언어, 런타임, 컴포넌트/프런트엔드/백엔드 프레임워크, 데이터 기술 — 때로는 하나로 정하기 전에 옵션을 평가하기 위해 실험을 돌리기도 하면서.

더 나아가, 올바른 아키텍처는 프로젝트 단계에 따라 움직이는 표적이다. 빠른 프로토타입을 짓기 위해 고른 단순한 아키텍처가 첫 프로덕션 시스템을 짓기에는 맞지 않을 수 있고, 그것 역시 애플리케이션이 스케일할수록 달라질 수 있다. 이런 결정을 내리려면 소프트웨어 컴포넌트와 애플리케이션 맥락 양쪽에 대한 깊은 기술적 지식이 필요하다 — 그래야 더 나은 트레이드오프를 하는 아키텍처를 설계하고 진화시킬 수 있다.

4. 시스템의 보안과 신뢰성

Making systems secure and reliable. 신뢰성 있는 시스템을 만들려면, 시스템의 정확성을 검증하는 테스트 전략을 세울 줄 알아야 한다: 단위 테스트와 통합 테스트의 조합, 사용할 프레임워크, 커버리지 수준. 또한 실패 가능성을 두고 설계할 줄 안다 — 실패(예: API가 rate limit에 걸리는 상황)를 다루는 방법, 완만한 성능 저하(graceful degradation)를 넣는 방법, 실패의 폭발 반경을 최소화하는 방법. 나아가, 소프트웨어를 먼저 다 만들고 그다음에 보안을 어떻게 붙일지 고민하는 대신, "shift left" 운동은 보안 작업을 라이프사이클의 더 이른 단계로(전통적 프로젝트 타임라인에서 왼쪽으로) 옮기고 있다. 모든 개발자가 풀스택 개발자로 옮겨가고 있는 것과 마찬가지로, 많은 개발자가 이제 부분적으로 보안 엔지니어이기도 하다. 이제 AI 도구를 써서 코드의 취약점을 스캔하고, 의존성의 공급망 인젝션을 점검하고, 클라우드 구성의 공격 표면을 검사할 수 있다. 하지만 이걸 잘하려면 여전히 보안에 대한 어느 정도의 지식이 필요하다.

5. 프로덕션에서의 확장과 운영

Scaling and operating in production. 실제 사용자에게 서비스하려면, 소프트웨어를 프로덕션으로 배포할 줄 알아야 한다. 소프트웨어 개발 라이프사이클(SDLC)을 실행할 줄 아는 것이 도움이 되는데, 여기에는 빌드와 테스트 외에도 배포 환경 구성, 릴리스 전략 결정, 배포 자동화(CI/CD) 적용, IaaS(Infrastructure as a Service) 이해가 포함된다.

프로덕션 운영은 관측성 도구를 갖추고, 알림을 세팅하고, 인시던트를 관리하는 것을 요구한다. 마지막으로, 애플리케이션을 스케일하려면 실제 부하를 이해하고, 서버를 확장하고 로드 밸런싱하며, 데이터 인프라를 샤딩·인덱싱·복제로 조정하거나 아키텍처를 바꿔 시스템이 스케일에 적응하도록 만들 줄 알아야 한다. 마지막으로, 버전 관리, 코드 리뷰, 의존성 유지, 기술 부채 관리 같은 코딩 모범 사례를 이해하는 것은 시간이 지나도 시스템을 계속 진화시키는 데 도움이 된다.

맺음: 무엇이 사라지고 무엇이 남는가

코딩 에이전트는 소프트웨어를 만드는 방식을 바꿨다 — AI 컴포넌트가 하나도 들어 있지 않은 소프트웨어를 짓는 방식까지 포함해서. 코딩 지식의 어떤 부분들(예: 코딩 문법 암기)은 낡아가고 있다. 하지만 소프트웨어가 어떻게 작동하는지 깊게 이해하는 개발자들은, 이해 없이 vibe code만 하는 개발자들을 크게 능가한다.

소프트웨어 기본기(AI에 더해서)를 이해하는 것은 소프트웨어가 무엇을 할 수 있고 무엇을 할 수 없는지를 파악하는 데도 도움이 된다. 이는 여러분이 코딩 에이전트를 어떻게 쓰고 빌드를 어떻게 형태 잡아 갈지에 관한 중요한 컨텍스트가 된다. 이 주제들은 앞으로의 글에서 다루겠다.

원문 반응(2026-08-29 기준): 조회수 77만 · 답글 201 · 리포스트 약 1.2천 · 좋아요 약 7.3천 · 북마크 약 1.1만.

원본 링크·인용

원문 본문에는 외부 인라인 링크가 없다 (자기 자신에 대한 링크: 포스트 permalink · analytics · quotes 뿐). 위 목록은 본문 이해와 팩트체크에 실제로 사용된 참조를 모아둔 것.

기타

본 문서는 link 스킬(zbrain)로 조립된 학습·팩트체크·완역 산출물이다. 시각 시스템: ui-ux openai reference. 원문 저작권은 저자에게 있으며, 본 산출은 학습·비평 목적의 transformative 완역이다.