소프트웨어 외주를 의뢰하는 사람의 머릿속에는 대략 이런 그림이 있다.

나(기획) → 개발자(제작) → 완성품

인테리어를 맡기는 것과 비슷하다. 도면을 주면, 시공자가 만들어준다. 도면이 상세할수록 결과물이 기대에 가깝다.

이 멘탈 모델이 소프트웨어에서 작동하지 않는 이유가 있다.


건축에는 “설계”와 “시공”이 있다

건축은 명확하게 두 단계로 나뉜다.

  1. 설계 — 건축가가 도면을 그린다
  2. 시공 — 인부가 벽돌을 쌓는다

벽돌 쌓는 사람은 설계를 바꾸지 않는다. 도면대로 쌓는다. 시공은 반복 가능하고, 예측 가능하고, 다른 사람으로 교체해도 결과가 크게 달라지지 않는다.

이 모델에서는 외주가 잘 작동한다. 설계가 끝나면 시공만 맡기면 되니까.

소프트웨어에는 “시공”이 없다

소프트웨어에서 코드를 짜는 행위는 시공이 아니라 설계다.

“이 버튼을 누르면 어떤 화면이 나와야 하지?” — 기획서에 안 적혀 있으면 개발자가 결정한다. 그 결정이 곧 제품이 된다.

컴파일? 빌드? 배포? 이건 “시공”이 아니라 복사다. 비용이 0에 수렴한다. 건축에서 도면을 복사하는 것과 같다.

소프트웨어에서 “시공”에 해당하는 단계는 존재하지 않는다. 설계가 끝나면 제품이 끝난다.


이게 왜 중요한가

같은 기획서, 다른 결과물

같은 기획서를 두 개발자에게 주면 완전히 다른 제품이 나온다. 건축에서 같은 도면을 두 시공자에게 주면 거의 같은 건물이 나오는 것과 대조적이다.

왜? 기획서에는 적히지 않는 판단이 하루에 수십 개씩 발생하기 때문이다.

  • 네트워크가 끊기면 어떤 화면을 보여줄 것인가?
  • 동시에 두 명이 같은 데이터를 수정하면?
  • 목록이 10,000개일 때도 3개일 때와 같은 UI를 쓸 것인가?
  • 에러가 나면 사용자에게 뭐라고 말할 것인가?

기획서에 이걸 다 적으려면, 기획서 자체가 코드만큼 복잡해져야 한다. 그건 결국 코드를 두 번 쓰는 것이다.

외주가 실패하는 근본 원인

외주 모델은 건축의 멘탈 모델을 소프트웨어에 적용한 것이다.

기대: 클라이언트(설계) → 개발사(시공)
현실: 클라이언트(대략적 방향) → 개발자(설계+제작 동시에) → 클라이언트("이게 아닌데")

“코딩”을 “시공”으로 취급하면, 코딩하는 사람이 매 순간 내리는 설계 판단이 보이지 않게 된다. 그리고 그 보이지 않는 판단들이 쌓여서 “기대와 다른 결과물”이 된다.

외주 개발의 성공률이 20%인 이유가 여기에 있다. 구조 자체가 맞지 않는 것이다.

개발자의 가치는 타이핑 속도가 아니다

코딩이 시공이라면 개발자는 인부다. 도면대로 쌓으면 되니까 대체 가능하고, 단가 경쟁을 해야 한다.

코딩이 설계라면 개발자는 건축가다. 기획서에 없는 수백 개의 판단을 내리는 사람이고, 판단의 질이 제품의 질을 결정한다.

클라이언트가 사는 건 “코딩 시간”이 아니라 “설계 판단의 총량”이다. 경험 많은 개발자의 시급이 높아도 총 비용이 낮아지는 이유가 이것이다. 더 적은 시간에 더 나은 판단을 내리기 때문이다.

AI가 개발자를 “완전히” 대체하지 못하는 이유

AI는 코드를 생성할 수 있다. “시공”은 이미 대체 가능하다.

하지만 “이 상황에서 어떤 설계 판단이 맞는가”는 다른 문제다. 도메인 맥락, 사용자 이해, 비즈니스 제약을 동시에 고려해야 한다. 설계가 곧 제품인 한, 설계 판단을 내리는 역할은 남는다.

AI가 발전할수록 오히려 “무엇을 만들 것인가”를 판단하는 능력의 가치는 올라간다. 시공 비용이 0이 되면, 남는 건 설계뿐이니까.


이걸 알면 뭐가 달라지는가

클라이언트라면: “만들어주세요”가 아니라 “같이 설계합시다”로 접근해야 한다. 개발자는 시공자가 아니라 설계 파트너다. 중간에 자주 확인하고, 판단을 함께 내려야 한다.

개발자라면: 본인의 가치가 코딩 속도에 있지 않다는 걸 인식해야 한다. “왜 이렇게 만들었는가”를 설명할 수 있는 개발자와 “시키는 대로 만드는” 개발자의 단가 차이는 시간이 갈수록 벌어진다.

채용 담당자라면: 코딩 테스트로 측정하는 건 시공 능력이다. 실제 업무에서 필요한 건 설계 판단 능력이다. 이 둘은 같지 않다.


소프트웨어에서 코딩은 벽돌 쌓기가 아니라 도면 그리기다. 이 한 가지를 이해하면, 외주 실패도, 개발자 단가도, AI 대체론도 한 번에 설명된다.