본문으로 건너뛰기

2년 차

무료2018-07-13#Mind

10년 발자취의 2년 차

0. 회고

51편의 블로그 포스트를 헤아려보니, 또 한 해가 지났습니다.

학습 수확

  • 함수형 프로그래밍: Haskell x13

  • React: React x11

  • NodeJS: Node x2 Electron x2 커스텀 IDE x4

  • 규격 및 표준: CSS x6 ES Module x1 W3C 표준 프로세스 x1 HTTP 캐시 x1 macrotask와 microtask x1

  • 새로운 개념: PWA x1 WebAssembly x1 Web Components x1

  • 도구: Webpack x1 rollup x1 lerna x1 Docker x1

  • 솔루션: JS 메모리 누수 x1 카카오톡 채널(위챗 공중호) x1

함수형 프로그래밍에 대한 호기심은 큰 나무로 자랐고, React 생태계는 거의 다 파헤쳐 보았습니다. 2년 전 비축해둔 Node 지식을 본격적으로 활용하기 시작했고, 9개월 동안 띄엄띄엄 진행해온 CSS 오타 교정도 마침내 끝냈습니다. 당시의 새로운 개념들은 최근 들어선 좀처럼 듣기 힘들어졌네요... 관심사가 상대적으로 집중되었고, 의식적으로 체계적인 학습을 진행하고 있습니다.

목표 달성도

  • CSS 명세를 다시 한번 훑었지만, 지식 체계는 여전히 형성되지 않음

  • 알고리즘 교재를 복습하여 얻은 것도 있고 의문도 생김

  • 함수형 프로그래밍에 대한 변태적인 욕망을 드디어 채움

  • 제품, 운영, 인터랙션, 시각 전달, 색채 구성, 평면 구성은 거의 보지 못함

  • 소스 코드를 많이 읽었지만, 더 높은 차원의 추상적 사고가 부족함

  • 신기술에 대한 관심이 너무 적음, FEX 주간지는 벌써 반년 치가 쌓임

  • 일본어는 ROI가 너무 낮아 중단함

  • 재킷 계획은 1년 일찍 다른 방식으로 완성됨, 초심에 어긋나지 않음

  • icebrick 진척도 30%, 중단함

  • 여자친구 계획은, 음, 6년 일찍 완성됨

  • 스피치 능력 향상 계획 초안 완성

큰 목표 달성도는 겨우 턱걸이 수준이고, icebrick이 중단된 것은 아쉽습니다. 마침내 다른 모습의 자신을 받아들이기 시작했고, 더 이상 고집불통으로 남지 않게 되었습니다.

성장 과정

8월의 번아웃 릴레이, 10월의 긴 고통, 1월의 두근거리는 만남, 3월의 불안한 포위망(围城), 4월의 예상치 못한 기대 이상... 기복 있는 삶은 예상보다 훨씬 다채로웠고, 훨씬 더 무거웠습니다.

40년의 직장 생활은 장거리 달리기입니다.

선배님이 말씀하셨듯, 한때의 득실은 40년이라는 긴 안목으로 보면 보잘것없고 중요하지 않습니다. 중요한 것은 자신이 무엇을 원하는지 아는 것입니다.

1. 깨달음

2년 차의 5가지 이야기는 《설득의 심리학(Influence)》, 《침묵하는 다수》, 《스티브 잡스의 프레젠테이션의 비밀》 이 세 권의 책을 중심으로 펼쳐집니다.

누군가를 사랑한다는 것

네, 저 여자친구 생겼습니다. 이름은 멍거(梦歌)예요.

이번에는 더 이상 비겁하지 않으려 합니다. 용기 있게 "안녕"이라고 말하고, 두 팔 벌려 포옹하려 합니다.

사랑은 표현이 필요합니다. 가치 있는 사상과 마찬가지로, 전파되지 않으면 아무런 의미가 없습니다. 영화 속의 한 장면처럼요.

"두 분은 왜 결혼하셨나요?"

"우리는 말이 통하거든요."

"좀 더 자세히 말씀해 주세요!"

"말을 안 해도 서로 무슨 생각을 하는지 다 알거든요."

상상 속의 교감은 더 높은 경지의 표현처럼 보이지만, 실제로는 표현의 결핍입니다. 그래서 결국 마지막엔 조금 남아 있던 정마저 사라지고 맙니다.

사상과 다른 점은, 사랑은 가꾸어야 하며 지속적으로 활력을 불어넣어야 한다는 것입니다. 사상의 파문처럼 시간이 흐를수록 깊어지는 것이 아닙니다. 하지만 삶은 사랑에 필요한 낭만을 그냥 주지 않습니다. 그래서 무심결에 나온 듯한 낭만도 항상 정교하게 설계된 것입니다.

네, 이것은 기만처럼 보일 수 있습니다. 하지만 사랑을 어떻게 기만할 수 있겠습니까?

먼저 다른 문제를 생각해보죠. 이상적인 그녀는 어떤 모습일까요?

답은 '더 나은 또 다른 나'입니다. 그녀는 자신이 갈망하는 모든 장점을 갖추고 있으면서, 자신의 단점 대부분은 가지고 있지 않은 사람입니다. 맞습니다, 우리는 타인의 단점을 용인할 수 있습니다. 스스로가 완벽하지 않다는 것을 잘 알고 있기 때문이죠.

불완전한 자신을 아무런 가감 없이 그녀 앞에 드러내고, 고집, 민감함, 지루함, 나태함 같은 수많은 단점들을 하나하나 전시하며, 여전히 자기 방식대로만 누군가를 사랑하는 것은 상대방을 도망치게 할 뿐입니다.

진심으로만 대하면 친구를 잃게 된다.

그러므로 누군가를 사랑한다면, 변하지 않는 이른바 '진심'만을 고수하는 것이 아니라 매일 더 나은 자신의 모습을 그녀에게 보여주어야 합니다.

스피치의 힘

그럼 당신네 "말 잘 듣는 IDE"는 이 부분이 좀 불편하네요.

7월 3일 이 말을 다시 들었을 때, 저는 진심으로 놀랐습니다.

4월 13일의 한 강연에서, 정교하게 설계된 이 한 문장짜리 타이틀을 내놓았습니다. 마치 그 공기청정기 광고처럼요.

10분 만에 온 집안 공기를 정화합니다.

지난 반년 동안 배운 스피치 기법을 처음으로 적용해 보았는데, 효과는 놀라울 정도로 좋았습니다. 단 한 장의 슬라이드만으로 이 문장을 청중의 머릿속에 깊이 각인시켰습니다.

지난 반년 동안 《스티브 잡스의 프레젠테이션의 비밀》부터 《TED처럼 테드하라》, 그리고 《스피치의 힘》에 이르기까지 읽으며 스피치가 어떤 것인지 점차 깨닫게 되었습니다. 실제로 스피치를 하나의 기술, 심지어 예술로써 전문적으로 학습하는 것은 전혀 과한 일이 아닙니다.

어떻게 말할 것인가?

스피치 기법이 향상되었습니다.

TED 오프닝에서 물방울이 일으키는 파문은 사상을 전파하려는 아름다운 비전을 상징합니다. 스피치를 통해 서로 다른 분야의 사상이 충돌하고, 이를 통해 더 많은 가치를 창출하는 것이죠. 좋은 사상이 멋지게 표현되지 못한다면 타인에게 닿아 공감을 이끌어낼 수 없고, 그 가치 또한 발휘될 수 없습니다. 결국 이렇게 되고 마는 것이죠.

좋은 패를 가지고도 형편없이 쳤다.

나의 모난 부분들은 어디로 갔을까?

게임의 규칙은 모두 같습니다. 내가 끝내 받아들이고 싶지 않았던 가식적인 것들도 결국에는 맞춰가야 합니다.

나만의 색깔(모난 부분)을 지키고 싶지만, 게임의 규칙이 허용하지 않습니다. 두 가지 선택지만 있는 것 같습니다. 받아들이거나, 받아들이는 척하거나.

저는 후자를 선택해 '사이(佐井, 나루토의 캐릭터)' 같은 사람이 되기로 했습니다. 책을 통해 내가 좋아하지 않는 유형의 사람이 되는 법을 배웁니다. 적어도 겉으로는 그렇게 ��여야 생존할 수 있기 때문입니다. 한 지인은 이 관점에 의문을 제기하며 이렇게 말했습니다.

좋아하고 말고의 느낌은 그냥 자신이 잘하거나 못하는 것에 대한 또 다른 표현일 뿐 아닐까요.

이는 다른 상황과도 매우 흡사합니다.

답을 못 하니까 문제가 안 좋다고 탓하는 격이죠.

객관적으로 보면 이 두 가지 의문은 모두 타당하고 날카롭습니다. 전자는 서툴기 때문에 '취향'을 핑계로 사실을 은폐하려 하고, 후자는 풀지 못하기 때문에 문제가 너무 지엽적이라는 이유로 회피합니다. 네, 반박할 여지가 없어 보입니다. 하지만 뒤집어 생각해보면, 답을 맞히든 못 맞히든 문제에 대한 의구심은 여전히 존재할 것이며, 잘하든 못하든 좋아하고 싫어하는 사실 또한 즉각 바꿀 수 있는 것이 아닙니다. 어릴 적 저는 서사적인 글쓰기를 좋아했지만, 정작 경치를 묘사한 작문이 큰 찬사를 받곤 했습니다. 하지만 저는 미사여구를 늘어놓는 것을 좋아하지 않았습니다.

정말로 좋아하지 않는 일은 내면에서 거부하는 일들입니다. 예를 들어 생존을 위해 마음에도 없는 말을 배우는 것 말이죠. 《침묵하는 다수》에서는 이를 '담론세(话语捐)'라고 부릅니다.

위대한 인물들조차 '마음에도 없는 말'을 했던 적이 있는데, 이는 이 세금의 범위가 매우 넓음을 뜻합니다. 담론세를 징수하는 일이 실재하므로, 우리가 무슨 말을 했든 자책할 필요는 없습니다. 위에서 시켜서 한 말이니까요.

마찬가지로 생존을 위해 마음에도 없는 일을 배우는 것 또한 합리적입니다. 그 시대를 살았던 저자 왕샤오보(王小波)는 그 도를 잘 알고 있었던 것 같습니다.

덧붙여 말하자면, 내 스승님은 학문이 깊지만 매우 순진하셨고, 나는 학문은 얕지만 영악했다.

《우리 셋(我们仨)》에서 '위험한' 출신인 첸위안(钱媛)이 "바다를 항해하는 것은 조타수에게 달려 있다"는 지혜를 발휘해 10년의 격동기 속에서 온전히 살아남은 것과 같습니다.

그러므로 사실 저의 모난 부분들은 여전히 존재하며 아마 영원히 남아있겠지만, 더 이상 밖으로 드러나지는 않을 것입니다.

악당의 관점에서

말하자면, 《다크 타임(暗时间)》을 통해 류웨이펑(刘未鹏)을 알게 되었고, 이어서 사회행동학을 접하게 되면서 《설득의 심리학(Influence)》이라는 책을 발견했습니다.

두 번에 걸쳐 읽었는데, 두 번의 관점이 완전히 달랐습니다. 처음에는 "어떻게 하면 설득의 무기에 휘둘리지 않을까?"(착한 사람의 관점)에 주목했고, 두 번째는 "어떻게 설득의 무기를 이용할까?"(악당의 관점)를 고민했습니다.

두 관점의 차이는 똑똑한 양이 되고 싶은지, 아니면 지식으로 무장한 늑대가 되고 싶은지의 차이입니다. 양은 지식을 함정을 식별하고 손실을 줄이는 데 쓰지만, 늑대는 사냥하고 이득을 취하는 데 씁니다. 영화 《폭렬무성(暴裂无声)》의 장면처럼요.

채식은 좋은 습관이 아니야. 양, 그놈도 풀만 먹거든.

악당의 관점에서 바라봐야 비로소 그 지식을 활용하고 원래의 가치를 발휘하려 시도하게 됩니다. 단지 지식의 산물을 식별하는 능력만 갖추는 데 그치지 않고요.

차원 축소 공격(降维打击)

이 단어는 소설 《삼체》에서 온 것으로, 가장 강력한 무기는 상대방이 알고 있는 자연법칙을 무력화시키는 것이라는 뜻입니다. 근간이 사라지면 그 위의 모든 것이 무너져 내리기 때문입니다.

고차원에서 저차원을 향해 공격을 퍼부으면(일단 고차원 공격이라 부릅시다), 상대방은 속수무책일 수밖에 없습니다. 가자(Singer)가 '2차원 박(二向箔)' 하나를 던지자 태양계 전체가 한 폭의 그림으로 변해버린 것처럼요...

사실 지식의 측면에서도 차원 축소 공격은 존재하며 그 위력 또한 대단합니다. 예전에 읽은 한 기사의 목차 일부를 예로 들어보겠습니다.

서문
  20년의 찬란한 세월
  소란스러운 무지개
도구화
  도구화의 의미
  도구화의 부족함: 추상화 누수 정리
  함수형 사고: 추상과 직관
프론트엔드-백엔드 분리와 풀스택: 기술과 사람
엔지니어링
  엔지니어링이란 무엇인가
  현실로 돌아온 프론트엔드 개발 계획
  선언적 프로그래밍과 데이터 흐름 기반 구동: 얻는 것과 잃는 것
  점진적인 프론트엔드 아키텍처
  온라인 품질 보장: 프론트엔드의 어려움은 프론트엔드에 있지 않다
심화 읽기
맺음말

역사의 중후함이 스며들어 있으며, 역사는 권위 있는 논거(소위 고전 인용)가 됩니다. 독자는 권위(설득의 무기 중 하나)로부터 압박을 받게 되죠. 저자는 마치 역사라는 긴 강가에 세워진 피라미드 위에서 대중에게 연설하는 것과 같아서, 입을 열기도 전에 이미 깊은 신뢰를 줍니다.

왜 그럴까요? 이러한 권위의 압박은 어디서 오는 것일까요?

《침묵하는 다수》에 이런 구절이 있습니다.

문학/역사 지식을 배우는 목적은 '온고(温故)'에 있다. 문사 철학의 소양이 있는 사람은 과거부터 현재까지의 긴 시간대 속에서 산다. 과학 지식을 배우는 목적은 '지신(知新)'에 있다. 과학 지식이 있는 사람은 미래를 예견할 수 있으며, 현재부터 무한한 미래의 시간대 속에서 산다.

역사에 통달하면 과거부터 현재까지의 경험을 가질 수 있습니다. 지식의 두께 측면에서 보면, 높은 산 위에 서서 정보가 불평등한 대화(차원 축소 공격)를 시작하는 것과 같으니, 당연히 "단(壇)이 높은 자가 승리"하는 법입니다.

지식의 차원 축소 공격을 처음 경험한 것은 한 면접에서였습니다. 상대방은 Google Polymer의 역사를 들어 제가 구축한 이론적 토대를 가볍게 무너뜨렸고, 그 위에 세워진 모든 것을 무의미하게 만들었습니다. 기초 이론을 향한 지식의 차원 축소 공격 역시 근본을 뒤흔드는 방식으로 모든 상황을 종결시킬 수 있습니다.

또 다른 경험은 React에 대한 견해를 나눌 때였습니다. 상대방은 바닥에서부터 고층 건물을 올리는 방식으로 "결국 다 도구일 뿐"이라고 응수했습니다. 마치 발밑에 노란 원을 그려 다른 시공간으로 텔레포트한 뒤 말을 거는 것처럼, 구체적인 문제를 추상적인 차원으로 격상시켜 열세에서 벗어나 우위 점유 구역으로 돌아간 것이죠.

                 타인이 모름
                     ^
                     |
           우위 구역  |  맹점 구역
                     |
자신이 앎 --------------|---------------> 자신이 모름
                     |
           공지 구역  |  열세 구역
                     |
                  타인이 앎

추상적인 지식이 더 우위를 점하는 이유는 그 차원이 더 높기 때문입니다. 예를 들어 "기술은 도구일 뿐이다" 같은 말은 어떤 구체적인 기술에 대입해도 다 말이 됩니다. 추상적인 고지를 점령하고 나면, 모든 전쟁은 이러한 추상적인 차원으로 격상됩니다. 현재의 최고 추상 단계보다 낮은 모든 논술은 의미를 잃게 되고, 그 이후에는 태양계의 비극 같은 학살이 벌어지게 됩니다.

차원 상승 공격(升维打击)의 의미도 있습니다. 같은 차원의 공간에서는 우위를 점하지 못하니 전장을 더 높은 차원의 공간으로 끌어올려 고차원 공격을 실시하는 것이죠.

따라서 지식 비축에 있어서 추상적인 범용 이론도 매우 중요합니다. 첫째로 더 높은 차원의 추상적 지식을 가지면 어떤 대화든 주도할 수 있고, 둘째로 고차원 공격에 대응할 수 있기 때문입니다.

내가 쫓는 것

내면이 갈망하는 것은 대체 무엇인가?

자유로운 환경? 커리어 발전? 기술?

그렇다면 기술이란 무엇일까요? 8년 후, 저는 또 어떤 성(围城) 안에 갇혀 있을까요?

지금껏 저는 제 발을 믿어왔습니다. 멈추지 않고 계속 걸어가기만 한다면 결국 저를 기다리는 그곳에 닿을 수 있을 거라 믿었습니다. 그래서 하늘을 올려다보지도 않았고, 꿈을 꾸지도 않았습니다.

꿈에 관해서라면, 저는 사상이 깊은 선배들처럼 기술에 사상을 불어넣고 기술을 통해 저만의 독특한 가치를 표현하고 싶습니다. 이는 매우 긴 축적과 침전의 시간을 필요로 하며, 번뜩이는 영감이 떠올랐을 때 그 설레는 아이디어를 붙잡아야 합니다. 마지막에는 생문(生门)을 찾는 것처럼 홀로 사상의 전쟁을 치러야 하죠.

천하에서 가장 고뇌하는 사람은 후차오무(胡乔木)다. 그는 문제를 생각할 때 항상 1도부터 시작해 180도까지 생각하는데, 그러다 보면 종종 자신의 반대편에 서게 되어 자아충돌에 빠지고 극심한 고통을 겪기 때문이다.

멈추지 않고 걷다 보면 꿈에 점점 가까워지는 것 같습니다. 축적된 지식이 많을수록, 기지의 집합이 클수록 미지의 대상을 만났을 때 기지의 집합에서 매핑하여 추론하기가 더 쉽기 때문입니다. 사실 Haskell을 공부한 것도 '순수한' 기지의 집합을 구축하기 위해서였습니다. 충분히 긴 시간 선상에서 보면 배운 것들은 모두 쓸모가 있습니다. 예전에 문득 깨달은 것처럼요.

CSS animation의 정의 방식은 Flash와 매우 닮아 있습니다. 예를 들어 Flash의 핵심 프레임(Keyframe), 공백 핵심 프레임, 일반 프레임 같은 것들 말이죠.

Flash를 배운 때와 CSS 애니메이션 사이에는 4년의 간극이 있었지만, 지식 사이의 묘한 연결 고리는 언젠가 반드시 나타나게 마련입니다. 그러니 설령 멀리 돌아가는 길이라도 결국 구불구불 앞으로 나아가는 과정입니다. 하지만 이런 성장 방식은 이성적이지 않습니다. 매 걸음의 선택이 국소 최적화도 아니고 전역 최적화도 아니며, 마치 지렁이가 미로를 헤매는 듯한 시도이기 때문입니다. 네, 저는 줄곧 이런 방식으로 미지의 길을 탐색해 왔습니다. 모든 선의의 충고를 무시한 채, 깊은 밤 속에서 초라하고 고집스럽게 나아갔습니다.

선배님은 자존심과 허영심을 내려놓아야만 내면의 갈망이 들린다고 하셨습니다. 마치 이 말처럼요.

나는 내가 불행을 찾고 있음을 봅니다. 나는 온 마음을 다해 이 느낌을 받아들이고, 그것에 대한 필요를 내려놓습니다.

2. 목표

3년 차

  • 프론트엔드 기술 생태계

  • 이상적인 프레임워크

  • 알고리즘

  • 스피치의 예술

  • 차원 높은 사고

더 나은 나를 만나기

사랑하는 이여, 밖에는 아무도 없습니다. 오직 당신뿐입니다. 외부 환경은 내면 세계의 투영일 뿐입니다.

네, 저의 그 수많은 단점들은 모두 실제로 존재하는 것이며 변명의 여지가 없습니다.

효과적인 소통

효과적인 소통은 양측이 원만한 방식으로 정보를 교환하고 합의에 이르는 것입니다.

하지만 가장 직접적인 전달 방식이 보통 가장 효과적인 방식은 아닙니다. 스피치와 마찬가지로 감정적 연결을 구축하고 상대방의 처지를 충분히 감지하여, 먼저 '너'를 '우리'로 만들어야 합니다. 하지만 많은 경우 소통을 방해하는 것은 정보 그 자체가 아니라 양측의 감정 충돌입니다.

소통은 감정 게임입니다.

다행히 감정은 유도될 수 있습니다. 게임에서의 '판 짜기(控场)'처럼요. 그러니 긍정적인 감정을 가지고 시작하고, 상대방이 긍정적인 감정을 갖도록 유도하여 이성적인 소통을 이어가야 합니다.

빈 잔의 마음

항상 원 안에만 서 있으면 경계 밖의 미지를 영원히 볼 수 없습니다. 마치 물이 가득 찬 컵처럼요.

허우(侯) 선생님이 말씀하신 '제로 세팅(清零)'처럼, 컴포트 존을 벗어날 때마다 마음을 비우고 바짝 마른 스펀지가 되어 다시 0부터 시작하는 것, 그것은 과거의 성취와 작별하는 용기입니다.

익숙한 구역에 머물며 항상 추론의 방식으로만 새로운 것을 바라보면, 완전히 다른 부분은 절대 볼 수 없습니다.

왜 underscore를 읽나요?

함수형 프로그래밍을 배우는 데 도움이 된다고 들어서요 (도움이 전혀 안 된다고는 할 수 없지만, FP와는 아직 거리가 멉니다)

변화를 꾀함

성실함 -> 책임감 -> 돌파

선배님이 하고 싶은 말씀은, 변화는 매 순간 일어나고 있으며 한결같은 방식으로만 대응한다면 머지않아 도태될 것이라는 점입니다.

적자생존, 끊임없이 자신을 재정의하고 스스로 돌파해야만 변화에 대응할 수 있습니다.

3. 계획

이제부터 우아한 사람이 되려 합니다.

메인 퀘스트

  • 프론트엔드 기술 생태계

  • 이상적인 프레임워크

  • 알고리즘

서브 퀘스트

  • 스피치의 예술

  • 디자인 심미안

데일리 루틴

  • 차원 높은 사고

  • 영어

댓글

아직 댓글이 없습니다

댓글 작성