메인테이너로서의 성장, 두 개의 정원을 가꾸다

18

발행일: 2025년 05월 24일

Jotai 생태계가 무럭무럭 자라나면서, 다이시 카토의 어깨에는 새로운 종류의 무게가 내려앉았다. 그것은 더 이상 버그 수정이나 기능 구현의 압박감이 아니었다. 이제 그는 각기 다른 토양과 기후를 가진 두 개의 성공적인 정원, Zustand와 Jotai를 동시에 가꾸는 정원사가 된 것이다.

처음에는 그저 기쁨이었다. 두 라이브러리가 각자의 영역에서 사랑받는 모습을 보는 것은 뿌듯한 일이었다. 하지만 시간이 흐르면서, 이 이중 역할은 예상보다 훨씬 더 복잡하고 섬세한 균형 감각을 요구한다는 것을 깨닫기 시작했다.

“Zustand 이슈… Jotai PR… 또 뭐였더라?”

그의 머릿속은 마치 수십 개의 브라우저 탭을 동시에 열어놓은 것처럼 복잡했다. Zustand 커뮤니티는 이미 성숙기에 접어들어 안정적인 유지보수와 점진적인 개선을 원했다. 그곳에서의 소통은 주로 기존 사용자의 불편함을 해소하거나, 호환성 문제를 해결하는 데 집중되었다. 마치 잘 자란 분재를 세심하게 관리하듯, 안정성과 예측 가능성이 중요했다.

반면, Jotai 커뮤니티는 뜨거운 용광로와 같았다. 매일같이 새로운 아이디어와 실험적인 기능 제안이 쏟아졌고, 아토믹 모델의 가능성을 탐험하려는 열정적인 개발자들의 목소리로 가득했다. 그곳에서는 과감한 변화와 빠른 피드백이 요구되었다. 마치 이제 막 씨앗을 뿌리고 싹을 틔우는 텃밭처럼, 끊임없이 물을 주고 잡초를 뽑으며 성장을 독려해야 했다.

문제는 이 두 세계를 오가는 컨텍스트 스위칭(Context Switching)의 비용이었다. Zustand의 중앙 집중식 스토어와 셀렉터에 대해 고민하다가, 순식간에 Jotai의 분산된 아톰과 자동 의존성 추적의 미묘한 메커니즘으로 사고를 전환해야 했다. 마치 유창하게 구사하던 언어를 잠시 접어두고, 완전히 다른 문법 체계를 가진 새로운 언어로 대화를 시작해야 하는 것과 같은 정신적인 피로감이 상당했다.

“아, 이건 Jotai 이슈인데 Zustand 방식으로 답변할 뻔했네…”

실수가 잦아졌다. 때로는 두 라이브러리의 철학을 혼동하여 커뮤니티에 혼란을 주기도 했고, 어느 한쪽에 집중하다 보면 다른 한쪽의 중요한 이슈를 놓치기도 했다. 마치 두 개의 정원에 동시에 물을 주려다 한쪽은 넘치게 주고 다른 한쪽은 말라죽게 만드는 어설픈 정원사 같았다.

켄지는 그런 카토의 모습을 지켜보며 조심스럽게 조언했다.

“카토 상, 자네가 아무리 뛰어나도 분신술을 쓸 수는 없지 않나. 두 프로젝트는 성격이 너무 달라. 같은 방식으로 접근해서는 안 될 것 같네.”

켄지의 말은 정곡을 찔렀다. 카토는 그동안 무의식적으로 두 프로젝트를 비슷한 선상에 놓고 관리하려 했다. 하지만 그것은 불가능한 일이었다. 두 정원은 각기 다른 종류의 관심과 보살핌을 필요로 했다.

그는 깊은 고민 끝에 결단을 내렸다. 두 개의 정원을 성공적으로 가꾸기 위해서는, 각 정원에 맞는 차별화된 관리 전략이 필요하다는 것을 인정해야 했다.

먼저, 각 프로젝트의 로드맵을 명확히 구분하고 커뮤니티와 투명하게 공유하기로 했다. Zustand는 안정성과 하위 호환성을 최우선으로, 꼭 필요한 개선 사항만 신중하게 반영할 것임을 공표했다. 반면, Jotai는 좀 더 실험적이고 도전적인 기능들을 빠르게 탐색하고 도입하며 아토믹 모델의 가능성을 확장해나갈 것임을 밝혔다.

다음으로, 커뮤니티와의 소통 방식에도 변화를 주었다. Zustand 커뮤니티에는 이미 숙련된 기여자 그룹이 형성되어 있었으므로, 그들에게 더 많은 권한을 위임하고 이슈 관리나 코드 리뷰 부담을 나누기로 했다. 반면, 아직 성장 단계인 Jotai 커뮤니티에는 카토 자신이 좀 더 적극적으로 참여하여 방향을 제시하고 새로운 기여자들을 독려하는 역할을 강화하기로 했다.

마지막으로, 시간 관리의 중요성을 다시 한번 절감했다. 무작정 밀려드는 이슈에 끌려다니는 대신, 주간 단위로 각 프로젝트에 할애할 시간을 계획하고, 우선순위에 따라 작업을 처리하는 체계를 만들었다. 때로는 과감하게 ‘No’라고 말하는 용기도 필요했다. 모든 요구를 다 들어줄 수는 없다는 현실을 받아들여야 했다.

이러한 변화는 하루아침에 이루어지지 않았다. 시행착오도 있었고, 커뮤니티의 반발이나 오해에 부딪히기도 했다. 하지만 카토는 꾸준히 자신의 원칙을 설명하고 소통하며 새로운 균형점을 찾아 나갔다.

그 과정 속에서 그는 단순히 코드를 잘 짜는 개발자를 넘어, 여러 프로젝트를 조율하고 커뮤니티를 이끌며 비전을 제시하는 진정한 메인테이너로 성장하고 있었다. 두 개의 정원을 가꾸는 일은 분명 고되고 어려운 도전이었지만, 그만큼 그의 시야를 넓히고 리더십을 단련시키는 값진 경험이기도 했다.

이제 그는 더 이상 두 개의 정원 앞에서 허둥대지 않았다. 각 정원의 특성을 이해하고, 그에 맞는 도구와 방식으로 정성을 다하는 노련한 정원사의 모습으로 변모해가고 있었다. 그리고 이 두 개의 아름다운 정원을 가꾸면서 얻은 깊은 통찰은, 자연스럽게 상태 관리라는 문제 자체의 본질에 대한 성찰로 이어지고 있었다. 그의 성장은 계속되고 있었다.