Windows Confidential마지막 체크 인 치킨

Raymond Chen

프로젝트가 막바지에 접어들면 팀에서는 마지막 체크 인 치킨이라는 격식 없는 게임을 하곤 합니다. 이 게임에서 팀은 제품의 마지막 수정에 대한 책임을 지지 않기 위해서 "경쟁"합니다. 말하자면 마지막 수정한 사람의 버그가 없었다면 제품이 하루는 더 일찍 출시되었다는 것입니다. 물론 사실과는 거리가 멀지만 이것이 게임의 동기 부여입니다. 경쟁은 완전히 가상으로 이루어지며 점수를 기록하는 사람도 없고 "승자"도 곧 잊혀집니다.

여러분이 승자가 아니라면 말입니다.

Windows 팀의 고참 멤버 중 한 명이 Windows 초창기 시절에 두 번이나 이 게임에서 이긴 사실을 털어놓은 적이 있습니다. 그중에서도 두 번째는 생산이 이미 시작된 후에 이루어진 수정이었기 때문에 관심을 끕니다. 이 때문에 전체 제조 과정을 취소하고 다시 시작해야 했습니다.

그러나 세 번 연속 승자가 되기 위한 시도는 좌절되었고 마지막에서 두 번째로 체크 인하는 데 그쳐야 했습니다. 마지막 체크 인은 필자의 동료 중 한 명이 했었는데 이 친구는 Windows 2000에 대한 마지막 체크 인은 물론이고 Windows XP에도 마지막 체크 인을 하는 대업을 이룩했습니다.

마지막 체크 인 치킨 게임의 아이러니 중 하나는 결국에 우승하는 사람과 함께 자기가 필요한 수정을 하는 사람이 있으며 예상하지 못했던 이들이 이러한 일을 한다는 것입니다. 물론 이들의 코드가 저급해서 이러한 일이 생기는 것은 아닙니다. 올바르게 준비되어 있다면 일반적으로 자신이 담당하지 않는 구성 요소라고 하더라도 마지막 체크 인을 수행할 수 있는 좋은 위치를 차지하게 됩니다.

막바지에는 개발자를 마스터 트리로부터 분리하는 격리가 더 이상 없기 때문에 뒤늦게 체크 인하는 것은 중대한 일입니다. 일반적인 상황에서 체크 인은 다음과 같이 이루어집니다.

  • 자신의 하위 프로젝트에 체크 인합니다.
  • 하위 프로젝트의 빌드 개발실에서 변경 내용을 밤새 취합하고 아침에 빌드를 생성합니다.
  • 하위 프로젝트의 테스트 팀에서는 몇 주 이상 코드에 대해 심사숙고하고 최종적으로 체크 인을 제품에 반영할지 결정합니다.

이러한 방식을 사용하기 때문에 실수를 하더라도 프로젝트의 공식적인 부분이 되기 전에 수정될 가능성이 높습니다. 어떤 프로젝트는 매우 방대하여 변경 내용을 하위 프로젝트가 속한 더 큰 하위 프로젝트로 넘겨주기 전에 독립적으로 하위 프로젝트에서 변경 내용을 확인하는 재귀적인 하위 프로젝트를 만드는 경우도 있습니다.

그러나 프로젝트가 막바지에 이르고 릴리스 관리 팀이 수정 사항을 적용할지 결정하는 시점에는 시간이 부족하기 때문에 몇 주간 변경 확인 프로세스를 수행할 여유가 없습니다. 프로젝트 전반에 걸쳐 자신의 하위 프로젝트가 아닌 전체 프로젝트를 주기적으로 빌드하여 전용 릴리스 서버에 처음부터 디스크 이미지를 만들고 빌드 요구 사항이 충족되는지 확인하는 개발자들이 있습니다. 예를 들어 이들이 하는 일 중에는 CD 한 장에 CD 이미지를 넣을 수 있는지 확인하는 일도 있습니다.

팀에서 마지막 체크 인을 수행해야 하는 상황임을 발견하는 경우, 일반적으로 잘 준비된 팀원을 찾으며, 그러한 팀원이 없는 경우에는 가까운 팀에서 잘 준비된 팀원의 도움을 요청하게 됩니다.

이제부터는 사랑하는 여인에게 보내는 친구의 연애 편지를 대신 써주는 일종의 Cyrano 게임이 시작됩니다. 팀에서는 잘 준비된 개발자에게 변경 내용을 제공하면, 개발자는 디스크 이미지를 빌드하고 빌드 제한 사항을 확인한 다음 테스트 팀에 전용 릴리스 서버를 알려 줍니다. 테스트 팀에서 문제를 발견하면 개발 팀에서는 새로운 수정안을 만들고 이를 잘 준비된 개발자에게 전달하여 이 주기를 다시 시작합니다.

다른 말로 하면 잘 준비된 개발자가 해당 팀의 가상 1인 빌드 개발실 역할을 하는 것입니다. 모든 사람들이 만족하면 잘 준비된 개발자가 체크 인합니다. 바로 이것이 잘 준비된 사람이 마지막 체크 인 치킨 게임에서 승리하는 이유입니다. 즉, 문제에 대한 책임을 질 사람이 아니라 문제에 부딪힌 사람들을 도울 준비가 된 사람이기 때문입니다.

Raymond ChenThe Old New Thing 웹 사이트와 동명의 저서(Addison-Wesley, 2007)에서 Windows의 역사와 Win32 프로그래밍, 그리고 커피 메이커를 고장 내는 방법에 대해 다루고 있습니다.