회의론자들의 벽

10

발행일: 2025년 04월 29일

"…그래서, 이 '팩스JS'라는 것은, 상태가 변할 때마다 UI 전체를 새로 그리는 것처럼 생각하지만, 실제로는 '가상 DOM'이라는 것을 이용해 변경된 부분만 효율적으로 업데이트한다는 겁니다."

페이스북의 작은 회의실. 조던 워크는 자신의 노트북 화면에 떠 있는 LikeButton 컴포넌트 코드를 가리키며 열정적으로 설명하고 있었다. 그의 앞에는 웹 개발팀의 핵심 멤버 몇몇이 앉아 있었다. 팀 리더 마크를 포함해, 잔뼈 굵은 시니어 개발자 데이브, 성능 최적화 전문가 사라, 그리고 현실적인 문제 해결사 첸까지.

조던은 지난 몇 주간 혼자 갈고 닦아온 FaxJS의 핵심 개념과 데모를 드디어 동료들에게 선보이는 자리를 마련한 것이었다. 그의 목소리에는 흥분과 약간의 긴장이 뒤섞여 있었다. 그는 이들이 자신의 아이디어에 담긴 혁신성을 알아봐 주리라 기대했다. 스파게티 코드의 지옥에서 함께 고통받아온 동료들이 아닌가!

하지만 그의 기대와 달리, 회의실의 공기는 미지근하다 못해 차갑게 식어 있었다. 동료들의 표정은 복잡 미묘했다. 호기심보다는 의구심이, 감탄보다는 냉담함이 더 짙게 배어 나왔다.

설명이 끝나고 잠시 정적이 흘렀다. 가장 먼저 입을 연 것은 냉소적인 표정의 시니어 개발자, 데이브였다.

"흠… 조던. 또 새로운 자바스크립트 프레임워크인가?"

그의 목소리에는 노골적인 피로감이 묻어났다. 마치 '지긋지긋하다'는 듯한 뉘앙스.

"네? 아, 뭐… 라이브러리라고 할 수 있겠습니ㄷ…"

"됐고. 그래서 이게 우리가 지금 쓰는 제이쿼리나, 아니면 백본(Backbone.js) 같은 다른 것들보다 뭐가 그렇게 대단하다는 거지? 매년 수십 개씩 쏟아져 나오는 게 이런 것들이잖아. 반짝 유행하다 사라지는."

뼈아픈 지적이었다. 당시 자바스크립트 생태계는 춘추전국시대였다. 새로운 프레임워크와 라이브러리가 우후죽순 생겨났다가 소리 소문 없이 사라지곤 했다. 개발자들은 이런 '반짝 기술'에 데인 경험이 적지 않았다.

조던은 애써 침착하게 답했다. "단순히 또 다른 프레임워크가 아닙니다, 데이브. 이건 UI 개발의 근본적인 문제, 즉 복잡한 상태 관리와 예측 불가능한 DOM 조작의 문제를 해결하려는 접근 방식입니다. 'UI는 상태의 함수'라는…"

"그 '가상 DOM'이라는 거 말이야." 이번에는 성능 전문가 사라가 날카롭게 파고들었다. "이론은 그럴싸해. 근데 정말 성능이 괜찮다고 장담할 수 있나? 상태가 바뀔 때마다 매번 그 가상 트리 전체를 새로 만들고 비교한다고? 메모리 사용량은? 비교 알고리즘 자체의 오버헤드는 없는 건가? 간단한 버튼이야 문제없겠지. 근데 페이스북 뉴스피드처럼 복잡하고 거대한 UI에서도 이게 통할 거라고?"

그녀의 질문은 정곡을 찔렀다. 가상 DOM은 FaxJS의 핵심이자, 동시에 가장 큰 기술적 허들이었다. 조던은 자신이 만든 카운터 데모와 LikeButton을 보여주며 메모리 사용량과 업데이트 속도를 설명했지만, 사라는 여전히 미심쩍다는 표정을 지우지 않았다. '실험실 환경'과 '야생'은 다르다는 것을 그녀는 너무나 잘 알고 있었다.

팀 리더 마크는 팔짱을 낀 채 신중하게 듣고 있었다. 그는 조던의 아이디어가 흥미롭다는 것은 인정했지만, 현실적인 문제들을 먼저 떠올렸다.

"조던, 자네 아이디어는 혁신적일 수 있네. 하지만 이걸 우리 팀에 도입한다고 생각해 봐. 개발자들이 완전히 새로운 개념과 방식을 배워야 해. 저… HTML 안에 이상한 자바스크립트 문법 같은 거(JSX를 염두에 둔 말)도 보이던데, 저건 또 뭔가? 러닝 커브가 만만치 않을 것 같군. 그리고 가장 중요한 건, 기존 코드와의 호환성이야. 수백만 줄짜리 우리 코드를 이걸로 다 바꿀 수는 없지 않나?"

"맞아요." 현실주의자 첸이 거들었다. "부분적으로 도입한다고 해도 문제입니다. 기존 제이쿼리 코드와 이 FaxJS라는 게 잘 섞일 수 있을까요? 오히려 관리가 더 복잡해지는 건 아닐지 걱정됩니다."

회의론자들의 벽은 생각보다 훨씬 높고 단단했다. 그들은 조던이 제시하는 '새로운 가능성'보다는, 그로 인해 발생할 '새로운 문제'와 '익숙하지 않음'에 더 주목했다. 특히 데이브는 마지막으로 결정타를 날렸다.

"결국 자네가 만든 건 그냥 '뷰(View)' 레이어 라이브러리 아닌가? MVC에서 V만 떼어낸 반쪽짜리 같은데. 상태 관리는 그럼 어떻게 할 건가? 라우팅은? 서버 통신은? 이것만 가지고 실제 애플리케이션을 어떻게 만드나?"

"……"

조던은 할 말을 잃었다. 그들의 지적은 모두 일리가 있었다. FaxJS는 아직 초기 단계의 프로토타입이었고, 고려해야 할 문제들이 산더미처럼 남아 있었다. 그의 열정적인 설명과 데모는, 견고한 회의론과 현실적인 우려 앞에서 힘을 잃어가는 듯했다.

회의는 별다른 결론 없이 끝났다. "흥미롭네. 좀 더 발전시켜 보게." 라는 마크의 영혼 없는 격려만이 남았을 뿐. 조던은 싸늘하게 식어버린 회의실에 홀로 남아 굳은 표정으로 노트북을 덮었다.

가슴 한구석이 답답하게 막혀왔다. 하지만 이상하게도, 포기하고 싶은 마음은 들지 않았다. 오히려 오기가 생겼다.

'두고 봐… 말로만 떠들어서는 안 돼. 증명해야 한다.'

그는 깨달았다. 아름다운 이론이나 작은 데모만으로는 부족했다. 이 회의론자들의 높은 벽을 넘어서려면, FaxJS의 가치를 '실제 결과물'로 증명해 보여야만 했다. 페이스북의 실제 문제 중 하나를, 이 새로운 방식으로 더 빠르고, 더 안정적이고, 더 효율적으로 해결해내는 것.

그의 눈빛이 다시 한번 날카롭게 빛났다. 이제 그의 다음 목표는 명확해졌다. FaxJS를 시험해 볼 만한 '작은 실험장'을 찾는 것. 그리고 그곳에서, 압도적인 결과로 모든 의심을 잠재우는 것!