1P by neo 3달전 | favorite | 댓글 1개
  • 무엇이 그것을 그렇게 좋게 만들었음?
    • 좋은 관행을 강제하는 사람이 있었음?
    • 훌륭한 엔지니어 그룹에 속해 있었음?
    • 아니면 다른 무언가?

GN⁺의 의견

  • 이 기사는 소프트웨어 개발 환경에서 좋은 관행이 어떻게 유지되는지에 대한 흥미로운 질문을 제기함
  • 좋은 관행을 강제하는 것과 자율적인 환경에서의 차이를 이해하는 데 도움이 될 수 있음
  • 다른 유사한 기능을 가진 프로젝트로는 Google의 Code Review 시스템이나 GitHub의 Pull Request 시스템이 있음
  • 새로운 기술이나 오픈 소스를 채택할 때는 팀의 문화와 기존 프로세스에 어떻게 통합될 수 있을지 고려해야 함
  • 좋은 관행을 유지하는 것은 팀의 생산성과 코드 품질을 높이는 데 중요한 요소임
Hacker News 의견
  • Google의 모노레포는 도구 측면에서 매우 우수함

    • 전체 코드베이스의 스냅샷을 몇 초 만에 생성할 수 있음
    • 빌드는 완벽하게 재현 가능하며 빌드 클러스터에서 수행됨
    • 빌드 구성 언어가 매우 간단하고 간결함
    • 코드 검색이 즉시 가능함
    • 파일 히스토리가 즉시 로드됨
    • 라인별 블레임이 몇 초 만에 로드됨
    • 거의 모든 파일에서 즉시 심볼 조회가 가능함
    • 일관된 스타일이 공유 문화, 자동 린터, 사전 제출을 통해 강제됨
    • 파일/버전/라인으로 딥링크하는 단축키가 있어 코드 공유가 쉬움
    • 많은 사전 제출 체크가 코드/테스트 품질을 보장함
    • 코드 리뷰와 코드 변경 시 테스트 페어링이 필수임
  • AOL의 서버 코드는 매우 우수했음

    • Unix 프로그래밍과 이벤트 루프 사용에 대한 깊은 이해를 가진 사람들이 작성함
    • C 언어로 작성되었으며, 몇 달 동안 크래시 없이 실행될 것으로 기대됨
    • 비정상 종료 시 소유자에게 이메일로 코어 백트레이스를 보냄
    • 메모리 누수가 발생하면 운영팀이 즉시 대응함
    • 모든 것이 재시작 없이 실행 중인 서버에 다시 로드될 수 있었음
    • TCP 제어 포트와 TCL 인터프리터를 사용하여 서버를 관리함
    • "No Threads Kernel"로 수십 대에서 수백 대의 물리적 머신에 확장됨
    • 200명의 Unix 개발자들이 공통된 이해를 가지고 있었음
    • 기술 작가들이 개발자와 인터뷰하여 외부 개발자에게 전달할 수 있는 책을 작성함
    • 디스크에 쓰지 않고 네트워크 메시지를 주고받는 원칙을 따랐음
  • 이전 직장의 코드베이스는 매우 우수했음

    • 엔지니어들이 뛰어난 기술을 가지고 있었고, 에고가 없었음
    • 4명의 시니어와 3명의 프린시펄 엔지니어가 팀을 구성함
    • 새로운 요구사항이 생길 때마다 문명화된 방식으로 논의함
    • 주니어 멤버들도 쉽게 기존 코드를 따라갈 수 있었음
  • Postgres 코드베이스는 매우 잘 조직되어 있음

    • 메모리 안전성을 걱정하지 않아도 됨
    • 매크로를 신중하게 사용하여 인간을 존중함
    • Postgres 코드베이스는 개발의 금표준으로 여겨짐
    • pgrx 팀에게 감사의 인사를 전함
  • 대규모 Python 서비스의 통합 테스트 프레임워크가 매우 우수했음

    • 기존 통합 테스트 프레임워크 위에 구축됨
    • 테스트 구성 요소에 명확한 의미를 정의함
    • 테스트 구성 요소를 초기 세트로 구축함
    • 코드 리뷰를 통해 새로운 구성 요소가 의미를 따르도록 보장함
    • 장기적으로는 잘 작동하지 않았음
  • Google3 코드베이스는 매우 방대하고 잘 작동함

    • 변경할 때마다 종속성을 다시 실행함
    • 커밋은 효율적인 불변 스냅샷임
    • GitHub보다 훨씬 뛰어남
  • 내가 직접 작성한 코드베이스가 가장 우수했음

  • Cocotron 코드베이스는 매우 인상적이었음

    • Mac Cocoa 앱을 Windows로 포팅하는 방법을 찾고 있었음
    • 단 한 사람이 모든 필수 API를 구현함
    • 복잡한 커스텀 GUI 앱에 성공적으로 사용됨
    • 집중이 중요함
  • Facebook의 코드베이스는 지속적인 코드 업그레이드가 가능함

    • 언어 디자인과 도구에 많은 노력을 기울임
    • 기존 코드를 지속적으로 업그레이드함
    • 다른 회사의 코드베이스는 주요 재작성 후 전환이 어려웠음
  • CouchDB의 HTTP API는 한 파일에 모두 포함되어 있었음

    • 데이터베이스와 웹 프로그래밍을 배우기에 좋은 출발점이었음
    • 나중에 팀에 의해 리팩토링됨
    • 영감에서 실제 사용으로 전환되는 과정을 보는 것이 흥미로웠음