개발자의 생산성과 블랙잭

[임백준 칼럼] 21을 넘으면 게임은 종료된다

전문가 칼럼입력 :2017/07/24 11:30    수정: 2017/07/24 15:26

임백준 IT칼럼니스트
임백준 IT칼럼니스트

최근 개발자 사이에서 화제가 되는 글(https://okky.kr/article/405519)을 읽었다. 외주업체 직원의 신분으로 프로젝트에 투입되었다가 억울한 일을 당한 사람이 쓴 하소연이다. 글쓴이는 IT 업계에서 ‘폐 잘라낸’ 개발자로 알려진, 야근수당을 놓고 농협과 법정소송을 벌여 승소했던 사람이다. 글이 근거없이 쓰여진 것으로 보이지 않지만, 한쪽의 글만 읽고 진실의 정도를 확인할 수 없으니 그와 원청회사 사이에서 일어난 갈등에 대해서는 일단 판단을 유보한다.

그렇지만 진실 여부와 상관없이 그의 글은 개발자가 공감할만한 이야기를 담고 있다. 글을 읽는 동안 내 머릿속에는 개발 프로젝트를 묘사하는 삼각형과 카드 게임인 블랙잭이 떠올랐다. 이유는 곧 설명하기로 하고 그의 말부터 들어보자.

"쇼핑몰을 운영하면서 업무인 프로그램 수정 요구를 많이 받았습니다. 제가 책임자이다 보니 업무 협의를 하였고, 역시 무리한 요구가 많았습니다. 이런 경우는 우선 순위 구분과 협의를 통해 해결하였으나, 점점 무리한 요구가 많아지면서 결국에는 가용 인력 대비 업무량이 넘치게 되고, 모든 업무의 일정 변경이 잦아지면서 꼬이는 것을 막을 수 없게 됩니다. 이렇게 되면 시스템과 프로그램의 오류가 발생할 수 밖에 없고, 저와 동료들은 이런 사항을 지속적으로 설명하고, 이러면 안된다고 건의하였으나 결국 무시당하고, 시스템 장애나 오류 같은 사고로 이어지게 되었습니다."

실전 개발 경험이 있는 사람이면 이런 상황이 낯설지 않을 것이다. 외주개발이나 SI 업무가 아니더라도 마찬가지다. ‘가용 인력 대비 업무량’으로부터 자유로운 프로젝트는 없기 때문이다. 이건 영원히 풀리지 않는 화두다. 개발자는 언제나 할 일에 비해서 인력이 모자란다고 말하고, 인력관리를 하는 측에서는 돈이 없다고 말한다. 이것은 삼각형이다. 모든 개발 프로젝트는 ▲인력 ▲돈 ▲할 일 등 세 개의 꼭지점을 형성하는 삼각형을 그린다.

머리 속으로 삼각형을 그려보기 바란다. 이 삼각형의 면적은 프로젝트가 만들어내는 산출물의 분량을 의미한다. 삼각형의 면적이 넓을수록 산출물이 많은 거고, 좁을수록 적은 거다. 그리고 삼각형이 정삼각형에 가까운 정도는 개발자의 생산성을 의미한다. 삼각형이 정삼각형에 가까울수록 개발자의 생산성은 높고, 그렇지 않으면 개발자의 생산성은 낮다. 생산성이란 개발자 한 사람이 정해진 시간 내에 얼마나 많은 그리고 좋은 품질의 코드를 생산하는가를 측정하는 척도다.

이제 삼각형의 꼭지점을 움직여보자. 자세히 설명하지 않아도 꼭지점들이 서로 영향을 주고받으면서 움직인다는 사실을 알 수 있을 것이다. 예컨대 돈이 많아지면 인력을 더 많이 확보할 수 있다. 인력이 많으면 더 많은 일을 할 수 있다. 세 꼭지점이 모두 바깥 방향으로 움직이면서 삼각형의 면적이 자연스럽게 커진다. 산출물이 늘어나는 것이다. 반대로 돈이 줄어들면 인력이 줄어든다. 인력이 줄어들면 할 일도 줄어든다. 혹은 줄어들어야 한다. 세 점이 동시에 안쪽으로 움직이면서 삼각형의 면적이 작아지고 따라서 산출물도 적어진다. 이렇게 세 점이 함께 움직이는 것은 자연스럽다.

이 프로젝트의 삼각형에서 돈에 해당하는 꼭지점을 움직일 수 있는 주체가 원청회사라는 사실은 설명할 필요도 없다.(인하우스(in-house) 개발의 경우에는 개발펀딩을 제공하는 회사 내부의 비즈니스 라인이라고 봐도 좋다.) 하청업체는 돈에 해당하는 꼭지점의 위치가 달라졌을 때 인력과 할 일에 해당하는 두 개의 점을 조정할 수 있는 실무적인 권한을 가지고 있을 뿐이다. 혹은 가져야 한다. 문제는 원청회사가 돈에 해당하는 꼭지점의 위치를 돈이 줄어드는 방향으로 옮기면서 다른 두 개의 점을 움직이지 말라고 강제할 때 발생한다. 혹은 돈에 해당하는 꼭지점의 위치를 고정시켜 놓은 채 다른 두 개의 점을 값이 늘어나는 바깥 방향으로 쭉 잡아당기면 발생한다. 이것은 삼각형의 면적을 투입되는 돈으로 나눈 값. 즉, 투자대비 산출물을 극대화하기 위한 비정상적인 노력이다.

그렇게 하면 투입되는 돈에 비해서 삼각형의 면적은 늘어나니까, 그럴 수 있다고 치자. 하지만 간과하지 말아야 하는게 있다. 삼각형의 면적을 이런 식으로 늘어나게 하면 균형이 무너진다. 삼각형의 모습이 길쭉한 기형이 되어 정삼각형의 모습으로부터 멀어진다. 개발자의 생산성이 파괴되는 것이다. 글쓴이의 말을 조금 더 들어보자.

"카톡을 통한 업무 전달은 대부분 익일 처리가 가능한 일임에도 임원의 지시라는 명목으로 밤과 새벽에 전달되었고, 퇴근하다 되돌아가거나, 새벽에 원격으로 처리해야 했습니다. 또한 간단한 문구 수정을 20-30 차례 반복하여 요구하는 정말 비상식적인 요구가 빈번하였고, (원청회사) 팀장들 회의 다 끝날 때까지 기약없이 직원들을 대기 시키라는 지시는 매일 있었습니다. 충분한 검토 시간을 주기 위해 미리 결과물을 전달하여도, 오픈 직전에 무리한 요구를 다시하고, 닥달하고, 비정상적인 일들이 매일 반복되었습니다."

글쓴이가 여기에서 주장하는 것이 조금이라도 사실이면 이 원청회사의 실무자들은 넘지 말아야 하는 선을 넘은 것이다. 퇴근 시간 이후에 카톡으로 업무지시하기, 타인에게 사소한 문구 수정을 반복적으로 시키기, 반드시 필요하지 않은 일을 위해서 다른 사람을 대기시키기, 마감일 직전에 무리한 일을 요구하기 등은 일차적으로 일을 시키는 사람 자신의 무능을 드러내는 것이다. 또한 개발자의 생산성을 떨어뜨리는 일이다. 아니, 이건 개발자의 생산성에 대한 문제가 아니다. 기본적인 노동조건과 인권의 문제다.

블랙잭에서 우리는 딜러로부터 카드를 한 장씩 받으며 카드의 총합이 21이라는 수에 가까워지도록 노력한다. 21이면 최상이다. 하지만 총합이 21을 넘으면 그 순간 게임이 종료된다. 과유불급이다. 고도의 정신노동인 프로그래밍은 블랙잭의 21과 같은 임계값(threshold)을 가지고 있다. 상식적인 수준에서 관리와 지원을 아끼지 않으면 개발자의 생산성을 임계값에 근접시키는 것이 가능하다. 하지만 노력이 지나치면 임계값을 넘어서게 된다. 그러면 생산성이 완만한 곡선을 그리며 줄어드는게 아니라 그냥 0이 된다. 팽팽하게 늘어난 고무줄이 끊어지는 것처럼 생산성도 툭, 끊어진다. 생산성의 절벽이다. 반복되는 시스템 장애와 오류는 그렇게 곤두박질친 생산성의 자기표현이다.

관련기사

프로그래밍은 창의적인 정신노동이다. 힘으로 하는 벽돌쌓기가 아니다. 육체가 균형잡힌 영양과 충분한 휴식을 필요로 하는 것처럼, 정신은 날카롭게 긴장되지 않은 편안한 안정감을 필요로 한다. 코앞에 닥친 마감일, 반복되는 야근, 업무평가 이런 근심거리들로 개발자의 심리를 흔들어대면 창의력을 뒷받침하는 심리적 안정감이 생길 리 없다. 돈에 해당하는 꼭지점을 움직일 수 있는 권한을 가지고 있는 사람들이 제발, 이런 사실을 깊이 이해하기 바라는 마음이다.

그리고 무엇보다도 글쓴이와 글 속에 등장하는 원청회사 사이의 갈등이 서로에게 도움이 되는 방향으로 잘 마무리되었으면 한다. 쇼핑몰이든 개발이든 다 살자고 하는 일 아닌가.

*본 칼럼 내용은 본지 편집방향과 다를 수 있습니다.

임백준 IT컬럼니스트

한빛미디어에서 『폴리글랏 프로그래밍』(2014),『누워서 읽는 퍼즐북』(2010), 『프로그래밍은 상상이다』(2008), 『뉴욕의 프로그래머』(2007), 『소프트웨어산책』(2005), 『나는 프로그래머다』(2004), 『누워서 읽는 알고리즘』(2003), 『행복한 프로그래밍』(2003)을 출간했고, 로드북에서 『프로그래머 그 다음 이야기』(2011)를 출간했다. 삼성SDS, 루슨트 테크놀로지스, 도이치은행, 바클리스, 모건스탠리 등에서 근무했고 현재는 맨해튼에 있는 스타트업 회사에서 분산처리, 빅데이터, 머신러닝과 관계된 업무를 수행하고 있다.