처음에는 불가능한 미션처럼 보였다.
무려 130대의 서버를 1달. 그중에서 추석연휴가 껴있고 휴일을 빼면 보름 남짖한 근무시간동안 다 설치하라니 미친것 아닌가? 하는 생각밖에 안들었다.
서버만 설치하면 그나마 어떻게든 해보겠지만.. 더 가관인것은 인프라부터 웹서버까지 토털 납품이 목표였기에 더 미친 짖처럼 보였다.
먼저 네트워크 선을 깔고 전원 선을 깔고 할당된 파티션위에 42U 짜리 서버 랙을 올려놓고 적정수량의 서버들을 장착한다. 그리고 Fiber를 연동하고 어마어마 한 량의 VLS 백업서버와 Storage를 설치한후에 파티션을 조정하고 모든 서버위에 OS와 웹서버 보안 등등등을 하는 일이 단 추석낀 1달동안 다 끝나야 한다면 가능한 일일까?
어쨌든 당시에는 무슨 정신이 있었는지 모르겠지만 손들고 "제가 하겠습니다." 했다.
그리고 현장으로 짐싸고 뛰어가서 제일 먼저 한일이 이해관계자의 소집이었다.
"우리의 목표는 어쩌구 저쩌구 그래서 커뮤니케이션이 중요하므로 매일 사진으로 현장의 상황을 보고 드리겠습니다. 도와주십시오."
모두가 모인 그자리에서 내가 한 이야기는 이게 전부다.
그러자 시설담당자가 언제까지 시설 작업을 끝내야 하냐고 물어봤고 이어 전원 담당, 네트워크 담당이 스스로 일정과 해야 할 일을 물어 봤다.
서버 장비 담당자만이 묵묵부담이었을 뿐이다.
글뻥 : "서버는 어떻게 재고가 준비 되어 있나요?"
서버담당 : "그 정도 수량이 재고로 쌓여 있을리가 있을까요? 싱가폴에 주문 아무리 빨리 넣어도 통관하는데 하세월입니다."
라는 답변에 모 제조사 영업 담당자를 통해 무슨 수를 내서라도 납기 완료일 7일전까지 모든 물량을 납품해 달라고 요청하였다. 그 당시는 내가 생각해도 미친거였다.
짧은 미팅을 마치고 그날 밤부터 카메라로 사진을 찍기 시작한다.
그리고 모든 이해관계자에게 매일밤 찍은 사진을 보냈다.
같은 장소에서 일하고 있지 않았지만 사진이라는 무기의 위력은 엄청나다.
거기다가 각 담당별로 경쟁이 붙기 시작한다.
시설 담당자가 레일을 깔고 파티션 작업을 끝내면 전원 담당자와 네트워크 담당자가 그 위에 선을 설치하고 모든 준비가 밤샘 작업으로 단 2일만에 완료되었다.
매일 아침 어제 보내드린 보고서를 바탕으로 다음 작업을 준비시켜 놓고 서버제조사 담당자와 오더 진행현황 통관 진행현황을 거의 실시간으로 공유하였다.
이어 현장팀은 서버가 도착하는대로 IDC로 올려보내기 위해 모든 절차를 확인하고 각종 서류 문서를 미리 작성해서 서버가 보안팀의 제제없이 최소한의 시간으로 IDC로 올라갈 수 있도록 준비하고 이동 경로 역시 세심히 따져 두었다.
3일차부터 국내 재고가 있는 서버부터 들어온다.
이때 중요한것이 자리 잡는 것인데 팀원(그래봐야 2명...)들 스스로 수십번의 반복 암기를 통해 알고 있는 위치로 랙을 설치하고 마무리 작업까지 숙지 하고 있었던 터라 일사천리로 업무가 진행되었고 파티션 용량까지 다 암기하고 있었던 팀원들 덕에 큰 사고 없이 1달안에 130대의 서버 납품, 설치가 완료되었다.
애자일의 가치를 S/W가 아닌 H/W 에 적용한 결과였다.
지금에는 애자일의 가치라고 당당히 이야기하지만 그 당시는 그러한 지식도 없이 목표는 "모든 이해관계자의 목표 공유와 리얼타임 커뮤니케이션"이었다.
그 1달외에 추가 변경 업무로 인해 수개월을 보라매 사옥에서 먹고 자고 주말만 퇴근잠깐 하는 일상이었지만 잘되는 팀은 한가지 공통점을 가진다.
바로 "성공에 대한 확신"이 서면 그리고 "목표를 공유하고 스스로 책임자가 되면" 그 팀은 굉장히 무서운 팀이 되어 버린다.
후에 참여 했던 수많은 엔지니어, 영업담당자, 관리자들이 한결 같이 한 이야기는 "보고서를 써라라고 할 줄 알았는데 꺼꾸로 보고서를 주신것이 신선했고 사진으로 진행사항을 가시적으로 보여주어서 스스로 도움이 많이 되었다"는 것이다. 그리고 안티 C&C 고객사 담당자가 몇년이 지난 후에도 "내가 SKC&C에게 딱 한번 박수 쳐줬는데 그게 바로 서버 납품/설치 프로젝트다."라고 자랑스럽게 이야기 하였다고 한다.
이후에 투입된 2건의 서버납품건도 이러한 현장의 모습을 가지적으로 보여주는 것만으로도 충분히 효과를 발휘하였었다.
2008년 5월이 되어 본사로 복귀한지 하루 이틀 지났을 무렵 "세X 텔레콤"에 프로젝트가 박살났으니 들어가서 마무리 지으라는 지시를 받고 다시 짐챙겨 갔었다.
요구사항 분석의 오류로 인해 고객은 화가 난 상태이고 팀원들은 전부 입만 열면 욕하기 바쁜 상태에 놓여져 있었다. CRM 솔루션을 해당 고객사 입맛에 맞추다 보니 모든 것이 꼬여 있는 상황이었고 5월에 들어가서 1개월 만에 프로젝트 팀원 전원을 철수시키고 혼자 남아서 마무리 작업을 계속 진행하였다.
고객의 비협조(개인적으로 굉장히 친했지만... 업무적으로는 담당자의 교체, 퇴사 등으로 난리인 상황)에 녹초가 되어 납품 확인 싸인 다 받고 나왔음에도 초기부터 틀어진 요구사항은 끝내 힘싸움으로 까지 발전하여 본인에게 상처만 더 남긴 프로젝트가 되었었다.
이때까지 애자일이라는 용어는 서점에서나 보던 것이고 좀 제대로 내가 잘할 수 있는 일을 하길 원했었다.
이후 고객사의 미국법인에서 진행하는 연구과제가 있다는 이야기를 듣고 제안을 하게되는데 어차피 미국이니 제안서 따위는 최대한 간결하게 작성하고 이왕이면 실재 작동하는 프로토타잎이나 비슷한 어플을 만들어서 가져가자고 주장하여 관철시킨다.
당시 그 연구과제는 인간의 활동 패턴을 분석하는 프로젝트였고 우리는 마침 이미지 패턴을 분석하여 Recognition 하는 테스트 과제(노느니 개발한다.)를 진행하고 있더차라 마침 우리가 만든 얼굴인식, 모션인식,배경화면 치환등의 CAM기반의 Prototype과 10여장의 제안서를 들고 찾아가서 프로젝트를 수주하는데 성공하였다.
다행인것은 그 조직이 신생조직이었고 기존의 방법론에 이골이 난 리더가 그 현장에 있었다.
우리에게 조건을 내건것은 "기존 방법으로 개발하려면 관둬라. 새로운 프로세스를 만들어와라"였다.
그뒤 우리는 거의 모든 종류의 애자일 방법론을 분석하였고 고객이 힌트로 주는 방법들과 내가 알고 있는 방법들을 하나하나 녹여 넣는 작업을 하여 "GSL 방법론" 이라 이름 붙인 알고보니 스크럼을 만들어 낸다.
원칙은 간단했다.
1. 페어 프로그래밍 그딴거 안한다.
2. 요구사항 분석서, 명세서 따위의 불필요 문서는 만들지 않는다.
3. 모든 문서는 Wiki로 작성한다.
4. SVN을 통해 형상관리한다.
5. 이터레이션별로 쪼개서 개발한다.
6. 유닛테스트 만큼은 자동화 한다.
7. Doxygen 과 같은 산출물 문서자동화 툴을 적용한다.
8. 설계는 UML로 통일하고 설계시 테스트 케이스도 같이 도출한다.
9. 최종 사용자 UI테스트는 사용자가 한다.
10. 필요하면 방법론도 바꾼다.
Iteration 0를 우리는 Prototype단계라고 불렀었다.
각팀원의 Role과 커뮤니케이션을 점검하기위해 약 1주일간 장비로 부터 받은 Bluetooth Signal을 서버로 올리는 간단한 Application을 개발하는 것이다.
정확한 요일은 기억이 나지 않지만...
월요일 고객과 목표를 설정하였고 같이 일정계획을 세웠다. 이번에는 기간이 우선이니 가능한 인터페이스를 뚫어 보자가 목표였고 화요일 Star UML을 통해 UML 4종 세트를 만들고 고객과 리뷰하였다.
화요일 오후부터 금요일까지 개발을 완료하였고 그날 저녁 동영상으로 만든 작동하는 어플의 모습을 보고하였다.
이때 이전의 서버 설치를 통해 검증하였던 커뮤니케이션의 효율을 높이기 위해 매일 아침 모여서 오늘 할 일과 어제 했던 일을 점검하는 시간을 아침 9:30~10:00정도까지 짧게 가져갔었다.
다음 단계는 실재 구현이 하달된다.
월요일 고객과의 미팅을 통해 지난 Iteration 0에서 잘된 점과 잘못된 점을 도출하고 잘못된 점을 어떻게 잘되게 할지 고민하였다. 누구도 잘못된 점을 비난하지 않았고 오히려 잘못된 점의 원인을 파악하고 개발팀 차원에서 어떻게 하면 잘못된 점을 잘된 점으로 끌고 가느냐의 방안들을 수립하는 것이 인상적이었다.
이어 목표가 제시되고 그 자리에서 러프한 일정계획이 수립된다.
언제부터 설계하고 개발하고 테스트 할지가 결정되면 그것을 우리는 "성과평가회의"라고 불렀고 양식도 최대한 심플하게 통합하여 Wiki로 저장하였다.
단계별 개발기간은 일정하게 2주 또는 1달이 아니었다. 제시된 목표에 따라 그 기간은 합의에 의해 달라진다.
아마도 기억에 Iteration 1의 기간은 약 3주 정도로 기억된다.
주어진 목표를 우리는 초과 달성하여 목표 기한 -2일 정도로 끝내었다.
다시 동영상을 뜨고 인코딩하여 보고하고 그주말 부터 팀원들을 휴가를 가기 시작했다.
그 다음주는 고객의 Feedback을 위해 고객이 직접 작동하는 어플리케이션을 설치하고 만져보는 시간을 약 3일정도 가졌던 것으로 기억된다.
이후 성과 평가 보고회를 통해 목표의 달성, 잘된 점, 잘못된 점, 고객 Feedback, 다음단계 계획을 보고서로 남기고 Iteration 2를 진행하였고 Iteration 2에서 기억나는 잘된 점이 바로 신입사원이었던 모 사원의 노력으로 UML을 작성하고 나면 간단히 Documents 를 생성하도록 Templet을 적용한 것이다.
또한 TEST CASE 문서역시 자동 Generation 되었다.
또한 이때부터 MS사의 Unit test가 HUDSON이라는 CI툴에 들어가기 시작했고 우리가 원했던 Doxygen이 작동되기 시작했다.
그것도 목표 기간보다 단축되어서...
이때부터 논리적 설계와 실재 구현된 코드를 UML문서와 Doxygen을 비교함으로써 명확하게 설계된 부분과 실코드가 어떤부분이 다른지 파악되기 시작했다.
다른 부분은 설계에 반영하여 Method와 Entity 값들을 일치화 하였고 그동안 생각해왔던 UI Mockup Tool인 Balsamiq을 시범 적용하여 개발전 UI테스트를 선진행 하는 성과도 이때부터 얻었던 것으로 기억난다.
또다른 변화는 모든 팀원들이 스스로 기간단축하고 휴가가기 위해 혹은 일찍 퇴근하기위해 단계별 초기에 야근을 마다 하지 않았다.
이런 성과는 Issue Tracker를 활용하여 자신의 업무를 정량화 시키는데 성공하였기 때문일 것이다.
그렇게 몇개월이 흐르고 우리는 고객이 원하는 일정에 모든 개발을 완료할 수 있었고 차기 사업을 기획하던 도중 조직의 변화로 손가락 빠는 신세로 전략하게 되고 만다.
이후에 언론사 컨설팅 프로젝트에 있다가 그나마 하드웨어를 잘안다는 이유만으로 다시 서버 납품으로 1달 정도 보내다가 미국법인에서 직계약 할테니 기대는 말고 준비나 해둬라라는 연락을 받는다.
여기서 또 써먹었던 Prototype 전술을 사용하였다.
=== 다음에 또 계속 ===





469497
154
234





