프로페셔널 프로그래밍에서의 마감일(Deadline) 관리 가이드

Source

  • Evernote/Article Scraps/On Programming Deadlines - Randall Degges.md

Summary

랜달 데게스(Randall Degges)는 개인 개발과 프로페셔널 개발의 가장 큰 차이점인 ‘마감일’과 ‘제한된 자원’을 다루는 방법을 제시한다. 기술 부채를 이해하지 못하는 비엔지니어와의 협업에서 고품질 코드를 유지하기 위해 네 가지 원칙을 제안한다: 1) 코드 작성 전 지속적 배포(CD) 환경 구축으로 배포 시간 절감, 2) 테스트 주도 개발(TDD) 실천으로 아키텍처 명확화 및 리팩토링 용이성 확보, 3) 클라이언트와의 투명성 유지(정기적 업데이트, 스테이징 환경 공유)로 신뢰 구축 및 기한 연장 시 이해도 제고, 4) 복잡한 작업을 관리하기 위한 구체적인 일일 TODO 리스트 작성.

Key Points

  • 프로페셔널 개발은 제한된 시간과 자원 하에서 진행되며, 마감일 압박은 종종 ‘기한 연장’ 또는 ‘저품질 코드(해킹)’ 중 하나를 선택하게 만든다.
  • Rule 1: 코드 작성 전 반드시 지속적 배포(Continuous Deployment) 시스템을 구축하여 수동 배포 시간을 절약하고 언제든지 배포 가능한 상태를 유지한다.
  • Rule 2: 테스트 주도 개발(TDD)을 실천하여 아키텍처를 명확히 하고, 버그 수정 및 시스템 충돌로 인한 긴급 작업을 방지하며 장기적인 시간 절감을 도모한다.
  • Rule 3: 비엔지니어인 클라이언트나 상사와의 투명한 소통을 유지한다. 진행 상황 공유와 스테이징 환경에서의 시연은 개발 과정에 대한 이해를 높이고 마감일 조정 시 협조를 얻는 데 도움이 된다.
  • Rule 4: 소프트웨어 개발의 복잡성을 관리하기 위해 모호하지 않은 구체적인 일일 TODO 리스트를 작성하여 작업의 진전을 명확히 추적한다.