brunch

You can make anything
by writing

C.S.Lewis

by 김필 Sep 11. 2023

의존할 수 없는 것에 의존하지 않기

코드없는 개발이야기 #4

살아가다보면, 굉장히 많은 일을 내 제어권 안으로 가져오고싶어한다. 자식의 성적, 애인의 작은 습관, 직장동료의 메일 답장 등. "왜 저 사람은 이렇게 하지 않는걸까?"와 같은 고민을 하고 또 어느때는 지레 분노하기도 한다.


나 또한 처음 연애할 당시 똑같은 경험을 했고 큰 실패를 겪었다. 왜 이렇게 연락을 자주하지 않는지, 왜 다른 이성친구를 만나려고 하는지, 많은 구속을 했고, 나의 제어권 안으로 가져오고싶어했다. 결과는 앞서 말한것 처럼 대실패였다. 그리고 요즘에는 이런 마인드로 살아가고 있다 "그럴수도 있지, 아무렴어때? 쟤는 내가 아닌걸"


이러한 인간 관계의 통제 욕구를 코딩의 세계에서 보면, 이것은 '의존성'과 비슷하다. 코드에서 너무 많은 의존성을 만들면 그것을 관리하는 것이 어려워진다. 마치 연인에게 지나치게 많은 요구를 하는 것과 같다.


종종 하는 실수중 하나는 의존성을 마음대로 제어하려고하고, 그 대상체에게 아주 구체화된 명령들을 내리게 되는 행위들이다. 마치 연인에게 몇시에 일어나서 운동하고, 나에게 연락해 라는 메시지를 전달하는 것 처럼 말이다.


연애 초반기 커플은 서로가 너무 좋아 서로를 구속하려하고 서로를 제어하려고한다. 그러다보면 그 커플은 자연스럽게 강한 결합(deep coupling)이 생기게 된다. 상대방의 일거수일투족을 알게되고, 상대와 내가 온전히 하나게된 느낌이 들게 된다. 더 나아가서는 커플링, 커플티 등등 여러 커플 장신구를 같이 맞추기도한다.


문제는 시간이 지나면 지날수록 발생한다. 사람이 어떻게 처음과 같으랴. 매일매일 연락하던 사람이 한 두번씩 깜빡하게 되고, 싸움이 나고, 나를 구속하는 상대방이 점점 힘들어지기 시작한다. 내 인생을 내가 사는건지, 그 사람이 내 인생을 살고 있는건지 헷갈리기 시작한다. 그리고 끝내 이별을 고하리라 다짐하고, 실제로 이별까지 이어지는 경우가 잦다.


위 예시 상황을 코드로 비유하자면 다음과 같다:


반면 구체적으로 제어하려하지 않고, 조금 더 유연한 접근법은 다음과 같다:


약간의 비약이 있긴하지만, 말하고자하는 의도는 잘 전달 됐으리라 믿는다.


위 두 코드에서 연인(Honey)은 나(this) 라는 객체가 가지고 있는 의존성이다. 그리고 다른 객체이며, 나(this)와 연인(Honey)간의 메시지를 어떻게 주고 받는지를 기술하고 있다.


전자의 코드는 나(this)가 연인(Honey)을 아주 디테일하게 관리하려는 모습이다. 연락하는 시간, 밥 먹는 순서까지, 모든 것을 나(this)가 통제하려는 의도가 보인다. 하지만 이런 관계는 시간이 지나면 부담스러워질 수 밖에 없다. 끊임없이 다른 이를 통제하려는 자세는 결국 양측에 스트레스로 다가온다.


반면에 후자의 코드는 훨씬 더 유연하다. 나(this)는 단순히 연인(Honey)에게 오늘의 기분이 어떠한지 물어본다. 그리고 그 대답에 따라 나의 행동을 정하는 거다. 이렇게 하면 연인도 자신의 생각과 기분을 표현할 여유가 생기고, 나(this) 또한 상대방의 기분과 상황에 따라 유연하게 대처할 수 있다.


우리 인생에서도 이런 차이가 중요하다. 항상 다른 사람을 제어하려는 마음은 잠재적인 갈등의 원인이 된다. 그러나 상대방을 이해하려는 자세는 그 관계를 더욱 견고하게 만들어준다.


결국, 코드에서의 의존성 관리와 인간 관계에서의 유연성은 같은 원칙에서 비롯된다. 내가 제어할 수 없는 다른 것을 제어하려는 것보다는, 상호 이해와 유연성을 가지는 것이 더 중요하다는 것을 우리는 알아야 한다.

작가의 이전글 우리는 늘 레거시 코드를 짜고 있다.
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari