Software 2.0
Software 2.0은 현대 인공지능 시대를 설명하기 위해 등장한 개념입니다. 기존의 소프트웨어 개발 방식(1.0)과는 근본적으로 다른 철학과 구조를 갖고 있습니다. 이 용어는 안드레이 카파시(Andrej Karpathy) — 전 테슬라 AI 디렉터이자 딥러닝 전문가가 2017년에 처음 정리한 개념으로 널리 알려졌습니다.
코드를 사람이 직접 쓰지 않고, 데이터로부터 학습시키는 것. 즉, 코드를 '쓰는' 게 아니라 '훈련(training)'시키는 것.
개발자의 역할은 이제 '논리를 짜는' 것이 아니라, '세계에 대한 데이터를 구성하고, 그 데이터를 모델이 스스로 해석하게 만드는 방향을 설계하는 것'으로 바뀌었습니다. 코드의 본질이 더 이상 인간의 논리로부터가 아니라, 세계와의 상호작용(데이터)과 학습(생성)을 통해 스스로 형성되는 것입니다. 프로그래머는 더 이상 '무엇을 하라'고 기계에게 명령하지 않고, 어떤 데이터를 보여줄 것인지, 어떤 문제를 풀어야 할지, 어떤 손실을 줄여야 할지(Loss Function)를 설계합니다.
1. 데이터 중심의 개발

Software 2.0의 핵심은 코드보다 데이터를 먼저 생각하는 데 있습니다. 데이터는 단순한 입력이 아니라, 개발의 본질적인 재료이며 로직 그 자체 입니다. 이미지 인식, 언어 처리, 자율주행 등 복잡한 문제를 해결하는 데 있어, 정교한 알고리즘보다 더 중요한 것은 풍부하고 표현력 있는 데이터입니다. 모델은 이 데이터 속에 내재된 구조를 학습하며, 보이지 않는 규칙과 흐름을 스스로 감지하고 재구성합니다.
2. 개발자의 역할 변화
Software 1.0 시대의 개발자는 논리적 사고를 바탕으로 '무엇을 어떻게 할지'를 한 줄 한 줄 코드로 써내는 규칙의 설계자였습니다. 그러나 Software 2.0에서 개발자는 문제 정의자이자, 데이터 큐레이터이며, 메타구조의 설계자입니다. 프로그래머는 이제 모델에게 명령하지 않고, 학습 조건을 설정하고, 데이터의 흐름을 디자인하며, 모델이 스스로 해석하고 발전할 수 있는 환경을 조성하는 역할을 합니다. 이전이 '지시하는 개발'이었다면, 지금은 '가능하게 하는 개발'입니다. 즉, 모델이 스스로 규칙을 만들어내도록 유도하는 설계자로 변화하고 있습니다.
3. Generalization & Robustness AI
Software 2.0에서의 Scale-up은 단순히 파라미터 수나 연산량을 늘리는 기술적 확장을 의미하지 않습니다. 진정한 의미의 Scale-up은 AI가 처음 마주하는 복잡한 상황, 낯선 환경, 비선형적인 맥락 속에서도 스스로 의미를 해석하고, 판단하고, 반응할 수 있는 일반화(generalization)의 능력을 확장하는 방향으로 나아갑니다.
그러나 여기서 핵심은 한 가지입니다:
이러한 일반화의 방향성과 깊이는 '세계를 어떻게 정의하느냐'에 따라 완전히 달라진다는 점입니다.
AI에게 주어진 문제의 정의는 단순한 과업(Task)이 아니라, 그 존재가 무엇을 지향하고, 어떤 방식으로 세계를 인식하게 될지를 결정짓는 존재론적 구조입니다. 즉, 문제의 정의는 곧 AI의 철학이자 정체성이 됩니다.
예를 들어:
- "이 객체를 인식하라"는 정의는 표면적 분류기를 만들 수 있지만,
- "이 낯선 객체가 어떤 기능을 수행할 수 있는가를 추론하라"는 정의는 훨씬 더 깊은 사고 구조를 요구하게 됩니다.
그 결과, 동일한 데이터와 유사한 모델 구조라 하더라도, 문제 정의에 따라 AI는 전혀 다른 인식 능력, 추론 패턴, 일반화 경로를 형성하게 됩니다. 따라서 진정한 일반화 전략이란,
AI가 세계를 어떻게 바라볼 것인가에 대한 철학적 방향을 정립하고,
그 방향에 따라 열린 가능성을 탐색할 수 있도록 문제를 정의하는 과정과 함께 이루어져야 합니다.
이것은 단지 모델의 확장이 아니라, 존재론적 '의도(intent)'의 설계이자, AI가 '무엇이 될 수 있는가'를 결정짓는 형이상학적 선택이라 할 수 있습니다.