소프트웨어의 필연적 가벼움

한번 생각해보자. 매일 아침 들르는 카페에서 매일 같은 커피를 한 잔 주문해 마시는데, 오늘따라 커피의 향이 영 이상하다. 주문이 잘못된 건 아닌 것 같고, 바리스타도 바뀌지 않았는데 왜 커피 향이 달라졌을까? 바리스타의 대답은 이렇다.

“아, 다름 아니라 저희가 AB 테스트 중이거든요.”

이런 상황을 맞닥뜨린다면 기분이 어떨까? 나라면 꽤 당황스러울 것 같다. 나의 동의도 없이 나를 상대로 테스트를 진행한 카페 측의 결정이 괘씸하게 느껴질 것 같다. 만일 이런 식의 테스트가 반복적으로 나의 동의 없이 진행된다면 더는 그 카페를 가고 싶지 않을 것이다.

그러면 또 한 번 생각해보자. 매일 들르는 웹사이트가 나의 동의 없이 AB 테스트를 진행한다면 방문자로서 기분이 어떨까? 아마도 테스트 자체를 눈치채지 못할 확률이 아주 높지만, 발견한다고 해도 별다른 감정적 변화는 없을 것 같다. 실제로 수많은 웹사이트가 매일 다양한 테스트를 진행 중이기도 하다.

그렇다면 왜 동네 카페에서 몇 명 안 되는 고객을 상대로 진행한 테스트는 문제의 소지가 있는 것처럼 느껴지고, 수천만 명이 접속하는 웹사이트가 매일같이 진행하는 테스트는 굳이 문제 삼고 싶지 않은 걸까? 나는 그것이 소프트웨어 비즈니스의 필연적 가벼움에 근거한다고 생각한다.

소프트웨어가 거의 모든 분야를 집어삼킬 수 있었던 핵심 원동력은 그것의 근본적 속성인 비 물질성, 간접성, 그리고 가변성에 근거한다. 건물은 완공된 후 구조를 변경하기 어렵지만, 소프트웨어는 출시 이후에도 얼마든 구조를 변경할 수 있고, 심지어 다른 소프트웨어와 연동하거나 결합할 수도 있다. 하지만 소프트웨어의 필연적 가벼움 역시 이 지점에서 발생한다. 언제든지 변할 수 있다는 사실은 그것의 무게감을 떨어뜨린다.

결국 사용자가 인지하는 소프트웨어는 스크린에 흩어진 픽셀의 나열이 만드는 비물질적 허상에 불과하다. 아이패드 안의 물고기가 진짜라고 생각하는 사람은 없을 것이다 (고양이들은 아직 혼란스러워 하는 것 같다). 그렇기 때문에 웹사이트가 다운된 것을 건물이 붕괴된 사건과 동일한 무게로 받아들이기는 어렵다. 그런데 이런 근본적 속성에 의한 가벼움을 굳이 문제 삼아야 할 이유는 무엇일까?

소프트웨어는 더 이상 개별 범주의 산업으로 구분할 수 없다. 거의 모든 산업에 전기가 필요하듯, 이제는 거의 모든 산업이 네트워크를 기반으로 하고 있고, 소프트웨어는 그야말로 어디에나 존재하기 때문이다. 이러한 변화에도 불구하고 여전히 소프트웨어의 영향력을 비교적 가볍게 여기는 제작자들의 의식은 분명 다양한 문제를 발생시킬 수 있다. 사실 제작자라고 해서 소프트웨어 개발 헌장을 매일 낭독하는 것도 아니고, 일상에서는 사용자의 입장에서 소프트웨어를 접하는 경우가 더 잦을 수밖에 없다. 심지어 소프트웨어 산업에서는 제작자가 사용자를 직접 만날 기회도 흔치 않다. 그렇다 보니 급격히 변화하는 소프트웨어의 실제적 영향력에 준하는 수준의 책임의식을 유지하기란 별도의 노력 없이는 어려운 현실이다.

O’Reilly 출판사에서 올해 출간 예정인 Tragic Design(비극적 디자인)은 잘못된 디자인이 발생시킨 비극적 사고들에 관한 책이다. 이 책에 등장하는 첫 사례인 방사능 치료기 Therac-25의 사례는 소프트웨어적 결함이 직접적으로 사망자를 발생시킨 첫 사례로 알려져 있다. Therac-25는 1985년에서 1987년 사이 6건의 의료사고와 3명의 사망자를 발생시켰다. 소프트웨어적 결함이라고 언급되긴 하지만, 사실 의도되지 않은 기술적 또는 구조적 결함이라기보다는 개발과정에서 중요도가 낮기에 외면되었을 가능성이 있는 인터페이스 레벨의 문제가 참사로 이어진 사례로 볼 수 있다. 책에서 지적한 Therac-25의 인터페이스적 문제점은 다음 세 가지로 정리된다.

  • 첫째, 당시는 GUI(Graphic User Interface)가 보급되기 전이라 해당 기기의 인터페이스는 커맨드라인 기반이었는데, 인풋 필드에 커서가 있는 것을 관리자가 깜빡하고 화면 상단의 정보를 수정하기 위해 ↑방향키를 누르면, 인풋필드에 해당 키 값이 입력되는 문제가 있었고, 이것이 잘못된 치료명령으로 이어지는 사례가 있었다.
  • 둘째, 입력되지 않은 필드는 아무런 경고메시지 없이 모두 기본값으로 대체되었다.
  • 셋째, 에러 메시지가 단순히 숫자로 된 에러코드로만 구성되어 있었고, 에러발생이 너무 잦다보니 관리자는 습관적으로 ‘p’키를 눌러서 무시하게 되었다. 이로 인해 관리자들은 환자에게 방사선이 과잉 투사되는 끔찍한 사고 과정에서도 에러 메시지를 반복적으로 무시하게 되었다.

사실 인터페이스 자체만 두고 보면 이런 사례들은 소프트웨어 결함이라고 부르기도 어려운, 당시에는 흔했던 커맨드라인 인터페이스의 불편함 정도의 것들이었다. 아마 해당 소프트웨어 제작자들도 이런 불편함을 알았지만 대수롭지 않게 여겼기에 굳이 개선하지 않고 출시했을 것이다. 그러나 가볍게 여겨졌던 문제들은 끔찍한 참사의 원인을 제공했고, 많은 사람이 목숨을 잃거나 큰 장애를 갖게 되었다.

우리의 인식 속에 소프트웨어는 여전히 가볍다. 하지만 이제 소프트웨어는 절대 가볍지 않은 분야 곳곳에 자리 잡고 있다. 디지털 기술노동자들의 업무는 그 사회적 영향력을 나날이 키워가고 있는 셈이다. 권한이나 환경은 제자리인데 책임은 더 커지는 현실이 폭력적으로 느껴질수도 있다. 하지만 누군가의 의지로 꺾을 수 없는 변화의 큰 물결에서 소프트웨어는 점점 더 인간과 밀접해지고, 소프트웨어에 대한 인간의 의존도는 점점 더 커지고 있는 것 또한 현실이다.

우리가 누군가의 삶에 영향을 미치기를 기대하며 만들어내는 다양한 기술은 이제 실제로 그 영향력을 발휘할 수 있는 더 많은 기회를 맞이할 것이다. 하지만 사회의 복잡도가 증가함에 따라 그 영향력이 긍정적인 것이 될지 부정적인 것이 될지를 결정하는 권한은 우리에게서 멀어지는 듯하다. 매일 뉴스로 등장하는 무거운 문제들을 지켜보노라면, 우리가 매일같이 반복하는 작업과 그로 인해 탄생하는 디지털 결과물들이 때로 한없이 가볍게 느껴지기도 하지만, 그 둘을 명확히 구분할 수 없는 시점은 분명히 다가오고 있다.