불안의 알고리즘
만 3년 차 개발자가 된 지금, 이곳에 처음 발을 들였던 순간과 동일한 것은 불안을 느낀다는 점이다. 달라진 건, 이제 그 불안을 들여다보기 시작했다는 것이다.
창조하는 일을 좋아했다. 내가 모험가가 되어 직접 움직이는 것보다, 판을 짜놓고 지켜보는 걸 즐겼다. 공책 게임을 할 때도 늘 아이템을 그려주는 쪽이었다. 만족감은 피조물 자체보다는 그것을 받아 들고 기뻐하는 사용자에게서 느꼈다. 한편으로는 축적되는 기술을 원했다. 창조적인 직업이라면 어느 정도 기술이 쌓이기 마련이지만, 그중에서도 개발자는 이미 최신 기술을 다루고 있으니 다른 기술로 대체되기까지는 시간이 걸릴 거라 생각했다. 착각이었다. 또한 흙은 너무 멀었고, 물감은 너무 비쌌으며, 설계도를 잡기엔 진로를 잘못 잡아버린 셈이었다.
여하튼 그렇게 바라던 개발자가 되어 회사에 들어왔지만, 안도의 시간은 짧았다. 회사는 생각보다 불친절했다. 큰 회사라면 a부터 z까지 온보딩 프로세스가 잡혀 있을 줄 알았는데 아니었다. 현업의 개발은 학교에서 배운 개발과는 완전히 달랐다. 고민의 시간보다 체크, 더블체크, 크로스체크의 연속이었고, 내가 내보낸 피조물에 대한 불안은 끊이지 않았다.
처음엔 아무 말도 할 수 없는 게 불안했다. 다들 바빠 보였기에 사람에게 물을 수 있는 질문은 한정되어 있었다. 그래서 문서에 묻고, 코드에 묻고, 인도와 미국의 개발자가 남긴 글들에 물으며 할 말을 조금씩 축적했다. 끓는점을 지나자 축적된 말들은 넘쳐흘렀다. 이 말, 저 말이 엎치락뒤치락하며 회의는 산으로 갔다. 그때는 모두가 그랬기에, 회사에서 존재감을 보이려면 어떤 말이든 쏟아내야 한다고 생각했다. 협업의 범위가 넓어질수록 잘못된 생각임을 깨달았다. 회사의 주인공은 사람이 아니라 ‘일’이었다. 아는 게 많아도 일에 도움이 되지 않는다면 입을 다물어야 했다. 없는 말에 대한 불안은 곧 불필요한 말로 옮아갔고, 그 불안은 지금까지도 이어지고 있다.
모든 학문의 근원이 그러하듯, 컴퓨터 공학 역시 철학과 맞닿아 있다. 인간이 만든 세상을 모사하거나 돕기 위해 개발 방법론에는 세상에 대한 인식론이 담겨 있다. 객체 지향 방법론에서는 스스로 상태를 가지고 행동할 수 있는 단위인 ‘객체’들이 상호작용하며 디지털 세상을 구성한다.
객체 지향은 다시 클래스와 프로토타입이라는 두 갈래로 나뉜다. 클래스 기반에서는 실제 객체를 생성할 수 있는 설계도, 즉 클래스가 있다. 객체는 클래스에 종속되며, 클래스는 엄격한 규칙 아래 명확하게 관리된다.
반면 프로토타입 기반에서는 객체의 원형이 존재한다.
객체는 프로토타입에서 파생되지만, 거기에 종속되지 않는다. 스스로 새로운 행동과 상태를 만들어 돌연변이가 되고, 그 돌연변이는 또 다른 객체의 원형이 된다.
클래스는 플라톤의 이데아 이론을, 프로토타입은 비트겐슈타인의 ‘가족 유사성’ 개념을 닮아 있다. 결국 승자는 클래스였다. 프로토타입의 불확실성은 견고한 로직을 만드는 데 걸림돌이 되었기 때문이다.
하지만 클래스도 완벽하지 않다. 인간이 주체이기 때문이다. 자연 법칙에 의해 분류되고 구성되는 세상을, 그 일부인 인간의 생각만으로 구현한다는 것은 근본적으로 불완전하다. 인간의 확실성은 불확실성을 두려움과 고집으로 덮어씌운 것일 뿐이다. 아이러니하게도 지금의 AI는 인간이 아닌 자연의 원리를 따르며, 확률에 근거한 — 즉 불확실성을 기반으로 한 — 소프트웨어다.
과거의 데이터를 기반으로 일정한 규칙에 따라 결과를 내는 모든 직종은 위협받고 있다. 물론 아직은 보조적인 수준이고 품질도 완전하지 않지만, 1년 전과 지금의 ChatGPT를 비교하면 시간문제라는 생각이 든다. 누군가는 지금까지의 룰베이스 소프트웨어 개발 자체가 거대한 시행착오였고, 이제야 비로소 올바른 궤도에 올랐다고 말한다. 검색을 기반으로 하는 직장도 위기에 처했다. 이 현실과 맞부딪히며, 나는 이 위기와 불안을 어떻게 넘어설 수 있을지 고민한다.
소프트웨어가 인간의 뇌를 대체하기 위해 만들어진 것이라면, 나는 더 이상 할 일이 없을지도 모른다. 하지만 사진기가 등장한 후 그림이 추상으로 나아갔듯이, 극사실주의가 돌아와 국립현대미술관의 론 뮤익 전시가 사람들로 붐비듯이, 개발에도 또 다른 길이 있지 않을까.
코딩이라는 것은 그 자체로 소설을 쓰는 일과도 닮아 있다. 코드의 구조와 문장은 이야기를 만들고, 논리는 세계를 세운다.