바퀴를 다시 발명하라
가장 해로운 조언 중 하나는 ‘바퀴를 재발명하지 마라’는 말입니다.
대개 선의에서 나온 조언이지만, 보통 두 부류의 사람들이 합니다:
- 직접 바퀴를 만들어 보고 그것이 얼마나 어려운지 아는 사람
- 한 번도 만들어 본 적 없으면서 그 조언을 맹목적으로 따르는 사람
어느 쪽이든 두 태도 모두 호기심과 탐구가 위축되는 분위기를 만듭니다. 다행히 그 조언을 따르지 않은 사람들이 있었기에, 우리는 현대 생활의 많은 편리함을 누리고 있습니다.
표면적으로만 봐도 이 조언은 잘못되었습니다. 최초의 바퀴가 발명된 기원전 4500~3300년보다 오늘날 우리는 훨씬 더 나은 바퀴를 가지고 있습니다. 또한 다양한 문명과 문화권에서 바퀴가 끊임없이 재발명되었다는 점이 결정적으로 중요했습니다.
참고: 이 글에서 “바퀴”라고 할 때마다 여러분이 관심 있는 도구, 프로토콜, 서비스, 기술 혹은 그 밖의 발명품으로 바꿔 읽어 주세요.
바퀴 발명은 곧 배움이다
“내가 만들 수 없는 것은 이해하지 못한 것이다”
– Richard Feynman, 물리학자이자 노벨상 수상자
무언가를 근본적인 수준에서 진짜로 이해하려면, 먼저 장난감 수준의 구현을 직접 해볼 수 있어야 합니다. 잘 만들 필요는 없습니다. 나중에 버리면 됩니다.
예를 들어 컴퓨터 과학에서는 일반인은 감히 엄두도 못 낼 것이라 여겨지는 개념이 많습니다. 프로토콜, 암호학, 웹 서버 같은 것들이 떠오릅니다.
더 많은 사람이 이런 것들이 어떻게 작동하는지 알아야 합니다. 그래서 저는 사람들이 이를 직접 다시 만들어 보는 것을 두려워하지 않았으면 합니다.
모든 것은 토끼굴이다
우리는 너무 자주 근본적인 것들을 당연하게 여깁니다. 예를 들어 프로그래밍에서 문자열(string)이나 경로(path)는 엄청나게 복잡한 개념입니다. 어떻게 작동하는지 궁금하다면 문자열이나 경로 라이브러리를 직접 구현해 보는 것은 훌륭한 연습이 됩니다.
아무도 여러분의 결과물을 사용하지 않더라도, 분명 많은 것을 배우게 될 겁니다. 예를 들면 다음과 같습니다.
- 일상적인 것들 속에도 무한한 복잡성이 숨어 있다는 것.
- 단 한 사람에게라도 유용한 무언가를 만든다는 것이 얼마나 겸허해지는 경험인지.
- 이런 추상화도 결국 여러분과 같은 사람이 만든 것이며, 완벽하지 않기에 여러분의 설계에서는 다른 선택을 할 수도 있다는 것.
마지막 지점과 관련해, 모든 것은 트레이드오프이며 모든 토이 프로젝트에는 수십 개, 때로는 수백 개의 함정이 도사리고 있습니다.
그 과정에서 정확성, 단순성, 기능성, 확장성, 성능, 자원 사용량, 이식성 등에 대해 끊임없이 결정해야 합니다.
여러분의 해결책은 이 중 일부에서는 뛰어날 수 있지만, 모든 항목에서 모든 사용자를 만족시킬 수는 없습니다. 이는 기존의 해결책 역시 결함이 있으며, 아무리 잘 정립된 것이라 해도 여러분의 특정 문제를 해결하도록 설계되지 않았을 수 있음을 의미합니다.
토끼굴을 파고드는 일은 그 자체로 재미있지만, 또 다른 이점도 있습니다. 엔지니어로서 성장할 수 있는 몇 안 되는 방법 중 하나라는 점입니다. 단, 탐구하려던 것의 작동하는 버전을 완성하기 전에 포기하지 않아야 합니다. 프로젝트를 너무 자주 옮겨 다니면 아무것도 배우지 못합니다.
바퀴를 재발명해야 하는 이유
바퀴를 재발명해야 할 훌륭한 이유들이 있습니다:
- 더 나은 바퀴를 만들기 위해(무엇이 ‘더 낫다’의 정의에 따라)
- 바퀴가 어떻게 만들어지는지 배우기 위해
- 다른 사람에게 바퀴에 대해 가르치기 위해
- 바퀴를 발명한 사람들에 대해 배우기 위해
- 바퀴를 교체하거나 고장 났을 때 고칠 수 있게 되기 위해
- 바퀴를 만드는 데 필요한 도구들을 그 과정에서 배우기 위해
- 더 큰 시스템(예를 들어 차량)을 만든다는 것이 무엇인지 그 일부라도 배우기 위해
- 아주 특별한 바퀴가 필요한 누군가를 돕기 위해. 휠체어용 바퀴일지도 모르죠?
누가 알겠습니까? 여러분이 만든 바퀴가 자동차에는 최적이지 않을지 몰라도, 어쩌면 스케이트보드나 자전거에는 딱 맞을지도 모릅니다. 혹은 더 멋진 바퀴를 만드는 데는 실패했지만, 그 과정에서 바퀴를 더 잘 테스트하는 방법을 발견할 수도 있습니다. 심지어 여러분의 바퀴가 이동 수단을 위한 것이 아닐 수도 있습니다! 도예용 물레, 즉 “점토를 둥근 도자기로 빚는(성형하는) 데 쓰이는 기계” 위키백과에 따르면일 수도 있습니다. 핸들이나 플라이휠처럼 전혀 다른 종류의 바퀴를 만들게 될지도 모릅니다. 우리는 틀 밖에서 생각하는 사람이 더 필요합니다.
재사용 vs 재발명
물론 다른 사람의 성과를 무시하지 마세요. 그들의 작업을 공부하고, 적절하다고 판단되면 재사용하세요. 다른 사람의 작업을 불신하거나 모른다는 이유로 바퀴를 재발명하지는 마세요. 반면에, 지식을 시험해 본 적이 전혀 없다면 어떻게 그 분야를 발전시킬 만큼 충분히 배울 수 있겠습니까?
작은 실험들을 실행하면 아주 빠르게 나아갈 수 있다는 것을 저는 관찰했습니다. 특히 소프트웨어 엔지니어링에서는 작은 프로토타입을 만드는 데 비용도 적게 들고 빠릅니다. 자신의 문제를 해결하세요. 작게 시작하고, 단순하게 유지하며, 반복하세요.
그래서 위의 모든 내용을 종합하면, 제 조언은 다음과 같습니다:
통찰을 위해서는 재발명하고, 임팩트를 위해서는 재사용하라.
글을 무작위로 읽기