- AI는 몇 분 만에 UI와 데이터베이스를 갖춘 프로토타입을 만들지만, 첫 작동 버전에서 프로덕션급 제품까지의 거리를 줄여주지는 못함
- 실제 제품에는 확장성, 오류 처리, 관측 가능성, 보안, 인증, 데이터 구조처럼 문법 작성보다 공학적 판단이 필요한 문제가 남아 있음
- 컴퓨터 과학의 가치는 코드 생산보다 시스템의 동작과 실패 원인을 이해하는 정신 모델에 있으며, 이를 알아야 비효율적인 쿼리나 경쟁 조건을 발견할 수 있음
- 요구사항을 기계적으로 코드로 옮기는 수요는 줄어들지만, 숙련된 엔지니어는 반복 작업을 AI에 맡기고 전문성이 필요한 문제에 집중해 훨씬 빠르게 일할 수 있음
- AI를 이해의 대체재로 사용하면 고장 난 시스템을 수정·확장·인수인계하기 어려우므로, 기초 지식을 먼저 익힌 뒤 AI 도구를 활용해야 함
프로토타입과 제품 사이의 간극
- 자연어로 아이디어를 설명하면 몇 분 안에 UI와 데이터베이스를 갖추고 의도한 기능을 수행하는 작동 가능한 프로토타입을 얻을 수 있음
- 하지만 노트북에서 실행되는 프로토타입은 실제 환경에서 여러 문제를 드러낼 수 있음
- 부하를 견디지 못하고 오류 처리도 갖추지 못함
- API 토큰이 유출될 수 있음
- 데모용 데이터 모델이 두 번째 사용자를 추가하는 순간 무너질 수 있음
- 인증이 검증되지 않은 가정에 의존하며 보안 여부도 불확실함
- 배포 단계에 이르면 ‘작동한다’와 ‘준비됐다’ 사이의 큰 프로덕션 격차가 드러남
어려운 일은 코드 작성 이후에 있었음
- 소프트웨어 엔지니어는 이전에도 무언가를 빠르게 실행할 수 있었고, 실제로 시간이 걸리는 부분은 그 이후였음
- 규모가 커져도 버티는 시스템 설계
- 사용자가 예상 밖의 경로로 진입할 때의 예외 처리
- 장애 발생을 확인할 수 있는 관측 가능성 구축
- 3년 뒤의 후회를 줄이는 데이터 아키텍처 결정
- AI는 최초 작동 버전까지 걸리는 시간을 크게 단축했지만, 그 버전에서 프로덕션급 시스템까지 가는 거리는 줄이지 못함
- 빠른 요청·응답·결과 확인 과정은 나머지 개발 과정도 압축됐다는 인상을 주지만, 소프트웨어의 어려운 문제는 애초에 문법 작성이 아니었음
- 무엇을 만들고 어떻게 구조화할지, 무엇을 미루고 언제 거절할지를 정하는 판단력이 프로토타입과 프로덕션 시스템을 구분함
컴퓨터 과학이 여전히 필요한 이유
- AI 생성 코드에 쉽게 접근할 수 있게 되면서 알고리듬, 자료구조, 운영체제, 이론을 수년간 공부해야 하는지 의문을 품는 신규 진입자가 늘어남
- 컴퓨터 과학 교육의 가치는 코드 작성 능력에만 있지 않으며, 시스템이 어떻게 동작하고 실패하며 왜 그런 결과가 생기는지 이해하는 정신 모델을 형성함
- 이 기반이 있어야 AI가 생성한 코드의 잠재적 실패를 식별할 수 있음
- 5천만 행 테이블에서 전체 테이블 스캔을 일으키는 쿼리
- 동시 부하에서 경쟁 조건을 만드는 캐시 전략
- 현재 요구사항은 해결하지만 다음 문제를 훨씬 어렵게 만드는 아키텍처
- 기초 지식이 없으면 모델의 판단에 전적으로 의존하게 됨
- 모델은 판단력이 아니라 패턴 매칭을 바탕으로 의도에 맞는다고 여기는 코드를 적극적으로 생성함
- 생성된 코드는 올바르고 관례에 맞는 것처럼 보여도 프로덕션에서 실패할 수 있음
- 문제를 알아볼 지식이 없다면 진단에 며칠이 걸릴 수 있음
- 이해와 결과물 사이의 거리가 줄어든 지금은 컴퓨터 과학을 배우기 좋은 시기이며, 분산 시스템을 제대로 이해한 학생은 10년 전보다 훨씬 짧은 시간에 이를 구축할 수 있음
자동화되는 업무와 확대되는 생산성
- 요구사항을 한 줄씩 구현으로 옮기는 기계적 코딩 업무의 수요는 실제로 감소하고 있으며, 해당 영역은 자동화되고 있음
- 생산성 분포의 하단은 압축되는 반면 상단의 한계는 확장됨
- 현대적인 AI 도구를 사용하는 숙련된 엔지니어는 5년 전에는 상상하기 어려웠던 속도로 작업할 수 있음
- 어려운 문제가 사라진 것이 아니라 시간과 주의를 소모하던 기계적 작업이 대부분 처리되기 때문임
- 이렇게 확보한 시간은 실제 전문성이 필요한 작업에 쓸 수 있음
- 뒤처질 엔지니어는 AI 활용법을 모르는 사람이 아니라, AI를 이해의 대체재로 사용하는 사람임
- 추론할 수 없는 시스템을 바이브 코딩으로 구축함
- 장애를 수정하거나 성장한 시스템을 확장하지 못함
- 유지보수 담당자에게 자신이 만든 것을 설명하지 못함
더 높은 추상화 수준에서 일하기
- 필요한 변화는 새 도구를 채택하는 데 그치지 않고, 기초에 뿌리를 둔 채 더 높은 추상화 수준에서 일하는 것임
- AI를 깊은 지식의 대체재가 아닌 증폭기로 사용하는 엔지니어는 동료보다 빠르게 앞서갈 수 있음
- 모델에 무엇을 생성하도록 요청하는지 이해함
- 주니어 엔지니어의 풀 리퀘스트를 검토하듯 생성 코드를 비판적으로 살핌
- 기능 설명만 전달하지 않고 아키텍처 관점에서 대화함
- 모델의 제안에 언제 반대해야 하는지 판단함
- 이는 새로운 역량으로 기존 기술을 교체하는 것이 아니라, 기존 기술을 새로운 환경에 적용해 훨씬 높은 레버리지를 얻는 방식임
- 프로토타입 이후에도 실제 공학적 판단은 필요하며, 이 역량이 신뢰할 수 있는 소프트웨어를 출시하는 개발자와 데모만 출시하는 개발자를 가름함
- 학습 순서는 기초 지식이 먼저이고 AI 도구가 다음이어야 함