범용 소프트웨어의 비대화


최근 소프트웨어가 소프트웨어를 잠식하고 있다는 내용의 재밌는 글을 발견했다. 원문 제목은 <Software will eat software in a remote-first world>. 글쓴이는 대형/범용적인 소프트웨어는 한층 더 비대해지고 있으며, 이 비대한 소프트웨어가 비교적 작거나 전문 영역의 소프트웨어를 통합하는 추세라고 말한다. 

 

그는 자신의 경험에 빗대어 클라우드 서비스가 수많은 소규모 소프트웨어를 대신하고 있으며, 프레임워크의 발전으로 처음부터 코드를 다시 써야 하는 일이 점점 줄어들 것이라고 주장한다.

나는 이런 현상이 얼마나 빠르게 일어나고 있는지 목격했다. 나의 첫 번째 직업은 작은 스타트업에서 엔지니어로 시작했는데, 그때 우리는 많은 양의 물리적 서버를 가지고 있었다. 이제 테크 스타트업에서 직접 서버를 관리한다는 건 상상하기 힘들다. 사람들은 모두 아마존 AWS 콘솔에서 몇 번의 클릭만으로 이를 대신한다. 
예전의 개발자는 처음부터 무언가를 다시 구축해야 했다. 하지만 소프트웨어 라이브러리의 빠른 발전 속도는 우리가 소프트웨어를 사용하는 속도를 넘어서기 시작한다. 심지어 소프트웨어 자체가 새로운 소프트웨어를 생성할 수도 있다. 이는 최근 많은 No-Code와 Low-Code 솔루션이 빠르게 나오고 있는 이유다. 이제 코드를 직접 써야 할 일이 점점 줄어들고 있다는 말이다. 여러분이 해야 할 일은 서로 다른 제품들을 한데 모으는 것뿐이다.  

 

글쓴이는 소프트웨어 자동화 기술의 발전이 소프트웨어 엔지니어의 수요를 감소시킬 수도 있기 때문에, 미래의 프로그래머는 지금보다 더 적어질 것이란 결론을 내린다. 

 

자동화의 본질은 결국 소프트웨어


그의 이런 결론은 개발자 채용 트렌드와 직접적으로 관련되어 있기 때문에 흥미롭다. 만약 미래에 소프트웨어 자동화와 규모화가 이뤄진다면 프로그래머의 수요는 자연히 줄어들 것이다. 정말 그렇게 된다면 지금 젊은 사람들에게 개발자가 되라고 권장해선 안될 일이다. 

 

Hacker News 포럼에선 이 아티클에 대한 열띤 토론이 벌어졌다. 이 토론에 참여한 대부분은 글쓴이의 이런 주장은 이미 수십 년 동안 제기되어왔으며, 불필요한 걱정으로 보고 있다. 실상은 이와 정반대로 프로그래머가 점점 더 많아지고 있다는 것이다. 

10살 때 나는 Qbasic을 이용해 코딩을 시작했다. 나는 아버지에게 나중에 커서 프로그래머가 되고 싶다고 했다. 아버지는 자신이 종사하는 엔지니어링 업계처럼 컴퓨터는 아마 자동화될 것이고, 그때가 되면 나는 다른 일자리를 찾아야만 할 것이라고 말했다. 그렇게 23년이 지났고, 아버지의 말과는 다르게 프로그래머에 대한 마켓의 수요는 끊임없이 증가하고 있다. 내가 하고 싶은 말은, 소프트웨어가 대부분의 수요를 자동으로 해결하는 추상적인 수준은 아직 멀었다는 것이다. k8s, docker, kafka, databricks, redshift 같은 새로운 툴이 많은 프로그래머를 대체했지만, 결과적으로 프로그래머에 대한 더 많은 수요를 만들어냈다. 프로그래머가 풀어야 할 문제들이 새로운 곳으로 이동했을 뿐이다. 

 

위 인용문처럼 프로그래밍으로 해결해야 할 문제는 오히려 많아지고 있는게 현실이다. 클라우드 서비스는 확실히 기업들의 서버 관리 문제를 면제해줬지만 여전히 도커(docker), 쿠버네티스(kubernetes), 데이터베이스 샤딩/인덱싱, 장애 조치, 백업, 메시지 큐 등의 기술을 이해하는 인력이 필요하다. 이런 것들이 더 통합되고 조합하기 쉬워졌어도 어떻게 상호작용하고 설정되는지 파악하는 것은 여전히 복잡한 일이다. 

 

또한 노코드 개발은 일부 범용적인 소프트웨어 문제만 해결할 수 있다는 것이다. 보통의 경우 소프트웨어에 대한 커스터마이징이 필요하며 그땐 코드를 수정할 수 있는 프로그래머가 필요하다. 세계는 점점 자동화되고 있지만, 자동화의 본질은 결국 소프트웨어이기 때문에 프로그래머의 수요가 늘어나는 건 필연적으로 보인다. 

 

작은 기업들에겐 노코드 솔루션이 효과적


하지만 프로그래머들이 점점 늘어나는 건 결국 과거의 현상일 뿐 미래가 꼭 그렇지만은 않다는 의견도 있다. 글쓴이 주장에 동의하는 이들은 현재 소프트웨어 개발이 급변하는 시점일 뿐, 미래의 발전은 이전과는 다를 수 있다고 본 것이다.

 

시장은 도커와 쿠버네티스 같은 새로운 툴을 이해하는 사람이 필요하지만 대부분 대기업을 위한 것이며, 소규모 기업이 직면한 복잡성은 제한적이어서 대기업이 제공하는 간단한 솔루션을 사용하면 대부분 해결될 것이라 주장한다. 만약 회사의 주요 비즈니스가 기술과 관련이 없다면(실제로 대부분은 IT 회사가 아니다) 노코드 솔루션을 사용하는 것은 가장 효과적일 수 있다. 소프트웨어 엔지니어링에 많은 비용을 들이지 않아도 빠르게 적용할 수 있기 때문이다. 

 

역사적으로 한 영역에서 프로그래밍을 통해 해결해야 하는 문제가 대량으로 발생할 때마다, 90%의 상황을 해결할 수 있는 범용 솔루션이 탄생했다. 그런 뒤 이 영역의 프로그래머 수요는 빠르게 줄어들었다. 

 

30년 전, 그래픽 인터페이스(GUI)를 개발하는 것은 어려운 문제였으나, Visual Basic이 이를 변화시켰다
20년 전, 하나의 웹 응용 프로그램을 만드는 것은 어려운 문제였으나, PHP는 이를 변화시켰다. 
10년 전, 복잡한 웹 페이지 레이아웃을 구성하는 건 어려운 문제였으나, Boostrap은 이를 변화시켰다.
지금은 기계 학습이라는 어려운 과제를 PyTorch가 변화시키고 있는 중이다. 


따라서 새로운 분야가 떠오르기 시작하면 더 많은 프로그래머가 필요하다. 하지만 이 분야의 프로그래머에 대한 수요는 오래 지속되지 않으며 대부분의 문제를 해결할 수 있는 솔루션이 나타나면 이 수요는 빠르게 감소한다는 것이다. 

 


프로그래머에 대한 마켓의 수요가 어떻게 변할지는 쉽게 답할 수 있는 문제가 아니다. 필자가 생각하는 프로그래머의 수요는 아래 두 가지 요소에 의해 결정될 것으로 보인다. 

 

1. 사람들의 수요 증가 속도가 소프트웨어 자동화의 진화 속도를 넘어설 수 있을지 여부

기존 문제들은 결국 범용적인 솔루션이 나옴으로써 프로그래머를 고용해야 할 필요성은 점점 줄어들 것이다. 프로그래머의 일자리는 새롭게 나오는 환경에 달려있다. 게다가 이 새로운 환경의 증가 속도가 소프트웨어 자동화의 진화 속도를 넘어서야 한다. 

 

2. 소프트웨어 개발 난이도가 기계 학습의 진화 속도를 넘어설 수 있을지 여부

프로그래머의 수는 소프트웨어 개발 난이도와 관련 있다. 난이도가 낮을수록 더 많은 사람들이 이 일에 종사한다. 예전엔 컴퓨터의 하드웨어와 어셈블리 언어를 알아야만 소프트웨어를 개발할 수 있었기 때문에 프로그래머 수는 매우 적을 수밖에 없었다. 이젠 하위 계층을 이해할 필요 없이 특정 프레임워크만 알고 있으면 되므로 더 많은 일반인들이 프로그래머가 되고 있다.

 

미래의 프로그래밍은 분명 점점 쉬워지겠지만 쉬울수록 더 많은 기계가 사람을 대신하여 이러한 작업을 수행할 수 있다는 걸 의미한다. 그러므로 소프트웨어 개발 난이도는 기계 학습의 수준을 넘어서야 한다. 그렇지 않으면 수요의 증가는 단지 더 많은 프로그래밍 자동화를 초래하며, 결과적으로 프로그래머 고용은 점점 줄어들 것이다. 

 

阮一峰 글 번역/편집