Development

Distributed Development

distributed development project is a research & development (R&D) project that is done across multiple business worksites or locations. It is a form of R&D where the project members may not see each other face to face, but they are all working collaboratively toward the outcome of the project. Often this is done through email, the Internet and other forms of quick long-distance communication.

Success factors

  1. Select and/or recruit good, strong, highly skilled people.
  2. Spend some money for face-to-face meetings, especially at the beginning of each major project.
  3. Build an organizational design that supports working in a distributed development, including the right incentive systems.

지역적 분산 소프트웨어 개발을 위한 툴들

지역적 분산 개발(Geographically Distributed Development, GDD)은 효율성이나 비용면에서 다수의 보상을 가져다 주지만, 성공적인 GDD 팀을 만들기 위한 몇가지 문제들도 있다.

GDD 프로젝트가 마주치는 가장 큰 위험은 내부적으로 효율적인 의사소통을 할 수 있는가에 대한 것이다.

우리에게 있어 GDD의 기본초석은 Internet Relay Chat 프로토콜이다. 우리는 IRC가 원거리 개발에 있어 인스턴트 메시징보다 우월하다.

  • 중간에 들어온 사람도 처음부터 글을 볼 수 있음.
  • 연결 유지가 쉬움.
  • 언어장벽에도 맞설 수 있는 기반 또한 제공

GDD 팀원간의 시차는 팀을 위기로 내몰고, 작업흐름을 혼란시키는 장애물이 될 수 있다.

  • timeanddate.com – 회의 스케쥴을 잡을 때 시차를 시각화하기 쉽게 만들어주는 Meeting Planner

개발 흐름을 촉진시킬 툴들

  • 메일링리스트, 버전관리, 버그추척, 문서 관리 
  • aMember – 여러분의 툴들이 단일 로그인
  • CollabNet사의 SourceCast – GDD를 막 시작한 팀들을 위해 이러한 모든 툴들을 통합해서 제공하는 상용서비스
  • Skype – 음성회의를 하고, 좀더 세부적인 논의가 필요할 때는 음성과 화상을 교차하여 회의

성공적인 분산 개발을 위한 12가지 조언

  • 아웃소싱을 위한 분산 개발이 아니라, 좋은 인재와 같이 일하기 위함
  • 사용도구가 분산 개발을 가능케 함, 분산 개발을 조장해야 함. 
  • 오픈 소스 수준의 협업 – 좀 더 모듈화된 API 기반의 접근방식을 조장한다.
  • 정직한 요구조선 수비과 검증 – 최신 정보를 구두보다는 서면으로 전달하고, 양보다 빈도를 많게 소 통
  • 시차가 4시간을 초과하면, 같은 시간에 소통하기 어려움.
  • 팀 크기를 작게 유지함으로써, 더 나은 공동체 의식과 책임감을 조장할 수 있다
  • 팀들이 가능한 많은 채널(스카이프, 채팅, SMS)을 통해서 접촉할 수 있게 해주어서 개발자들이 접촉하는데 부담을 느끼지 않도록 하는 것이다.
  • 관리자라면 시간 절반을 소통하는데 사용해야 한다.
  • “군대 수준의 정확성”으로 관련 모든 정보(버그번호, JIRA 추적보고, ..)를 전달해야 한다.
  •  버그 개수, 빌드 상태, 서버 부하, 초당 질의 개수, 다운시간 등 개발자들에게 중요한 수치는 모두 공유되어야 한다.
  • 충분한 사회성도 필요하다. – 즐거운 시간 보내기

분산 Scrum

팀 멤버가 분산되어 있는 경우 소프트웨어 개발자는 서로로부터 자신을 분리하려고 코드에 더욱 더 많은 추상화 레이어를 만드는 경향이 있습니다.

인간이 서로 간에 말하는 것 중 많은 부분이 신체 언어를 통해 전달됩니다.  디자인 토론 중에 누군가를 관찰하여 수집한 정보는 화이트보드에 적은 정보만큼이나 중요할 수 있습니다. 이 때문에, 분산 작업자 간의 격차를 해소하기 위해서는 신체 언어 장벽을 극복하는 데 더욱 더 중점을 두어야 합니다.

화면 공유는 매우 효과적인 연결 및 공동 작업 도구입니다.

모든 항목에 대한 단순 확인 규칙을 추가(팀 전체에 걸쳐 수행되는 작업에 대한 집단 이해도를 높임)

  • 각 항목을 완료 상태로 간주된 통합 환경에서 확인해야 합니다.
  • 확인을 수행하는 사람은 작업을 수행한 사람이 아니어야 합니다.

가상 단체방은 항상 열린 상태로 유지되었으며 팀 멤버는 작업할 때 이 작업실을 방문하게 됩니다.

개발자들은 화면 공유 소프트웨어를 사용하여 서로의 화면을 보기 시작했습니다. 이 방법이 더 빠르니까요. 팀에서는 몇 인치의 벽 공간으로 분리된 각자의 사무실에서 앉아 있지만 하루 종일 가상 작업실을 사용하기 시작했습니다.

결국 팀 멤버 중 하나가 몇 일 동안 사무실로 출근하지 않고 재택 근무를 시도했습니다. 스프린트 회고(Sprint Retrospective) 중에 개발 팀은 복도를 지나 몇 번째 문에 해당하는 사무실에 있든 집에 있든 작업자의 위치는 가상 작업실에서 아무런 상관이 없음에 동의했습니다. 가상 단체방이 개인 사무실보다 더 중요함이 입증되었습니다.

물리적 장벽을 극복하고 팀의 커뮤니케이션에서 참여한다면 더 높은 품질, 혼란의 감소, 더 빠른 처리량, 그리고 더 큰 개인적 만족감을 결실로 얻게 될 것입니다. 팀 내에서 도구 및 구현 방식을 신중히 고려할 때 분산 구조가 잘 운영될 수 있습니다.

 

SW분산개발이 일자리 만든다

클라우드 환경에서 웹을 기반으로 원격 분산개발 환경을 구축할 수 있기 때문이다. 클라우드 웹 기술은 언제 어디서 접속하여도 작업 환경을 복원해주기 때문에 원격 개발의 효율성이 높아졌다.

소프트웨어 분산개발이 활성화 된다면 소프트웨어 기업에서 유연근무와 재택근무 형태가 확산될 것이고 이는 육아부담의재택개발자들에게 양질의 일자리를 제공할 것이다. 

 

참고

http://en.wikipedia.org/wiki/Distributed_development

http://profjkim.egloos.com/2109538

https://www.open.collab.net/kr/products/cee/

http://msdn.microsoft.com/ko-kr/library/jj620910.aspx

 

 

기본
Development

성공적인 분산 개발을 위한 12가지 조언

  1. 도구세트가 행동을 결정한다.
  2. 처음부터 분산 개발을 시작하고 ‘오픈소스’ 사고방식을 유지하라.
  3. 투명성이 신뢰를 이끌어낸다.
  4. 적절한 것이 최선이다.
  5. 빠른 시작이란 철학
  6. 작게 생각하고, 자주 스크럼 회의를 하라.
  7. 군대 수준의 정확성
  8. 측정할 수 있는 것은 달성할 수 있다.
  9. 충분한 사회성을 가질 기회를 만들어야 한다.
  10. 분산 개발자들에 대한 믿음,격려 및 문서, 프로세스, 사회적 상호작용 등 모든 것을 온라인화

출처 : http://www.itworld.co.kr/news/74908

기본