AI가 완성된 제품을 만들어주지는 않는다
AI가 코드 작성과 프로토타입 제작의 속도를 혁신적으로 단축시켰지만, 실제 서비스가 가능한 프로덕션 수준의 시스템을 완성하는 것은 여전히 개발자의 몫입니다. AI가 남발하는 코드 속에서 보안, 확장성, 아키텍처 등의 본질적인 문제를 파악하고 판단하기 위해서는 여전히 탄탄한 컴퓨터 공학적 지식과 개발자의 통찰력이 필수적입니다.
소프트웨어를 개발하는 것이 이렇게 쉽게 느껴졌던 적은 없었습니다. 평범한 언어로 아이디어를 설명하면 몇 분 안에 화면에 작동하는 프로토타입이 나타납니다. UI도 있고, 데이터베이스와도 연결됩니다. 상상했던 대로 작동합니다. 한 줄의 코드도 작성해 본 적 없는 사람에게 그 순간은 마법 같습니다. 수년간 컴파일러와 스택 트레이스와 씨름해 온 사람에게도 정말 놀라운 일입니다. 하지만 그 프로토타입은 노트북에서 겨우 돌아갈 뿐, 부하가 걸리면 쉽게 망가집니다. 에러 처리도 없습니다. 자칫 API 토큰이 유출될 수도 있다는 것을 알게 됩니다. 데이터 모델은 데모용으로는 그럴듯했지만, 사용자가 한 명 더 추가되는 순간 엉망이 됩니다. 인증(Authentication)은 단순한 가정에 의존해 억지로 짜맞춰져 있습니다. 과연 이 모든 게 안전할지 찝찝한 걱정이 듭니다. 이를 배포하려 하면, '작동은 하는 것'과 '서비스할 준비가 된 것' 사이의 깊은 골짜기를 마주하게 됩니다.
프로토타입을 만드는 것은 결코 어려운 일이 아니었습니다. 소프트웨어 엔지니어는 항상 무언가를 빠르게 작동시킬 수 있었습니다. 시간이 오래 걸렸던 부분은 다른 모든 것들이었습니다. 대규모 환경에서도 버티는 시스템 설계, 사용자가 겪지 말아야 할 상황이지만 결국 반드시 겪게 되는 예외 케이스 처리, 문제가 생겼을 때 이를 파악하기 위한 관측 가능성(Observability) 구축, 3년 뒤에 덜 후회하기 위한 데이터 아키텍처에 대한 신중한 결정 등 말입니다. 이러한 상황은 전혀 변하지 않았습니다. AI는 첫 번째 작동하는 버전을 만들기까지의 과정을 극적으로 앞당겼습니다. 하지만 첫 버전부터 실제 서비스가 가능한 프로덕션 수준의 제품이 되기까지의 거리를 단축시키지는 못했습니다. 이러한 혼란은 여정의 초반부 피드백 루프가 너무 빠르고 보람차기 때문에 발생합니다. 요청하고, 결과를 받고, 즉시 확인하는 사이클은 정말 흥미진진하며, 소프트웨어 개발의 나머지 과정 역시 이와 비슷하게 단축될 것이라는 착각을 만들어냅니다. 하지만 절대 그렇지 않습니다. 소프트웨어를 구축하는 데 따르는 어려운 문제들은 결코 문법(syntax)을 작성하는 것 자체가 아니었습니다. 그것은 '판단력'에 관한 것이었습니다. 무엇을 만들지, 어떻게 구조를 잡을지, 무엇을 나중으로 미룰지, 언제 안 된다고 거절할지 등 말입니다. 이러한 판단력이야말로 단순한 코더를 조각가이자 장인으로 만들어주며, 프로토타입과 프로덕션 수준의 시스템을 구별하는 핵심 요소입니다.
컴퓨터 공학을 배우지 말아야 한다는 잘못된 주장 AI가 생성한 코드의 접근성이 높아지면서, 자연스럽게 컴퓨터 공학을 배우는 것이 여전히 의미가 있는지 의문을 제기하는 신규 진입자들이 업계에 쏟아졌습니다. 설명만으로 작동하는 애플리케이션을 만들 수 있다면, 왜 수년 동안 알고리즘, 데이터 구조, 운영체제, 이론을 공부해야 할까요? 컴퓨터 공학 교육의 가치는 결코 순수하게 코드를 생산하는 능력에 있지 않았습니다. 그것은 시스템이 어떻게 작동하고, 어떻게 실패하며, 왜 그런지에 대한 멘탈 모델을 개발하는 데 있습니다. 이 멘탈 모델이 있어야 AI가 생성한 코드를 보고, 그 쿼리가 5천만 행이 있는 테이블에서 풀 테이블 스캔을 유발한다는 것을 인식할 수 있습니다. AI가 제안한 캐싱 전략이 동시 부하 상황에서 레이스 컨디션(Race Condition)을 유발할 것이라는 점을 알아챌 수 있습니다. AI가 제안한 아키텍처가 현재 문제는 해결하지만, 향후 다음 문제를 훨씬 더 어렵게 만들 것이라는 사실을 알려주는 것도 바로 이 기본기입니다. 이러한 기초가 없다면 여러분은 철저히 AI 모델의 판단에 의존하게 됩니다. 그런데 모델에게는 판단력이 없습니다. 그들은 패턴 매칭 기술을 가지고 있을 뿐이며, 사용자의 의도에 맞을 것이라고 믿는 코드를 열성적으로 만들어냅니다. AI는 겉보기엔 올바르고 관례를 따르는 것처럼 보이는 코드를 자신만만하게 생성하지만, 무엇을 찾아야 할지 모른다면 원인 파석에 며칠이 걸릴 방식으로 실제 프로덕션 환경에서 실패를 겪게 됩니다. 지금은 역사상 컴퓨터 공학을 배우기에 가장 좋은 시기라고 할 수 있습니다. 왜냐하면 이해와 산출물 사이의 격차가 완전히 무너졌기 때문입니다. 분산 시스템이 어떻게 작동하는지 진정으로 이해하는 학생은 이제 10년 전에 필요했던 시간의 극히 일부만으로 그것을 구축할 수 있습니다.
변하는 것과 변하지 않는 것 요구사항을 기계적으로 코드로 옮기고 한 줄씩 구현으로 번역하는 역할만 하는 엔지니어에 대한 수요는 확실히 감소하고 있습니다. 업무의 그 부분은 자동화되고 있습니다.