프로그래밍 : 실력의 부재

회 사가 Flash와 관련한 프로젝트를 시작한 것은 처음은 아니다. 웹 에이전시로 부터 시작되엇던 회사였기 때문에 상업적 용도의 웹 페이지를 제작하면서 기본적인 UI 등은 Flash를 이용하고 있었고, 다양한 Flash 기반 사진 편집 툴, 그래픽 툴, Flash 기반 아바타 서비스 등을 제작하고 있었다.. 하지만, Flash를 이용한 게임 제작에 필요한 기술력은 절대적으로 부족하였고, 지금도 그닥 실력이 나아졌다고 보여지진 않는다.

프로젝트가 진행되고 동시기에 일본에 진출해 있는 국내 게임 포털 기업의 자회사에 납품을 위한 Flash 게임 제작 프로젝트가 동시에 진행되고 있었지만, 그 프로젝트에서 얻은 교훈이 이번 프로젝트에 적용 된 것은 아무것도 없었다. 아니, 그러기는 커녕 게임 제작 프로젝트는 무려 4개의 게임을 제작했지만, 똑같은 실수를 되풀이하느라 자기 앞가림 하기에도 분주했다.

여러 실수들 중 가장 치명적인 것은 Flash 부분의 최적화가 전혀 이루어지지 않았다는 점이다. 회사에서 지급 받은 컴퓨터는 P4( 싱글 코어, HT 지원) 2.8Ghz CPU에 2Gb 메모리를 장착한 기종이었는데-이는 회사 내 평균 사양보다는 조금 못 미친 기종이었다-정원에 꾸미기 아이템을 6개 이상 얹어 놓으면 CPU 점유율이 90 ~ 100%에 육박하고 브라우저가 정지 상태에 놓이는 일이 빈번했다. 초기 기획시 회사의 컴퓨터에서 실행 시켰을 경우 50개 정도의 레이어를 깔아 놓는 것을 기본 목표로 설정했던 것을 생각하면 겨우 10% 정도의 목표를 달성한 것이다.

물론 국내의 현재 보급형 컴퓨터의 사양이 회사 보급 컴퓨터보다는 높을 것이지만, 문제는 동일한 기능이 들어간 서비스를 GSP(Global Server Project: 한국 소프트웨어진흥원 주관 해외 진출 지원 사업)에도 그대로 적용하여 이용하려 한다는 점이었다. 개인적인 의견으로는 최소 해외에 서비스 되어야 할 사양이라면 최근 발매되고 있는 넷북(Netbook)에서도 돌아가야 상업적으로 안전할 것이라 생각되어지지만, 그 정도의 퍼포먼스는 지금의 회사의 기술력으로는 도달 못할 벽 같은 것이다. 여튼, 지나치게 높은(?) 권장사양 덕분에 제대로 된 테스트 이전에 겨우 기능 동작 여부를 확인 하는데 급급할 수 밖에 없었다(애니메이션 프레임이 적어 동작이 지나치게 빠른 문제를 서비스 런칭 이후 집에서 처음 접속 해 본 이후 처음 알았다-집에서는 쿼드코어를 쓰고 있다). 최적화 문제는 현재 개발 중이며, 곧 추가 기능으로 붙게 될 여행지에서 문제가 되고 있는데, 초기 기획 사항에서 동시 접속 인원 240명을 목표로 잡았지만, 한 화면에 20명 정도만 넘어가도 클라이언트 부분에서 부하가 걸려 서버와 연결이 끊어지는 문제가 발생하고 있다.

사실 해결 방법은 플레이 해상도를 줄이거나(Flash 실행 영역의 크기는 660 * 490), CPU 연산을 잡아 먹을 수 밖에 없는 백터 이미지를 줄이고 비트맵 이미지를 추가하던가 하는 방법이 있을 수 있다(참고로 비트맵의 수를 늘리게 되면 CPU 부하는 적어지는 대신, 메모리 점유율이 기하급수적으로 늘어난다. 이 프로젝트가 아닌 다른 프로젝트에서 Flash 게임이 메모리 200Mb를 넘게 잡아먹으면서 IE와 충돌로 뻗어버리는 일도 경험했었다). 개발 기간은 그러한 추가 작업을 할 수 있는 여력을 남겨두지 않았다. 사실 그 이전에 최적화에 대한 문제가 P프로젝트 진행 이전 다른 프로젝트에서 부터 지속적으로 튀어나왔음에도 불구하고, 프로그래머 중 누구도 기획 단계나 작업 초기 단계에서 이러한 문제에 대해 조언하거나 나서서 이야기 하는 사람이 아무도 없었다-기획 초기에 내가 최적화 문제에 대한 의견을 내었을 때, 프로그래밍 팀장으로 부터 '문제 사항이 되질 않는다'라는 한마디만 들었던 것으로 기억한다.


개발 프로세스 : 임기응변

프 로그래밍 팀이 여태껏 시행해 온 개발 프로세스는 전형적인 폭포수 개발법으로, 프로젝트가 시작되면서도 당연하게 이를 (지나치게)충실히 따르고 있었다. 때문에 확정된 기획에 대하여 집착을 하고 있었고, 변경이나 수정에 대해서 민감했다. 문제는 프로그래밍 팀-정확히는 프로그래밍 팀장-이 원하는 기획서를 제공 할 여건이 되질 않았다. 세상의 다른 여러 프로젝트도 마찬가지이겠지만, P 프로젝트 역시 초기 기획중에 발주사의 요구는 매번 변경되었고 이는 '완성된' 기획서를 내 놓는 것을 불가능한 상황으로 만들어가고 있었다.

기획팀과 프로그래밍 팀이 바라보는 '기획서'의 정의가 다른 것도 커뮤니케이션을 가로막는 원인이 되었다. 프로그래밍 팀은 그간의 웹 개발에 근거한 스토리보드(Storyboard)에 기반한 기획서를 바라고 있었고, 기획팀은 기존의 게임 개발에 근거한 개발 문서를 작성하였다. 웹 개발과 게임 개발의 프로세스의 차이는 분명히 존재했지만, 서로간에 이에 대한 합의를 보려는 노력은 조금도 없었고, 되려 서로 무능하다고 헐뜯는 사태까지 벌어지기도 했다.

결국 당연하게도 프로젝트가 끝날 때 까지 양쪽이 모두 만족 할 수 있는 최종 기획서는 나오지 않았다. 기획과 프로그래밍 모두 서로의 고집을 피우는 바람에, 프로그래밍 팀은 소중한 개발 시간을 잃어버렸고, 기획 팀은 프로그래밍 팀과의 쓸모없는 소모전으로 인하여 좀 더 나은 서비스로 개선 할 수 있는 기회를 잃어버렸다. 프로젝트는 어정쩡한 기획서를 바탕으로 기본 골격만을 결정 한 뒤, 이후 발주사에서 떨구는 이슈들에 대한 무한 수정이라는 임기응변으로 진행되기 시작했다. 여기에 1편에서 이야기 했던 인력 문제도 겹치면서 프로젝트는 당장 오늘 하루 어떻게 얼마나 진행될 지도 모르는 일의 연속이 되어버렸다.

임기응변으로 일이 치뤄지면서 개발 프로세스는 완전히 무너져버렸다. 이슈는 수시로 발생하고, 어떤 경우에는 문서로 정리할 여력도 없이 구두로 일이 진행되기 시작했다. 이슈 트래킹 시스템의 도입은 꿈 꿀 수도 없었다(Mantis나 Trac을 쓰자는 내 의견은 바쁘다는 이유로 묵살되었다). 심심한 경우 동일 이슈가 반복해서 나오거나, 수정했던 이슈를 다시 복원하는 등의 일들이 수 없이 발생하기 시작했다. 개발 팀은 전체적으로 지쳐가고, 점차 서로에 대해서 믿지 않기 시작했다. 지금에 와서 생각해 보면 프로젝트가 일단 종료되었다는 사실이 신기 할 정도로 개발에 참여한 구성원들의 사기는 최악으로 치닫았고, 결국 프로젝트가 종료가 된 지금에서도 회복되질 않았다.

프 로젝트에 참여할 당시 애자일 개발 방법론에 대해서 공부를 하면서 이러한 문제에 대한 하나의 대안이 될 수 있을 거라 희망을 하였지만, 회사에서 이에 대해 그나마 이름이라도 들어본 사람은 다섯 손가락 안에 꼽을 정도로 애초에 이에 대해서는 완전히 무지한 사람들의 집합이었기 때문에 도입에 대한 이야기 자체를 시작하기 조차 힘들었다. 무엇보다 프로그래밍 팀의 개발 프로세스에서는 지금에서는 프로젝트 개발에서의 기본 중의 기본이라 할 수 있는 '형상 관리'조차 제대로 이루어지지 않은 상황에서 애자일 같은 이야기는 어디까지나 사치였다-아직도 SVN을 프로그래밍 팀 중 일부만 사용하고 있고, 웹 파트의 경우에는 소스를 여전히 로컬 디스크에'만' 저장하고 있다. 물론 애자일을 바로 도입했다고 해도 시행착오 없이 완벽하게 안착 시킬거라 생각치는 않는다. 하지만, 지금처럼 아무도 발견되는 문제를 바라보기만 하기만 하지 않고, 적극적으로 나서서 개선을 하려고 노력했다면 조금은 더 바람직한 방향으로 이동을 했을거라 믿는다.


끝. 그리고...

P 프로젝트는 여러가지면에서 실패 요인을 안고 있었다. 어떤 요인들은 개선이 가능 했지만, 그렇게 하지 못했고, 어떤 요인들은 여러 환경적인 요인으로 인해 개선 할 수 없었으며, 어떤 요인들은 개선을 바랬지만, 그렇게 되질 않기도 했다. 사실 몇번이라도 엎어질 뻔 한 프로젝트가 그나마 끝을 본것은 품질(Quality)과, 시간을 바치고 결과물을 얻어낸 '등가교환'의 결과일 뿐이다.

이 글을 작성하기 몇일 전 회사의 이사님과 면담을 가질 기회가 있었는데, 현재의 P 프로젝트의 품질에 대한 불만과 원인에 대해서 나름대로의 생각을 이야기 하는 것을 들었다. 나름 어떠한 부분에 있어서는 동조 할 만한 이야기가 있었지만, 그분의 의견 중 '계획만 확실하면 1명의 작업자가 동시에 대여섯개의 프로젝트를 진행하더라도 무리가 없다'는 이야기에는 실소를 금할 수 밖에 없었다. 완벽한 계획이라는 '이상'에 대해서 이야기 하는 것은 둘째 치고, 소프트웨어 프로젝트를 라인에서 생산하는 자동차 정도로 생각하고 있다는 사실에 경악이 아니라 그냥 헛웃음이 나올 뿐이었다.

적절하지 못한 인력 배치, 회사의 능력을 넘어서는 프로젝트 동시 진행, 개개인의 자질 부족, 모든 것은 적절한 상황 판단을 하지 못하는 지휘부의 무능이 가장 큰 원인이었다는 생각에 쐐기를 박아버린 사건 이후로, 개인적으로는 그나마 조금이라도 남아있던 회사에 대한 애정 자체가 완전히 사라져 버렸다. 암울한 것은 이후 상황은 되려 더 나빠져서 문제들은 해결이 되지 않은 상태에서 '형식적인 문서화', '책임 공방', '정치적인 싸움' 등의 새로운 문제들이 되려 더 추가되고 있다.

이 글을 남기는 이유는 다음 또는 다다음 프로젝트를 내가 직접 진두 지휘를 하게 될 때의 '거울'로 쓸 수 있기를 기대하면서 작성하였다. 결과는 실망스럽고 도중에 많은 문제점들이 도출되어 있는 프로젝트였지만, 덕분에 프로젝트 진행에서 해선 안될 일, 꼭 해야 할 일 등 많은 것들을 배울 수 있는 기회도 되었다(또한 글에서 언급을 하진 않았지만, 개인적으로는 UI 디자인에 대한 치명적인 실수-서비스의 UI는 내가 돌이켜 생각해봐도 쓰레기일 정도로 복잡하고 일관적이지 못하다-에 대해서 반성하는 기회도 되었다). 다만, 똑같은 실수를 미래에 하지 않기만을 다짐하는 수 밖에는 아직은 내가 할 수 있는 일은 없다는 것은 마지막으로 남아있는 아쉬움이다.

크리에이티브 커먼즈 라이센스
Creative Commons License

Posted by Irene

2009/01/10 22:39 2009/01/10 22:39
, , , , , ,
Response
No Trackback , 2 Comments
RSS :
http://www.heartcomplex.net/blogs/rss/response/494

이 문건은 회사 내부에서  이슈추적과 개발 프로세스와 관련한 의견을 취합하기 개인적으로 작성했던 문서로, 겸사겸사 스스로의 생각도 정리하자는 의미에 비중을 둔 문서였다. 여러가지 사정으로 문서 자체는 지금 현재로써는 회사 내부의 여러사람들에게 묵살당한 모양이지만, 행여나 비슷한 고민을 하는 분들이 계시다면 한번 생각을 공유해 보았으면 하는 생각에 전문을 올려본다.

----

이슈 트래킹을 왜 쓰는가에 대한 고민과 어떻게 쓰는가에 대한 고민이 필요하다고 생각 함.


  1. 일차적 이용 목적

    • 버그 발견 시 해당 버그에 대한 단일 리포트 창구 필요
    • 취합된 버그에 대한 발견-처리-결과에 대한 개별 프로세스별 정확한 통제(Control) 및 관리(Management) 목적
    • 문제가 되는 이슈의 통계 처리를 통한 개발 진척사항 및 마일스톤의 관리 - 업무 중복의 회피
    • 커뮤니케이션의 극대화
  2. 쓸 수 있는 App

    • 맨티스(Mantis) : 전형적인 이슈 트래킹 어플리케이션. 이슈 리포트에 대한 세부적인 옵션 컨트롤이 가능하며, 간단한 기능과 한글화가 장점. 단점으로는 지나치게 많은 리포트 옵션과 시각적으로 깔끔하지 못한 인터페이스-현재 사내 서버에 Mantis가 설치 되어 있으나 사실상 용도 폐기 상태 임.
    • 트랙(Trac) : 이슈 트래킹 및 프로젝트 매니지먼트 기능 등이 결부되어 있는 어플리케이션. SVN과 연동하여 개발 소스에 대한 열람이 자유롭고, Wiki를 통한 프로젝트 문서화가 손쉽다는 점, 마일스톤 및 연표 기능으로 프로젝트 진행 상황 확인이 용이하며 인터페이스가 깔끔함. 단점으로는 현재 최신 버전에 대한 한글 버전이 존재하지 않음(한글화는 Ver 0.10.4에서 종료. 현재 릴리즈 된 버전은 0.11.4, Ver 0.12 부터 다국어 지원 예정)-대표적인 Trac 사용 프로젝트(국내)의 예로 태터 앤 컴퍼니의 텍스트 큐브 개발 페이지(http://dev.textcube.org/) 및 제로보드 개발 페이지(http://trac.zeroboard.com/trac/wiki).
    • 버그질라(Bugzilla) : 해외 오픈소스 계열 이슈 트래킹 어플리케이션 중 가장 유명한 어플리케이션으로 모질라 재단, NASA 등의 프로젝트에서 사용중이며, 강력한 통계 처리 기능이 장점. 사용이 복잡하고 한글화가 전혀 되어있지 않다는 점이 가장 큰 단점
  3. 프로세스 중 적용 범위 (1차)

    • 이슈 트래킹 : 버그 및 개선 사항에 대한 '보고 - 처리 과정 - 결과 확인' 의 프로세스에 대한 통제
    • 제품 품질 완성도에 대한 정량적인 측정 : 버그 발생 및 처리, 잔여 이슈에 대한 정략적인 측정
    • 난립되어 있는 문서의 통일 : 각종 양식의 버그 리포트의 통폐합
  4. 프로세스 최종 적용 범위

    • 프로젝트 별 난립되어 있는 문서의 템플릿 통일화
    • 수동적이고 책임 회피적인 업무 진행에서, 전체 구성원의 책임감 고양 및 자발적인 업무 참여 유도
    • 전체적인 프로젝트 제작 프로세스에 대한 재 검토 및 효율화를 위한 개선
    • BPR(Business Process Reengineering)
  5. 도입 시 장기적으로 예상되는 문제점과 해결 방안

    • 관리자 부재로 인한 개점휴업 상태 발생 : 관리 담당자의 지정 및, 각 프로젝트 참여자의 의무 사용 독려(자율적인 참여 방식과 더불어 강제적인 사용 의무화 방안도 포함 되어야 함 : 갱신 사항에 대한 메일링 리스트 확인, RSS 리더의 강제 등록 등으로 이슈가 발생하고 등록되는 즉시 각 구성원이 최대한 빠르게 파악 할 수 있는 시스템 구성은 별도의 문제임)
    • 발생된 이슈에 대한 사용자 전체의 적극적인 참여를 어떻게 이끌어 낼 것인가? : 이슈 트래킹을 이용하는 기본 프로세스는 상명하달 식의 업무 구조가 아닌, 개인이 각자 일을 찾아서 진행하는 '자발적 참여'를 전제로 함. 수동적이고 피동적인 조직 문화를 변경해야 할 필요가 발생 할 수 있음.
    • 변화에 대한 지속적인 수용력 필요 : 이슈 트래킹을 도입하는 것은 작게는 버그 트래킹 프로세스의 변화에서 부터 크게는 전체 프로세스의 변화를 필연적으로 가져오게 될 수 있으나, 각 구성원 전체에 변화에 대한 인식 수용이 없이는 '변화에 대한 저항'이 발생할 가능성이 아주 높음. 지속적인 변화 및 개선에 대한 전 구성원의 공감대가 필요한 사항이며, 관리계층은 이를 뒷받침 해 줄 수 있는 능력을 확보해야 함.
    • 프로젝트 일정에 따른 프로세스 통제가 불가능하게 될 경우 : 일단 그런 상황이 발생하지 않도록 만들어야 하며, 만약 통제 불가피한 상황이 발생할 경우라도 기본적인 프로세스는 유지한다는 의지가 필요

----

아무것도 없는 상태에서 이런 이야기를 꺼내는것도 어려운 일임에도 불구하고 내밀었건만, 이를 관철시키는 것은 더욱더 힘든 이야기라는 사실에 오늘도 잠깐 우울한 기분이 들었던 하루.
크리에이티브 커먼즈 라이센스
Creative Commons License

Posted by Irene

2008/09/17 23:25 2008/09/17 23:25
, , , , , , , , ,
Response
No Trackback , No Comment
RSS :
http://www.heartcomplex.net/blogs/rss/response/482