1P by neo 2달전 | ★ favorite | 댓글 1개
  • Makefile 효과에 대한 인식

    • Makefile 효과란 복잡하거나 익숙하지 않은 도구를 처음부터 작성하지 않고, 이전에 잘 작동했던 예제를 복사하여 수정하는 현상을 의미함.
    • 이 효과는 다양한 엔지니어들이 Make와 같은 도구를 사용할 때 자주 나타남.
    • 과거에 유사한 작업이 수행된 경우, 엔지니어는 이전의 Makefile을 복사하여 새로운 상황에 맞게 수정함.
  • 문제점과 영향

    • 설계 단계에서의 문제점: 도구가 너무 복잡하거나 처음부터 사용하기 번거로움.
    • CI/CD 구성: GitHub Actions나 GitLab CI/CD에서 YAML 설정을 복사하여 수정하는 경우가 많음.
    • 린터 및 포매터 구성: 기본 규칙 세트를 프로젝트 간에 복사하여 필요에 따라 강화하거나 완화함.
    • 빌드 시스템: 비트리비얼한 모든 것이 이전 빌드 시스템을 닮아감.
  • 이 현상이 중요한 이유

    • 진단 및 디버깅 지원 부족: 도구를 반복적으로 실행해야 하며, 정보가 적게 제공됨.
    • 학습 저해: 일부 전문가만 도구를 잘 알고, 다른 사람들은 최소한의 지식으로 복사하여 수정함.
    • 보안 문제: 보안 작업은 깊은 지식이 필요하며, Makefile 효과가 있는 시스템은 코드와 데이터 간의 혼동을 초래할 수 있음.
  • 도구 설계 시 고려사항

    • 도구가 구성 가능해야 하는지 여부.
    • 자체 문법이 필요한지 여부.
    • 기존 문법이나 관용구를 재사용할 수 있는지 여부.
    • 복사-붙여넣기가 자주 발생하는지 여부.
  • Makefile 효과와 유사한 현상

    • 카고 컬팅이나 일탈의 정상화와 유사하지만, Makefile 효과는 특정 설계의 결과에 관한 것임.
    • Makefile 효과는 본질적으로 비효율적이거나 나쁜 것이 아님. 도구와 시스템을 설계할 때 인식해야 할 사항임.
Hacker News 의견
  • 복잡한 시스템은 단순한 시스템에서 발전해 나오는 경우가 많음. 처음부터 복잡하게 설계된 시스템은 잘 작동하지 않으며, 단순한 시스템에서 시작해야 함

  • Make와 Makefiles는 autoconf로 자동 생성되지 않으면 매우 간단함. autoconf로 생성된 경우 수정하지 말고, 가능하면 autoconf를 사용하지 않는 것이 좋음. 코드를 조금 작성하거나 복사하여 프로젝트에 사용하고, 필요에 따라 개선함. 이후 프로젝트에서 해당 코드를 복사하여 수정하고, 원래 프로젝트에 변경 사항을 반영함. 여러 프로젝트를 통해 라이브러리로 추출하고, 오픈 소스로 공개할 수 있음

  • 개발자의 약 10%는 처음부터 무언가를 시작할 수 있는 능력을 가짐. 40%는 코드 복사 및 붙여넣기로 작업을 수행하며, 50%는 LeetCode 퍼즐 외에는 잘 모름. 많은 Makefiles가 복사 및 붙여넣기로 구성되어 있음

  • Cargo Cult Development는 기술의 원리를 이해하지 못하고 표면적인 것만 모방하는 개발 방식을 의미함. 복사, 붙여넣기, 시도, 조정 등을 통해 작동하기를 바라는 방식임

  • Makefile은 잘못된 비유일 수 있음. 많은 코드가 웹에서 복사되어 사용되지 않는 부분이 많음. 불필요한 부분을 삭제하는 것이 좋은 습관임

  • 개발자들이 상호작용해야 하는 도구나 시스템은 일상적으로 배우기에는 가치가 적다고 인식됨. CI 설정 등은 "설정 후 잊어버리기"로 인식되며, 복잡한 부분은 다른 팀이 처리함. 적절한 도구와 문서를 제공하여 개발자들이 쉽게 접근할 수 있도록 해야 함

  • LaTeX와 같은 도구는 사용 빈도가 낮아 복사 및 붙여넣기로 시작하는 경우가 많음. 사용 빈도가 낮은 도구는 기억하기 어려움

  • Make는 잘 문서화되어 있으며, 사용자가 문서를 읽으면 쉽게 이해할 수 있음. 그러나 많은 도구는 문서화가 부족하여 사용자가 도구를 이해하기 어렵게 만듦

  • 복잡한 도구는 필요하지만, 간단한 애플리케이션에 Makefile 효과가 나타난다면 도구가 너무 복잡하다는 것을 의미함. 작은 프로젝트에는 Makefile이 적합할 수 있음

  • "Copy-Pasta Driven Development"는 코드 복사 및 붙여넣기로 인해 발생하는 문제를 지적함. Copilot과 같은 도구는 이러한 문제를 악화시킬 수 있음