소프트웨어개발
* 이거 얼마에요?
개발 - 부동산 개발 아님. - 로 밥을 먹고 살면서 가장 많이 들은 말은 바로 "이거 얼마에요?", "이거 얼마면 만들 수 있어요?",라는 말이다. 다소 과장되긴 했지만, 실제로 자주 듣는 말 중의 하나다. 얼마 전부터 신규 사업을 계획하고 있다. 개발을 총괄하는 입장에서 새로운 사업을 시작할 때마다 낡은 옷을 벗고 새 옷을 입는 깔끔한 기분도 들지만, 걱정이 앞서는 것도 사실이다. 왜냐하면 사업을 막 시작하는 시점에서부터 개발비가 얼마나 드냐는 황당한 질문이 훅 치고 들어오기 때문이다.
심지어는 아이디어를 모으는 브레인스토밍 단계에서까지 저런 말이 나온다. "이거 개발하려면 돈이 얼마나 들까?, 와 이거 얼마에요?" 가 다를 게 뭐가 있겠는가. 예산이라는 건 말이다. 구체적인 요구 사항이 확정이 되어야, 아니 드래프트 한 스펙이라도 나와야 짤 수 있는 거다. 아이디어를 모으는 단계에서 무엇을 개발해야 할지도 명확히 모르는데, 돈부터 얼마나 들지 책정하라는 얘기는 어불성설인 것이다. 이런 상황에서 내가 얘기할 수 있는 것은 대충 대답하는 것뿐이다. 적게 부른다면 사기꾼이 될 것이고, 너무 높게 부른다면 일 맡기 싫어서 수작 부리는 것으로 비치겠지만.
* 용산 터미널 던전
이 얘기는 마치 이런 전설적인 스토리와 전개가 흡사하다. 어릴 적 내 등을 자주 처먹었던 용산, 터미널 상가 용팔이 형님한테 자주 들었던 말. 워크맨을 사려고 터미널 던전을 방문했을 때, 용팔이 형님은 나에게 얼마까지 알아보고 왔냐는 말을 먼저 내밀었다. 아니 이 가게 처음 왔는데 언제 물어나 봤겠는가. 내가 조금 더 약았더라면 백원까지 알아보고 왔는데요?,라고 말했겠지만, 나는 아주 소심하고 나약한 심성의 소유자라 이실직고했다. "이거 얼마에요?"라는 말은 꺼내보지도 못하고…… 용팔이 형님은 그랬다. "네가 원하는 금액을 말하면 조건에 맞춰주겠다",라고. 나는 순진하게 내가 가지고 있는 예산을 판관 포청천에게 죄를 털어놓듯 이실직고했다.
* 예산을 짜는 일
나는 이번 신규 사업을 진행하기 위한 모바일 앱의 개발과 서버 구축 및 플랫폼 개발에 얼마가 들어갈지 예측할 수 없다고 했다. 프로불편러의 표정을 지으면서…… 알고서 말하지 않는 게 아니라 실제 알 수 없으니 모른다고 한 거다. 그리고 용팔이 형님의 심각했던 옛 표정처럼 가지고 있는 금액을 말해주면 그것에 맞춰서 개발해주겠다고 응용해봤다. 우습게도 내 입에서 그런 어이없는 말이 튀어나오다니 나의 레벨도 이제 만랩이 되었음을 인지했다.
어떤 사업이든지 예산 짜는 게 가장 골 모리가 썩는 일이다. 몇 명의 인력과 장비를 투자하여 사업을 시작해야 할지, 기존에 보유한 리소스들은 어디에 있는지, 외주를 줄 경우 우리의 원가는 어떻게 책정해야 할지, 기획이 요구하는 내용은 도대체 무엇인지. - 이것이 제일 중요- 리더가 맡아야 할 역할이 너무 많다. 마치 오케스트라를 지휘하는 상임지휘자의 롤과 비슷하다고 하면 과장일까? 그래서 경험이 중요하다. 과거에 치러본 유사한 경험을 대입해보면 대충 답이 나오기 때문이다. 그렇다고 하여도 쉽게 대답할 수는 없다. 잘못 보고했다가 나중에 모든 책임을 뒤집어써야 하기 때문에…… 권한이 많은 만큼 책임도 크기에……
* 설계 및 기획 단계의 중요성
개발은 설계 및 기획 단계가 제일 중요하다. 브레인스토밍을 통하여 온갖 아이디어를 도출하면, 심지어 구현이 도저히 불가능한 디자이너의 이상한 아이디어까지…… 그런 것들을 추려 모아 이상과 현실을 타협하고 구현할 기능을 세부적으로 설계한다. 기능을 세부적으로 나누는 과정은 보통 break-down이라고 부른다. 상위의 항목을 정의한 다음 하위로 체계를 계속 분류하는 것이다. 더 이상 나눌 수 없을 때까지 하위로 내려간다. 보통 이럴 때는 워크플로우이나 마인드 맵과 같은 툴이 좋은 재료가 된다. 머릿속을 정리하고 생각을 끌어내기만 한 툴로 이것 이상의 툴은 보지 못했다. 그리고 덮어놓고 개발을 시작하는 것보다 프로토타입을 만들어본다. 실제 개발을 하기 전에 미리 화면과 디자인을 만들어 고객에게 시연하는 것이다. 카카오에서 만든 오븐이라는 좋은 프로토타이핑 서비스가 있다. 나도 얼마 전 이 서비스로 제품의 프로토타이핑을 만들어 고객과 의견을 조율하고 서로의 접점을 찾은 바 있다.
설계 단계에서 많은 시간을 할애해야 하는 이유는 개발을 시작한 후에는 변경이 힘들기 때문이다. 고객과 개발자가 늘 충돌하는 것은 서로가 바라보는 세상이 다른데, 그것을 이해하지 못하고 서로의 주장을 굽히지 않기 때문에 충돌이 일어나는 것이다. 따라서 고객의 의견을 대충 듣고 개발부터 시작하는 것이 얼마나 위험한지 알 수 있다. 기간이 아무리 많이 걸리더라도 고객과의 의사소통, 고객이 원하는 모델의 청사진을 사전에 시뮬레이션 해보는 것이 제일 중요하다.
* 소프트웨어도 결국 사람이다.
사실 위와 같은 본격적으로 개발이 시작되기 전에 갖는 작업들은 예산이 확정된 이후다. 내부에서 진행하는 신규 사업이라고 한다면, 기획을 통한 아이디어의 구체적인 안을 만드는 것이 먼저다. 각각의 기능이 하위로 분류되어 작은 가지로까지 분화가 되고, 구현해야 할 화면과 프로세스가 완벽하게 정의되면 그다음 단계에서 예산을 책정하는 거다. 물론 예산을 책정하기 위하여 가장 우선적인 것은 소프트웨어의 경우에는 인력이다. 하나의 서비스를 개발하기 위하여 필요한 것은 개발자의 숫자와 그들의 능력이다. 얼마나 많은 개발 경험을 가지고 있는지 그의 장점은 무엇인지가 중요한 것이다.
점진적인 구현이 한때 대세이기도 했다. 너무 많은 모듈을 한꺼번에 개발하려고 하면 문제가 생기니 모듈을 세분화하는 것이다. 그리고 약 일주일 단위로 개발 및 테스트를 진행하고 고객의 확인을 받는다. 그 단계가 종료되면 다음 단계로 넘어가는 것이 점진적인 프로세스 진행, 즉 애자일 기법의 핵심이다. 짧은 주기로 설계와 개발, 테스트를 순환한다. 쉽게 만들 수 있는 작은 조각부터 만들기 시작해서 뼈대를 갖추어가고 최종에는 완성된 모델을 만드는 것이다. 처음부터 커다란 모델을 한 번에 만들겠다고 뛰어드는 것보다 실용적인 방법이 아닌가.
* 나는 얼마짜리일까?
사실 "얼마에요?"라는 황당한 질문으로 시작한 이야기가, 설계 및 개발에 이르는 공학적인 부분까지 확장이 되었다. 금액을 산출하기 위해선, 고객과 개발자의 생각이 일치해야 한다. 그렇게 해야, 예산을 확정할 수 있는 것이다. 그럼에도 불구하고, 돌발 변수는 존재한다. 고객은 언제든지 변할 수 있고 트렌드도 계속 바뀌고 있기에, 고객도 자신이 원하는 것을 정확히 이해하지 못하고 있기 때문에…… 그럴 때는 경험이 많은 리더의 식견이 중요하다. 리더의 능력에 따라서 결과는 얼마든지 달라질 수 있는 것이다. 이 글을 마무리하며 정작 나는 "얼마짜리?"인간인지 생각하게 된다. 왠지 누군가 당신은 얼마짜리냐고, 당신의 시간을 얼마에 살 수 있냐고 물어본다면 나는 뭐라고 대답해야 할까?