-
"바퀴를 다시 발명하지 말라" 는 조언은 창의성과 탐구심을 억누르는 부정적 영향을 줌
- 새로운 바퀴, 즉 기존 도구나 기술을 재창조하는 과정에서 깊은 이해와 배움을 얻음
- 단순하거나 익숙해 보이는 기초 구성 요소도 실제로는 복잡성과 다양한 트레이드오프를 포함함
- 자신만의 바퀴를 발명해봄으로써 성장, 문제 해결, 실험에 대한 역량이 강화됨
-
기존 결과물을 활용하는 것과 재창조하는 것 사이에서 목적에 따라 균형 있게 선택할 필요성 강조됨
Reinvent the Wheel
- "바퀴를 다시 발명하지 말라"는 말은 의도는 좋지만, 두 부류에서 나온 조언임
- 직접 바퀴를 만들어보고 그 어려움을 체험한 사람들
- 시도해본 적 없이 기존 조언을 맹목적으로 따르는 사람들
- 이러한 조언이 반복되면 호기심과 탐구정신이 위축되는 분위기 조성임
- 만약 이 조언을 모두가 따랐다면, 많은 현대적 편의와 발전을 이루지 못했을 것이라는 점 강조임
- 실제로 바퀴는 초기 발명 이후에도 여러 번 재창조되어 발전을 거듭해왔음
참고: 여기서 '바퀴'는 어떤 도구, 프로토콜, 서비스, 기술, 기타 창작물로 대체해서 생각할 수 있음
바퀴를 직접 발명해보는 것이 곧 배움임
"내가 만들 수 없는 것은 이해했다고 할 수 없다"
— 리처드 파인만
- 무언가를 진정으로 깊이 이해하기 위해서는 작은 버전이라도 직접 구현해보는 경험이 필요함
- 결과물이 완벽하지 않아도, 심지어 활용하지 않아도 구현해보는 과정 자체가 중요함
- 컴퓨터 과학의 여러 개념—프로토콜, 암호화, 웹서버 등—은 어렵게 느껴질 수 있으나, 실제로는 누구나 시도해볼 수 있음
- 더 많은 사람들이 직접 만들어보는 경험을 통해 기존 기술의 구조와 본질을 이해하는 기회가 생김
모든 것은 끝없는 탐구 과정임(Rabbit Hole)
- 우리가 당연하게 여기는 기본 구성 요소—예를 들어 문자열, 파일 경로 등—도 실제로는 매우 복잡함
- 자신만의 문자열이나 경로 라이브러리 구현 시도는 많은 배움의 계기가 됨
- 이 과정을 통해 다음과 같은 사실을 깨달음
- 일상적인 것에도 무한에 가까운 복잡성이 존재함
-
다른 사람에게 유용한 무언가를 만드는 것은 겸손함을 배울 기회임
- 모든 추상화는 인간이 만들었으며, 완벽하지 않고 자신만의 (다른) 트레이드오프도 가능함
- 구현 도중 정확성, 단순성, 성능, 확장성, 이식성 등 수많은 선택지와 문제에 직면함
- 자신이 만든 해결책은 일부 영역에서 뛰어날 수 있지만, 모든 사용자/상황에 맞지는 않음
- 기존 솔루션에도 한계가 있고, 내 문제에 맞지 않을 수도 있음
- 하나의 문제에 끝까지 파고드는 경험은 엔지니어로 성장하는 과정임
- 만약 프로젝트를 자주 이리저리 옮기기만 한다면 의미 있는 학습은 얻을 수 없음
바퀴를 다시 발명해야 하는 이유
- 기존보다 더 나은 바퀴를 만들고자 함(‘더 나은’의 정의는 다양함)
- 바퀴가 어떻게 만들어지는지 학습하는 목적임
-
다른 사람에게 바퀴의 원리를 가르치는 교육적 목적
- 바퀴의 발명 과정을 탐구하면서 새로운 깨달음을 얻음
- 고장났을 때 직접 수리 또는 개선할 수 있는 능력 배양
- 바퀴를 만드는 데 필요한 다양한 도구와 기술을 습득하게 됨
- 복합 시스템(예: 자동차 등)의 일부로서 바퀴의 역할 이해
- 특정한 필요에 맞는 아주 특별한 바퀴를 만들기 위한 시도(예: 휠체어, 스케이트보드, 도자기용 바퀴 등)
- 자신이 만든 바퀴가 원래 목적과 달리 전혀 다른 용도로 더 잘 쓰일 수도 있음
- 세상에는 틀에 박히지 않은 새로운 발상이 중요한 역할을 할 수 있음
Reuse vs Reinvent
- 다른 사람의 결과물을 무시해서는 안 되며, 그들의 작업을 연구하고 적절히 활용할 필요가 있음
- 단순히 불신이나 무지로 기존 것을 버리고 새로 만들지 않도록 주의해야 함
- 그러나 직접 구현하거나 실험해보지 않으면 해당 분야의 핵심 이해와 발전이 어려움
- 소프트웨어 엔지니어링에서는 작은 실험과 프로토타입 제작이 쉽고 빠르므로 개인 문제 해결에 효과적임
-
작게 시작해 단순하게 구현하고 반복하는 과정을 추천함
- 그래서 마지막 나의 조언은
-
통찰(insight) 을 원한다면 직접 재발명에 도전
-
영향력(impact) 을 원한다면 이미 검증된 솔루션을 재사용
"Reinvent for insight. Reuse for impact."
"통찰을 위해 재발명하고, 영향력을 위해 재사용하세요"