복잡한 시스템은 단순한 시스템에서 발전해 나오는 경우가 많음. 처음부터 복잡하게 설계된 시스템은 잘 작동하지 않으며, 단순한 시스템에서 시작해야 함
Make와 Makefiles는 autoconf로 자동 생성되지 않으면 매우 간단함. autoconf로 생성된 경우 수정하지 말고, 가능하면 autoconf를 사용하지 않는 것이 좋음. 코드를 조금 작성하거나 복사하여 프로젝트에 사용하고, 필요에 따라 개선함. 이후 프로젝트에서 해당 코드를 복사하여 수정하고, 원래 프로젝트에 변경 사항을 반영함. 여러 프로젝트를 통해 라이브러리로 추출하고, 오픈 소스로 공개할 수 있음
개발자의 약 10%는 처음부터 무언가를 시작할 수 있는 능력을 가짐. 40%는 코드 복사 및 붙여넣기로 작업을 수행하며, 50%는 LeetCode 퍼즐 외에는 잘 모름. 많은 Makefiles가 복사 및 붙여넣기로 구성되어 있음
Cargo Cult Development는 기술의 원리를 이해하지 못하고 표면적인 것만 모방하는 개발 방식을 의미함. 복사, 붙여넣기, 시도, 조정 등을 통해 작동하기를 바라는 방식임
Makefile은 잘못된 비유일 수 있음. 많은 코드가 웹에서 복사되어 사용되지 않는 부분이 많음. 불필요한 부분을 삭제하는 것이 좋은 습관임
개발자들이 상호작용해야 하는 도구나 시스템은 일상적으로 배우기에는 가치가 적다고 인식됨. CI 설정 등은 "설정 후 잊어버리기"로 인식되며, 복잡한 부분은 다른 팀이 처리함. 적절한 도구와 문서를 제공하여 개발자들이 쉽게 접근할 수 있도록 해야 함
LaTeX와 같은 도구는 사용 빈도가 낮아 복사 및 붙여넣기로 시작하는 경우가 많음. 사용 빈도가 낮은 도구는 기억하기 어려움
Make는 잘 문서화되어 있으며, 사용자가 문서를 읽으면 쉽게 이해할 수 있음. 그러나 많은 도구는 문서화가 부족하여 사용자가 도구를 이해하기 어렵게 만듦
복잡한 도구는 필요하지만, 간단한 애플리케이션에 Makefile 효과가 나타난다면 도구가 너무 복잡하다는 것을 의미함. 작은 프로젝트에는 Makefile이 적합할 수 있음
"Copy-Pasta Driven Development"는 코드 복사 및 붙여넣기로 인해 발생하는 문제를 지적함. Copilot과 같은 도구는 이러한 문제를 악화시킬 수 있음
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과 같은 도구는 이러한 문제를 악화시킬 수 있음