3P by neo 7달전 | favorite | 댓글 1개

단순함은 장점이지만 안타깝게도 복잡함이 더 잘 팔림

복잡함이 왜 더 잘 팔리는가?

  • 복잡함은 노력을 의미함
    • 어려운 아이디어와 기술적 세부사항이 있는 논문은 피땀과 눈물을 연상시킴
    • 더 많은 구성요소와 기능을 가진 시스템은 더 적은 시스템보다 더 많은 노력이 필요해 보임
    • 복잡한 결과물은 더 많은 노력이 필요하다고 여겨지므로 만들기가 더 어렵고 가치가 있다고 여겨짐
    • 복잡함에 수반되는 노력 때문에 종종 더 높은 품질로 판단됨
  • 복잡함은 숙련도를 의미함
    • 많은 움직이는 부품이 있는 복잡한 시스템은 설계자가 각 부품에 대한 능숙함과 이를 통합하는 능력이 있음을 시사함
    • 전문용어와 증명으로 가득 찬 이해하기 어려운 논문은 그 주제에 대한 전문성을 보여줌
    • 일반인이 복잡한 아이디어나 시스템을 이해하기 어렵다면 그 창시자는 전문가일 것임
  • 복잡함은 혁신을 의미함
    • 완전히 새로운 모델 아키텍처를 발명하는 논문은 기존 네트워크를 적용하는 논문에 비해 더 새롭다고 인정됨
    • 처음부터 만든 구성 요소가 있는 시스템은 기존 부품을 재사용하는 시스템보다 더 창의적이라고 여겨짐
    • 기존 작업을 기반으로 하거나 재사용하는 작업은 그다지 혁신적이지 않음
  • 복잡함은 더 많은 기능을 의미함
    • 혼합하고 일치시킬 수 있는 구성 요소가 있는 시스템은 모든 기반을 다룰 수 있는 유연성을 제안함
    • 복잡한 시스템은 단순한 시스템에 비해 더 많은 블록을 가지고 있기 때문에 더 적응력이 높고 변화에 더 잘 대응할 수 있다고 여겨짐

단순함이 장점인 이유

  • 단순한 아이디어와 기능은 이해하고 사용하기 쉬움
    • 이는 채택 가능성을 높이고 영향력을 만듦
    • 의사소통하고 피드백 받기도 쉬움
    • 반면에 복잡한 시스템은 설명하고 관리하기가 어려워 사용자가 무엇을 해야 하고 어떻게 해야 하는지 파악하기 어려움
  • 단순한 시스템은 구축하고 확장하기 쉬움
    • 구성요소가 적을수록 더 쉽게 구현할 수 있음
    • 표준 기성품 기술을 사용하면 구현 및 유지 관리할 수 있는 자격을 갖춘 사람을 찾기가 더 쉬움
    • 단순한 시스템은 복잡성, 코드, 시스템 내 상호작용이 적기 때문에 이해하고 테스트하기 쉬움
    • 반면에 불필요하게 복잡한 시스템은 더 많은 시간과 자원이 필요하여 비효율과 낭비로 이어짐
  • 단순한 시스템은 운영 비용이 낮음
    • 시스템 배포는 결승선이 아니라 출발선임
    • 대부분의 노력은 시스템이 프로덕션 환경에 있을 때 들어가며, 시스템을 단순하게 유지함으로써 유지보수 비용을 낮추고 수명을 늘릴 수 있음
  • 머신러닝에서는 단순한 기술이 더 정교한 기술보다 성능이 떨어지지 않는 경우가 많음
    • 트리 기반 모델이 중간 크기 테이블 데이터에서 심층 신경망보다 우수함
    • 탐욕 알고리즘이 조합 그래프 문제에서 그래프 신경망보다 우수함
    • 간단한 평균이 다중 작업 학습 문제에서 복잡한 옵티마이저와 동일하거나 더 나은 성능을 보임
    • 32개 논문에서 예측 정확도 면에서 단순한 방법이 복잡한 방법보다 우수함
    • 추천 및 검색에서 내적이 신경 협업 필터링보다 성능이 좋음

복잡성에 대한 보상의 문제점

  • 사람들이 불필요하게 복잡하게 만들도록 장려함
    • 간단한 방법을 사용하거나 간단한 시스템을 구축하는 것은 더 쉬워 보이므로 가치가 낮게 평가됨
    • 결과적으로 사람들은 더 많은 보상을 얻기 위해 시스템을 조작하고 가장 단순한 솔루션이 더 이상 가장 명백한 것이 아님
  • "여기서 발명되지 않음" 사고방식을 조장하여 시간과 노력을 절약할 수 있는데도 기존 구성요소 재사용을 기피하고 처음부터 구축하는 것을 선호함
    • 이는 시간과 자원을 낭비하고 종종 더 나쁜 결과를 초래함

어떻게 복잡성에 대해 생각해야 하는가?

  • 목표는 가능한 한 단순한 솔루션으로 복잡한 문제를 해결하는 것이어야 함
    • 솔루션의 복잡성에 초점을 맞추는 대신 문제의 복잡성에 초점을 맞춰야 함
    • 단순한 솔루션은 문제에 대한 깊은 통찰력과 더 복잡하고 비용이 많이 드는 솔루션을 피할 수 있는 능력을 보여줌
  • 모든 것을 해결하는 복잡한 솔루션 대신 여러 개의 집중적인 솔루션을 고려해야 함
    • 만능 솔루션은 보통 기대만큼 유연하고 재사용할 수 없음
    • 여러 사용 사례와 이해관계자를 위해 존재하므로 "밀접하게 결합"되는 경향이 있고 계획 및 마이그레이션 시 더 많은 조정이 필요함
    • 반면에 단일 목적 시스템을 운영하고 폐기하는 것이 더 쉬움

GN⁺의 의견

  • 이 글은 복잡함이 왜 선호되는지, 단순함의 장점은 무엇인지를 설득력있게 설명하고 있음. 복잡함이 숙련도, 혁신, 기능 등을 암시하기 때문에 선호된다는 점은 흥미로웠음.
  • 하지만 모든 경우에 단순한 솔루션이 더 좋다고 보기는 어려울 것 같음. 문제의 특성에 따라 어느 정도의 복잡함은 필요할 수 있음. 단순함과 복잡함의 균형을 잡는 것이 중요할 것임.
  • 머신러닝 분야에서 단순한 모델이 성능이 더 좋은 사례들이 흥미로웠음. 새로운 모델을 개발할 때 기존의 단순한 방법들과 비교해보는 것이 좋겠음.
  • 조직에서 성과 평가시 복잡성을 너무 강조하지 않도록 주의해야겠음. 대신 문제의 난이도와 해결책의 효과성에 집중하는 것이 바람직할 것 같음.
  • 아키텍처 설계시 만능의 복잡한 시스템보다는 단일 목적의 단순한 여러 시스템을 고려해보는 것도 좋은 방법일 것 같음.
Hacker News 의견

요약:

  • MVP(최소 기능 제품)를 반복적으로 쌓아 올리는 방식이 복잡성을 초래하는 원인이 되기도 함
  • 복잡한 문제를 해결할수록 높은 보상을 주는 시스템이 오히려 불필요한 복잡성을 낳기도 함
  • 고급 소비자와 열망하는 소비자의 욕구 차이로 인해, 기업은 열망 소비자의 요구에 부응하는 것이 합리적 선택이 되기도 함
  • 복잡하고 버그 많은 소프트웨어가 오히려 선호되는 이유는 그 뒤에 숨을 수 있기 때문임
  • 어릴 때부터 '많은 것이 좋은 것'이라는 사고방식에 젖어 있음
  • 엔지니어로서 단순한 해결책보다는 도전적인 것에 매력을 느끼는 경향이 있음
  • 단순한 것을 선호하면서도 단순해 보이는 것은 기피하는 모순적 심리가 있음
  • 사후적으로 복잡한 해법을 비판하는 것은 쉽지만, 당시의 제약 조건과 요구사항을 모른 채 하는 비판은 공허함
  • '가능한 한 단순하게, 그러나 지나치게 단순하지 않게'라는 원칙은 언제나 옳지만, 구현이 쉽지 않음
  • 프로젝트 초기에는 단순했던 것도 요구사항이 커지면서 필연적으로 복잡해질 수 밖에 없는 상황도 많음