Reinvent the Wheel

Matthias Endler

바퀴를 다시 발명하라

원문은 Matthias Endler님이 에 게재했습니다. 이 블로그 구독하기

가장 해로운 조언 중 하나는 ‘바퀴를 재발명하지 마라’는 말이다.

대체로 선의에서 나온 조언이지만, 보통 다음 두 부류의 사람들이 한다:

  • 직접 바퀴를 만들어 보려다 그게 얼마나 어려운지 알게 된 사람들
  • 한 번도 바퀴를 만들어 본 적 없으면서 그 조언을 맹목적으로 따르는 사람들

어느 쪽이든 두 태도 모두 호기심과 탐구가 위축되는 분위기를 만든다. 다행히 그 조언을 따르지 않은 사람들이 있었고, 덕분에 우리는 현대 생활의 많은 편의를 누리고 있다.

표면적으로만 봐도 이 조언은 잘못됐다. 최초의 바퀴가 발명된 기원전 4500~3300년보다 오늘날 우리는 훨씬 더 뛰어난 바퀴를 갖고 있다. 또한 바퀴가 여러 문명과 문화를 거치며 끊임없이 재발명되었다는 사실이 결정적으로 중요했다.

참고: 이 글에서 ‘바퀴’라고 할 때는 당신이 개인적으로 관심 있는 도구, 프로토콜, 서비스, 기술 혹은 다른 발명품으로 바꿔 읽어 달라.

바퀴를 만드는 것은 곧 배움이다

“내가 만들 수 없는 것은 이해하지 못한 것이다”
리처드 파인만, 물리학자이자 노벨상 수상자

무언가를 진정으로 근본적인 수준에서 이해하려면, 먼저 장난감 같은 버전을 직접 구현해 볼 수 있어야 한다. 잘 만들었는지는 중요하지 않다. 나중에 버리면 그만이다.

예를 들어 컴퓨터 과학에는 평범한 사람은 감히 엄두도 못 낼 것이라 여겨지는 개념이 많다. 프로토콜, 암호학, 웹 서버 같은 것들이 떠오른다.

더 많은 사람이 이런 것들이 어떻게 작동하는지 알아야 한다. 그래서 나는 사람들이 이를 직접 다시 만들어 보는 것을 두려워하지 않았으면 한다.

모든 것은 토끼굴이다

우리는 너무나 자주 근본적인 것들을 당연하게 여긴다. 예를 들어 프로그래밍에서 문자열이나 경로는 굉장히 복잡한 개념이다. 어떻게 작동하는지 궁금하다면 문자열이나 경로 라이브러리를 직접 구현해 보는 것은 훌륭한 연습이 된다.

아무도 당신의 결과물을 사용하지 않더라도, 분명 많은 것을 배우게 될 것이다. 예를 들면 다음과 같다:

  • 일상적인 것들 속에도 무한한 복잡성이 숨어 있다.
  • 단 한 사람에게라도 유용한 무언가를 만든다는 것은 겸손해지는 경험이다.
  • 당신과 같은 인간이 이런 추상화를 만들었다. 그것들은 완벽하지 않으며, 당신만의 설계에서는 다른 절충안을 선택할 수 있다.

마지막 지점과 관련해, 모든 것은 절충의 문제이며 모든 토이 프로젝트에는 수십 개, 때로는 수백 개의 발등 찍기 좋은 함정이 도사리고 있다.

그 과정에서 정확성, 단순성, 기능성, 확장성, 성능, 자원 사용량, 이식성 등에 대해 결정을 내려야 한다.

당신의 해법은 이 중 일부에서는 훌륭할 수 있지만, 모든 항목에서, 또 모든 사용자에게 훌륭할 수는 없다. 이는 기존 해법 역시 결함을 가지고 있으며, 아무리 잘 정립된 해법이라 해도 당신의 특수한 문제를 해결하도록 설계되지 않았을 수 있음을 의미한다.

토끼굴을 파고드는 것은 그 자체로 재미있지만, 또 다른 이점이 있다. 엔지니어로서 성장할 수 있는 몇 안 되는 방법 중 하나라는 점이다… 다만 탐구하던 것을 작동하는 버전으로 완성하기 전에 포기하지 않았을 때만 그렇다. 프로젝트를 너무 자주 옮겨 다니면 아무것도 배우지 못한다.

바퀴를 재발명해야 하는 이유

바퀴를 재발명해야 할 훌륭한 이유는 많다:

  • 더 나은 바퀴를 만들기 위해 (’더 나음’의 정의는 각자 다를 수 있다)
  • 바퀴가 어떻게 만들어지는지 배우기 위해
  • 다른 사람들에게 바퀴에 대해 가르치기 위해
  • 바퀴를 발명한 사람들에 대해 배우기 위해
  • 바퀴를 교체하거나 고장 났을 때 고칠 수 있게 되기 위해
  • 바퀴를 만드는 과정에서 필요한 도구들을 배우기 위해
  • 더 큰 시스템(예를 들어 차량)을 만든다는 것이 무엇을 의미하는지 조금이나마 배우기 위해
  • 아주 특수한 바퀴가 필요한 사람을 돕기 위해. 어쩌면 휠체어를 위한 바퀴일지도 모른다.

누가 알겠는가? 당신이 만든 바퀴는 자동차에는 최적이 아닐지 몰라도, 어쩌면 스케이트보드나 자전거에는 제격일지 모른다. 혹은 더 멋진 바퀴를 만드는 데는 실패했지만, 그 과정에서 바퀴를 더 잘 테스트하는 방법을 찾아낼 수도 있다. 애초에 당신이 만든 바퀴가 운송 수단을 위한 것이 아닐 수도 있다! 위키백과에 따르면 도예용 물레, 즉 “진흙을 둥근 도자기로 빚는(던지기라고 하는) 데 사용되는 기계”일 수도 있다. 위키백과에 따르면 말이다. 결국 당신은 핸들이나 플라이휠 같은 전혀 다른 종류의 바퀴를 만들게 될지도 모른다. 우리는 틀 밖에서 생각하는 사람이 더 필요하다.

재사용 vs 재발명

물론 다른 사람의 성과를 무시하지는 말자. 그들의 작업을 공부하고 적절하다고 생각되면 재사용하라. 남의 작업을 불신하거나 잘 모른다는 이유로 바퀴를 재발명하지는 말라. 반면에, 자신의 지식을 시험해 본 적이 전혀 없다면 어떻게 그 분야를 발전시킬 만큼 충분히 배울 수 있겠는가?

나는 작은 실험들을 통해 아주 빠르게 나아갈 수 있다는 것을 알았다. 특히 소프트웨어 엔지니어링에서는 작은 프로토타입을 만드는 것이 저렴하고 빠르다. 당신 자신의 문제를 해결하라, 작게 시작하라, 단순하게 유지하라, 반복하라.

그러니 위의 모든 내용을 고려했을 때, 나의 조언은 이렇다:

통찰을 위해서는 재발명하고, 임팩트를 위해서는 재사용하라.

이 글은 muse-spark-1.2-contributor 모델을 사용해 번역했습니다.

댓글