GN⁺: 단순함의 장점에도 불구하고 아쉽게도 복잡성이 더 잘 팔리는 현실 (2022)
(eugeneyan.com)단순함은 장점이지만 안타깝게도 복잡함이 더 잘 팔림
복잡함이 왜 더 잘 팔리는가?
- 복잡함은 노력을 의미함
- 어려운 아이디어와 기술적 세부사항이 있는 논문은 피땀과 눈물을 연상시킴
- 더 많은 구성요소와 기능을 가진 시스템은 더 적은 시스템보다 더 많은 노력이 필요해 보임
- 복잡한 결과물은 더 많은 노력이 필요하다고 여겨지므로 만들기가 더 어렵고 가치가 있다고 여겨짐
- 복잡함에 수반되는 노력 때문에 종종 더 높은 품질로 판단됨
- 복잡함은 숙련도를 의미함
- 많은 움직이는 부품이 있는 복잡한 시스템은 설계자가 각 부품에 대한 능숙함과 이를 통합하는 능력이 있음을 시사함
- 전문용어와 증명으로 가득 찬 이해하기 어려운 논문은 그 주제에 대한 전문성을 보여줌
- 일반인이 복잡한 아이디어나 시스템을 이해하기 어렵다면 그 창시자는 전문가일 것임
- 복잡함은 혁신을 의미함
- 완전히 새로운 모델 아키텍처를 발명하는 논문은 기존 네트워크를 적용하는 논문에 비해 더 새롭다고 인정됨
- 처음부터 만든 구성 요소가 있는 시스템은 기존 부품을 재사용하는 시스템보다 더 창의적이라고 여겨짐
- 기존 작업을 기반으로 하거나 재사용하는 작업은 그다지 혁신적이지 않음
- 복잡함은 더 많은 기능을 의미함
- 혼합하고 일치시킬 수 있는 구성 요소가 있는 시스템은 모든 기반을 다룰 수 있는 유연성을 제안함
- 복잡한 시스템은 단순한 시스템에 비해 더 많은 블록을 가지고 있기 때문에 더 적응력이 높고 변화에 더 잘 대응할 수 있다고 여겨짐
단순함이 장점인 이유
- 단순한 아이디어와 기능은 이해하고 사용하기 쉬움
- 이는 채택 가능성을 높이고 영향력을 만듦
- 의사소통하고 피드백 받기도 쉬움
- 반면에 복잡한 시스템은 설명하고 관리하기가 어려워 사용자가 무엇을 해야 하고 어떻게 해야 하는지 파악하기 어려움
- 단순한 시스템은 구축하고 확장하기 쉬움
- 구성요소가 적을수록 더 쉽게 구현할 수 있음
- 표준 기성품 기술을 사용하면 구현 및 유지 관리할 수 있는 자격을 갖춘 사람을 찾기가 더 쉬움
- 단순한 시스템은 복잡성, 코드, 시스템 내 상호작용이 적기 때문에 이해하고 테스트하기 쉬움
- 반면에 불필요하게 복잡한 시스템은 더 많은 시간과 자원이 필요하여 비효율과 낭비로 이어짐
- 단순한 시스템은 운영 비용이 낮음
- 시스템 배포는 결승선이 아니라 출발선임
- 대부분의 노력은 시스템이 프로덕션 환경에 있을 때 들어가며, 시스템을 단순하게 유지함으로써 유지보수 비용을 낮추고 수명을 늘릴 수 있음
- 머신러닝에서는 단순한 기술이 더 정교한 기술보다 성능이 떨어지지 않는 경우가 많음
- 트리 기반 모델이 중간 크기 테이블 데이터에서 심층 신경망보다 우수함
- 탐욕 알고리즘이 조합 그래프 문제에서 그래프 신경망보다 우수함
- 간단한 평균이 다중 작업 학습 문제에서 복잡한 옵티마이저와 동일하거나 더 나은 성능을 보임
- 32개 논문에서 예측 정확도 면에서 단순한 방법이 복잡한 방법보다 우수함
- 추천 및 검색에서 내적이 신경 협업 필터링보다 성능이 좋음
복잡성에 대한 보상의 문제점
- 사람들이 불필요하게 복잡하게 만들도록 장려함
- 간단한 방법을 사용하거나 간단한 시스템을 구축하는 것은 더 쉬워 보이므로 가치가 낮게 평가됨
- 결과적으로 사람들은 더 많은 보상을 얻기 위해 시스템을 조작하고 가장 단순한 솔루션이 더 이상 가장 명백한 것이 아님
- "여기서 발명되지 않음" 사고방식을 조장하여 시간과 노력을 절약할 수 있는데도 기존 구성요소 재사용을 기피하고 처음부터 구축하는 것을 선호함
- 이는 시간과 자원을 낭비하고 종종 더 나쁜 결과를 초래함
어떻게 복잡성에 대해 생각해야 하는가?
- 목표는 가능한 한 단순한 솔루션으로 복잡한 문제를 해결하는 것이어야 함
- 솔루션의 복잡성에 초점을 맞추는 대신 문제의 복잡성에 초점을 맞춰야 함
- 단순한 솔루션은 문제에 대한 깊은 통찰력과 더 복잡하고 비용이 많이 드는 솔루션을 피할 수 있는 능력을 보여줌
- 모든 것을 해결하는 복잡한 솔루션 대신 여러 개의 집중적인 솔루션을 고려해야 함
- 만능 솔루션은 보통 기대만큼 유연하고 재사용할 수 없음
- 여러 사용 사례와 이해관계자를 위해 존재하므로 "밀접하게 결합"되는 경향이 있고 계획 및 마이그레이션 시 더 많은 조정이 필요함
- 반면에 단일 목적 시스템을 운영하고 폐기하는 것이 더 쉬움
GN⁺의 의견
- 이 글은 복잡함이 왜 선호되는지, 단순함의 장점은 무엇인지를 설득력있게 설명하고 있음. 복잡함이 숙련도, 혁신, 기능 등을 암시하기 때문에 선호된다는 점은 흥미로웠음.
- 하지만 모든 경우에 단순한 솔루션이 더 좋다고 보기는 어려울 것 같음. 문제의 특성에 따라 어느 정도의 복잡함은 필요할 수 있음. 단순함과 복잡함의 균형을 잡는 것이 중요할 것임.
- 머신러닝 분야에서 단순한 모델이 성능이 더 좋은 사례들이 흥미로웠음. 새로운 모델을 개발할 때 기존의 단순한 방법들과 비교해보는 것이 좋겠음.
- 조직에서 성과 평가시 복잡성을 너무 강조하지 않도록 주의해야겠음. 대신 문제의 난이도와 해결책의 효과성에 집중하는 것이 바람직할 것 같음.
- 아키텍처 설계시 만능의 복잡한 시스템보다는 단일 목적의 단순한 여러 시스템을 고려해보는 것도 좋은 방법일 것 같음.
Hacker News 의견
요약:
- MVP(최소 기능 제품)를 반복적으로 쌓아 올리는 방식이 복잡성을 초래하는 원인이 되기도 함
- 복잡한 문제를 해결할수록 높은 보상을 주는 시스템이 오히려 불필요한 복잡성을 낳기도 함
- 고급 소비자와 열망하는 소비자의 욕구 차이로 인해, 기업은 열망 소비자의 요구에 부응하는 것이 합리적 선택이 되기도 함
- 복잡하고 버그 많은 소프트웨어가 오히려 선호되는 이유는 그 뒤에 숨을 수 있기 때문임
- 어릴 때부터 '많은 것이 좋은 것'이라는 사고방식에 젖어 있음
- 엔지니어로서 단순한 해결책보다는 도전적인 것에 매력을 느끼는 경향이 있음
- 단순한 것을 선호하면서도 단순해 보이는 것은 기피하는 모순적 심리가 있음
- 사후적으로 복잡한 해법을 비판하는 것은 쉽지만, 당시의 제약 조건과 요구사항을 모른 채 하는 비판은 공허함
- '가능한 한 단순하게, 그러나 지나치게 단순하지 않게'라는 원칙은 언제나 옳지만, 구현이 쉽지 않음
- 프로젝트 초기에는 단순했던 것도 요구사항이 커지면서 필연적으로 복잡해질 수 밖에 없는 상황도 많음