팀 소개

수많은 전자 메일과 댓글을 보내 주셔서 감사드리며, 트위터에서 팔로우해 주신 여러분께도 감사드립니다. 이렇게 많은 관심과 열정을 가져 주셔서 송구스러울 따름입니다. 초기 댓글에는 몇 가지 중요한 의견이 포함되어 있었고, 그 중 일부는 미리 선보인 Windows 8 사용자 경험에 관한 것이었습니다. 저희는 이러한 문제와 디자인을 어떻게 조화시킬지에 대해 논의할 만반의 준비를 갖추고 있습니다. Windows 8은 제품 전반에 걸쳐 새로운 특징을 가지고 있습니다. Windows 8을 빌드하려면 많은 팀이 필요해서 저는 팀 구조에 대해 이야기해 보는 게 좋겠다는 생각이 들었습니다. 가끔 '어떻게' 할지에 대한 생각이 '무엇'을 '왜' 하는지 이해하는 데 도움이 되기 때문입니다. 이는 Windows 8에서 기능이 추가된 부분에 대한 개요를 파악하는 데 도움을 주고 제품에 대해 이야기할 때 길잡이가 되어 줄 것입니다.

Windows를 하나의 독립체나 그룹으로 생각하는 사람이 있는가 하면 특정인들의 집단으로 생각하는 사람도 있습니다. 때때로 회의 발표자로 나서거나 블로그 활동을 하는 사람들은 제품의 홍보 역할을 하기도 합니다. 실제로 Windows는 Microsoft와 팀 전체가 일구어낸 제품입니다. 대부분의 개발 그룹이 어떤 형태로든 Windows 8을 빌드하는 데 기여하고 있으며 Windows 역시 다른 대다수 그룹에 많은 도움을 제공합니다.

Windows는 상당히 규모가 큰 프로젝트로, 세부적으로 조정된 일련의 소규모 프로젝트로 이루어집니다. Windows 8 빌드를 시작할 때 앞으로 나아갈 방향을 확립하고 그에 맞게 팀 구조를 수립한 후, 많은 팀이 서로 협력하는 동시에 독립된 그룹으로 업무를 분배하여 수행했습니다. 고객의 입장에서는 협력하기를 원하지만 엔지니어 입장에서는 독립적으로 작업하기를 원하기 때문입니다. 바로 이것이 저희가 추구했던 적절한 균형입니다.

모든 Windows 작업을 완수할 수 있도록 팀 구조를 구성하는 데 많은 노력을 기울였습니다. 첫 번째로 가장 중요한 단계는 "어떤 작업"을 완료할 것인지 결정하는 것입니다. 그래야 그 작업을 수행하기 위한 최고의 팀과 최상의 구조를 올바로 갖출 수 있습니다. 동시에 일일 빌드, 통합, 품질, 보안과 모든 기반 기술 등 모든 엔지니어링 과정을 처음부터 확실히 갖춰야 합니다. (이 주제에 대해서는 많은 논의가 필요합니다.)

팀을 구성하는 데에는 몇 가지 엔지니어링 역할이나 분야가 있습니다. Windows에 대한 구현 작업은 개발자가 코드를 작성하여 이루어집니다. 이 코드는 제품 디자이너의 인터랙션 디자인과 함께 프로그램 관리자가 작성한 사양의 기능을 구현합니다. 테스터는 사양이 완전한지, 그리고 사양에 따라 코드가 작동하는지 확인합니다. 이것은 각 역할 사이의 관계를 간략히 표현한 것이고, 저희는 주기적으로 다른 역할의 관점에서 생각해 보는 시간을 갖습니다. 팀에는 동등한 중요성을 지닌 여러 역할이 있지만 전체 릴리스를 통해 개발자, 테스터 및 프로그램 관리자가 긴밀하게 협력하는 것을 엔지니어링 작업으로 간주합니다. 각각의 역할은 수행한 결과와 선택에 대해 균등한 발언권을 지닙니다.

Windows 작업은 Windows 전반에 걸쳐 아키텍처 요소와 시나리오를 결합하는 개발자 그룹인 '기능 팀'에 배분됩니다. Windows 8 조직에는 약 35개의 기능 팀이 있으며, 각 기능 팀에는 25~40명의 개발자와 테스터, 프로그램 관리자가 모두 함께 작업합니다. 팀은 모두 글로벌 제품을 빌드하는 데 중점을 두고 있으며, 일부 팀원은 미국 외에 다른 국가에 거주하며 전 세계적으로 분산되기도 합니다.

일반적으로 기능 팀은 대부분의 사람들이 Windows 영역이나 구성 요소로 간주하는 것을 보유하고 빌드합니다. '기능'이란 항상 애매 모호한 단어입니다. 어떤 사람들은 기능을 '사용자 인터페이스'나 네트워킹 같은 광범위한 아키텍처 구성 요소라고 여기고 다른 사람들은 '시작 메뉴'나 IPv6처럼 좀더 구체적인 것으로 여기기 때문에 이 용어가 어디에나 사용되는 편입니다. 다른 기능 팀을 구성할 경우 아키텍처(코드, 하위 시스템, 구성 요소)를 사용자의 상황(사용자 경험)과 연결하고 팀을 관리할 수 있도록 소규모로 유지하는 작업을 합니다. 기능을 정의한다는 것은 어려운 일이므로 새로운 기능의 개수를 세는 것은 진작에 그만두었습니다. 대신, 저희가 빌드한 작업과 사양을 나타내는 상당히 긴 목록의 작업 항목 수를 셉니다.

사람들이 이 숫자를 계산하고 팀의 개발자를 만나게 되면 다음 두 가지 중 하나의 반응을 보입니다. "휴, 작업이 너무 많아 진행할 수가 없어요." 또는 "와, 이렇게 적은 인원으로 10억 명을 위한 제품을 빌드했네요."라고 합니다. 회사 입장에서는 가능한 최소한의 인원으로 팀을 운영하는 것이 이득이지만, 작업자 입장에서는 가능한 많은 인원이 원하는 모든 것을 더해 주는 것이 좋습니다. 따라서 저희는 절충안으로, 관리 가능하면서도 품질이 뛰어나고 완전한 기능을 갖춘 코드를 만들 수 있는 팀을 원합니다.

앞서 언급한 바와 같이 Windows는 코드 측면에서 다른 많은 제품에 기여하거나 도움을 받기 때문에 다음 목록에서 일부 기능은 다른 그룹에서 가져왔으며 작업 일부가 다른 제품에 들어가기도 한다는 것을 유념하십시오. 예를 들어 브라우저 언어 런타임은 개발 도구 그룹에서 만들어졌습니다. 커널, 네트워킹, 저장소, 시각화 및 다른 기본 운영 체제 작업은 모두 Windows Server의 일부입니다. 즉, 한 팀이 전체 Windows 클라이언트 운영 체제와 Windows Server 운영 체제의 기반을 대부분 제공합니다. 일부 기능은 핵심 운영 체제 안에 빌드되어 있지만 결국 Windows Server 제품의 일부일 뿐입니다.

아래 나열된 많은 팀은 여러분에게 친숙하거나 이름만 들어도 알 수 있는 기능과 영역을 설명합니다. 더 많은 내용을 게시하면 대부분의 팀원이 해당 팀에 속한다는 것을 알 수 있을 것입니다. 또한 기반 기술, 장치와 네트워킹, 핵심 운영 체제, 개발자 경험, 사용자 경험, 웹 서비스와 엔지니어링 시스템 등 관련이 있는 팀을 하나로 묶어 7개의 큰 그룹으로 나누었습니다. Windows Live 그룹(Hotmail, Messenger, SkyDrive, Photos 및 LiveID 등) 역시 유사한 구조를 가지고 있습니다. Internet Explorer 그룹은 자체적인 팀이 있지만 Windows 8 전반에 확실히 기여하고 있습니다.

  • 앱 호환성 및 장치 호환성(App Compatibility and Device Compatibility)
  • 앱 스토어(App Store)
  • 응용 프로그램 및 미디어 경험(Applications and Media Experience)
  • 앱 경험(App Experience)
  • 발전된 코어 경험(Core Experience Evolved)
  • 장치 연결성(Device Connectivity)
  • 장치 및 네트워킹 경험(Devices & Networking Experience)
  • 생태계 기반 기술(Ecosystem Fundamentals)
  • 엔지니어 데스크톱(Engineer Desktop)
  • 엔지니어링 시스템(Engineering System)
  • 엔터프라이즈 네트워킹(Enterprise Networking)
  • 글로벌 경험(Global Experience)
  • 그래픽 플랫폼(Graphics Platform)
  • 하드웨어 개발자 경험(Hardware Developer Experience)
  • 인간 상호 작용 플랫폼(Human Interaction Platform)
  • 하이퍼 V(Hyper-V)
  • 사용자 PC 제어(In Control of Your PC)
  • 커널 플랫폼(Kernel Platform)
  • 라이선싱 및 배포(Licensing and Deployment)
  • 미디어 플랫폼(Media Platform)
  • 네트워킹 코어(Networking Core)
  • 성능(Performance)
  • 프레젠테이션 및 구성(Presentation and Composition)
  • 신뢰성, 보안 및 개인 정보 보호(Reliability, Security, and Privacy)
  • 런타임 경험(Runtime Experience)
  • 검색, 보기 및 명령(Search, View, and Command)
  • 보안 및 ID(Security & Identity)
  • 저장소 및 파일 시스템(Storage & Files Systems)
  • 지속적인 엔지니어링(Sustained Engineering)
  • 원격 분석(Telemetry)
  • 사용자 중심 경험(User-Centered Experience)
  • Windows 온라인(Windows Online)
  • Windows Update
  • 무선 및 네트워킹 서비스(Wireless and Networking services)
  • XAML

위에 나열된 것과 같이 개발자, 테스터 및 프로그램 관리자로 구성된 팀 외에도 제품 개발 팀에는 다른 많은 팀이 속해 있습니다. 콘텐츠 개발 팀은 온라인 지원, 웹사이트, 배포 문서 및 SDK 등을 작성하고 편집합니다. 제품 계획 팀은 고객 및 시장 조사를 주도하며 시험판 소프트웨어에 대한 피드백과 원격 분석에도 세심한 주의를 기울입니다. 제품 디자인 팀은 Windows 8의 전반적인 상호 작용 모델, 그래픽 언어와 디자인 언어를 개발합니다. 리서치 및 사용성 팀은 기존 제품과 제안된 기능이 모든 유형의 고객에게 어떤 식으로 작용하는지 알아보는 실험 연구와 현장 조사를 실행합니다. 로컬라이제이션 작업을 통해 100개 이상의 언어로 Windows를 사용할 수 있으며 이 블로그 역시 번역됩니다. 운영 팀은 거의 10억 대의 PC에서 수억 명에 이르는 사람들이 사용하는 서비스를 운영합니다. 여기서는 몇 가지만 예를 들어 설명 드렸습니다.

Windows 7을 시작했을 때 일각에서는 Windows 팀이 너무 거대해져 엔지니어링 문제를 해결하기보다는 오히려 문제를 야기한다고 했습니다. 하지만 그와 동시에 모든 댓글과 의견을 통해 매우 다양한 시나리오에서 새로운 기능이 절실히 필요하다는 것을 알 수 있습니다.

사람들은 새로운 것을 바라고 기존의 것을 바꾸기 원합니다. 전 세계적으로 사용 가능하며 액세스가 용이하면서도 완성도가 높은 기능을 원하고, 기존의 하드웨어와 호환되며 최신 하드웨어의 이점을 활용하기를 바랍니다. 저희의 임무는 최대한 단시간에 상당한 규모의 많은 작업을 완수하는 것이므로, 엔지니어링 작업이 무엇보다도 중요합니다.

이 글에 쓰인 단어 수를 세는 분이 있다면 아직까지 1,500단어를 넘지는 않았으므로 이를 팀 소개라고 부르겠습니다. 게시글에 대한 아이디어를 얻고 대화가 진행될 수 있도록 계속해서 글을 남겨 주십시오. Windows 8을 논의하는 관점에서 이 글이 배경 상황을 이해하고 공유하는 데 도움이 되시기 바랍니다.

- Steven