안재용 IT컨설팅 전문 AJ&컴퍼니 대표이사 (사진=AJ&컴퍼니 제공)
안재용 IT컨설팅 전문 AJ&컴퍼니 대표이사 (사진=AJ&컴퍼니 제공)

소프트웨어 개발에 있어 일정은 곧 돈과 직결된다. 일정을 하루라도 앞당기면 개발에 투입된 인력의 인건비를 조금이라도 아낄 수 있으며 출시 일정을 앞당겨 매출을 더 얻을 수 있다. 경쟁사보다 시장을 먼저 선점할 수 있는 것은 물론이다.

그러나 소프트웨어 개발 일정을 예측하는 것은 경험이 풍부한 관리자들에게도 어려운 일이다. 왜 그럴까? 90년대 후반에서 2000년대 초반까지 ‘닷컴버블’이 일어나면서 많은 사람이 IT사업에 뛰어들었다. 큰돈을 벌 수 있을 거란 부푼 기대감이 개발시장을 이끌었지만 이들 중에는 경험 있는 프로젝트 관리자가 드물었다.

대다수가 직관에만 의존해 프로젝트를 이끌었는데 이때 나타난 것이 개발자들의 야근문화다. 개발자들의 근무 시간을 늘리면 더 많은 소스코드를 생산할 수 있을 것이라 믿은 탓에 밤 11시, 12시까지 개발자들이 퇴근 못 하는 회사가 많았다.

그러다 상당한 시간이 지나면서 개발자들에게 휴식 시간을 충분히 주면 장기적으로 더 높은 생산성을 발휘한다는 것을 깨닫는 회사들이 하나둘씩 나타났다. 또 뛰어난 개발자는 평범한 개발자에 비해 생산성을 수십 배까지 발휘한다는 점을 알아채면서 뛰어난 개발자들의 연봉이 억대를 훌쩍 넘는 현상이 일어난다.

이것은 개발이 단순히 소스 코드를 생산해 내는 일뿐만이 아니라 문제해결의 연속이며 때로는 1000줄로 짜야 할 코드를 100줄의 코드로 해결할 수 있는 방법을 찾아내는 일이기 때문이다.

많은 회사가 개발 일정을 단축하기 위해 개발팀에 빠른 일정을 독촉한다. 그러나 어떤 개발에 있어 개발 중간에 어떤 문제가 발생할지 예측하기 어렵고 때로는 100줄로 완성할 수 있을 것 같았던 개발이 실제로는 1000줄의 개발이 필요한 경우도 부지기수로 생긴다.

이러한 이유로 소프트웨어 공학에서는 개발 일정을 추정치의 400%까지 가중하라고 설명한다.

직관적으로는 일주일이 걸릴 일을 한 달의 일정을 잡으라고 하는 것인데 이것이 또 기가 막히게 잘 맞아떨어진다. 보통 개발자들은 자기가 생각한 일정에 2배에서 3배까지 늘어나는 것을 수시로 경험한다.

이것이 직관에 의존해서는 일정 산정이 불가능한 이유다. 사업은 비용을 절약하는 것도 중요하지만 무엇보다 예측할 수 있어야 한다. 시간과 비용이 예측 가능해야 프로젝트를 진행할 것인지 아닌지 결정할 수 있고 소프트웨어 출시 일정에 맞춰 마케팅팀도 전략을 세울 수 있다.

그러나 많은 회사가 일정을 앞당기는 것에만 집중해 무리하게 일정을 잡다가 결국 지키지 못해 일정이 미뤄지고 미뤄져서 고객의 신뢰를 잃는 것을 경험한다. 그리고 이렇게 말한다.

"우리 개발팀은 일정을 못 맞춰"

특히 시간이 부족한 상황에서 밤새도록 야근하면 일정을 맞출 수 있을 것으로 생각하는데 이것은 독이다. 단기적으로 어느 정도 생산성 향상은 있을지 모르나 회사가 내부 직원들에게 신뢰를 잃게 되는 것이 첫 번째 문제다. 요즘 같이 개발자 품귀현상이 지배적인 상황에서 신뢰가 없는 회사에 몸을 바칠 직원은 없을 것이다. 회사에 신뢰가 없는 직원은 좋은 제의를 받으면 언제든 떠날 준비가 돼 있다고 봐야 한다. 결국 회사는 특정 업무에 오랜 경험과 노하우를 쌓은 직원을 잃게 된다. 새로운 직원을 다시 뽑아 다시 교육시키는 비용은 고스란히 회사의 몫이다.

두 번째 문제는 갑작스러운 문제 상황에 무방비로 노출된다는 것이다. 출시 전까지 야근을 해서 맞추기로 했는데 갑자기 장애 등 문제가 발생하면 또 일정을 못 맞추게 돼 사업이 다시 예측불가능하게 돼버린다는 것이다.

파레토 법칙에 의하면 개미사회의 20%가 80%의 일을 하고 나머지는 휴식을 취한다. 그 20%로 사회를 구성해 놓으면 다시 그중 20%만 많은 일을 한다.

야근은 반드시 갑작스러운 장애 등 문제 상황에서만 수행돼야 한다. 그렇지 않으면 그 회사는 장애 상황에 대한 대응에 취약한 회사이다. 예기치 못한 장애가 발생하면 꼭 개발 일정이 기한을 못 맞추게 될 것이기 때문이다. 합리적으로 관리자가 직원에게 야근시킬 한 가지 경우는 직원이 본인이 약속한 기한을 못 맞췄을 경우다. 이 경우 회사는 야근을 강요한 것이 아니므로, 직원의 신뢰를 잃지 않을 수 있다. 직원 또한 자신이 약속한 것을 지키기 위해 더 열심히 노력할 수 있고 자신의 스케줄을 직접 관리하는 경험을 쌓을 수 있다.

이 두 가지가 아닌 경우 회사가 급하다는 이유로 잦은 야근을 시키는 일은 직원의 신뢰라는 비용을 내고 미래의 가치를 현재에 당겨 쓰는 일과 같다. 직관적으로는 아마 이렇게 보일 것이다.

"아! 우리는 열심히 했어"

소프트웨어 관리자는 충분한 개발 기한을 확보하기 위해 고위관리자를 설득하는 일이 중요하고 고위관리자도 이를 이해하는 자세가 필요하다. 다시 한번 강조하지만 비용 절약보다 예측이 우선시 돼야 한다.

저작권자 © 금융경제신문 무단전재 및 재배포 금지