새로운 것을 학습하는 방법

주니어 시절, 욕심 많은 아이처럼 이 기술 저 기술을 목적 없이 마구마구 집어삼키던 시절이 있었다. 아이들이 포켓몬 카드 수첩에 새로운 아이템 카드를 넣고, 그걸 쳐다보며 마냥 흐뭇해하는 그런 마음처럼, 새로운 기술을 내 머릿속에 집어넣고 한번 써봤다는 것으로 우쭐해 질 때가 있었다

그러다 비즈니스 목표에 집중하고 그것을 동료들과 함께 이뤄가는 재미를 알고부터, 해결하려는 문제에 집중하고, 의미 있는 것을, 사람들에게 도움이 되는 뭔가를 만들어내는 재미에 빠져 몇 년을 보냈다.

올해 처음 접해본 것들

그러다 올해는, 다시 여러 새로운 기술들을 접하게 되었다.

  • 회사에선 flutter를 도입하였고, 그걸 시작으로 오랜만에 모바일/PC 애플리케이션을 개발하게 됐다.
  • 가볍게 시작했던 개인 프로젝트가 점점 커지게 되었는데, 혼자 하려다 보니(정말 말 그대로 1인 풀 스택 개발;;;) 손 하나 까딱할 에너지도 안 쓰고 싶은 생각에 이것저것 새로운 시도를 하게 되었다.
  • 익숙했던 ant.design을 멀리하고 mui를 손에 잡아봤고, SSR(server-side-rendering) 이 필요해져서 next.js를 사용하게 되었다.
  • 짜잘한 api 수정이 너무 귀찮아서 graphql로 싹 뜯어고쳤고(정말 최선을 다해 아무것도 안 하고 싶었음!), 그러면서 hasura를 알게 되었다. react-adminhasura data provider를 끼워 얹으니까 너무 거져 먹는 것 같아서,
    ‘아ㅡ 정말 이렇게 쉽게 개발하고 되는 걸까?’ 라며, 몇 줄 안 되는 코드에 미안해질 정도였다. ㅋㅋ
  • apollo client를 접하고 신세계를 경험했다. (그동안 골머리 썩히던 그 문제를 이렇게 우아하게 해결해내다니!!)
  • 최근에 나온 recoil은 이제 더 이상 ‘redux를 써야 해 말아야 해?’ 라는 고민을 끝내 주었다. (redux는 딱히 대안이 없어서 쓸 수밖에 없었는데, 쓰면서도 ‘이건 아니야’란 생각을 떨칠 수가 없었다)
  • “어떻게 하면 손 안 대고 코 풀 수 있을까?”란 생각에, firebaseaws의 여러 서비스들을 조합하고 있고, 그러면서도 특정 환경에 종속적으로 묶이는 것을 최소화하기 위해, 머릿속으로는 서비스가 운영되는 모습을 계속 시뮬레이션해 본다.
  • 그러는 와중 회사에선 쿠버네티스kubernetes 환경을 한 땀 한 땀 만들어가고 있다. (k3s 만세!)

이런 걸 겪으면서, 내가 새로운 걸 어떻게 학습하고 있는지 생각해보게 되었고, 그래서 이 글을 시작하게 되었다.

굳이 이렇게 글로까지 쓰는 건, 비단 이게 기술 학습에만 적용되는 이야기가 아니라서이다. 이제는 내 삶의 방식으로 자리잡혀버린, 내가 살아가는 일상의 이야기다.

새로운 것을 학습하는 방법

내가 새로운 기술에 관심을 가져볼 때는 해결해야 할 문제가 있을 때이다. 새로운 기술을 살펴볼 때 “관심”만 가지고 접근할 때와 “해결해야 할 문제”를 가지고 접근할 때의 차이는 천지 차이다. 어떠한 문제를 해결하려는 목적을 가지고 새로운 것을 살펴보면 명확한 초점이 생긴다.

‘이건 이 문제를 어떤 방식으로 해결하고 있지?
이 기술의 문제 해결 방식은 뭘까?
이걸 활용하면 지금의 문제를 어떻게 해결할 수 있을까?’

이 명확한 초점은 나의 바로 다음 행동을 생각하게 만든다. 이런 마음으로 Getting started 문서를 빠르게 읽어본다. 이때 “아!” 하는 감탄사가 나오면 바로 나의 문제로 가지고 와서 코드를 짜본다.

나는 아! 하는 감탄사가 나오는 포인트를 중요하게 생각한다. 이 감탄사가 나왔다는 얘기는 새로운 문제 해결방식을 발견했다는 얘기고, 지금 방식으로 해결 못했던 문제를 해결할 수 있을 것 같다는 기대에 찬 환호성이다. 이 아! 하는 포인트가 없으면 더 이상 진행하지 않는다. 이런 포인트가 없다면 새로운 문제 해결방식이 아니라는 이야기. 즉, 여전히 익숙한 방식이라는 이야기. 여전히 익숙한 방식으로 문제를 해결하고 있다면 그 기술을 사용할 이유가 없다. 어차피 익숙한 방식이라면 나에게 가장 익숙한, 이전부터 써 오던 도구를 사용하는 게 훨씬 효율적이기 때문에. 더 이상 그 기술을 볼 필요가 없다.

그렇게 Getting started 문서만 보고 바로 코드를 짜보면(하루 정도) 반드시 벽에 부딪히는 순간이 온다. 당연하다. 벽이 나타나지 않는다는 얘기는 충분히 예상할 수 있게 흘러간단 얘기고, 그건 새로운 방식이 아니란 이야기. 도구만 달라졌지, 나에게 아무런 변화(이점)를 만들어내지 못한다. 이럴 땐 아까 말한 것처럼 가장 익숙한 도구를 사용하는 게 낫다. 하루 정도 고생했다면 이제 문서의 다른 부분을 볼 시간이다. 이때도 당연히 문서를 처음부터 차근차근 보지 않는다. 하루 정도 씨름해보면서, 이걸 처음 접했을 때와 마찬가지로 또 다음 스텝에 대한 명확한 초점이 생겼다. 씨름하며, 구글 검색을 해보며, 이제 다음엔 뭘 해야 하는지 키워드가 생겼다. 그 키워드와 연관된 부분의 문서를 보고, 또 오늘의 문제로 돌아온다. 그리고 또 오늘의 문제를 조금씩 풀어나간다.

이 과정을 그냥 계속하는 것이다.

순간의 판단을 이끄는 것

여기에 순간순간 판단이 일어난다.

‘계속 해야 해? 말아야 해?’
‘그만해야 할 때인가 관둬야 할 때인가?’

이때 나의 이성이 묘하게 작용하며 순간적인 판단을 만들어낸다. 감과 이성이 다른 목소리를 낼 때도 있는데, 난 그때 어디에 귀를 기울이는 걸까? 잘 모르겠다. 분명한 것은 감의 영역과 이성의 영역이 모호한 경계를 만들며 판단을 끌어내는데, 그때 일어나는 생각의 흐름을 굳이 제어하지 않는다. 감에 맡길 때도 있고, 이것저것 따져가며 세밀하게 설계를 해가며 결정할 때도 있다.

감이 이끄는 대로 움직일 때, 그것이 선을 넘어버리지 않도록 적당함을 유지하게 만들어 주는 것은 지금의 해결해야 할 문제이고, 크고 멀리 있는 문제를 지금 해결해야 할 작은 목표로 바꾸어주는 것은, 일주일 주기로 의미 있는 변화를 만들어내고자 하는 내 삶의 리듬감이다.

정답은 없다.

별거 아닌 일이 십수 년이 지나도 잊혀지지 않을 때가 있다.

대학교 때 공업수학 수업 시간에 있었던 일이다. 숙제를 하는데, 도무지 풀리지 않는 문제가 있었다. 아무리 풀어봐도 답이 나오지 않더라. 그 문제와 꽤 씨름하다가 그다음 수업 시간 교수님이 풀어주시는 수업을 듣는데, 충격!! 이었다.

“이 문제는 정답이 없어요”

라고 말하면서, 그냥 대충 적당한 답을 적고 다음 문제로 넘어가시더라. ㅡ,.ㅡ;; 그러면서

“공학은 정답을 찾는 학문이 아니에요. 가장 효율적인 방안을 찾는 학문이에요”

라고 지나가듯 얘기하고 넘어가셨다.

그땐 그냥 별 대수롭지 않게 듣고 넘겼는데, 십 년 이상 까먹고 있던 그 말이 얼마 전부터 생생하게 다시 살아났다. 지금은 그때 교수님의 그 말씀이 나에게 하나의 지침이 되고 있다.

정답은 없다. 정답이 없는 곳에서 답을 찾으려고 애쓰지 말고, 지금 가장 효율적인 방법을 찾으려고 하자. 어제의 결정을 오늘로 가져오려고 하지 말고, 오늘의 결정을 내일로 이어가려고도 하지 말자. 늘 새로운 오늘을 살자.

그래서 무엇이 최선일까?

부담스러운 “정답”이라는 단어보다, “최선”이라는 말이 좀 더 편안하다.
여기엔 여러 의미가 담겨있다.
지금의 내 상황, 함께하는 동료들, 내 컨디션, 삶의 다른 영역들, 비즈니스 상황,,, 이런 걸 종합적으로 고려해서 지금 가장 효율적인 선택을 내리면 되는 것이다. 하지만, 어떤 결정을 내린다는 것은 여전히 어렵다. 여기에 부담을 줄여줄 수 있는 나의 방법은,

  1. 그 결정에 무게를 싣지 말고, 그냥 “오늘의 결정”이라고 가볍게 생각하는 것이다.
    내일이면 달라질 수도 있는, 상황이 바뀌어도 달라질 수 있는.
    고정된 뭔가가 아니라, 마치 운전할 때 지금 내 눈앞에 들어오는 그 장면처럼, 상황에 따라 얼마든지 달라질 수 있다고 생각하면 된다(실제로 그러하고!).
    그래서 오늘의 상황만 고려해서 판단을 내리면 된다.
  2. 그리고 두 번째는, 헷갈릴 때는 그냥 여러 쵸이스를 다 해보는 것이다. 이것도 해보고 저것도 해보고 둘 다 해보면 뭐가 더 효율적인 대안인지 알 수 있다(적어도 내 마음에 더 끌리는 것 한가지는 나타난다!)
    많은 사람이 둘 다 해보고 그중 하나를 결정하는 것을 낭비라 생각하는 것 같다. 하지만 실제로 몇 번만 해보면 그게 낭비가 아니란 것을 알게 될 것이다. 책상 앞에 앉아서 머리로 내리는 결정보다, 실제 행동하고 부딪혀보고 결정을 내리는 것이 더 효율적이고 더 빠른 방법이다.

그렇게 가벼운 선택을 계속 내려가면서 한발씩 가는 것이다.

빠른 학습(빠른 변화)을 위한 준비

그래서 나에게 있어서, 학습은 곧 변화를 의미한다.

변화를 수용하기 위해선, 지금의 상태가 변화를 수용할 수 있는 상태여야 한다. (엥? 순환 논증의 오류다 ㅋㅋ)
늘 일어나는 변화 앞에서, 언제든 다음 스텝을 내디딜 수 있도록 충분히 가벼운 상태여야 한다.

변화를 수용하기 위해 가벼운 상태를 유지하기 위해서는 리팩토링이 필요하다. 리팩토링의 사전적 정의는, 외부 동작을 바꾸지 않으면서 내부 구조를 개선하는 행위다. 다시 한번 말하자면, 기능은 바뀌지 않는다. 그래서 어찌 보면 할 필요성을 못 느끼기도 한다. ‘기능은 그대로인데 뭐 하러 해??’ 그래서 리팩토링할 이유를 딱히 못 느끼기도 한다.
리팩토링은 지금을 위한 것이 아니라, 미래를 위한 것이다.
다가올 변화를 수용하기 위해, 군더더기를 싹 빼놓고, 빠르게 변화에 대응하기 위함이다.

미래는 예측하고 대비하는 것이 아니다.
받아들이고 수용하는 것이다.

미래를 위해 준비해야 할 것이 있다면 최선을 다해 오늘을 충실히 사는 것이다.
무슨 일이 벌어질지도 모르는 미래를 준비하는 것이 아니라, 군더더기를 빼고 오늘 딱 해야 할 것만 집중해서 하는 것이다. “감”과 “이성”을 유지한 채, 변화의 필요(=오늘의 문제)를 주시하는 것이다.
그리고, 변화를 해야 할 때, 빠르게 핵심을 파악한 후 오늘의 삶에 적용해보는 것이다.

“핵심”이란 단어를 사용했는데, 그 “핵심”을 바깥에서 가져오려고 하면 안 된다. 남의 것을 흉내 내거나 어디서 뻿겨 오려고 하면 안 된다. 내 안에서 나와야 한다. 오늘을 충실하게 살고 있다면 내 안에서 그 “핵심”을 끌어낼 수 있다. 온 세상이 움직인다고 해서 요동할 필요 없다. 내 안에서 필요성이 생겨나지 않는다면, 그건 내 것이 아니다. 무시해도 된다. 그 변화의 리듬으로 일주일 정도가 딱 적당한 것 같다.

준비는 그만하자!

회사 동료들로부터 종종 이런 얘기를 듣는다.

“좀 더 준비해볼게. 좀 더 정리해볼게”

그럴 때마다, 이제 제발 준비 좀 그만하라고 말한다. 이젠 준비 같은 거 그만하고, 정리 같은 거도 그만하고, 그냥 실전으로 들어가라고 한다. 도대체 언제까지 준비만 할 건데? 초중고등학교, 대학교 시기를 보내고, 회사에 들어오기 위해 지금까지 얼마나 많은 “준비"의 시간을 보냈나? 도대체 뭘 얼마나 더 준비해야 하지? 언제까지? 이제 준비는 그만하고, 실전의 삶을 살자!

“좀 더 정리해보겠다"라는 말을, 많은 사람이 자신도 모르게 “도피"의 의미로 사용하더라. 당장 뭔가를 하기는 좀 두렵고, 그래도 뭔가 열심히는 해야겠고, 그때 나 자신을 위안할 수 있는 행위는, 중심에서 벗어나 주변에서 뭔가를 열심히 하는 것이다. 내 일터에서는 그런 행위가 “준비”, “정리” 이런 거로 나타나는 것 같더라. “좀 더 준비하자. 좀 더 정리하자"라는 말로, 또 자신만의 동굴 속으로 도망치려고 하는 동료가 있을 때, 내가 도와주는 방법은 이거다.

“정리가 필요하다면, 지금 여기서 나랑 같이 정리해보자!”
또는,
“지금 여기서 30분 동안 리서치를 좀 해보고, 30분 후에 이어서 얘기해보자!”

그렇게 도망가지 못하게, 지금 해야 할 일을 직면하게 도와준다.

넘치게도 말고, 부족하게도 말고, 지금 딱 필요한 것만 갖추어 살아갈 때, 다가오는 변화를 부담 없이 맞이할 수 있다.

주변의 풍경에 귀 기울이기

위에 쓴 글을 다시 읽어보니, 목표 하나만을 보고 앞뒤 안 보고 달려가는 느낌이 풍기는 듯하다.

사람은 기계처럼 움직이지 않는다. 목적지로 가는 길 중간중간 주위의 풍경이 나도 모르게 내 머릿속에 남는다. 그런 풍경들은 다른 판단을 내릴 때 좋은 재료가 된다. 주변의 풍경은 내 삶을 더욱 풍요롭게 해주는, 너무나 중요한 일상들이다.

가족과 함께하는 시간,
화요일마다 또래 아저씨들과 함께 성경을 읽는 시간,
수요일마다 대학생 친구들과 책을 읽고 토론하는 시간,
일요일마다 만나는 고등학생 아이들,
그 외 크고 작은 만남, 여행, 여러 일상의 사건들.

이런 내 삶 전체가 통째로 작용해서 순간의 판단을 만들어내는 것이다.
그래서 경력개발? 자기 계발? 이런 말들은 어색하다. 내 삶 전체가 통째로 내 경력인데, 이런 걸 뭐 하러 애써서 개발해? 그게 개발을 할 수는 있는 건가? 그냥 내 모습에 충실하게 하루하루 살아가면 되는 거지.

마무리

아ㅡ 이번 글도 마무리가 안 된다 ㅋ 하루하루 충실히 살자는 교훈을 되새기며 그냥 급 마무리 ㅋ