개념: 팀 사이의 협업
이 원칙은 효과적인 협업을 촉진하는 방법을 설명합니다.
기본 설명

소개

이 원칙은 최적의 프로젝트 전반 커뮤니케이션을 촉진하는 중요성을 강조합니다. 이는 적절한 팀 조직과 효과적인 협업 환경 설정을 통해 달성됩니다.

      
이점
  • 팀 생산성
  • 비즈니스 요구와 소프트웨어 시스템 개발 및 오퍼레이션 사이의 보다 나은 결합
패턴
  1. 최상의 성과를 내도록 동기 부여
  2. 자체 관리 팀 작성 
  3. 다기능 협업 촉진(예: 분석가, 개발자, 테스터)
  4. 효과적인 협업 환경 제공
  5. 통합 환경에서 협업, 진행상태 및 품질 통찰력을 개선하기 위해 전개하는 아티팩트 및 타스크 관리
  6. 비즈니스, 소프트웨어 및 오퍼레이션 팀 통합
안티패턴
  • 주말을 포함하여 상당히 긴 시간 동안 작업할 의지가 있는 대담한 개발자 양성
  • 서로 다른 팀 구성원 사이의 협업이 제한되고 서로 다른 도구 사이의 통합이 제한되는 상태에서 상당히 전문적인 사람들이 해당 작업을 수행하기 위한 강력한 도구를 갖추도록 합니다. 모두가 자신의 작업을 제대로 수행할 경우 최종 결과가 좋을 것으로 가정됩니다.

논의 

소프트웨어는 유능하고 동기 부여된 사람들이 긴밀하게 협업하여 생성합니다. 많은 복잡한 시스템에서 다양한 스킬을 가지고 있는 많은 이해 당사자들의 협업이 필요하며, 최대규모 프로젝트는 종종 지리적 및 시간적 경계를 넘어서며 개발 프로세스에 복잡도를 더 추가합니다. 이로 인해 인원 문제 및 협업(소프트웨어 개발의 "소프트" 요소라고도 함)의 기본 초점이 Agile 개발 커뮤니티에 맞춰졌습니다. 이 원칙을 따를 경우 다음과 같은 많은 질문에 응답해야 합니다.

  • 최상의 성과를 내도록 동기 부여하는 방법은?
  • 같은 위치에 배치된 소프트웨어 팀 대 분산된 소프트웨어 팀 내에서 협업하는 방법은?
  • 비즈니스, 소프트웨어 개발 및 IT 오퍼레이션에 대한 책임을 맡고 있는 팀 사이에 협업하는 방법은?

효과적인 협업의 첫 번째 단계는 팀의 개인들이 최상의 성과를 얻도록 동기 부여하는 것입니다. 자체 관리 팀 개념은 Agile 커뮤니티에서 대중성을 얻었습니다(개념: Agile 사례 및 RUP 참조). 이는 전달해야 하는 사항에 팀이 전념할 수 있게 하고 결과에 직접적으로 영향을 주는 모든 문제에 대해 결정할 수 있는 권한을 해당 팀에 제공하는 작업을 기반으로 이루어집니다. 사람들이 정말로 최종 결과에 대한 책임을 느낄 경우 한층 더 좋은 작업을 수행하려는 동기가 부여됩니다. Agile Manifesto에 제시된 것처럼 "동기 부여된 개인을 중심으로 프로젝트를 빌드하십시오. 그 사람에게 필요한 환경 및 지원을 제공하고 그 사람이 작업을 완료할 것이라고 믿으십시오."

두 번째 단계는 다기능 협업을 촉진하는 것입니다. Walker Royce의 말대로, "소프트웨어 개발은 팀 활동입니다." 반복적 접근 방식에 따라 팀으로서 민접하게 작업해야 하는 필요성이 증가됩니다. 종종 분석가, 개발자 및 테스터 사이에 존재하는 벽을 없애고 해당 역할의 책임을 넓혀서 빠른 회전이 일어나는 환경에서 효과적인 협업이 이루어지도록 해야 합니다. 각각의 구성원은 프로젝트의 미션 및 비전을 이해해야 합니다.

팀이 성장함에 따라, 효과적인 협업 환경을 제공해야 합니다. 이 환경은 메트릭 콜렉션 및 상태 보고를 촉진 및 자동화하며 형상 관리를 둘러싼 빌드 관리 및 부기(bookkeeping)를 자동화합니다. 이런 효율성으로 회의 필요성이 줄어들어, 팀 구성원은 한층 생산적이고 창조적인 활동에 더 많은 시간을 사용하게 됩니다. 이와 같은 환경은 또한 커뮤니케이션을 단순화하고 다양한 팀 구성원 사이에 장소 및 시간 간격이 없도록 연결하여 더 효과적인 협업이 가능하도록 해야 합니다. 이러한 환경의 예는 공유된 프로젝트 공간에서부터 네트워크로 연결되거나 웹을 기반으로 하는 솔루션(예: Wikis) 또는 IDE(Integrated Development Environment)와 형상 및 변경 관리 환경에 이르기까지 광범위합니다.

소프트웨어가 핵심 비즈니스 프로세스에 중요한 역할을 수행하면서 팀 간의 효과적인 협업에 대한 요구가 증대되고 있습니다. 대부분의 조직에서는 실제로 비즈니스를 수행하는 팀과 응용프로그램을 개발하는 팀과 응용프로그램을 실행하는 팀 간에 원활한 커뮤니케이션이 이루어지지 않고 있습니다.

이 원칙에서의 궁극적인 목적은 비즈니스, 소프트웨어 및 오퍼레이션 팀 사이의 통합된 협업입니다. 비즈니스 실행 방법에 있어서 소프트웨어가 점점 중요하게 됨에 따라, 1) 현재 및 차후 비즈니스 실행 방법을 결정하는 팀, 2) 지원 소프트웨어 시스템을 개발하는 팀, 3) IT 오퍼레이션을 실행하는 팀 사이에 밀접한 협업을 작성해야 합니다. 대부분에서 회사에서 이 세 그룹의 커뮤니케이션이 제대로 이루어지지 않습니다.