Archive for the ‘Software & Developer’ Category

다음에서 새롭게 경험한 문화 - C Time, 당직제도

Saturday, November 8th, 2008

비슷한 분야의 회사를 여럿 경험하다 보면 그 회사가 그 회사 같을만도 한데 여전히 새로운 것들을 많이 배우게 된다. NHN에서는 새로운 기술과 시스템을 배웠다면 다음에서는 새로운 문화를 많이 배우게 되는 것 같다.

NHN에 속해 있을 때 한게임 웹 개발 랩의 내부 제도로 ‘이할 프로젝트’라는 프로젝트를 만들고 참여했었다. 업무 시간의 20%를 자유롭게 사용할 수 있도록 제도적으로 뒷받침해주는 것인데, 이를 통해 몇 가지 잼있는 개발 경험도 했던 기억이 난다. 하지만 시행 초기여서 그런지 업무 부담이 커서 그런지 아쉽게도 개발자의 참여가 활발하지는 않았다.

다음에는 이와 유사한 ‘C Time’이라는 제도가 있다. 정확한 기원이나 의미는 모르지만 내가 속한 파트에서는 매주 수요일 3시 ~ 6시에 하고 싶은 것을 자유롭게 개발하는데 활용하고 있다. (일주일에 3시간이면 10%가 안되는군요.) 처음에는 이 시간에 무엇을 할지 잘 몰랐는데 지금은 하고 싶은게 길게 줄서 있다. CI, BTS 환경 구축, 서비스 분석 툴 개발, 기획서 버젼관리 시스템(?)개발 등등. 물론 여기서도 업무가 과중한 시기에는 C Time에 참가하지 못하는 경우가 있지만 그래도 좀 더 문화적으로 정착되어 있는 것 같고 나름 의미있는 결과물들도 나오고 있는 것 같다.

또 하나 평범하면서도 이전에는 경험해 보지 못한 것이 ‘당직제도’이다. 웹 서비스를 개발하는 과정은 개발 주기가 매우 짧고 제품 릴리즈 후에도 지속적으로 유지/보수를 해야하는 특징을 갖고 있다. 결국 유지/보수 업무와 신규 프로젝트 참여가 서로에게 부담을 주는 경우가 많이 발생한다. 즉, 프로젝트를 개발하다가 긴급한 버그 패치 요청을 처리해야 하기 일수고, 또한 다음 프로젝트에 투입된 경우 이미 개발된 서비스의 튜닝 및 개선에 집중하기 힘든 구조이다.

다음 미디어 개발팀은 이 문제를 해결하기 위해 ‘당직제도’를 활용하고 있다. 프로젝트 담당 개발자가 3명이면 일주일에 한명씩 돌아가면서 당직이 되고, 당직은 버그 패치 및 장애 대처를 일차적으로 책임지게 된다. 당직제도를 통해 나머지 2명은 프로젝트에 집중할 수 있고, 당직은 서비스 개선에 집중할 수 있다. 이번 주에 첫 당직이 되었는데 새로 개편된 ‘블로거뉴스‘ 시스템을 튜닝하거나 새로 발생한 버그를 수정하고 서비스를 모니터링 하고 있다. (주말에 이러고 있으니 부작용이라고 해야할 것도 같네요.)

여전히 지나친 커뮤니케이션이 발생하는 노이즈를 어떻게 해결해야할지 고민이 되긴 하지만 다음의 이러한 열린 문화가 제도적 최적화 방식보다 더 생산적인 조직을 만들 수 있음을 경험하고 있다. 조직적으로 유지보수팀과 프로젝트 개발팀을 분리할 수도 있지만 프로젝트 일관성 유지와 효율성 강화에는 짧은 주기의 당직제도가 더 효과적인 것 같다.

outsourcing 또는 offshoring in NHN

Monday, July 14th, 2008

최근 경험하고 있는 회사내에서의 많은 변화 중에서 나에게 중요하게 다가오는 것이 하나 있다. 이 변화가 앞으로 어떤 모습으로 형성되어 갈지 궁금하기도 하고 걱정이 되기도 한다. (사실 너무나 많은 변화가 동시에 진행 중이긴 한데, 대부분 Top-Down 방식의 변화라 얼마나 효과가 있을지는 의문이다.)

작년부터 한게임 웹개발 조직에는 몇 가지 큰 변화가 있었다. 하나는 일본, 미국에 진출한 법인의 웹사이트 개발을 한국 개발팀에서 진행하는 일종의 외주 개발 방식이고, 또 하나는 한국 한게임 웹사이트 개발을 국내 NS(NHN Service) 또는 중국 법인에서 개발하는 방식이다.

이런 정책은 outsourcing으로 볼 수도 있고, offshoring으로 볼 수도 있을 것 같다.

우선 outsoucing은 기업의 핵심 역량(core competence)를 제외한 나머지 업무를 외주로 돌림으로써 비용을 줄이고 핵심에 집중할 수 있게 해주는 정책이다. 현재로는 단순한 웹사이트의 개발, 이벤트성 페이지 개발, 유지보수 등의 업무를 국내의 자회사 또는 해외 법인으로 이전함으로써 기존 웹개발자는 좀 더 핵심적인 서비스 개발에 집중할 수 있게 해주는 것을 목표로 한다.

offshoring은 인력(웹개발자) 수급이 쉽고, 비용이 저렴한 곳으로 생산기지를 이전하는 방식으로, 핵심 생산 조직을 통째로 해외로 이전하는 것을 의미한다. 예를 들어, 한국의 웹사이트 개발을 중국에서 전적으로 담당하게 된다면 offshoring에 해당한다고 할 수 있다.

From:Wikipedia Outsourcing is the movement of internal business processes to an external company. Companies subcontracting in the same country would be outsourcing, but not offshoring. A company moving an internal business unit from one country to another would be offshoring, but not outsourcing. A company subcontracting a business unit to a different company in another country would be both outsourcing and offshoring.

현재 ‘외주 협력 체계 구축’이라는 이름으로 이런 변화가 진행되고 있는데 과연 얼마나 많은 고민과 철학을 가지고 이 문제에 접근하고 있는지 궁금하다. 특히 변화의 중심에 있는 개발팀의 팀장과 팀원들은 얼마나 이 문제에 대해서 심각하게 고민하고 있을까?

우선 outsourcing인 경우 웹개발은 핵심 역량이 아니라는 가정을 가지고 출발하고 있다. 판에 박은 듯한 웹페이지를 반복해서 생산하는 경우 단순 노동으로 치부될 수도 있을 것이다. 하지만 조금만 생각을 바꿔보면 정확한 웹페이지를 만드는 것이 웹서비스의 품질과 별개의 문제가 될 수 없음을 알 수 있다. 빠르고 오타가 없고 정확히 의도한 데로 동작하는 웹페이지는 웹서비스의 기본이라고 할 수 있다. 그리고 반복되는 작업은 개발 프로세스를 개선함으로써 단순 반복을 제거할 수 있는 해결 방법이 적용될 수 있다고 생각한다.

그리고 offshoring인 경우 과연 비용이 줄기는 하는 것인지 고민이 필요하다. 각 나라의 특성에 맞는 서비스를 만들기 위해서는 그 나라의 기획자(전문가)가 필요하다. 결국 한국 웹사이트 개발을 위해서는 한국 기획자가 기획서를 작성해야 하고 이를 중국 PM에게 전달하면 이 기회서가 중국어로 번역되어 중국 개발자에 의해 개발되게 된다. 현재 프로세스에 의하면 디자인과 UI 코딩도 한국에서 완성된 후 중국에 전달되게 되는데 수 많은 이미지가 사용되는 웹사이트 개발에서 언어의 장벽이 얼마나 많은 초과 비용을 요구하게 될지 알 수 없다. 빠르고 유연한 개발, 그리고 새로운 아이디어의 구현을 위해서는 무엇보다 ‘의사소통’이 중요하다. 이 의사소통 효율성을 희생하면서 얻게 되는 이익이 무엇일지 걱정이 된다.

미국에서는 IT offshore가 많은 이슈가 되고 있다. 원격 협업, 관리, 지식 정보 구축 등이 다시 많은 논란의 중심이 되고 있는 것이다. 개인적으로는 Google의 접근 방법이 옳다고 생각한다. 싼 임금의 개발자를 찾는 것이 아니라 전 세계의 뛰어난 개발자들을 활용하기 위한 해외 진출, 이것이 옳은 접근 방법이고 진정한 세계화라고 생각한다.

NHN Burning Day 현장

Friday, June 27th, 2008

(현장이라고 해도 사진 한장 없다.)

오늘은 NHN Burning Day가 열리는 날이다. 금요일 낮 12시부터 토요일 낮 12시까지 24시간 동안 평소에 해보고 싶었던 개발을 하고 프로토타입을 만들어 발표하는 행사로 올해 처음 열리고 있다.

약 100명이 넘는 개발자들이 개인 또는 팀으로 참가해서 이제 막 버닝~을 시작하려 하고 있다. 시끌시끌한 분위기, 진지한 표정들, 오늘 밤 뭔가 잼있는 일들이 생길 것 같다.

올해 들어 회사에서 잼있는 일들이 조금씩 생겨나고 있다.

하나는 게임서비스개발랩에서 진행중인 ‘2할 프로젝트’. Google의 20% 프로젝트와 같이 업무 시간의 20%를 자신이 원하는 프로젝트에 사용할 수 있는 제도로 올해 처음 만들어졌다. 아직 초기 단계라 운영상의 미흡한 점들이 있지만 그 기회 자체가 큰 의미가 되고 있다고 생각한다.

개인적으로 ‘Parallel Worker’라는 concurrency package와 reflection을 활용한 BO 병렬처리 라이브러리를 만들었다. 실무에 사용하기 위해서는 조금 더 다듬어야겠지만 나름 새로운 것을 배울 수 있는 좋은 기회였다.

그리고 오늘은 ‘Web Cache with Personal Area’를 만들어 볼까 한다. 대부분 웹 페이지가 일부 개인화 영역(로그인 정보 등)을 제외하고 동일한 페이지를 서비스함에도 매번 페이지 전체를 만들어야 하는데 이 부분을 개선해서 처리 속도를 개선해 볼까 한다.

24시간 동안 개발을 해야 한다고 하니 왠지 벌써 졸리기도 하지만 뚝딱~ 하나 만들어 봐야겠다.

자세한 소식은 이곳에서… [NHN인들의 열정이 한 곳에! NHN Burning Day]