바퀴를 새로 발명하라 | Matthias Endler

ko생성일: 2025. 5. 27.

‘바퀴를 새로 발명하지 마라’는 조언이 왜 해로울 수 있는지, 그리고 직접 시도하고 배움으로써 창의성과 기술을 어떻게 성장시킬 수 있는지에 대한 글입니다.

바퀴를 새로 발명하라

2025년 5월 24일 발표 | Matthias Endler

‘바퀴를 새로 발명하지 마라’라는 조언만큼 해로운 것은 드뭅니다.

이 조언은 보통 좋은 의도에서 나오지만, 주로 두 부류의 사람들에게서 듣게 됩니다:

  • 스스로 바퀴를 발명하려다 그 어려움을 아는 사람
  • 한 번도 바퀴를 발명해본 적 없으면서 맹목적으로 따르는 사람

어느 쪽이든, 이 조언은 호기심과 탐구심을 억누르는 분위기를 만듭니다. 다행히도, 몇몇 용감한 이들은 이 조언을 따르지 않았기에 우리는 현대의 많은 편리함을 누릴 수 있습니다.

표면적으로만 보아도 이 조언은 맞지 않습니다. 인류는 오늘날 훨씬 더 나은 바퀴를 갖고 있습니다 — 처음 바퀴가 고안된 기원전 4500~3300년보다도요. 또한, 문명과 문화가 발전하면서 바퀴를 계속 새로 발명해온 것은 대단히 중요한 일이었습니다.

참고: 이 글에서 ‘바퀴’라는 말은, 여러분이 흥미를 느끼는 도구, 프로토콜, 서비스, 기술, 혹은 기타 발명품으로 자유롭게 바꿔 생각해도 좋습니다.

바퀴를 발명하는 것은 곧 배움이다

“내가 만들 수 없는 것은 내가 이해하지 못한 것이다.”

– 리처드 파인만(Richard Feynman), 물리학자이자 노벨상 수상자

무언가를 진정으로 근본적으로 이해하려면, 일단 장난감 버전이라도 직접 구현해봐야 합니다. 결과물이 형편없어도 상관없습니다. 어차피 나중에 폐기해도 됩니다.

예를 들어, 컴퓨터 과학에는 평범한 사람들은 도저히 다룰 수 없다고 여겨지는 개념들이 많습니다. 프로토콜, 암호화, 웹 서버 같은 것들이죠.

이런 것이 어떻게 동작하는지 더 많은 사람들이 알면 좋겠습니다. 그러니 이것들을 스스로 재구현하는 것을 두려워하지 않아야 한다고 생각합니다.

모든 것은 토끼굴이다

근본적인 것들은 너무도 자주 당연시됩니다. 예를 들어, 문자열이나 경로(Path)는 프로그래밍에서 매우 복잡한 개념입니다. 이 두 가지를 직접 라이브러리로 만들어 보는 것도 좋은 연습이 됩니다.

아무도 여러분의 결과물을 쓰지 않는다 해도, 많은 것을 배우게 될 것입니다. 예를 들어:

  • 일상적인 것들에는 무한한 복잡함이 숨어 있다.
  • 다른 단 한 사람에게라도 유용한 것을 만드는 경험은 겸손함을 준다.
  • 인간이 만든 추상화는 완벽하지 않으며, 여러분은 다른 트레이드오프를 선택할 수 있다.

무엇이든 트레이드오프이며, 간단한 문제에서도 수많은 위험성(footgun)이 도사리고 있다는 점을 알게 됩니다.

과정 중엔, 정확성, 단순함, 기능성, 확장성, 성능, 자원 사용, 이식성 등 다양한 요소 중 선택과 결정을 내려야 합니다.

여러분의 해결책이 이 중 일부에선 아주 뛰어날 수도 있지만, 모두를 만족하진 못할 것이고 모든 사용자를 위한 것도 아닐 수 있습니다. 이는 기존 해결책도 결코 완벽할 수 없으며, 여러분의 특정 문제를 염두에 둔 솔루션이 아닐 수 있음을 의미합니다.

토끼굴에 빠지는 것은 그 자체로 재미있지만, 또 다른 커다란 이점이 있습니다: 이는 기술자로써 한 단계 성장할 수 있는 몇 안 되는 방법 중 하나라는 것… 다만, 끝까지 포기하지 않고 작동하는 결과물을 내놓아야만 그렇습니다. 프로젝트를 너무 자주 바꾼다면 아무것도 배우지 못할 것입니다.

바퀴를 새로 발명하는 이유

바퀴를 새로 발명해야 할 정말 좋은 이유들이 있습니다:

  • 더 나은 바퀴를 만들기 위해 (여러분이 생각하는 어떤 기준으로^{better})
  • 바퀴가 어떻게 만들어지는지 배우기 위해
  • 다른 이들에게 바퀴에 대해 가르치기 위해
  • 바퀴의 발명자에 대해 배우기 위해
  • 바퀴가 고장났을 때 고치거나 교체할 수 있기 위해
  • 바퀴 만드는 법의 부수적인 도구를 익히기 위해
  • 더 큰 시스템(예: 자동차)을 만드는 일이 어떤 것인지 경험하기 위해
  • 누군가에게 꼭 필요한 특수한 바퀴를 만들어주기 위해 (휠체어 등)

누가 알겠습니까? 여러분이 만든 바퀴가 자동차에 잘 어울리지 않을 수 있습니다. 하지만… 스케이트보드나 자전거에는 최적일 수도 있죠? 아니면 새로운 바퀴를 개발하다 실패했지만, 바퀴를 더 잘 테스트하는 방법을 고안할 수도 있습니다. 심지어, 그 바퀴가 탈것에 쓰이지 않을 수도 있습니다! 도자기 바퀴(potter’s wheel)처럼, 진흙을 원형으로 빚는 기계 말이에요 (위키백과 참고). 혹은 전혀 새로운 종류의 바퀴 — 핸들(wheel), 플라이휠 등 — 를 만들게 될 수도 있습니다. 우리는 상자 밖에서 생각하는 사람이 더 많이 필요합니다.

재사용과 재발명의 균형

물론, 다른 사람의 작업을 무시하지 마세요. 그들의 결과물을 연구하고, 적절하다 싶을 때 적극적으로 재사용하세요. 다른 사람의 것을 믿지 않거나 무시해서 바퀴를 새로 발명하진 마세요.

반대로, 스스로 시도해본 적 없다면 자신의 분야를 한 단계 발전시킬 만큼 제대로 배우긴 어려울 것입니다.

제 경험으로, 작은 실험을 반복하면 매우 빠르게 성장할 수 있습니다. 특히 소프트웨어 엔지니어링에선 작은 프로토타입을 만드는 일이 저렴하고 빠르죠. 자신만의 문제 해결부터 시작해서 작게 유지하고 단순하게 반복하세요.

그래서, 지금까지 하고 싶었던 말을 한 문장으로 정리하면:

인사이트를 위해 재발명하라. 임팩트를 위해 재사용하라.

읽어주셔서 감사합니다! 프로그래밍 실력을 한 단계 업그레이드하고 싶으시다면, 제가 진심으로 추천하는 CodeCrafters를 한 번 살펴보세요. 무료로 체험해보고, 유료 플랜 40% 할인 혜택도 받으실 수 있습니다.

알림: 저는 구독이 발생할 경우 커미션을 받아, 여러분의 코딩 실력 향상과 저의 작업 지원이 동시에 이루어집니다.