"복잡하지만 단순하게(Simply Complexity)"[1], 이 책은 복잡계 삼인방이 읽은 책 중 단 한 권만 골라 추천할 것이라는데 동의한 책이다. 어려운 내용을 꿰뚫는 정리와 다양한 사례가 포함되어 다양한 분야의 사람들이 흥미를 가지고 살펴볼 수 있는 책이다. 많은 복잡계 책이 다루고 있는 바이러스, 도시, 전쟁, 물리학 그리고 금융에서의 다양한 사례가 설명되어 있다.

이 책에서는 여러 책에서도 채용하고 있는 복잡성 과학 정의를 채용하는데, "상호작용"하는 "개체"들의 집합에서 "창발"하는 현상에 대한 연구가 그 것이다. 사실 복잡계가 무엇이라 정의하는 것 보다는 우리가 보는 "현상"을 가지고 정의하는 것이 흥미롭다. 또한, 흥미로운 것은 현실 세계에서의 복잡성 사례 대부분은, 여러 존재들이 식량, 공간, 에너지, 권력, 부 등 "한정된 자원을 놓고 경쟁하는 상황"이 핵심이라고 지적하고 있는 것이다. 나는 이 부분이 가장 다른 책들과 다른 부분이라 생각한다.

좀 더 상세한 복잡계의 특징은 다음과 같다.
1. 복잡계는 다수의 상호작용 하는 개체, 또는 행위자(agent)의 집합체를 포함한다.
2. 개체들의 행태는 '기억' 또는 '되먹임'에 의해 영향을 받는다. 과거가 현재의 의사결정에 되먹임(feedback)되었다.
3. 객체들은 과거 이력에 따라 그들의 전략을 조정할 수 있다.
4. 복잡계는 일반적으로 '열려' 있다. 흥미로운 것은 대조적으로 우주는 닫혀 있다.

앞에서 언급한 복잡계가 "한정된 자원을 놓고 경쟁하는 상황"이라는 부분은 대부분의 복잡계 책에서 다루는 상황이다. 이 책이 특이한 부분은 이렇지 않은 경우에 대해서 연결, 즉 복잡계 네트워크 특징에 대해서 언급하는 부분이다. 즉, 자원이 많지 않은 집단에서의 네트워크는 집단 구성원 사이에 약간의 상호연결만 더해 줘도 성공적인 사람과 그렇지 못한 사람들 사이의 격차는 커지고 평균적인 성공률도 떨어진다고 한다. 예로 보면 후진국(60년대 한국, 멕시코 등)에서는 빈부 격차 확대, 독점 현상 발생하는 것을 살펴 볼 수 있다. 반대로는 자원이 풍부한 집단을 생각할 수 있다. 상호연결성이 낮으면 평균 성공율 높아지고, 대부분의 구성원이 성공하지만 상호연결성이 높으면 전체적인 공정성이 높아지고 성공율 격차가 작아진다.
선진국이라고 할 수 있는 유럽에서 이런 부분을 살펴 볼 수 있다.

7장 "교통 네트워크와 기업의 사다리"에서는 팀과 더글라스의 수레 바퀴에 비유하는 바퀴통-바퀴살 네트워크가 흥미로웠다. 이는 바퀴통에 해당하는 바깥 고리 위에서 바퀴살을 이용하여 두 점 사이 이동에 최단 이동 시간 계산하는 수학 이론이라고 할 수 있다. 여기서는 바퀴살, 즉 도로의 수 최적화 가능한 것에 대해 이야기한다.  흥미로운 것은 이 모델로 구한 답은 하나가 아닐 경우도 많다. 그렇다면, 어느것이 '정답'일까? 이 모델을 제안/적용하여 연구를 진행한 연구자들은 모두가 답이라는 의견이다.

9장에서는 앞에서 언급한 바퀴통-바퀴살 모델을 전쟁의 전략으로도 응용하고 있다. 비유로 늑대로 부터 양 때를 보호하는 개의 입장에서의 전략을 설명하고 있다. 이는 외부의 바퀴통에서 안의 바퀴통으로 가는 바퀴살의 숫자에 따라 다른 전략을 쓰는 것이 핵심이다. 우선 크게 공세적 방어와 수세적 방어로 나누어 이야기 한다. 공세적 방어는 개가 공격자를 공격함으로써 목표 대상을 방어하는 것이다. 이 것은 개, 양, 늑대의 수가 적을 수록 공격이 최선의 방어라는 측면이다. 늑대가 소수라면 추적하여 공격하는 것이 최선의 전략이라는 것이다. 수세적 방어라는 것은 보호 대상에 바싹 붙어서 방어하는 것이다. 보디가드가 VIP를 보호하는 방식과 유사하다 볼 수 있다. 이와 같이 적응적 전략이 유요할 수 있겠다.

앞에서 언급한 것처럼 복잡계의 정의, 사례 그리고 복잡계 네트워크까지 그리고, 자원의 다양성과 같은 상황에 따른 설명까지 폭넓은 시야를 제공하는 것이 이 책의 장점이다.

 

참고문헌

[1] 닐 존슨, "복잡하지만 단순하게 - 복잡한 세상에도 패턴은 있다", 한국복잡계학회 (옮긴이), 바다출판사 2020-02-24

들어가며...

Rust언어를 들어 보기는 했지만, 그나마 최근에 Linux 6.1에서 채용하기 시작한다는 기사[1]를 보고 다시 보기 시작했다. 최근에는 새롭게 시작한 프로젝트와 관련한 Open Source가 Rust를 채용하고 있어서 더 관심을 가지게 되었다. 최근에 살펴본 TIOBE Index[2]에서 보면 20위에 진입했다. 올해 말, 내년까지는 조금 씩은 보게 될 것이라 생각되니 익숙해 져보자는 생각에 이 것 저 것 뒤져 보다가, 바이블이라고 하는 The book[3]도 찾아 보고 읽어 보았다. 총 20장까지 있는데 현재는 10장 정도까지 어렵게 읽은 상태이다. 부족하지만, 기억나는 것을 정리하고 우선 멈추려고 한다. 이 후에, 정말 필요할 때 더 읽어 보려고 한다.

 

변수, 스코프 그리고 소유 

Hello World 프로그램을 보고 몇 가지 예제를 보고 가장 먼저 눈에 띄는 것은 mutable, immutable 개념이다. Rust에서는 변수를 만들면 값의 변경이 불가능한 immutable이 된다. 상수(constant)와는 다르다. 다시 같은 이름으로 선언할 수 있기 때문이다. 변경하기 위해서는 let mut x = 1;과 같이 mutable로 만들어야 한다. 쉐도우잉이라는 개념도 있는데 이는 Python등과 유사한 것 같다. 이는 같은 이름의 변수를 다시 선언해서 사용하는 것이다. 즉, let x = 1; let x = x +1;과 같이 사용한다는 것이다.


그 다음에 새로웠던 것이 소유권(Ownership)이다. Rust가 메모리 관리에 우수하다고 해서 Java 처럼 가비지 컬렉터가 있는가 했다. 하지만, 다른 방법으로 이 부분을 강화 했는데 그 중 하나가 소유권이라는 것이다. 이 것이 C나 다른 언어에서 알고 있는 스코프(Scope)과 관련이 있다. 즉, 변수의 Visibility와 관련된 것으로 같은 레벨이나 그 하위에서 보이는 것이라 알고 있을 것이다. 그런데, Rust에서는 Heap에 관리하는 변수의 경우 얕은 복사(Shallow Copy)의 경우는 같은 스코프라고 하더라도 유효하지 않을 수 있다.

 

또한 함수의 인자로 전달된 변수의 인자의 소유권이 넘어가 다시 복귀하게 되더라도 유효하지 않을 수 있다. 좀 더 상세히 이야기 하면, 메소드가 인자를 단순히 읽기만 하여 함수 처리 후 복귀했을 때 유효하기도 하다 (&self). 혹은 함수 내부에서 변형시키기도 하다(&mut self). 여전히 복귀 후에 사용이 가능하다. 아니면 소유권을 호출하는 함수에 넘겨 함수가 소비하고 함수 호출 이후에는 유효하지 않게 하기도 (self)한다. 즉, 인자를 어떻게 사용할지 결정론적으로 정하게 되는 것이다. 

 

Android와 Rust

Google도 Rust를 지원하는 큰 기업 중에 하나이고, Android에도 적용한다고 한다[4]. 이 부분도 관심과 시간을 가지고 살펴 볼 부분이다. Android에 Sandboxing이 도입되고 있음에도 메모리 관련 관리에 어려움이 있는 것[5]으로 보인다. 2019년도 부터 채용되고 있는 것으로 보아 조금이라도 적용되는 부분이 증가하지 않을까 생각된다. 

 

정리하며...

여전히 성능적 측면의 우려와 학습 곡선이 가파르다는 비판도 있는 것으로 보이지만, 2022년도에 Linux 커널에 도입되는 것을 보았을 때에는 추이를 계속 지켜봐야할 부분으로 보인다. 한국에서도 채용이 되고 있고 사용자 모임[5]이 있다. Discord도 상당히 활발해 보인다.

 

참고 내용

[1] Linus Torvalds: Rust will go into Linux 6.1, https://www.zdnet.com/article/linus-torvalds-rust-will-go-into-linux-6-1/?taid=6329bce71c8e3300010028ae&utm_campaign=trueAnthem%3A%20Trending%20Content&utm_medium=trueAnthem&utm_source=twitter

[2] TIOBE Index for November 2022, https://www.tiobe.com/tiobe-index/

[3] 러스트 공식 안내서 "The Rust Programming Language", https://rinthel.github.io/rust-lang-book-ko/ch00-00-introduction.html

[4] Android Rust 소개, https://source.android.com/docs/setup/build/rust/building-rust-modules/overview?hl=ko 

[5] Rust in Android Platform, https://security.googleblog.com/2021/04/rust-in-android-platform.html

[6] 한국 러스트 사용자 그룹, https://rust-kr.org/

 

정확한 연도가 기억이 나지 않는데, 강남의 러닝 스푼즈에서 OKR 과정을 듣고 페친이 된 분이 개설하신 성과 관리 워크샵을 들었다. 그 때도 CFR(Conversation, Feedback and Recognition)이었던 것 같은데 그 때 대표님이 교육생분과 했던 시연이 인상적으로 생각이 나고 참여한 사람들이 나에게 했던 칭찬 릴레이(?)로 느꼈던 그 때 감정이 기억이 난다. 이 때 부터 Personal OKR을 Bullet Journal의 형식에 적용해 사용해 왔었지만, 올해는 회사에서의 10개월 가량의 교육 과정으로 이 것과 업무 이외에는 다른 활동에 들인 에너지는 최소화될 수 밖에 없었다. 이러한 와중에 이 번 성과 관리 워크샵을 들은 후에 든 생각은, 이 과정을 선택한 것이 내년이 더 풍성할 수 밖에 없는 Good Start라고 이미 단정 지어도 될 것이라는 것이다. 이렇게 생각하는 이유는 다음 3가지 부분이다.
 
교육에서 무엇 보다도 가장 인상적이었던 부분은 Mission과 Vision에 대한 부분이다. 과정 중에 Mission과 Vision을 North Star와 North Pole에 비유해주신 부분이 너무 와 닿았다. 앞에서 언급한데로 올해는 내가 하고 싶었던 목표와 과정 측면에서는 모두 만족스러운 한해였지만 거기에 너무 함몰되었던 한해이기는 하다. 즉, 내가 가려는 방향은 잊고 내 목적지에 함몰하고 있다는 것을 깨닳게 한 것도 이 부분이다. 이런 상황에서는 아주 쉽게 길을 잃고 그 주변을 맴돌거나, 더 잘 못되면 잘못된 방향으로 길을 걸을 수도 있을 것 같다. 그러니, 기존에 잊고 있던 내가 잠시 잊고 있던 Mission/Vision 그리고 Goal, 즉 Objective와 느슨해 진 연결을 정비할 때가 된 것이다. 이러한 깨닳음이 지금의 나를 관통하고 지나가고 있다.

두 번째는 과정 중 MBO와 OKR에 대한 관점에 대한 들은 이야기는 기존의 나의 관점을 깨뜨렸기 때문이다. 얼마 전 후배와 식당에서 식사를 타기 위해 줄을 서 있으면서 한 잡담 중 했던 이야기가 생각난다. 자기 배우자와 자기가 너무 달라 힘들다는 이야기를 하면서 이런 저런 잡담을 할 때였다. 이 때 후배에게 했던 이야기를 짧게 줄이면  "정말 두 사람이 완전히 다르면 서로 관심도 없었을 것이다. 두 사람이 대부분 비슷하고 약간 다른 몇가지 때문에 다르게 보이는 것이다."라는 이야기이다. 즉, MBO와 OKR도 성과 관리라는 측면에서 보면 공통점이 많고, OKR이 성과 관리를 Agile하게 접근하는 것이라는 설명은 너무 인상적이었다. 결과적으로는 개인적으로 뿐 아니라, 회사 업무에서도 상위 목표들과 우리들의 Mission/Vision을 Align하는 것 그리고 구성원들을 여기에 더 참여시켜야 겠다는 Action Item으로 만들게 되었던 순간이었다.

세 번째는 상대를 인정하는 부분에 대한 것이다. 최근에 회사에서는 코칭 강의에서도 소개 받고, 기존에도 여러 번 들었던 이너 게임 책을 읽고 있다. 이와 더불이 같이 복잡계 공부하는 분 통해 알게된 동기 면담 과정도 참여했었다. 이 두가지와 성과 관린 워크샵에서도 약간 다르지만 비슷하게 들린 부분이 대화 상대방에 대한 태도에 대한 것이다. 물론 이너 게임은 나 자신에 대한 것이지만 나를 객관화 한다면, 혹은 이 이너 게임을 코칭의 개념으로 생각해 본다면 그 태도가 유사하다는 생각이다. 이 부분을 실행한다는 부분은 매우 어려운 점이라고 생각된다. 회사에서도 실재로 매우 격하게 느끼고 있던 부분이다. 그래도, 내가 실행해보고 싶은 부분이기도 하다. 내년에 내가 이 부분에 대해서 책에서 이야기 하는 것들을 발견할 수 있을 지 걱정되면서도 기대되는 부분이다. 

 

2022년이 2주 가량 남아 있는데 너무 큰 숙제가 남았는지도 모르겠다. 하지만, 그것이 힘들더라도 즐거울 것이라는 것은 의심의 여지가 별로 없다. 과정에 마지막에 느꼈던 것 처럼 동기(Motivation)이 뿜뿜일 것이라고 생각되기 때문이다.

'Objectives & Key Results' 카테고리의 다른 글

OKR 실수 (그리고 고치는 방법)  (0) 2020.10.09
퍼스널 OKR  (0) 2020.10.09
OKR의 기술, 속편  (0) 2020.08.02
퍼스널 OKR(Personal OKRs), 그리고 3년 후  (0) 2020.07.25
Objectives and Key Results (OKR)  (0) 2020.01.02

+ Recent posts