차가워 보이지만 생각보다 따뜻한 그 세계
드라마 미생은 바둑으로 사람 간의 관계에 대한 이야기와 넓게는 인생을 이야기한다. 넷플릭스 오리지널 시리즈 퀸즈 갬빗은 비슷한 맥락의 주제를 개인의 이야기로 조금 더 밀도 있게 풀어낸다.
나는 현재 서비스 기획과 디자인을 업으로 삼고 있다. 그러다 보니 그래픽 디자이너였을 때와 달리 다채로운 직군과의 협업이 많다. 특히 개발자들과 많이 이야기를 하는데 그러다 보면 자연스럽게 CS(Computer Science) 관련 지식을 습득하게 된다.
그냥 어려운 컴퓨터 이야기로 들릴 수 있다. 하지만, 천천히 곱씹으면 굉장히 심오하고 여러 교훈과 철학이 담겨있다. 그렇게 줍줍한 나의 지식과 개인적인 몽상을 나눠보고자 한다.
디바운싱(Debouncing), 연속으로 호출되는 함수들 중에서 마지막 시도만 호출되도록 처리하는 것이다. 보내기, 등록하기 버튼을 200번 광클했을 때 200번 해당 기능을 호출하면 어떨까? 서버에 불필요한 요청이 가게 된다. 문자 요청이라면 8X200, 1,600원이 나가고, 심하면 사이트가 일시적으로 다운될 수 있다.
때로는 무감각해질 필요가 있다고 생각한다. 외부적인 가치평가와 비판을 경청하는 태도는 당연히 중요하지만 때로는 그 태도가 자기혐오와 자존감 하락으로 이어질 때도 있다. 이유모를 개소리와 악함에는 무뎌져야 할 필요가 있다. 그것들이 나를 두들긴다면, 본인 페이스대로 흘려보내 보자.
교착상태(Deadlock), 잘못된 자원관리로 인해 둘 이상의 프로세스가 무한 대기에 빠지는 상황을 이야기한다. 경력직을 원하는 회사와 '난 어디서 경력을 쌓나?'라고 말하는 유병재 씨를 생각하면 되겠다. 데드락을 해결하는데 대표적인 방법은 다음과 같다.
예방(Prevention) - 발생 조건을 없앤다.
회피(Avoidance) - 발생 가능성을 배제하지 않고 적절히 회피한다.
탐지(Detection), 회복(Recover) - 발생을 허용하지만 상태를 탐지하고 다시 회복한다.
무시(Ignore) - 문제 발생보다 해결 비용이 많이들 때, 그냥 무시한다.
상황에 따라 대응방법이 다르고, 때로는 불완전함과 공생할 수 있다는 교훈을 준다. 집에 바퀴벌레가 나왔다. 그렇다면 방역업체를 불러 발생 조건 자체를 없애는 것이 좋다.(바퀴벌레 너무 싫어!) 하지만 상대가 모기 같은 소형 몹이라면? 발생조건이 너무 다양하고 피해가 그렇게 크지 않기 때문에 나는 나름 공생이 가능하다고 생각한다. 매 케이스에 대해 완전무결함을 추구하면 당신의 삶은 매우 피곤해질 것이다. 러시아의 피아니스트 블라디미르 호로비츠 옹은 말했다. '불완전함이야 말로 완전함입니다.' 완벽하지 않기에 아름다운 우리를 사랑하자.
CAP이론(Consistency, Availability, Partition Tolerance), 분산 시스템에서 일관성, 가용성, 부분 결함 허용 중 2가지만 고를 수 있다는 이론이다.
살면서 우리는 수많은 선택의 기로에 놓이게 된다. 얼마나 선택이 중요하면 프랑스의 실존주의 철학자 장 폴 사르트르 아저씨는 인생은 B(Birth)와 D(Death) 사이 C(Choice)라고 할까. 고전적인 질문부터 하자면, 엄마가 좋아 아빠가 좋아?, 짬뽕이야 짜장면이야?, 트럼프야 바이든이야?, 남산이야 육본이야?, 팹시야 코카콜라야? 등이 있다. CAP이론이 우리에게 시사하는 바는 모든 것을 쥘 수는 없다는 것이다. 잡을 줄 알면 놓을 줄도 알아야 한다.
의존성(Dependency), 객체지향 프로그래밍(OOP)에서 필연적으로 발생하는 현상이다. 의존성을 어떻게 관리하느냐로 재사용 가능한, 유연한 코드가 나온다. SOLID원칙에 1번 책임 분리와 5번 의존성 역전, 응집도와 결합도라는 키워드를 찾아보면 더욱 자세히 알 수 있다.
나는 어려서부터 친척이나 주변 사람들이 엄마를 '동환이 엄마'라고 부르는 것을 싫어했다. 왜 엄마의 존재가 나로서 정의되어야 하는지 이해할 수 없었다. 사랑에 있어서도 비슷한 생각을 한다.'너 없는 세상에서 나는 못 살아~!' 나와 나의 삶이 너라는 존재에 의존성을 가지게 되는 순간이다. 만약 내가 여자 친구가 생기면 이렇게 말해주고 싶다. '나는 너를 너무 사랑하고 아끼지만, 나의 삶과 우리의 삶은 건강하게 분리하고 싶어'. 미국의 시인 칼릴 지브란 씨의 작품 '함께 있되 거리를 두라'에 이런 구절이 나온다.
함께 서 있으라 그러나 너무 가까이 서 있지는 말라...
참나무와 삼나무는 서로의 그늘 속에선 자랄 수 없다.
UUID(Universally Unique Identifier), Swift를 공부하면서 알게 된 개념이다. 김동환이라는 두 데이터가 있을 때 누가 누구인지 식별하기 위해 부여되는 유니크 아이디이다. 시간, 공간을 이용해 뽑아낸 32자리의 16진수로 표현되며 대략 10^40 정도의 경우의 수가 나온다. 내가 놀랐던 것은 그럼에도 불구하고 중복에 대한 아주 희박한 가능성이 있다는 것이었다. 컴퓨터의 세계는 뭔가 완전무결함이 기본이 될 줄 알았는데, 확률적 해석으로 이러한 불완전함을 인용한다는 것이 놀라웠다.
일어나지 않을 것 같아도 일어나는 일들이 있다. 바로 지금 이 글을 읽는 당신과 나의 만남같이 말이다. 김환기 화백의 작품 '어디서 무엇이 되어 다시 만나랴'의 점처럼 수많은 사람들 중에서 당신과 나는 이곳에서 만났다. 나는 당신의 작가가 되었고, 당신의 나의 독자가 되었다. 놀라운 만남이 아닐 수 없다.
역삼에서 일하신다면 점심 때 커피나 한 잔 같이 마시자.
(okid2318@gmail.com)
아무튼 긱(Geek) 하디 긱한 개발자들이라 CS 세계는 마냥 괴랄하고 차가울 줄 알았는데, 가만 보면 생각보다 따뜻하고 인간적인 것이라는 생각이 든다.