Webpack 설정을 이해하는 일의 가치

Webpack이 뭔지 몰라도 읽는데 전혀 지장이 없습니다.

요즘 웹 프론트엔드 어플리케이션은 직/간접적으로 Webpack에 의존하는 경우가 많다. 허나 그 사용자 중 – 특히 복잡하고 역사가 긴 프로젝트일수록 – 프로젝트의 Webpack 설정을 잘 이해하고 있으며 문제가 일어나면 선뜻 고치려 나설 사람은 얼마나 될까? 높은 비율은 아닐 것 같다.

매일 업무에서 사용함에도 적지 않은 수의 웹 프론트엔드 개발자가 Webpack, 또 그와 비슷한 역할의 빌드 도구를 잘 알지 못하는 이유, 또는 굳이 잘 알려고 하지 않는 이유는 뭘까? 사실 꽤 명확하다고 생각한다.

  1. 요즘 프론트엔드 빌드/개발 환경은 결코 간단하지 않다. 처음 배워야 할 개념이 많고, 디버깅 사이클도 일반적인 어플리케이션에 비해 느리며 그 방식 또한 생소하다.
  2. 괜히 건드렸다가 뭔가 깨지기라도 하면 골치 아파진다. 개선점이 생각나도 일단은 돌아가긴 하는 기존 설정을 건드리기가 부담스럽다.
  3. 팀에 ‘이런 내용’을 잘 아는 사람이 보통 한 명 정도는 있기 마련이다. 꼭 필요한 작업은 그 사람에게 부탁하면 알아서 처리해준다.

모두 합당한 이유다. 한 마디로 ‘간단하지 않고, 꼭 내가 안 해도 되는 일’이기 때문이다. 그럼에도 나는 Webpack 설정을 이해하려하는 시도할 가치가 있다고 생각한다. 그 이유는… 필요하지만 간단하지 않고, 꼭 내가 안 해도 되는 일이기 때문이다!

당황한 사람의 사진

내가 안 해도 되는 이유는 뭘까? 그 일을 할 줄 아는 사람을 찾을 수 있기 때문이다. 그런데 조금 다르게 바라보면, 이는 곧 해당 기술이 쓸모 있음의 방증이다. 만약 쓸모 없이 어렵기만 한 문제라면? 당연하게도, 익힌 사람이 거의 없을테고 주변에서 찾기 어려울 것이다. (물론 익히기 아주 어려운 전문지식이라면 또 다른 이야기가 된다)

하지만 업무 능력 습득 자체보다 더 큰 가치가 그 어려움을 넘어서는 과정 자체에 존재한다.

평소의 익숙한 업무와 전혀 다른, 복잡한 문제를 처음 맞닥뜨리면… 정말 막막하다. 이미 손에 익은 도구를 쓸 수 없는 경우가 많고, 수없는 삽질과 노력이 요구되며, 이건 내가 풀 수 없는 문제라 선언하고 포기하고 싶은 순간이 수도 없이 찾아온다. 게다가 그냥 이미 할 줄 아는 사람에게 부탁하는 옵션은 언제나 한 뼘 옆에 놓여 있다.

하지만 사실 그 중 대부분은 정복 가능하다. 단지 너무 일찍 포기하지 않기 위해 충분한 끈기가 필요할 뿐이다. 열심히 부딛혀가며 끝내 한 계단을 넘어보면, 이해할 수 없을 것 같던 개념과 원리가 사실 나와 크게 다를 것 없는 보통 사람(들)의 손에서 나왔단 사실, 그렇기 때문에 나 역시 충분한 시간만 들이면 이해하고 풀어내 수 있다는 사실을 느끼게 된다.

물론 세상의 많은 문제가 그런 식일 것이라는 걸 꼭 앞서 말한 경험의 과정을 통해서만 이해할 수 있는 것은 아니다. 하지만 단순히 머리로 얻은 지식과 실제로 본인이 경험을 통해 체득한 지식이 주는 감각은 전혀 다르다. 특히 경험이 반복해 쌓이며 지식이 확신으로 변해갈 수록 더더욱 그러하다.

하지만 그건 꼭 Webpack 설정에만 해당하는 얘기가 아니잖아?

맞다. 이 글의 주제는 끈기 있는 학습 과정 자체이지 Webpack 설정은 아니다.

그럼 왜 제목을 저렇게 지은 건데?

실제로 Webpack 관련 작업을 하다 글 아이디어가 떠올랐고, 이게 더 구체적이고 더 재밌는 제목이라 생각했다 😇

웹 개발자인 내가 백엔드, 모바일, DevOps를 알아야 할까? 혹은 굳이 우리 제품의 비즈니스 영역까지 함께 고민해야 할까? 급격하게 성장하는 팀에서 발생하는 여러 문제를 해결하고 방향성을 제시하는 역할을 꼭 내가 해야 할까?

살다보면 마주치는 다양한 문제에는 거의 항상 나 대신 그 일을 해 줄 ‘누군가’가 존재한다. 언제라도 껄끄러운 정면 돌파 대신 그 ‘누군가’에게 의존하길 선택할 수 있다. 하지만 반대로 그런 문제를 기회 삼아, 새로운 지식을 얻어 당면한 문제도 해결하고 다음 번엔 다른 이에게 내가 그 ‘누군가’가 되기를 선택할 수 있다.

두 번째 선택지가 쉬운 길은 아닐지 몰라도 그 과정에서 분명 얻어가는 게 있을 것이다. 따지고 보면 지금 문제를 해결해줄 것 같은 그 ‘누군가’들 역시 사실 비슷한 상황에서 두 번째 선택을 해온 사람들이다. 이 때 두 선택지를 구분하는 차이는 문제 해결의 주체가 남이냐 자신이냐이지, 배움의 과정에서 도움을 배제해야 한다는 뜻이 아니다.

더 좋은 소식이 있다. 이런 낯설고 어려운 문제를 향한 도전, 영역의 확장은 자기 강화적이다. 즉, 처음이 가장 어렵고, 반복할수록 쉬워진다. 일단 경험이 쌓일수록 사고가 유연해지고 쓸 수 있는 도구가 많아진다. 뿐만 아니라:

  • 아무리 커 보이는 장애물도 내가 넘을 수 있단 점
  • 넘었을 때 내가 성장해 있으리란 점
  • 설령 넘지 못하더라도 과정에서 무언가 배울 것이란 점

이런 점들이 점차 자연스러운 명제로 체화되기 때문이다.

어떤 분야, 어떤 작업이든 상관없다. 누군가 꼭 해야하지만 지금의 나에겐 간단하지 않게 느껴지는, 그리고 만약 내가 굳이 안 해도 누군가가 해줄 일이 보일 때 한 번 덤벼보는 건 그럴만한 가치가 있다. 적어도 나에게는, 그 간단한 태도의 차이가 인생을 훨씬 더 풍부하고 재미있게 만들어 줬다.