개발자의 업의 장, 그리고 메타버스
개발자에게 일의 현장은 가상의 공간이다. 디지털로 이루어지는 프로그램과 컴퓨터 내부의 세계가 개발자의 유니버스다. 증강현실은 이미 놀이가 아닌 업무에 적용되어 있다. 항공기 제조업체인 보잉의 엔지니어들은 비행기를 조립할 때 특수제작한 고글을 쓰고 일한다. 보잉의 연구원이었던 톰 코델이 비행기를 조립하던 과정에서 수많은 전선을 연결하는 작업을 위해 배선도를 이미지화하면서 증강현실기술이 업무에 활용되었다. 고글을 쓰고 실제 비행기를 보면 해당 부분의 도면도와 부품코드 등이 표시되니 업무효율이 높아졌다. 미국 최대 방위산업체인 록히드 마틴은 주요 프로젝트인 화성 탐사선의 디자인 및 제작 과정에 마이크로소프트의 홀로렌즈를 사용한다. 홀로렌즈를 통해 우주선을 제작할 때 참조해야 하는 정보들을 하나로 모으고 그 정보를 엔지니어들에게 전달해준다.
이제 소프트웨어 개발자가 코딩하고 있는 현장으로 가보자. 자동차의 앞유리의 헤드업디스플레이에 주행정보가 나타나듯이 소프트웨어 개발자가 사용하는 IDE의 에디터에서 특정 코드에 마우스를 옮기기만 해도 수많은 메타데이터가 표시된다. 과거에는 특정한 변수의 정보를 파악하기 위해서는 해당 변수가 사용되는 코드를 전부 검색해야만 했다. 이때문에 변수이름에 변수에 대한 정보를 포함하는 헝가리안 표기법과 같은 인코딩(name encoding)이 등장했다. 전역변수의 경우 이름 앞에 g를 붙인다든지 하는 식이다. 이제 그런 표기법은 역사 속의 유물이 되었다. 이제 IDE는 코드에 대한 개별적인 정보뿐만이 아니라 코드가 동작하는 시뮬레이션과 새로 작성한 코드가 소프트웨어에 만들어 낼 수 있는 잠재적 위협까지 폭 넓고 정교한 메타 정보를 개발자에게 제공해준다. 이제 개발자들이 할 일은 IDE가 제공하는 유용한 정보를 선별한 후 최적의 선택을 하는 것이다. 코딩의 패러다임이 바뀐 것이다.
프로그래머에게 메타버스는 안드로이드 플랫폼이 될 수도, 리눅스 같은 운영체제의 핵심인 커널 영역이 될 수도, 자바 어플리케이션이 될 수도 있다. 특정한 프로그래밍 언어를 근간으로 하며 공통의 프레임워크 기반으로 개발이 이루어진다. 사내에서 동료개발자들과 함께 일한다면 코드 공유는 Git이나 SVN과 같은 소스코드 형상관리시스템에서 이루어지고, 작업 및 이슈 관리는 Jira나 Mantis와 같은 이슈 관리 시스템에서 이루어진다. 문서 공유나 스케쥴 관리도 마찬가지다. 개발에 관련된 모든 것이 가상의 공간에서 이루어지고 있다. 이제 클라우드가 보편화되어 있어서 회사에 있지 않고 어느 곳에 있어도 소프트웨어 개발이 가능하다. 오픈소스와 같은 개발자 커뮤니티에서 활동하고 있다면 물리적인 접점은 더욱 줄어든다. 개발자들은 이미 메타버스의 구성원이다. 다만 지금 몸담고 있는 메타버스가 매트릭스의 통제된 시스템인지, 구성원들이 만들어나가는 영화 <레디 플레이어 원>의 오아시스와 같은지는 생각해볼 필요가 있다. 개발자의 통제력이 커질수록 메타버스에 대한 영향력도 커진다. 통제력의 비결은 몸담고 있는 그 스페이스에 대해 깊이 이해하고 그 구성원들과 긴밀한 유대관계를 갖는 것이다. 이를 위해 우선시되어야 하는 것은 메타버스의 기본적인 규칙을 따르는 것이다. 그것은 오픈소스 커뮤니티가 정한 코딩 컨벤션일 수도 있고, 회사의 개발팀에서 정한 코드 커밋에 대한 규칙일 수도 있다. 먼저 구성원이 되어야 새로운 세계도 만들 수 있다.
디지털이 아닌 아날로그가 현실이라는 것을 이해하는 것 또한 중요하다. 프로그래밍 세계에서는 완벽하게 0과 1을 표현할 수 있지만 현실에는 완벽한 0과 1이 존재하지 않는다는 사실을 명심하는 것이다. 디지털 세계는 수많은 직선으로만 이루어져 있다. 자연에서는 직선을 찾아볼 수 없다. 0과 1이라는 두가지 요소만으로 모든 것을 표현할 수 있는 세계는 프로그래밍과 그 결과로 만들어지는 메타버스와 같은 디지털 유니버스 뿐이다. 현실과의 접점을 크게 가져가야 메타버스도 커지고 개발자의 세계도 커진다. 운영체제의 메모리 관리 기술을 개발한다고 해서 커널의 운영체제 안에만 갇혀 있어서는 안 된다. 기술은 현실을 반영해야 한다. 다른 소프트웨어와의 연계동작, 나아가 사용자가 UI를 다루면서 얻는 사용자 경험(UX)에 어떠한 영향을 끼칠 것인지 고민해본다면 가상과 현실과의 접점은 늘어날 것이다. 가상이 현실의 대안이 되어서는 안 된다. 가상과 현실을 이어주는 것은 기술만의 역할만은 아닐 것이다.