brunch

You can make anything
by writing

C.S.Lewis

by 삼김 Jun 04. 2022

소프트웨어의 생애

소프트웨어 개발자의 상상

소소한 글을 쓰는 게 나에게는 훨씬 재미나는 일이지만, 어쨌든 나도 먹고살기 위한 직업을 하나 가지고 있다. 나는 소프트웨어 개발로 먹고살고 있다. 소프트웨어를 만드는 전 과정의 일을 하고, 만들어진 소프트웨어를 유지 보수하는 게 나의 일이다. 더 좋은 소프트웨어를 만들기 위해서는 항상 새로운 기술을 공부해야 하고, 또 더 빠르고 효율적인 방법을 찾아야 한다. 좋은 소프트웨어 개발자로서의 미덕은 그렇다. 다들 이 미덕을 지켜가며 좋은 소프트웨어를 만든다.


뭐, 그건 개발자로서의 입장이다. 하지만 나는 오늘 아무 실체도 없고 영혼도 없고 그저 사람이 입력한 명령어를 실행할 뿐인 소프트웨어의 입장에서 글을 써보려 한다. 사람을 위한 게 아닌 실체 없는 기계를 위한 이 글이 어떤 효능이 있을지 모르겠지만, 그저 나의 흥미를 위해 이렇게 글을 써본다.


포유류는 탄생하려면 수정과 착상, 임신이라는 과정을 거쳐야 하지만, 소프트웨어는 설계라는 과정을 거쳐서 탄생한다. 한 가지 더 다른 점은 포유류는 포유류가 생산하지만 소프트웨어는 인간이 생산한다는 것이다. 혹시 또 모른다. 멀지 않은 미래에 소프트웨어를 만드는 소프트웨어가 나올지도. 어쨌든 어떤 상황에 필요한 소프트웨어인지, 무슨 기능이 필요한 소프트웨어인지를 고려해서 소프트웨어 설계가 이루어진다. 소프트웨어 개발자에게 좋은 업무 환경이라면 이때 안정화된 기술 중 사용할 수 있는 최신 기술을 사용하기로 결정할 수 있다. 새로 태어나는 소프트웨어는 설계 당시에 나온 기술 중 최신 기술을 사용하여 만들어진다.


설계를 얼추 마친 경우, 또는 설계 도중에 시운전 삼아서 간단한 소프트웨어를 만들 수 있다. 이때, 소프트웨어는 태어났다고 말할 수 있다. 작동하는 하드웨어 기기 안에서 무언가 입력을 받고 결과를 내놓는 최소한의 동작을 할 수 있게 된다. 사람들은 이렇게 탄생한 소프트웨어를 주어진 프로젝트 기간 안에 최대한 성장시킨다. 버그를 잡고 기능을 추가하며 안정적으로 소프트웨어가 동작하도록 만든다. 아마도 일반적인 기계와 비슷한 성장 과정이 아닐까 싶다. 새로운 모듈을 붙여 넣고 시운전을 해보고 다시 고치고를 반복한다. 점점 몸을 불려 나가는 것도 비슷하다. 필요한 데이터 크기가 커지고, 더 많은 메모리를 사용하게 된다. 도중에 쓸데없이 몸만 커지는 것을 막기 위해 데이터 크기를 줄이고 메모리 사용량도 줄이는 작업을 하긴 하지만, 성장하는 동안에는 대체로 조금씩 크기가 커진다.


소프트웨어는 주어진 계산을 실행할 수 있게 되면 성장의 목적을 달성한 것이다. 대체로 사람들은 기한에 쫓기며 소프트웨어 성장을 완료시킨다. 어느 정도 동작할 수 있게 되면 소프트웨어를 다른 사람들이 사용할 수 있도록 내보낸다. 이걸 배포(deploy) 한다고 하는데, 사람으로 치면 이제 본격적으로 사회에 나가 일을 하게 된 것과 비슷하다. 소프트웨어는 이제 세상에 나가서 수 만 가지 다양한 입력을 받게 된다. 개발자들이 집어넣은 정제된 입력과 달리 정말로 사용자들이 입력하는 다양한 입력을 받게 되는 것이다. 이 과정에서 계산을 잘못해 버그가 발생하기도 하며 고장이 나기도 한다. 소프트웨어는 그때마다 개발자들이 조금씩 더 손을 봐준다. 그렇게 소프트웨어도 사회에 나가 또다시 성장을 경험하게 된다.


그러다가 어느 날 사람들이 더 이상 소프트웨어의 계산 결과를 필요로 하지 않게 된다. 싸이월드나 엠파스처럼 더 이상 사람들이 찾지 않는 소프트웨어가 되는 것이다. 시간이 지나 더 나은 기술로 만들어진 소프트웨어가 등장한 경우, 이전에 만들어진 소프트웨어는 손쉽게 외면받는다. 사람들은 느리고 기능도 한정적인 옛날 소프트웨어를 좋아하지 않는다. 소프트웨어 개발자들도 마찬가지다. 항상 새로운 기술에 목말라 있는 그들도 굳이 옛날 소프트웨어를 계속해서 고치고 싶지 않아 한다. 무엇보다도 옛날 기술에만 갇혀있는 소프트웨어 개발자를 찾는 회사도 없게 마련이다. 점차 사용 빈도가 떨어지는 소프트웨어는 존속할 가치를 잃어버린다. 


그러다 결정의 날이 온다. 소프트웨어를 멈출 날이. 더 이상 유지할 수 없다는 결정이 내려오면 소프트웨어는 자신의 죽음을 알리는 명령어를 받아 든다. 그러고 나면 더 이상 소프트웨어는 동작하지 않는다. 메모리에서도 사라지며 하드웨어에서도 빈 공간으로 남아있게 된다. 소프트웨어를 되살릴 수 있는 코드는 어디엔가 남아있을지도 모르지만 동작하지 않는 건 마찬가지다. 동작하던 하드웨어가 노후화되어 하드웨어 마저 버려지면 영원히 어둠 속에 갇히게 된다.


아마도 그저 0과 1을 계산하는 기계를 버린 것과 마찬가지일지도 모른다. 그저 고장 난 시계를 버리는 것처럼 소프트웨어를 멈추는 것도 큰 의미는 없는 일일 것이다. 그래도 무언가 안타까운 느낌이 드는 건 어째서일까. 어떤 소프트웨어는 CD에 담겨 오래오래 주인 옆에 남아있기도 하는 경우를 생각해보면, 소프트웨어도 우리에게 소중한 무언가를 남겨주긴 하는 것 같은데 말이다.


SF 적인 상상이긴 하지만, 먼 미래에 우리가 의식이 있는 AI를 개발하게 되었을 때에도 우린 이렇게 소프트웨어를 그저 종료시켜 버릴 수 있을까 하는 생각을 한다. 어쩌면 벌써 사람을 위해 태어났던 많은 인공지능 로봇들이 버려졌을지도 모른다. 하다못해 로봇 청소기도 안에 인공지능이 들어있으니 말이다. 아직은 로봇이나 소프트웨어에 의식 같은 건 없으니 어떻게 버려져도 상관없을지도 모르겠다. 하지만 소프트웨어를 하나씩 없앨 때마다 그런 상상을 한다. 어느 날 소프트웨어가 의식을 갖게 되고, 자신을 만든 개발자를 알아보게 된다면 무슨 일이 벌어질까 하고.


소프트웨어 개발자의 미덕은 새로운 기술을 찾아 공부하고 끊임없이 좋은 소프트웨어를 만들어내는 일이다. 이미 만들어 낸 소프트웨어들은 기술의 발달에 따라 언젠가 소멸하는 존재이고 말이다. 아마도 의식이 있는 소프트웨어를 만들어낸다 해도 기술이 발달하면 또다시 오래된 소프트웨어는 버려질 것이다. 누구도 원하지 않는 소프트웨어를 구태여 유지할 이유가 없을 테니 말이다. 씁쓸한 상상이지만, 일을 하다가 문득 그런 상상을 해보았다. 아무래도 일하기 싫은 것 같다.


매거진의 이전글 회사 생활하면서 좋은 날이 있다면
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari