개발 이론, 생각, 컨퍼런스/애자일

[Clean Agile : Back to Basics] 4장 : 팀 실천 방법

mystic-agit 2023. 8. 2. 11:39

애자일 프로세스의 "팀 실천 방법"

  • 익스트림 프로그래밍에서 가운데 반경의 프로세스 

 

(1) 메타포 (Metaphor)

  • 팀 내에서 효과적으로 의사소통 하려면 개념을 나타내는 어휘와 용어를 명확하게 정의하여 일관되게 사용해야 함
  • 개발자간 뿐만 아니라 고객, 관리자간에도 서로 이해할 수 있어야 함
  • “도메인 주도 설계” 방법
    • 해결하려는 문제 도메인의 모델을 모든 사람(프로그래머, QA, 관리자, 고객, 사용자)이 동의하는 어휘와 언어(유비쿼터스 언어)로 표현해야 함
    • 도메인 : 실제 세계에서 사건이 발생하는 집합
      • ex : 옷 쇼핑몰
        • 손님들이 주문하는 도메인
        • 점주가 옷을 관리하는 도메인
        • 쇼핑몰이 월세 등 관리비를 관리하는 도메인
    • 개발 코드에도 그 어휘가 반영될 수 있게 작명 (모듈, 클래스, 메서드 등)

 

(2) 지속 가능한 속도 (Sustainable Pace)

  • 개인
    • 나 자신 최선의 페이스(지치지 않고 오래 유지할 수 있는)의 하루당 업무량과 속도를 인지하고 진행
      • 지나치게 많이 하면 건강 등의 문제로 좌초될 수 있다.
      • 수면, 운동 등의 건강관리도 중요하다.
    • 팀원들과 함께할 수 있는 최선의 페이스를 찾고 개인의 범위안에서 적용
    • 혼자 앞서 더 많이 일한다고(초과 근무, 야간 근무) 공을 세울 수 있는 경우는 극히 드물다.
      • 오히려 잘못된 결정으로 수정을 위한 추가 근무를 하는 모습이 비춰질 수 있다.
      • 꼭 필요한 경우에만 추가 근무를 하자.
  • 개발은 눈앞에 보이는 목표점에서 끝나지 않는다.
    • 지속적인 유지보수와 개발을 위해 끝없는 마라톤을 한다 생각하고 뛰어야 한다.

 

(3) 공동 소유 (Collective Ownership)

  • 구성원 전부가 모든 코드를 소유하고 어느 부분이든 개발할 수 있어야 한다.
    • 팀 인원이 지식을 고루 공유할 수 있다.
    • 의사 소통을 원활하게 이루고, 보다 좋은 결정을 내릴 경우가 높아진다.
  • 특정 인원이나 그룹이 코드를 소유하지 않는다.
  • 넓게 알되 전문적인 부분은 키울 수 있도록 한다.

 

(4) 지속적 통합 (Continuous Integration)

  • 팀에서 정한 가능한 작은 시간 주기로 코드를 체크인 하고 주 브랜치에 통합하여 빌드가 성공하도록 유지한다.
    • 단위 테스트와 인수 테스트는 계속 통과해야한다.
    • 기능 브랜치가 통합되지 않은 채 남아있어선 안된다.
    • 배포 시 동작하면 안되는 기능은 토글로 비활성화 시킨다.
  • 지속적 통합을 위해선 혼자 개발하기 보단 짝 프로그래밍을 통해 개발하자
    • 단독적인 코드 스타일로 인한 리스크 발생을 줄일 수 있다.
    • 변경 사항 공유가 쉽다.
    • 문제 발생 시 협업하여 해결하는데 비용을 줄일 수 있다.
  • 무엇보다 가장 중요한건 체크인된 상태에서의 빌드는 절대 문제가 발생하면 안된다.
    • 빌드를 위해 잠시 예외처리해둔 혹은 꼼수를 둔 로직이나 코드는 지양한다.

 

(5) 스탠드업 미팅

  • 스탠드업 미팅 룰
    • 미팅 참석은 필수가 아님, 한 명쯤은 빠져도 무관
    • 꼭 매일할 필요 없음, 팀에 맞는 일정으로 진행
    • 10분이 넘지 않도록 함, 팀의 규모와 상관 없이
    • 회의 방식은 아래 내용으로 고정, 아래 질문을 모든 사람이 30초 정도 안에 답을 하고 다시 업무를 진행한다.
      • (a) 지난 스탠드업 미팅 이후 무엇을 했는가?
      • (b) 다음 스탠드업 미팅까지 무엇을 할 것인가?
      • (c) 어떤 장애물이 있는가?
  • 장점
    • 불필요한 회의 시간을 최소화
    • 팀의 방향성을 환기
    • 각 팀원의 진행률을 대략적으로 인지
    • 미팅 이후 필요한 정보 공유 가능
  • 스탠드업 미팅에선 개발자만 발언한다.
    • 관리자나 기타 인원이 들을 수는 있지만 끼어들지 않는다.
    • “저자 의견”
      • 누가 말을 하던 상관 없다.
      • 주어진 시간만 넘기지 않으면 된다.
    • “나의 의견”
      • 아마도 개발 과정에서 갑작스런 요구사항이 끼어들어 미팅이 회의로 확대되는 경우를 방지하기 위함
      • 저자 의견처럼 룰에 방해되지 않는다면 문제 없을 것 같다.
  • 끝으로 감사의 인사를 하기
    • 긍정 에너지를 만들고 서로 좀더 위하는 분위기가 도움이 될 것으로 보인다.