원래는 분기별로 회고를 작성하곤 했었는데, 일상을 보내면서 문득 떠오르는 생각들과 깨달음들을 그냥 흘려보내기엔 너무 아까웠다.
앞으로는 가능한 한 자주 회고를 작성해보려 한다.
최근에 스스로 큰 변화가 일어났음을 느껴 mbti 검사를 다시 해보았다.

ISFJ에서 ENTJ로 바뀌었다. 최근 여러 상황을 겪으면서 "나에게 지금 정말 필요한 방향은 무엇인가?"를 끊임없이 고민했던 시간들이 반영된 결과인 것 같다.
나름 의미를 부여해보았는데, 다음과 같은 느낌 아닐까?
사람마다 제각기 다른 성향을 mbti라는 16가지 유형으로 완벽히 규정할 수는 없겠지만, 그래도 내가 체감하던 변화를 눈에 보이는 지표로 확인하니 기분이 좋았다.
무엇보다 기존에 내가 가진 장점들을 잃지 않으면서도, 내 안에 있던 또 다른 가능성이 깨어난 느낌이라 현재의 변화가 만족스럽다.

루퍼스 부트캠프 과제를 수행하며 외부 라이브러리 없이 URL 상태관리를 구현하고자 했고, 이 과정에서 useSyncExternalStore 훅을 깊이 다루게 되었다. zustand 같은 여러 상태 관리 라이브러리의 내부 원리로 쓰이는 훅이라 그 작동 원리가 궁금해 깊게 파고들었다.
그러던 중, 오프라인 네트워킹 발표자를 모집하는 글이 슬랙에 올라왔다. 솔직히 스스로 해당 개념을 완벽히 이해했다고 느끼진 못했기에 예전의 나였다면 "아직 준비가 안 됐다"거나 "오프라인 발표는 부담스럽다"는 이유로 망설였을 것이다. 하지만 완벽한 준비란 존재하지 않는다. 그래서 마지막 남은 한 자리가 마감되기 직전, 깊게 생각하지 않고 일단 바로 신청했다.
발표 결과는 기대 이상으로 반응이 좋았다.


나는 기술 포스팅이나 발표 자료를 만들 때, "배경지식이 없는 사람도 이해할 수 있으려면 어떻게 구성해야 할까?"를 항상 고민하곤 한다.
이번에도 useSyncExternalStore가 등장한 배경부터 시작해, 이 훅이 문제를 해결하는 방식, 그리고 실무 적용 시 주의점까지 하나의 완결된 스토리라인으로 구성했다. 이러한 청중 중심의 고민이 유효했고, 큰 호응을 얻을 수 있었다.
발표 방법에 대한 인사이트도 스스로 얻을 수 있었다.
사실 예전부터 "발표를 잘 하기 위해서는 어떻게 해야 할까?"에 대한 고민을 많이 했었다.
그래서 발표 대본도 작성해서 전부 외워보기도 하고, 이걸 보면서 발표하기도 했었다.
하지만 대본 암기에 충실하다보면 그것을 까먹었을 때 발표의 흐름이 끊기게 되고, 보면서 하게 되면 자연스러움이 사라진다.
이번에는 발표 10분 전 전체 슬라이드의 키워드와 이야기의 흐름만 입으로 읊으며 정리했다. 그 결과 대본 의존 없이 청중과 호흡하며 훨씬 자연스럽게 발표할 수 있었다. 나에게 맞는 발표 방식을 찾은 것 같아서 좋았다.
물론 아쉬움도 있었다. 중간에 개념을 뭔가 거창하고 최적화된 전문 용어로 설명하려다 잠시 횡설수설했던 순간이 있었다. 복잡한 개념일수록 살을 붙이기보다 쉬운 말로 간결하게 표현하는 것이 훨씬 강력하다는 것을 배웠다.
중요한 건, 내가 완벽하지 않다는 이유로 도전하지 않았다면 이 모든 깨달음도 얻지 못했을 것이라는 사실이다.
이전의 나는 완벽주의적인 성향 때문에 프로젝트의 디자인, 기술적 깊이, 성과 등 모든 것을 다 잘해내고 싶어 했다. 하지만 욕심이 과하다 보니 정작 중요한 핵심을 놓치고 지엽적인 부분에 에너지를 쏟곤 했다.
문제는 내 태도가 아니라 나의 성향을 올바른 방향으로 제어해 줄 '시스템'의 부재였다고 생각한다. 여기서의 핵심은 '우선순위'인 것 같다.
특히 나에게 주어진 시간이 적다면 한 번에 너무 많은 것을 시도하려 하지 않는 것이 중요하다. 이것저것 욕심내며 과도하게 영역을 넘나들다 보면 오히려 컴퓨터처럼 컨텍스트 스위칭 비용이 크게 발생하고, 결국 어느 것 하나 제대로 완수하지 못하게 되기 때문이다.
따라서 태스크 리스트로 업무를 가시화하고, 철저히 우선순위에 따라 하나의 핵심 작업에 몰입하는 시스템을 구축했다.

결과적으로 빠른 시간 안에 요구사항을 구현해낼 수 있었고, 개념에 대해 파고들 시간을 마련해낼 수 있었다.
루퍼스의 과제들은 실무 경험이 없는 나에게 생소한 개념이 많아 데드라인에 쫓기기 일쑤였다. 이를 극복하기 위해 최근 과제에서는 AI를 학습에 적극적으로 도입해 보았다.
과제 가이드와 체크리스트를 AI에게 제공한 뒤, 실행 가능한 단위로 태스크를 잘게 쪼개도록 요청했다.


이 때 무작정 구현을 부탁하는 대신, 과제에서 왜 이를 요구하는지, 이를 통해 학습하고자 하는 것이 무엇인지 요구사항의 의도를 함께 물어본 뒤 노션에 기록해 두었다. 그리고 무엇보다 요구사항을 만족하는 최소한의 동작(First Step)을 완성하는 것을 최우선으로 삼았다.

요구사항을 먼저 만족시키는 것이 우선이고, 깊게 파고드는 탐구는 그 다음이라는 것을 깨달았다.
파고들 때 역시 내가 알아내고자 하는 목적을 명확한 문장으로 정의하고 시작하니 효율적으로 학습할 수 있었다.
사실 이전부터 했었던 생각인데, 클래식 피아노곡을 연주하는 것과 개발이 많은 부분이 닮아 있는 것 같다.
클래식 곡을 제대로 연주하려면 작곡가의 생애와 곡이 탄생한 역사적 배경을 알아야 한다. 예를 들어 리스트의 '단테 소나타'는 작곡가가 마리 다구 백작부인과 이탈리아를 여행하며 단테의 <신곡>을 읽고 받은 감흥을 담은 곡이다. 중반부의 아름다운 D장조 테마는 지옥을 떠도는 연인의 이야기를, 후반부의 웅장한 선율은 절망을 극복한 구원을 상징한다.
이 배경을 이해해야만 곡의 서사를 비로소 깊이 있게 표현할 수 있듯, 개발 역시 어떤 기술이나 프레임워크가 '왜 등장했는가(Why)'에 대한 맥락을 이해해야 비로소 그 기술을 올바르게 다룰 수 있다.

음악을 연주할 때 연주자가 아무런 의도 없이 손가락이 가는 대로 연주하면 듣는 이는 피로감을 느낀다. 반면 "여기서 테마가 전환된다", "이곳에서 감정이 고조된다"는 연주자의 명확한 설계와 의도가 있을 때 음악은 강력한 설득력을 얻는다.
개발도 마찬가지다. 개발자가 작성하는 코드의 모든 줄에는 명확한 이유와 의도가 담겨 있어야 한다. 변수 하나, 함수 분리 하나에도 "왜 이렇게 작성했는지" 설명할 수 있는 구조적 설계가 갖춰졌을 때, 동료 개발자나 미래의 나에게 읽기 쉽고 설득력 있는 좋은 코드가 완성된다. 의도가 담기지 않은 연주가 소음에 지나지 않듯, 의도가 담기지 않은 코드는 부채일 뿐이다.
지난 한 달은 나라는 사람의 성향에 대한 깊은 이해와, 내면에서 일어난 변화를 바탕으로 이를 바른 방향으로 끌고 갈 시스템을 구축해낸 뜻깊은 시간이었다.
다른 분들이 과제에서 좋은 결과를 보여주시는 모습을 보면 부러운 마음이 들 때도 있다. 하지만 내가 루퍼스에 도전하지 않았다면 프론트엔드라는 거대한 생태계에서 시야가 좁아진 채 더 크게 방황했을 것이다.
예전에는 "무엇을 공부해야 할지 몰라서" 답답하고 막막했다면, 지금은 "내가 무엇을 공부해야 하는지 알기 때문에" 고민하고 있다. 과거의 막연한 불안감에서 벗어나, 성장할 영역이 명확히 보여 행복한 고민을 하고 있는 요즘인 것 같다.
완벽한 준비는 존재하지 않는다 라는 말이 인상깊네요.
뭐든 일을 진행할 때, "어디까지 준비하고 생각해야하지?" 라는 말이 꼬리표처럼 따라다녔던 경험이 생각났던 것 같아요. 잘 읽었습니다 : )
과제도 퀄리티 있게 진행하시고 멘토링도 열심히 들으시는데, 오프라인 발표까지 하시는 거 보고 많이 자극받았습니다…!
특히 클래식에 비유한 학습 방식이 정말 와닿았어요 기술을 단순히 사용하는 게 아니라 ‘왜 등장했고, 어떤 문제를 해결하려는지’를 이해하는 게 중요하다는 부분이 좋았습니다‘
직무는 다르지만 학습을 대하는 방향에 대해 또 다른 관점과 생각을 배워갑니다!! 다음 회고까지
화이팅입니다!!!!