2016년 9월 22일 목요일

구글의 개발팀 구성



구글에는 수많은 소프트웨어 개발자가 있고 자유로운 개발 환경을 제공하고 있어 전세계 개발자의 부러움을 받고 있는 것이 사실이지만 구글에서 개발되는 모든 솔루션을 자체적으로 개발하지는 않는다. 구글에서 솔루션을 확보하는 방법은 크게 두가지로 인수합병과 오픈소스 프로그래밍이다. 트렌드를 앞서가는 신기술을 가진 회사를 가져오지만 인수합병 후에도 회사의 독립성을 지켜주며 개발 의지를 이어 나가도록 해주고, 널리 확산하고자 하는 신기술에 대해서는 오픈소스 프로그래밍으로 공개하여 전세계 개발자들이 참여하도록 유도한다.


<참고: 오픈소스 프로그래밍>

오픈소스 프로젝트는 일반적으로 급여를 받지 않고 미팅이나 정해진 매니저도 없다. 명세서, 혹은 설계서 마저 없다는 것도 전통적인 소프트웨어 개발 프로젝트와는 다른 특징 중의 하나 이다. 오픈소스 프로젝트에 참여하는 팀원은 개발의 순수한 즐거움과 경험치를 올리는 가치 상승을 목표로 하기 때문에 팀원의 흥미만 유발된다면 매우 만족스러운 결과를 얻을 수 있다는 장점이 있다. 오픈소스 프로젝트는 모든 것이 자율적으로 이루어지지만 높은 가치를 가지는 프로젝트는 기술 리딩이 가능한 몇 명의 팀원이 주도적으로 이끌어 가기도 한다. 이러한 리더들을 핵심 그룹(Core group)이라고 불리며, 핵심 그룹은 팀원들이 프로젝트에 공헌하고 있다고 느끼도록 확실한 동기를 지속적으로 부여해야 성공 확률이 높아진다. 최근 프로젝트는 오픈소스를 활용하는 경우가 많다. 일반적인 기업에서도 오픈소스 프로젝트를 통해 검증된 소프트웨어를 만들 수 있는 장점이 있지만 강제성이 없어 실패 확률이 높다는 단점도 있다.


구글은 인수합병이나 자유로운 분위기에서 창의적인 생각을 통해 솔루션 개발의 기획을 만들고, 필요한 경우 이 것을 더 발전시키기 위해 오픈소스 프로그래밍을 주도한다. 오픈소스 프로그래밍은 자신들의 아이디어나 기술이 외부에 오픈 되는 단점이 있지만 단기간에 많은 개발자가 참여할 수 있고 회사 밖의 시각을 반영하여 완성된 솔루션의 실패률을 낮출 수 있다.
구글은 제한된 기능을 제공하는 솔루션뿐만 아니라 앵귤러JS와 같은 웹 어플리케이션 프레임워크(그림9)를 제공하면서 사용자 수준이 아니라 개발자 수준까지 구글의 솔루션을 사용하도록 유도하고 있다. 이러한 유도는 개발자의 개발 환경까지 구글의 범주에 넣어둠으로써 구글 환경에 적합한 솔루션 개발이 자연스럽게 이루어지게 한다.

<그림9> 앵귤러JS 개발자 가이드


출처: https://angular.io/docs/ts/latest/guide/